WEBVTT

00:00.330 --> 00:02.850
こんにちは､ このPythonチュートリアルへようこそ｡ 

00:03.000 --> 00:13.530
では､ 次に脳の出力信号をAIの本体に伝搬させ､ ベストに到達するために正しい行動を取らせるための前進関数を作ってみましょう｡

00:13.530 --> 00:17.160
しかし､ まだ訓練を受けていないため､ 正しい行動ができない｡ 

00:17.160 --> 00:23.160
まだ目の訓練はしていませんが､ これこそ､ 深層畳み込み学習を実装するパート2で行うことです｡

00:23.160 --> 00:29.670
ちなみに､ 深層畳み込み学習でAIを訓練する､ と改名する予定です｡

00:29.670 --> 00:35.220
しかし､ 今は脳の出力層から身体へ信号を転送する必要があります｡ 

00:35.220 --> 00:40.590
それこそ､ この前進機能は､ 私たちの体の最後の機能なのです｡

00:41.170 --> 00:42.460
では､ こうしてみましょう｡ 

00:42.610 --> 00:45.640
まずはGeoff Fordから｡ 

00:46.150 --> 00:50.020
そして､ あなたによれば､ それはどのような議論になるのでしょうか？

00:50.050 --> 00:53.050
まあ､ 当然ながら､ 最初の自己がかかるわけですが｡ 

00:53.050 --> 00:54.940
それから､ もう1つあるのですか？

00:54.970 --> 00:56.680
まあ､ ありますね｡ 

00:56.680 --> 00:58.030
そして､ それはどうなるのでしょうか？

00:58.060 --> 01:07.270
まあ､ ごく自然に､ 脳の出力信号を体に転送したいわけですから､ 入力は脳の出力信号になるわけです｡

01:07.540 --> 01:10.390
そこで､ これらの出力信号に名前をつける必要があります｡ 

01:10.390 --> 01:14.260
というわけで､ ここで論点を整理しておく｡ 

01:14.380 --> 01:14.860
わかりました｡ 

01:14.860 --> 01:21.400
つまり､ 入力画像が脳の中を伝搬して､ 出力層（ここではX）に到達した後の脳の出力信号が､

01:21.400 --> 01:34.750
脳の順方向関数によって返され､ 今度はこの脳の出力信号が､ 柔らかい次のボディクラスで作るこの新しい順方向関数によって身体に転送されることに対応します｡

01:35.260 --> 01:36.490
では､ こうしてみましょう｡ 

01:36.490 --> 01:38.560
ここに色をつけてみよう｡ 

01:38.560 --> 01:43.870
そして､ 今度はご理解いただいたように､ ソフトマックス方式でアクションを再生します｡ 

01:43.870 --> 01:51.230
つまり､ 脳の出力信号を受けた目の本体は､ ソフトマックスという手法で動作を再生することになる｡

01:51.250 --> 01:56.310
ですから､ 基本的に今やらなければならないことは､ 自動運転車の時と全く同じなのです｡ 

01:56.320 --> 01:59.310
確率の分布を求めます｡ 

01:59.320 --> 02:05.730
それが最初のステップで､ この確率の分布に従って行動をサンプリングするのです｡ 

02:05.740 --> 02:14.560
つまり､ 自走式自動車のファイルを入手して､ 自走式自動車に実装したセレクトアクション機能をコピーペーストすればいいわけです｡

02:14.560 --> 02:15.610
でも､ もう1度やってみましょう｡ 

02:15.610 --> 02:19.390
練習になりますし､ 実際に私より先に打ってみてください｡ 

02:20.020 --> 02:20.250
なるほど｡ 

02:20.260 --> 02:23.620
そこでまず､ 確率を求めます｡ 

02:23.620 --> 02:31.720
つまり､ これは､ 入力､ 画像､ 各アクションに依存するQ値のそれぞれの確率の分布であることを思い起こさせる｡

02:31.720 --> 02:39.700
つまり､ 6つまたは7つの可能な行動に対して､ それぞれ1つのQ値があるので､ 7つの確率の分布が得られます｡

02:39.700 --> 02:48.190
7つというのは､ 前進､ 左､ 右､ 射撃のほかに､ 走ることもできるので､ 6つではなく7つのアクションがあると思うからです｡

02:48.250 --> 02:53.860
つまり､ 7つの行動が考えられるので､ 各行動に関連するQ値ごとに1つずつ､

02:53.860 --> 02:56.680
7つの確率の分布が得られます｡

02:57.010 --> 02:58.840
だから､ 小道具はイコール｡ 

02:58.840 --> 03:00.580
そして今､ 私たちがしなければならないことを思い出してください｡ 

03:00.610 --> 03:06.400
まあ､ 基本的には関数モジュールのset max関数を使うしかないのですが｡ 

03:06.400 --> 03:07.330
だから､ とてもシンプルなんです｡ 

03:07.330 --> 03:13.630
まず機能モジュール､ 次にドット､ そしてソフトマックス関数を取り出します｡ 

03:13.630 --> 03:14.380
これです｡ 

03:14.380 --> 03:22.000
Enterを押して､ 今度はmax関数の引数を入力します｡ max関数は､

03:22.000 --> 03:25.270
確率分布を作成したい要素です｡

03:25.270 --> 03:31.510
そして､ これはもちろんQ値､ つまりニューラルネットワークの出力であり､

03:31.510 --> 03:35.770
確率の分布を作成するためのものです｡

03:35.770 --> 03:41.200
そして､ Q値が最大のものを直接選ぶのではなく､ さまざまな行動を探索できるように､

03:41.200 --> 03:45.730
この確率分布を作りたいのだと思い起こしました｡

03:45.730 --> 03:51.100
Q値が最大のものを直接選ぶと､ 他のアクションをあまり探索しないので､ 何かを見逃してしまうかもしれません｡

03:51.100 --> 04:01.330
しかし､ セルフマックス法を使えば､ もっと探索できるので､ より良いパターンの中に隠れた解を見つけることができるかもしれません｡

04:01.600 --> 04:07.720
ですから､ 繰り返しになりますが､ 私は自己最大値を強く推奨します｡ したがって､ 今やらなければならないことは､ Q値を入力することです｡ 

04:07.720 --> 04:11.140
それがここでの私たちのアウトプット､ 脳の出力です｡ 

04:11.140 --> 04:13.720
だから､ 出力は､ これでいいんです｡ 

04:13.720 --> 04:21.520
しかし､ この温度パラメーターを使って､ 探索をカスタマイズすることができます｡ 

04:21.520 --> 04:27.190
温度を高く設定すればするほど､ 他の行動の探索が少なくなることを忘れないでください｡

04:27.190 --> 04:35.740
なぜなら､ 最適な行動が高い確率で選択されるのに対して､ 他の行動は低い確率で選択されるからです｡

04:35.740 --> 04:41.830
つまり､ それはまさに自動運転車のようなもので､ したがって､ ここの出力に温度パラメータであるself

04:41.830 --> 04:44.770
dutyを掛ける必要があるわけです｡

04:45.560 --> 04:46.310
これでよしとしよう｡ 

04:47.140 --> 04:47.770
完璧です｡ 

04:47.800 --> 04:53.050
今はまだ小道具を使っていないので少し注意が必要ですが､ これから使うところです｡ 

04:53.050 --> 04:55.330
そうすると､ 次にやらなければならないことが出てくるわけです｡ 

04:55.360 --> 04:57.640
この確率をどう使うか？

04:57.670 --> 05:03.460
さて､ この確率分布から､ 最終的にプレイするアクションをサンプリングしてみます｡ 

05:03.460 --> 05:11.950
したがって､ 今やらなければならないことは､ この確率分布にしたがって行動をサンプリングするために多正規関数を使うことです｡

05:12.070 --> 05:14.710
さて､ これでアクションの準備は整いました｡ 

05:14.950 --> 05:21.250
ここで新しい変数を作成しています｡ これが､ 目の本体で再生されるアクションになるからです｡

05:21.280 --> 05:31.480
そして､ 確率の分布､ 小道具､ それに点描画､ さらに多倍長数字法を加えてみましょう｡

05:32.050 --> 05:32.680
わかりました｡ 

05:32.680 --> 05:34.870
そして､ 最後のアクションを演じることになるのです｡ 

05:34.870 --> 05:37.810
小道具の配布からサンプリングしています｡ 

05:38.200 --> 05:39.400
よし､ 完璧だ｡ 

05:39.400 --> 05:42.220
これで､ 欲しいものを返せるようになったわけです｡ 

05:42.220 --> 05:44.360
それが､ 演じるためのアクションです｡ 

05:44.380 --> 05:46.870
そしてこれらは､ もちろん行動です｡ 

05:46.870 --> 05:48.580
そして､ これで警告が消えるはずです｡ 

05:48.580 --> 05:50.220
欲しいものは全部使う｡ 

05:50.230 --> 05:51.070
これでよしとしよう｡ 

05:51.100 --> 05:51.900
完璧です｡ 

05:51.910 --> 05:53.860
これで順送り機能ができたわけです｡ 

05:53.860 --> 05:55.630
そして､ おめでとうございます｡ 

05:55.630 --> 05:57.240
本体も準備万端です｡ 

05:57.250 --> 05:58.960
それで､ 今､ 私たちの脳があるんです｡ 

05:58.960 --> 06:05.200
私たちには私たちの身体があります｡ ですから､ それらを組み立てて､ 未来のIを作る準備が整っているのです｡ 

06:05.200 --> 06:08.740
私は､ 脳と身体以外の何ものでもないだろう｡ 

06:08.740 --> 06:16.390
そして､ 知能を持ち､ アクションを演じるための肉体を持ち､ その知能のおかげで正しいアクションを演じることができるようになるわけです｡

06:16.390 --> 06:22.030
しかし､ その前に､ その知能を鍛えなければならないことを忘れないでください｡ 第2部で行うのは､ 深層学習､

06:22.030 --> 06:24.400
畳み込み学習でAIを鍛えることなのです｡

06:25.030 --> 06:28.300
よし､ じゃあ次のチュートリアルでAIを作ろう｡ 

06:28.300 --> 06:31.690
今回も､ 2つの機能を持つクラスになるのではないでしょうか｡ 

06:31.690 --> 06:34.390
そのため､ 2～3回のチュートリアルが必要になります｡ 

06:34.390 --> 06:35.520
だから､ 待ち遠しいんです｡ 

06:35.530 --> 06:36.640
これは楽しみですね｡ 

06:36.640 --> 06:37.840
そしてそれまで､ お楽しみに｡ 

06:37.840 --> 06:38.380
I.
