こんにちは､ このパートの一番最後のステップへようこそ｡
Iを構築する一人｡
あとは､ 脳が映像を受け取る最初の段階から､ 目がアクションを演じる最後の段階まで､
信号を伝搬させる大きな前進関数を作るだけです｡
そこで､ この関数全体を作り､ これが最後のステップになります｡
パート2に移る前に､ 深層畳み込み学習でAIをトレーニングします｡
では､ こうしてみましょう｡
実際にinit関数と似たような関数呼び出しを行うことにします｡
つまり､ 既存の機能ですが､ 今回はそれを使って､ 以前作った他の機能を呼び出すのです｡
なぜなら､ 脳からの前進機能と体からの前進機能を使うからです｡
そして､ この呼び出し関数を使って､ 基本的にこれらの関数を呼び出しているわけです｡
つまり､ callは2つの引数を取ることになる｡
まず､ 対象はもちろん自分です｡
そして､ 2つ目の論点は､ あなたによると､ どうなるのでしょうか？
まあ､ 今回は全体的な伝播をやっているんですけどね｡
というのも､ AIがゲームをプレイする際には､ 当然ながらそれが出発点となり､
まずゲームの映像を視覚化し､ その信号を脳内に伝播させ､ そしてアクションをプレイすることになるからです｡
したがって､ 第2引数は入力となり､ これでこの全体の伝搬を行う準備が整ったことになります｡
では､ こうしてみましょう｡
なるほど､ では最初のステップ､ それは何でしょうか？
まず､ ゲームからの入力画像を受信します｡
そして､ これらの画像はニューラルネットワークに入るので､ まあ､ 特殊な構造でフォーマットしなければならないことは想像がつくでしょう｡
そして構造は､ もちろんトーチ構造です｡
まず､ 画像を配列に変換し､ 次にnumpyの配列をtorchテンソルに変換し､
最後にtorchテンソルをtorch変数に入れ､ テンソルとグラデーションの両方を格納することになります｡
それは､ 確率的勾配降下法の勾配層を非常に効率的に計算するためのダイナミックグラフのためです｡
それが私たちの最初の一歩です｡
そして､ 正しい形式の画像ができたら､ それが神経回路網に入り､ そこで信号の伝搬をすべて行うことになるのです｡
では､ この最初のステップ､ 画像を正しいフォーマットに変換することをやってみましょう｡
私たちのイメージは､ ここまでインプットされているんですね｡
そこで､ 今度はinputと呼ぶ新しい変数を作成することにします｡
これがニューラルネットワークの本当の入力なんですね｡
そして､ この入力､ どこにするのでしょう？
さて､ まずはインプットをする必要があります｡
それが私たちの原風景です｡
そして､ 先ほど言ったように､ これらの画像をnumpyの配列に変換したいと思います｡
そこで､ これを行うには､ 単純にショートカットとPを持つNumPyを次に関数配列を取ればよい｡
そこで､ 関数配列の括弧の中に入力を入れています｡
これでよしとしよう｡
今は配列によって何かに変換されている｡
しかし､ その場合､ numpy配列のセルにはピクセルが格納されるので､ 実際にはfloat型を指定する方が安全です｡
今すぐフロートを持っていることを確認したほうがいいし､ それを確認するために､ ここでNP float 32を使うことができます｡
わかりました｡
これで､ アンパイヤの配列ができましたが､ 型はfloatです｡
わかりました｡
そして､ それはもうひとつの理由でもあるのです｡
それは､ センサーが単一の型の配列であるという定義です｡
で､ シングルタイプはfloat､ float 32を選択します｡
わかりました｡
さて､ numpyの配列ができたので､ 次はそれをtorchのテンソルに変換する｡
そのために､ 例えばtorch thatとfrom underscore numpy関数を使って､ torchテンソルに変換することができます｡
これでよしとしよう｡
そして最後のステップは､ これらのトーチセンサーを､ テンソルとグラディエントの両方を含むトーチ変数に入れることです｡
そして､ その方法を知っているのですね｡
もちろん､ 変数クラスを取るのは､ 実はこの変数の中にあるものすべてが､ 実は変数クラスの入力だからです｡
しかし､ この方法でそれをお見せしたかったのです｡ 入力画像から始まり､ それをnumpyの配列に変換し､
torchのセンサーに変換し､ 変数に変換するのです｡
そして今､ 私たちは元気です｡
それらは､ まずAIの目であるニューラルネットワークに入り､ 次に完全接続された層で予測に導かれます｡
だから､ 目の､ 目の､ といえば､ まさに今､ そうなんです｡
これから､ これらの許可された画像を､ 3つの畳み込み層を介して､ 目の中に伝播させていきます｡
そして､ その方法は､ とてもシンプルであることがおわかりいただけると思います｡
それは､ イニシャル機能からすでに脳を体内に持っているからです｡
私たちの脳､ つまりセルフドットの脳を､ 入力画像に適用するだけで､ 脳からの前進機能のおかげで､
脳内の信号が伝播していくのです｡
そして､ 脳の4番目の機能が戻ってくるので､ 出力信号､ つまりキュー値を含む出力層の神経細胞である｡
この自己､ つまりここに入力された脳は､ この出力信号を返します｡ したがって､ この自己が返したものを変数に入れ､
それを非常に簡単にoutputと呼ぶことにします｡
そしてこの出力が､ 脳の出力信号となるのです｡
そして､ 脳の出力信号ができたので､ この出力信号を体に伝搬させなければならないわけです｡
そして､ そのためには､ 本体から2番目の前方関数を使うことになります｡
そして､ そのためには､ 単純に自分の体を､ もちろん出力に当てはめればいいわけです｡ 体の前進機能は､
脳の出力信号を入力として受け取りますから｡
まさに今､ 出力してアクションを返しているわけです｡
したがって､ アクションを返すので､ まあ､ ここでは､ アクションイコール自己のボディ出力を追加することになる｡
わかりました｡
これで､ 非常にシンプルに､ 入力映像を入力として､ それを脳内に伝播してキュー値を返すという､
脳からの機能をフルに使って､ まず脳内､ そして脳から身体へと信号を伝播したことがお分かりいただけたと思います｡
そして､ この出力信号を体の順送り機能で体に伝播させ､ アクションを再生させるのです｡
そして今､ 私たちがしなければならない唯一の残りは､ このパート1の最後の行､
目を構築するコードです｡
さて､ プレイするためにはアクションを返さなければならないのですが､ それがアクションです｡
しかし､ 今はアクションがtorch形式になっているので､ それをnumpy配列に戻す必要があります｡
そのために､ これらのアクションのデータ構造を取得し､ ここにnon pi関数を追加していきます｡
これで､ アクションが正しい形式で返されるようになりました｡
だから､ おめでとうございます｡
これで､ この第一部は終了です｡
私たちは3つのステップでAIを構築しました｡
まず､ 脳を作り､ 次に体を作る｡
そして3つ目は､ 体の中に脳を組み立てて､ 目からアクションをする瞬間までの信号をすべて伝搬させたことです｡
これで第一段階は終了です｡
それは大きな一歩でした｡
でも今は､ ご理解いただいたように､ AIを作っても､ やっぱりバカなんです｡
知能が高いので､ やりたいことができるように訓練する必要があるのです｡
そのためには､ 良い報酬を得たときは強化され､ 悪い報酬を得たときは罰されたり弱められたりして､
報酬から学習しているので､ ダム環境後の報酬を利用することになりますね｡
そこで､ Qラーニングの出番となるわけです｡
そこで､ このパート2では､ 深層畳み込み学習でAIをトレーニングしていきます｡
早く始めたいので､ それまではAIを楽しんでください｡