WEBVTT

00:00.490 --> 00:01.990
皆さん､ こんにちは！おかえりなさい｡ 

00:02.020 --> 00:05.350
前回の講義では､ 結局､ 環境構築に着手することになりました｡ 

00:05.350 --> 00:13.330
ここでは､ 11×11のグリッドを作成し､ ポストマンがそれを繰り返しながら課題を解決していきます｡ 

00:13.960 --> 00:18.490
これからは､ グリッドを手に入れた後のことを考え始めたいと思います｡ 

00:18.490 --> 00:23.890
また､ エージェント用のアクションも必要なので､ これらはすぐに削除します｡ 

00:23.890 --> 00:24.970
この細胞は必要ない｡ 

00:24.970 --> 00:27.790
ただ､ 間隔を空けるために入れてもらいたかったんです｡ 

00:27.790 --> 00:29.490
ただ､ 見やすくなっただけです｡ 

00:29.500 --> 00:35.530
1/2にしてくれ､ これを削除して､ ここに残そう｡ 

00:35.890 --> 00:36.520
だから

00:37.420 --> 00:43.330
というテキストを残し､ アクションをアップライト・ダウン・アンド・レフトに設定したいのです｡ 

00:43.570 --> 00:45.580
Pythonの場合､ かなり簡単です｡ 

00:45.580 --> 00:48.270
リストを作り､ アクションを設定することができるのです｡ 

00:48.280 --> 00:51.400
私たちの行動はイコールになるのです｡ 

00:52.140 --> 00:55.310
右上､ 左下と同じように2つ｡ 

00:55.320 --> 01:01.310
では､ 右下と左下にセットしてみましょう｡ 

01:01.320 --> 01:07.290
このようなアクションを迷路の中で操作できるような能力を､ 我々のエージェントexcuse meに与える必要があるのです｡ 

01:08.270 --> 01:12.000
それに加えて､ 報酬の設定も始めなければなりません｡ 

01:12.020 --> 01:18.050
さて､ ここからが少し厄介なのですが､

01:18.050 --> 01:31.930
環境の状態をいろいろと設定しなければなりません｡

01:31.940 --> 01:39.320
そこで､ エージェントが各州や都市を学習できるように､ 報酬の価値を設定することにしました｡ 

01:39.320 --> 01:40.910
そうやって､ エージェントは学んでいくんだ｡ 

01:40.910 --> 01:45.290
つまり､ エージェントはどの白マスから始めても､ その目的は常に同じということだ｡ 

01:45.290 --> 01:49.460
Qラーニング・ネイティブ・リワードの中で､ その総リワードを最大化したい｡ 

01:49.460 --> 01:51.980
罰ゲームと言われていることも知っています｡ 

01:51.980 --> 01:54.110
これらは､ ゴール以外のすべての状態で使用されます｡ 

01:54.110 --> 02:02.780
その最適なポリシーを確立するために､ その罰則を最小限にすることで､ ゴールへの最短経路を特定するように目を促すというわけです｡

02:03.200 --> 02:03.860
わかりました｡ 

02:04.460 --> 02:09.830
また､ 累積報酬を最大化するために､ AIエージェントは､ アイテム包装エリア､ 私たちのグリーンスクエア､

02:09.830 --> 02:15.590
覚えている､ 郵便配達員が移動できる街の他の場所との間の最短経路を見つける必要があります｡

02:15.590 --> 02:20.480
白い四角のエージェントは､ どの都市の境界にも衝突しないように学習するつもりです｡ 

02:20.480 --> 02:23.180
それが､ 「-100」と同じように黒い四角形です｡ 

02:23.180 --> 02:24.440
近づかないようにしたい｡ 

02:24.440 --> 02:26.720
もっと罰が当たるんです｡ 

02:26.810 --> 02:36.290
そのために､ 上で作成したグリッド､ 行のある環境を用意し､ さらにそこに値を割り当てることにします｡

02:36.290 --> 02:42.050
そこで､ そのためには､ NumPyを使って､ 環境行と環境列をNative100に設定することも始められるということを､

02:42.050 --> 02:47.060
どうすれば確立できるかを考えてみようということです｡

02:47.060 --> 02:49.490
つまり､ 環境の行と環境の列があるわけです｡ 

02:49.490 --> 03:10.370
この報酬をnum pi fullと呼び､ 環境行環境列を渡して､ 値を設定するために､ -100から始めることができます｡

03:11.890 --> 03:18.610
それに加えて､ リワードウィンドウを設定したい｡ 

03:20.150 --> 03:23.780
0と5のインデックスを使用します｡ 

03:24.290 --> 03:25.880
100に等しい｡ 

03:26.620 --> 03:28.530
そして､ これはすぐにでも理解できることです｡ 

03:28.540 --> 03:30.190
そこで､ 私たちのグリーンスクエアを取り上げます｡ 

03:30.190 --> 03:31.330
私たちには0と5があります｡ 

03:31.330 --> 03:37.330
グリーンスクエアの値を100とし､ この場所とこの場所で値を設定します｡ 

03:37.420 --> 03:41.680
では､ 次のスニペットを貼り付けますので､ それを見ていきましょう｡ 

03:41.680 --> 03:44.770
だから､ 私が一つひとつのステップを書き出すのを見るのは､ ちょっと繰り返しになるからやめましょう｡ 

03:44.770 --> 03:47.690
そして今､ 私たちはホワイトスペースを手に入れたのです｡ 

03:47.710 --> 03:51.820
ポイント還元用のノートを設定しよう｡ 

03:52.030 --> 03:57.490
このコードでは､ ディクショナリーを使用して､ ディクショナリー内の各値を設定しています｡ 

03:57.490 --> 03:58.480
だから､ 私たちは通路を確保しているのです｡ 

03:58.480 --> 04:06.550
これを個々の行として考え､ スライスしてインデックス1～9を設定します｡

04:06.550 --> 04:11.470
そして､ これらの値を設定するために､ forループで反復処理を行いたいと思います｡ 

04:11.860 --> 04:23.320
そうすることで､ 1から10まで､ 1､ 7､ 9を見ればわかりますが､ これを使うことで､ 実際に我々の環境で作業している1から10までの範囲の行インデックスを設定することができるのです｡

04:23.410 --> 04:25.570
列のインデックスを設定することができる｡ 

04:26.530 --> 04:34.720
ディクショナリーの行インデックスと列インデックスの通路で､ 負の値を設定することができます｡

04:34.720 --> 04:41.650
つまり､ これは本質的に､ 各特定範囲を見る場合､ 例えば､ この範囲内のIの通路9を例にとると､

04:41.650 --> 04:49.300
環境全体または環境内の各状態でマイナス1セットになっていることになるのです｡

04:49.450 --> 04:52.450
8の場合､ 3と7があります｡ 

04:52.450 --> 04:57.700
上にスクロールすると､ 3 と 7 はマイナス 1､ 100 はマイナス

04:57.700 --> 05:03.340
100 に設定されており､ この繰り返しで､ これらの報酬を設定したり､

05:03.340 --> 05:08.830
通路の中で定義している各状態をマイナス 1 に設定できます｡

05:08.830 --> 05:10.420
とても簡単にできるようになりました｡ 

05:10.420 --> 05:18.880
さらにロジックを書いたり､ より詳細な関数やステートメントを書く代わりに､ これらの値を反復して設定することができるのです｡

05:18.880 --> 05:24.310
後で環境を変えたい場合は､ ぜひ一度､ エクスペリエンスを試してみることをお勧めします｡

05:24.310 --> 05:29.440
このソリューションを実行した後､ これらの方針を学び､ 強化するのに役立つと思います｡ 

05:29.440 --> 05:35.050
しかし､ これは形になりつつあり､ 私たちができるクールなことは､ 実際にそれを視覚化することです｡ 

05:35.050 --> 05:38.680
では､ リワードで4列をやってみましょう｡ 

05:39.990 --> 05:46.650
行をプリントして､ これをプリントしてみると､ 実際にセルを再実行しなければならないかもしれないことがわかります｡ 

05:46.650 --> 05:47.640
申し訳ございませんでした｡ 

05:47.640 --> 05:50.190
ここを通して作業しているノートパソコンとはつながっていなかった｡ 

05:50.220 --> 05:51.270
1/2にしてください｡ 

05:51.270 --> 05:52.520
エラーを投げることになる｡ 

05:52.530 --> 05:55.290
もう一度､ セルを調べ直す必要がある｡ 

05:55.290 --> 05:57.240
では､ 早速ですが､ これを実行します｡ 

05:57.240 --> 05:58.770
NumPyをインポートしたいのですが｡ 

05:58.770 --> 06:00.300
私は実際にちょうどすることができます｡ 

06:00.420 --> 06:01.710
あ､ 失礼しました｡ 

06:02.130 --> 06:04.890
ここを通過して､ 下に降りてきますよ｡ 

06:04.890 --> 06:07.080
私たちの環境を走らせたい｡ 

06:07.080 --> 06:08.580
私たちのアクションを実行したい｡ 

06:08.580 --> 06:10.710
他は文字だけなので､ 必要ないですね｡ 

06:10.710 --> 06:14.670
でも､ それを入れておくと､ みなさんが参考にすることができますからね｡ 

06:14.700 --> 06:18.750
報酬ポイントが欲しい､ これをようやく可視化することができました｡ 

06:18.810 --> 06:25.920
私たちの環境をnumpyで実際に数値で表現し､ 可視化したものを見ることができます｡ 

06:25.920 --> 06:26.970
本当にかっこいい｡ 

06:26.970 --> 06:29.160
これで環境は整いました｡ 

06:29.190 --> 06:30.210
すごい作品ですね｡ 

06:30.240 --> 06:31.740
皆さんも参考にしてください｡ 

06:31.740 --> 06:36.750
さて､ ここで一旦終了です｡ 次の講義では､ モデルのトレーニングを開始する予定です｡ 

06:36.750 --> 06:42.840
つまり､ エージェントの行動を設定し､ 環境を設定し､ 報酬や罰を設定するものだったのです｡ 

06:42.840 --> 06:46.650
これは､ エージェントがQ学習内で最適なポリシーを確立するのに役立つと思われる｡ 

06:46.650 --> 06:54.960
全体として､ このような視覚的な表現､ あるいはイメージが構築されており､ この行をプリントアウトすれば､ それを確認することができます｡

06:56.060 --> 06:56.840
驚きです｡ 

06:56.930 --> 06:57.560
わかりました｡ 

06:57.710 --> 06:59.000
このままだらだらと続けるのはやめよう｡ 

06:59.000 --> 07:00.680
次の講義では､ ここで締めくくりましょう｡ 

07:00.710 --> 07:02.300
では､ モデルのトレーニングを開始しましょう｡ 

07:02.600 --> 07:04.070
それでは､ 次回の講義でお会いしましょう｡ 
