WEBVTT

00:00.240 --> 00:03.300
こんにちは､ このパートの一番最後のステップへようこそ｡ 

00:03.300 --> 00:04.620
Iを構築する一人｡ 

00:04.650 --> 00:10.200
あとは､ 脳が映像を受け取る最初の段階から､ 目がアクションを演じる最後の段階まで､

00:10.200 --> 00:17.160
信号を伝搬させる大きな前進関数を作るだけです｡

00:17.160 --> 00:21.060
そこで､ この関数全体を作り､ これが最後のステップになります｡ 

00:21.090 --> 00:26.430
パート2に移る前に､ 深層畳み込み学習でAIをトレーニングします｡ 

00:26.670 --> 00:27.840
では､ こうしてみましょう｡ 

00:27.840 --> 00:33.600
実際にinit関数と似たような関数呼び出しを行うことにします｡ 

00:33.600 --> 00:39.240
つまり､ 既存の機能ですが､ 今回はそれを使って､ 以前作った他の機能を呼び出すのです｡

00:39.240 --> 00:45.390
なぜなら､ 脳からの前進機能と体からの前進機能を使うからです｡

00:45.390 --> 00:50.070
そして､ この呼び出し関数を使って､ 基本的にこれらの関数を呼び出しているわけです｡ 

00:50.280 --> 00:53.040
つまり､ callは2つの引数を取ることになる｡ 

00:53.040 --> 00:55.830
まず､ 対象はもちろん自分です｡ 

00:55.830 --> 01:00.120
そして､ 2つ目の論点は､ あなたによると､ どうなるのでしょうか？

01:00.120 --> 01:02.700
まあ､ 今回は全体的な伝播をやっているんですけどね｡ 

01:02.700 --> 01:08.370
というのも､ AIがゲームをプレイする際には､ 当然ながらそれが出発点となり､

01:08.370 --> 01:16.680
まずゲームの映像を視覚化し､ その信号を脳内に伝播させ､ そしてアクションをプレイすることになるからです｡

01:17.010 --> 01:24.360
したがって､ 第2引数は入力となり､ これでこの全体の伝搬を行う準備が整ったことになります｡ 

01:24.600 --> 01:25.830
では､ こうしてみましょう｡ 

01:25.860 --> 01:27.750
なるほど､ では最初のステップ､ それは何でしょうか？

01:27.750 --> 01:31.740
まず､ ゲームからの入力画像を受信します｡ 

01:31.950 --> 01:39.570
そして､ これらの画像はニューラルネットワークに入るので､ まあ､ 特殊な構造でフォーマットしなければならないことは想像がつくでしょう｡

01:39.570 --> 01:42.480
そして構造は､ もちろんトーチ構造です｡ 

01:42.570 --> 01:48.510
まず､ 画像を配列に変換し､ 次にnumpyの配列をtorchテンソルに変換し､

01:48.510 --> 01:58.140
最後にtorchテンソルをtorch変数に入れ､ テンソルとグラデーションの両方を格納することになります｡

01:58.140 --> 02:04.350
それは､ 確率的勾配降下法の勾配層を非常に効率的に計算するためのダイナミックグラフのためです｡

02:04.350 --> 02:06.090
それが私たちの最初の一歩です｡ 

02:06.090 --> 02:15.510
そして､ 正しい形式の画像ができたら､ それが神経回路網に入り､ そこで信号の伝搬をすべて行うことになるのです｡

02:16.150 --> 02:20.200
では､ この最初のステップ､ 画像を正しいフォーマットに変換することをやってみましょう｡ 

02:20.200 --> 02:22.980
私たちのイメージは､ ここまでインプットされているんですね｡ 

02:22.990 --> 02:26.620
そこで､ 今度はinputと呼ぶ新しい変数を作成することにします｡ 

02:26.620 --> 02:29.290
これがニューラルネットワークの本当の入力なんですね｡ 

02:29.290 --> 02:31.690
そして､ この入力､ どこにするのでしょう？

02:31.690 --> 02:34.300
さて､ まずはインプットをする必要があります｡ 

02:34.300 --> 02:36.580
それが私たちの原風景です｡ 

02:36.580 --> 02:42.130
そして､ 先ほど言ったように､ これらの画像をnumpyの配列に変換したいと思います｡ 

02:42.130 --> 02:49.150
そこで､ これを行うには､ 単純にショートカットとPを持つNumPyを次に関数配列を取ればよい｡ 

02:49.240 --> 02:52.660
そこで､ 関数配列の括弧の中に入力を入れています｡ 

02:52.690 --> 02:53.260
これでよしとしよう｡ 

02:53.260 --> 02:55.930
今は配列によって何かに変換されている｡ 

02:55.930 --> 03:04.330
しかし､ その場合､ numpy配列のセルにはピクセルが格納されるので､ 実際にはfloat型を指定する方が安全です｡

03:04.360 --> 03:12.160
今すぐフロートを持っていることを確認したほうがいいし､ それを確認するために､ ここでNP float 32を使うことができます｡

03:12.550 --> 03:13.180
わかりました｡ 

03:13.180 --> 03:17.080
これで､ アンパイヤの配列ができましたが､ 型はfloatです｡ 

03:17.680 --> 03:18.040
わかりました｡ 

03:18.040 --> 03:19.510
そして､ それはもうひとつの理由でもあるのです｡ 

03:19.510 --> 03:24.040
それは､ センサーが単一の型の配列であるという定義です｡ 

03:24.040 --> 03:27.340
で､ シングルタイプはfloat､ float 32を選択します｡ 

03:27.910 --> 03:28.210
わかりました｡ 

03:28.210 --> 03:33.730
さて､ numpyの配列ができたので､ 次はそれをtorchのテンソルに変換する｡ 

03:33.730 --> 03:44.920
そのために､ 例えばtorch thatとfrom underscore numpy関数を使って､ torchテンソルに変換することができます｡

03:45.160 --> 03:46.000
これでよしとしよう｡ 

03:46.000 --> 03:53.140
そして最後のステップは､ これらのトーチセンサーを､ テンソルとグラディエントの両方を含むトーチ変数に入れることです｡

03:53.140 --> 03:54.850
そして､ その方法を知っているのですね｡ 

03:54.850 --> 04:05.470
もちろん､ 変数クラスを取るのは､ 実はこの変数の中にあるものすべてが､ 実は変数クラスの入力だからです｡

04:05.470 --> 04:11.530
しかし､ この方法でそれをお見せしたかったのです｡ 入力画像から始まり､ それをnumpyの配列に変換し､

04:11.530 --> 04:15.880
torchのセンサーに変換し､ 変数に変換するのです｡

04:15.880 --> 04:17.020
そして今､ 私たちは元気です｡ 

04:17.020 --> 04:25.450
それらは､ まずAIの目であるニューラルネットワークに入り､ 次に完全接続された層で予測に導かれます｡

04:25.930 --> 04:30.100
だから､ 目の､ 目の､ といえば､ まさに今､ そうなんです｡ 

04:30.280 --> 04:38.590
これから､ これらの許可された画像を､ 3つの畳み込み層を介して､ 目の中に伝播させていきます｡

04:38.590 --> 04:41.410
そして､ その方法は､ とてもシンプルであることがおわかりいただけると思います｡ 

04:41.410 --> 04:46.030
それは､ イニシャル機能からすでに脳を体内に持っているからです｡ 

04:46.030 --> 04:55.780
私たちの脳､ つまりセルフドットの脳を､ 入力画像に適用するだけで､ 脳からの前進機能のおかげで､

04:55.780 --> 05:03.160
脳内の信号が伝播していくのです｡

05:03.160 --> 05:11.170
そして､ 脳の4番目の機能が戻ってくるので､ 出力信号､ つまりキュー値を含む出力層の神経細胞である｡

05:11.170 --> 05:17.770
この自己､ つまりここに入力された脳は､ この出力信号を返します｡ したがって､ この自己が返したものを変数に入れ､

05:17.770 --> 05:23.230
それを非常に簡単にoutputと呼ぶことにします｡

05:24.040 --> 05:26.570
そしてこの出力が､ 脳の出力信号となるのです｡ 

05:26.590 --> 05:32.690
そして､ 脳の出力信号ができたので､ この出力信号を体に伝搬させなければならないわけです｡

05:32.710 --> 05:36.790
そして､ そのためには､ 本体から2番目の前方関数を使うことになります｡ 

05:36.790 --> 05:45.250
そして､ そのためには､ 単純に自分の体を､ もちろん出力に当てはめればいいわけです｡ 体の前進機能は､

05:45.250 --> 05:50.470
脳の出力信号を入力として受け取りますから｡

05:50.470 --> 05:55.780
まさに今､ 出力してアクションを返しているわけです｡ 

05:55.780 --> 06:03.340
したがって､ アクションを返すので､ まあ､ ここでは､ アクションイコール自己のボディ出力を追加することになる｡

06:03.760 --> 06:04.090
わかりました｡ 

06:04.090 --> 06:09.670
これで､ 非常にシンプルに､ 入力映像を入力として､ それを脳内に伝播してキュー値を返すという､

06:09.670 --> 06:19.660
脳からの機能をフルに使って､ まず脳内､ そして脳から身体へと信号を伝播したことがお分かりいただけたと思います｡

06:19.960 --> 06:26.530
そして､ この出力信号を体の順送り機能で体に伝播させ､ アクションを再生させるのです｡

06:26.590 --> 06:32.260
そして今､ 私たちがしなければならない唯一の残りは､ このパート1の最後の行､

06:32.260 --> 06:34.150
目を構築するコードです｡

06:34.180 --> 06:39.040
さて､ プレイするためにはアクションを返さなければならないのですが､ それがアクションです｡ 

06:39.310 --> 06:45.040
しかし､ 今はアクションがtorch形式になっているので､ それをnumpy配列に戻す必要があります｡ 

06:45.040 --> 06:53.650
そのために､ これらのアクションのデータ構造を取得し､ ここにnon pi関数を追加していきます｡

06:53.650 --> 06:56.470
これで､ アクションが正しい形式で返されるようになりました｡ 

06:56.470 --> 06:57.910
だから､ おめでとうございます｡ 

06:57.910 --> 07:00.520
これで､ この第一部は終了です｡ 

07:00.520 --> 07:03.190
私たちは3つのステップでAIを構築しました｡ 

07:03.190 --> 07:06.640
まず､ 脳を作り､ 次に体を作る｡ 

07:06.640 --> 07:14.860
そして3つ目は､ 体の中に脳を組み立てて､ 目からアクションをする瞬間までの信号をすべて伝搬させたことです｡

07:15.310 --> 07:16.960
これで第一段階は終了です｡ 

07:16.960 --> 07:18.280
それは大きな一歩でした｡ 

07:18.280 --> 07:22.030
でも今は､ ご理解いただいたように､ AIを作っても､ やっぱりバカなんです｡ 

07:22.030 --> 07:26.410
知能が高いので､ やりたいことができるように訓練する必要があるのです｡ 

07:26.410 --> 07:31.450
そのためには､ 良い報酬を得たときは強化され､ 悪い報酬を得たときは罰されたり弱められたりして､

07:31.450 --> 07:38.500
報酬から学習しているので､ ダム環境後の報酬を利用することになりますね｡

07:38.530 --> 07:41.410
そこで､ Qラーニングの出番となるわけです｡ 

07:41.410 --> 07:47.260
そこで､ このパート2では､ 深層畳み込み学習でAIをトレーニングしていきます｡ 

07:47.260 --> 07:50.440
早く始めたいので､ それまではAIを楽しんでください｡ 
