こんにちは、Statoilへようこそ。私たちはマップを初期化しました。
そして今、私たちが車を作り上げるエキサイティングなもののための時間です。私たちはコースのクラスでそれを行います。
あなたは、私の車からいくつかの変数を見つけるだけでなく、車を車に移動させる機能であることを見ることができるので、クラスが非常に実用的であることが分かります。右に左に行くか、まっすぐに進む。
したがって、私たちは環境を記述するために重要な変数をいくつか持っています。例えば、x軸と車の方向の軸の間の角度である角度です。
それから私たちは、覚えている最後の回転である回転を0度20度またはマイナス20度のいずれかにします。
次に、速度ベクトルのx座標と速度ベクトルのy座標を求めます。
そして、座標の速度xと速度Yのベクトル、そして我々はセンサーと信号を持っています。
そして、それは非常に重要です我々が作る呼び出しは、3つのセンサーセンサー1つのセンサー2とセンサー3つのセンサーは、車の前に感覚があるかどうかを検出します。
次に、センサ2は、車の左側に何らかの感知があるかどうかを検出するセンサであり、センサ3は、車の右側に感知があるかどうかを検出するセンサである。
そして、これら3つのセンサから、各センサによって受信された信号を得る。
したがって、信号1は、センサ1によって受信された信号であり、センサ2によって受信された信号であり、信号3は、センサ3によって受信された信号である。
それでどうやって動くの？
信号1はセンタリングセンサ1の信号の密度であり、センタセンタ3のセンタリング密度はセンタリングセンシティブセンタリングの密度であり、この砂の密度をどのように計算するかである。
まあそれは非常に簡単です。
各センサーの周りに大きな四角形を取ります。
これらは実際には200×200の正方形であり、各正方形について正方形内の1の数を正方形内の合計セル数で割ると22と20が400になります。
そしてそれは私たちに砂の密度を与えます。なぜならそれらは中心に対応するからです。
我々はこれを各センサについて行い、それは各センサの周囲の砂の密度を与える。
それがシグナルです。
さて、今度はセンサーを検出するためのすべてを持っているし、我々は移動機能を持っています。
もちろん、移動機能は、コアが左に行くか、右に行くことができるようにするものです。
だからすぐにそれを通過しよう。
ここでは、自動的に通過する最後の位置と速度ベクトルを使って車の位置を更新しています。
したがって、速度ベクトルのおかげで、位置は速度ベクトルの方向に更新されます。
それから私たちはローテーションを取得します。ここでは、コードの中でさらに詳しく説明します。
回転は、回転動作に対する動作と同じです。
彼は行動を選択し、次に回転に入る。
そして、この自己防衛はここでの回転と同じです。
この回転で、左または右に行く車をどのように回転させる必要があるかを知ることができます。
次に私はx軸と車の方向の軸との間の角度を思い起こさせる角度を更新します。
そして車が動いたら、センサと信号を更新する必要があります。なぜなら、車がちょうど回転してセンサが回転しているときに、回転関数を使って回転させなければならないからです。新しい位置。
なぜこのベクトルが30 0になるのでしょうか？
これは、車とセンサーの距離が30であるからです。
あなたは、車と車との距離を知っています。
その後、センサーが更新されたら、信号を更新しましょう。
そして、ここで私はあなたにコンピュータ信号を説明したものを正確に行います。
センサのx座標を与え、次にManstonからすべてのセルをプラス10にして、マディソンからプラス10までのすべてのセルを取るy座標に対して同じ処理を行います。
したがって、センサを取り囲む20×20ピクセルの正方形を取得し、正方形内部には古いものをいくつか取得します。
基本的には、細胞の中には0または1が含まれており、20×20の正方形には20倍の20があり、400個の細胞に相当するためです。
さて、正方形内部の密度を得るために400で割ったところ、それはセンサー周辺の中心密度の信号を得る方法であり、第2のセンサーと第3のセンサーで同じことを行い、第2の信号と第3の信号。
OK。
だからそれはセンサーを取ることです、そして、これらの3行のコードはここで非常に重要です。
地図の端に到達したら車に乗りたいと思っていることももう一つあります。
あなたは車がいくつかの壁に突っ込んでくることを望んでいないことを知っているので、壁に近づくとそれを罰するためにペナルティをかけたいので、ここでやっています。
最初のセンサーがここよりも長いマイナス10より大きい場合は、ここでこの距離が長くなるのでマイナス10を長くします。
だから、センサ1が長いマニソンの懸念よりも大きく働くならば、すべてのポイントがここにあります。
つまり、車がマップの右端に近づいている場合、または車のセンサーがマップの左端に近づいている場合、セルセンサー1が10より低い場合、またはセンサーYがマイナス10より大きい場合それは地図の上端です。もし、自己検閲されたYがマップの下端である10よりも小さいならば。
そしてセンサー1がこれらの4つのエッジのいずれかに到達している場合は、信号が送信されたときにセンサー信号の信号を入れます。
私たちはそれを1に設定します。
それはどういう意味ですか？
それは砂の完全な密度のような完全な音を意味します。
それは最悪のようなもので、あなたは得ることができます。
それはあなたの車を停止することが非常に意味があります。
信号が1になるので、車は非常に悪い報酬を得るでしょう。
大丈夫。
そして信号についても同じことを行い、センサー2の3つから3つをシグナルします。
大丈夫。
そして、ゲームクラスを作成します。これは基本的にゲームを作成するクラスです。これまでは車を作成していましたが、今は地図を作成する必要があります。
私たちはゲームそのものを作り出さなければなりません。
だから我々はゲームをプレイしていないだろう、それはゲームをプレイするAIだ。ゲームは実際に障害物を避け、空港からダウンタ​​ウンへ、そしてその逆に行くことだ。
このゲームクラスでは、車のようなオブジェクトを作成し、更新関数を定義する必要があります。
これは最も重要なことですが、実際には今注目していきます。なぜなら、この更新機能は、車が行うべき行動を選択し、目標を達成するたびに選択するからです。
そして、この行動はまさにニューラルネットワークの出力です。
私たちの人工知能の中心にある新しい意志。
そして、この行動は、私たちのAIファイルで作成される私たちの人間のクラスの対象である車の脳によって返されます。
そして、このオブジェクトにはupdateと呼ばれるメソッドがあり、最後の単語と最後の単語を入力として受け取ります。
最後の言葉はもちろん車によって得られた最後の言葉であり、最後の信号はもちろん3つのセンサの最後の信号である。
しかし、私は目標に対する車の向きである2つの入力を追加しています。
たとえば、車が目標に向かっている場合、方向はゼロに等しくなります。
少し右に行くと、方向は45度に近くなります。
そして、それが少し左に行くならば、方位はマイナス45度に近くなります。
それが入力状態の強制入力です。
そして、マイナスの方向であるレッスンがあります。
したがって、通常はニューラルネットワークの入力は独立しています。マルチ共線性はありませんが、ニューラルネットワークがその重みをそのまま修正するので、これが本当に問題ではありません。
しかし、私はまだ車に加速を安定させるために車の訓練を可能にするこのマイナスオリエンテーションを追加することによってそれに気付く。
私たちがこれをやっているのは、このマイナスの方向付けを加えることによってAIがいつも同じ方向に探索するとは限らないということです。
私たちは、それが右または左の両方向で探検することを確認します。
そして、これは、3つの信号プラス方向とマイナス方向は、エンコーディングされたベクトルの5つの入力です。ネットワークに入る入力ベクトルは、ネットワークに入り、ネットワークに入ります。再生するアクションです。
そして、毎回、ネットワーク自体とネットワークの出力を含むこの更新関数によって出力が返されます。そのため、入力状態である最後の信号と最後の単語を入力する必要があります最後の単語に依存します。
すべての権利とそれから、私たちが選択したアクションに従って車を回転させるために移動機能を使用するローテーションを更新する単語のメインスコアを更新します。
我々は車の距離を道に乗り、マップ上のセンサーを表すボールに対するRiekerの応答の両方でセンサー球の位置を1つ2球にする。
あなたは非常に迅速にそれを見るでしょう。
そして、ここでその部分は非常に重要です。なぜなら、車が何らかの感覚にうまくいけば、それは遅くなるからです。
それで、それが私たちの速度を減らすところです。
あなたはここで見ることができるようにその速度が通常6であることを知っています。
そしてそれが何らかの意味になると、それは1に減速するものになります。
何らかの意味で車がどのように減速するのかがわかります。
だから遅くなります。
それに加えて、それは私たちが欲しいマイナス1を得る悪い報酬を得る。
それは実際にあなたが得る最悪の報酬です。
最高の報酬は1つですが、最悪の場合はマイナス1であり、報酬はマイナス1とプラス1の間です。
それ以外は
そして車は砂の上にはない。
それは普通のスピードの性別を保ちますし、次に何かを追加します。
それが目標に近づいているなら、若干積極的な報酬を得るでしょう。
それが目標からさらに遠ざかっている場合は、わずかに負の報酬からマイナス0を得ます。 2。
そして最後に。
報酬に関連する条件。
まあ、もし我々が以前に話したように、車がエッジの1つに近づきすぎているならば。
燃料センサーについて話をしたときに覚えています。
もし車が地図の左端に近づいていれば、マップの右端に近すぎるとマイナス1ワードになります。
マップの下端に近すぎると、それはあなたにもマイナスにもなります。
マップの左上に近すぎると、報酬はマイナス1になります。
それはひどい刑罰です。
それで、あなたはそれが完全で速く、他の何かに突入していかないかを見ていきます。
そして、これはゴールに達するとゴーを更新することです。
だから、車が空港に到着したときを最初に知っているので、地図の左上隅があります。
目標はダウンタウンの地図の右下に変わりますが、
そしてそれはまさに私たちがクロウのx座標と呼出しの白い座標を更新した後、車から車までの距離を更新します。
大丈夫。
そしてそれはあまり重要ではありません。
これは、Kに関連した地図上に道路や障害物をペイントできるように、私たちが知っているペイントツールを追加するクラスです。
V.
あなたが望むなら、私はこのコードの要約版を提供します。あなたがskivvyを使ってそれを行う方法を深く知りたい場合は、いくつかの参考資料を提供します。
しかし、私たちは人工知能から遠ざかっているので、詳細については触れません。
そして、これは、APIボタンがセーブとロードをクリアするのと同じようなカークラスを持つ最後のコードセクションでも同じです。
これが私たちがここでやることです。
透明なキャンバスをクリアします。
それは実際には私が脳を救うために知っておいた日を救うことができるので、ロード・ファンクションを使って後で再利用できるようにすることが非常に重要です。車のメモリを地図にナビゲートする方法をロードすることです。
最後に、最後のコードセクションの最後に、マップとAI自体を実行する全部を実行します。
そして、実際には、これは私たちが今やっていることです。
このコードで作成したすべてを見てみましょう。
だから、AIは実装されていません。
コードは非常にランダムな動きをします。
実際には虫のように見えますが、私たちはそれを修正することを心配しないでください。
通常は、実際の車のように動くように訓練し、道をたどって障害物を避けるために訓練します。
これをやろう。
私はすべてを選択して実行します。
そしてここに地図があります。
そしてここに車があります。
大丈夫。
だからこそ、私たちの車の昆虫のように見える小さなものです。
私があなたに言ったように、その行動は完全にランダムです。
だから毎回、車が左または右にまっすぐ進むかどうかをランダムに選択します。
そういうわけで、それは何かナンセンスな動きをしているので、それは昆虫のように見えます。
だからもちろんそれを修正します。
もちろん、AIが起動されているので、ここの空港や地図の右下にあるダウンタウンのゴールには向かない。
そして、我々はこの車にAIを実装するAIをこの昆虫に作ることでこれをすべて修正します。ここで3つのボールが黄色のものと赤のものを見ることができます。
それが私たちの3つのセンサーです。
それが私たちが検出するものです。
その周りにいくつかの香りがあります。
そして香りについて話してみましょう。
そうするために、私はちょうどここに左クリックをする必要があり、あなたは何らかの意味で、まだ左を教えることによって知っています。
だから今私はいくつか追加することができるいくつかの砂を追加しています。
ですから、あなたはミーンズの中心座標にある配列を送信することがわかります。
ここにはたくさんのものがあります。
そして、あなたがよく見ることができるように、それは車を見て良いです。
私たちは降下するだけで遅くなりました。
あなたが今すぐ見ることができるように、それは砂の中に入るので、実際には減速しています。
そして今、それは逃げようとしています。
そして、私たちが何をするかを知るために、いくつかの道路を描き、空港からダウンタ​​ウンまでいくつかの道を描き、私たちは道にとどまり障害物を避けるために車を訓練するでしょう。
大丈夫。
あなたが見ることができるように、砂を取り除く明確なボタンがあります。車の脳を救うためのセーブボタンがあります。
そして、実際にあなたのモデルを実際にあなたの車の脳に保存するその安全性について語ったこのコア曲線があります。そして、あなたはあなたの寒さを離れるとき、またはあなたのコンピュータをオフにし、再びそれに戻ることを知ることができます。
あなたは、ロードボタンを使用して脳をロードするモードをロードすることができ、それはあなたの車の列車AIを取得します。
さあ、今、私はAIを作るのを待つことができません。
これはとても楽しいものになるでしょう。
私たちはニューラルネットワークを作って、私たちが望むことができなくなったらすぐに処罰します。
それでは、次のチュートリアルからやりましょう。
そしてそれまで楽しむまで。