こんにちは､ このチュートリアルにようこそ｡
よし､ ではこれから人工知能をゼロから実装していこう｡
行ごとに呼び出すことにしています｡
そして､ この最初のコードセクションでは､ ライブラリをインポートします｡
しかし､ この最初のコードセクションを始める前に､ AIと私たちのマップの関係､ Pファイルについて説明しておきたいと思います｡
つまり､ なぜこれを地図に実装するのか､ ということです｡
私たちのAIは何のために､ どこで使うのか？
だから､ 実はとてもシンプルなんです｡
AIにその都度正しい行動を選択させるだけなので､ AIファイルからin classをインポートします｡
そこで､ このファイルではこのドキュメントクラスを作りますが､ それをインポートして､ その都度､ 適切なアクションを選択して再生するようにするだけです｡
そして､ このアクションをまさにこのラインで選択するのです｡
行動イコール脳のアップデート｡
報酬が少なければ､ 信号も少ない｡
少ない信号がニューラルネットワークの入力となる｡
センサーの3つの信号と､ プラス方位､ マイナス方位で構成されているのです｡
それがインプットされるわけです｡
でも､ そうするとアウトプットはプレイするためのアクションになるわけで､ それはあくまでこれから作るI feltから受け取るものです｡
だから､ そのことを心に留めておいてください｡
それはとてもシンプルなことです｡
まずAIからクラスをインポートし､ ドキュメントクラスからオブジェクトブレインを作成し､ 3つの信号＋方向＋マイナス方向の5次元の状態を符号化したベクトルを入力とする｡
左へ行く､ まっすぐ行く､ 右へ行くという3つのアクション｡
そして､ このガンマパラメーター､ これだけが､ これから作るクラスのパラメーターです｡
そして､ そのオブジェクトを作ったら､ ゲームクラスで､ その都度再生するアクションを選択します｡
そしてそれは､ 最後の報酬と最後の信号､ つまり入力に依存します｡
このAIを作る目的はそれだけです｡ 本物の人工知能に正しい行動をさせるために､ 前のチュートリアルで見たようなランダムな行動ではなく､
毎回正しい動きをさせることなのです｡
よし､ じゃあやってみようか｡
人工知能を実装しよう
そして､ 先ほども言ったように､ まずは実装に使用するライブラリをすべてインポートすることから始めます｡
そうすれば､ 必要なツールはすべて揃うことになります｡
わかりました｡
では､ まず1つ目から｡
1つ目は､ 必然性です｡
NumPyのライブラリです｡
私はいつも輸入をお勧めしています｡
これは､ アレイを再生して作業できるようにするライブラリです｡
そして､ こことBは､ numpyを使いたいときに､ より便利に使えるショートカットに過ぎません｡
よし､ それなら
2つ目のライブラリはランダムです｡
これは､ 経験値リプレイを実装する際に､ 異なるバッチからいくつかのランダムなサンプルを採取するためです｡
そこで､ このランダムなライブラリもインポートする必要があります｡
そして､ OSSを輸入することになります｡
これはモデルをロードするときに便利です｡ なぜなら､ モデルの準備ができたら､ モデルを保存するコードを実装し､
次にモデルをロードするコードを実装するからです｡
そんな時こそ､ 脳を保存しておいて､ コンピュータをシャットダウンしたい時に脳をロードし､
前に訓練した脳を何か新しい実験に再利用したいのです｡
だから､ それが大事なんです｡
そして､ トーチライブラリ必須をインポートします｡
それは､ ニューラルネットワークをPyTorchで実装するからです｡ PyTorchは動的なグラフを扱えるので､
人工知能には他のものよりもずっとおすすめです｡
そこで､ トーチと一緒に｡
そして､ トーチからトーチDOTとNWをインポートすることになります｡
NWモジュールは､ 最も必要なものです｡
これは､ いくつかのニューラルネットワークを実装するためのすべてのツールを含むモジュールです｡
そしてもちろん､ 3つのセンサーの信号プラス方向とマイナス方向を入力とし､ うまく再生するためのアクションを出力として返す､
実際には異なるアクションのQ値を返す､ ディープニューラルネットワークもあります｡
そしてソフトマックスを使い､ コースの目標を達成するために最も関連性の高い1つだけを再生するようにアクションを返します｡
だから､ トーステンは最も必要な存在です｡
そして､ 機能的なショートカットを出します｡
ここから先は､ PNモジュールからの機能パッケージ｡
つまり､ この関数パッケージには､ ニューラルネットワークを実装する際に使用するさまざまな関数が含まれているのです｡
最後の関数は､ 収束性を高めるためにユーバープラスを使用し､ ユーバーロスはGNモジュールからこの機能サブモジュールに含まれています｡
そして､ このすべてがかなり長いので､ ショートカットを与え､ F simplyと呼ぶことにします｡
そうすると､ インポートするモジュールはあと3つしかない｡
ということで､ 次も欠かせないのが､ アップです｡
ティムと私たちは､ トーチ・ライブラリから､ さらに上へと持っていきます｡
ティム そうです｡
そして､ 呼び出そう｡
Tim instead of torch up Tim それはもちろんオプティマイザーのためなんですね｡
確率的勾配降下を行うためのオプティマイザをいくつかインポートする予定なので､ 必ず必要になる｡
そして､ import autoが必要ですが､ これはgradから変数クラスを取るためだけです｡
だから､ その趣旨はちょっと専門的なんです｡
基本的には､ より高度な配列のようなセンサーから､ グラデーションを含む変数に何らかの変換を行うために､
変数クラスをインポートする必要があります｡
だから､ テンソル単体だけでは困るという感じです｡
このテンソルを､ 勾配を含む変数に置きたい｡
そして､ そのためには､ このテンソルを､ 変数クラスを使って､ テンソルと勾配を含む変数に変換する必要がある｡
ちょっと技術的な話になりますが､ これがPyTorchで作業するときのポイントです｡
しかし､ 変数クラスを取得する前に､ そのR2 gradに向かってインポートする必要があります｡
アンダーグラデュエイト､ そしてフロム｡
直筆サイン入りのトーチ
バレーボールを輸入しています｡
これでよしとしよう｡
これでAPIを実装するためのライブラリはすべて揃ったので､ 他のライブラリをわざわざインポートする必要はないでしょう｡
必要なツールはすべて揃ったので､ あとはニューラルネットワークのアーキテクチャを作るだけです｡
そこで､ 次のチュートリアルでは､ まさにこれを実行します｡
そしてそれまで､ お楽しみに｡
I.