WEBVTT

00:00.520 --> 00:03.860
こんにちは､ 人工知能のコースにようこそ｡ 

00:03.880 --> 00:05.860
本日のチュートリアルでは､ お楽しみに｡ 

00:05.860 --> 00:13.270
今回は､ これまで散々言ってきた迷路を､ 実際に人工知能が進んでいく様子を見てもらいます｡

00:13.480 --> 00:18.340
そして､ キー・ラーニングを駆使して､ 道を切り開き､ 出口を見つけるのです｡ 

00:18.340 --> 00:24.250
そして､ キューの値がどうなるのか､ ポリシーがどうなるのか､ などなど｡ 

00:24.250 --> 00:25.810
では､ 見てみましょう｡ 

00:26.080 --> 00:31.780
今回は､ バークレー大学のご厚意により､ いくつかの資料を使用させていただきます｡ 

00:31.780 --> 00:41.920
だから､ I, Berkeley, B, r k e l e y edu に行って､ そのリンク先でエンターすれば､ このサイトが表示されます｡

00:42.160 --> 00:49.720
そして､ ここで注目したいのは､ パックマンプロジェクトに行くということです｡ 

00:50.440 --> 00:50.700
そうですね｡ 

00:50.710 --> 00:51.930
ポケモンプロジェクト

00:51.940 --> 00:59.020
そして､ 下にスクロールして強化学習を見ると､ 私たちが取り組んでいるのはこのようなことです｡ 

00:59.020 --> 01:01.630
そこで､ ここでは､ ZIPアーカイブをダウンロードすることができます｡ 

01:01.630 --> 01:04.960
だから､ それはあなたが望むなら､ だから､ あなたはする必要はありません｡ 

01:04.960 --> 01:08.020
これは､ このチュートリアルで一緒に解決していくわけではありません｡ 

01:08.020 --> 01:12.910
UCバークレー校がこのような資料を提供してくれたことに､

01:12.910 --> 01:16.120
私たちはとても感謝しています｡

01:16.120 --> 01:21.790
しかし､ もしあなたが自分で実験したいのであれば､ これは私たちのコースの一部ではないことを心に留めておいてください｡

01:21.790 --> 01:23.140
バークレーコースの一部です｡ 

01:23.140 --> 01:26.050
説明のために､ その仕組みを紹介します｡ 

01:26.050 --> 01:31.060
しかし､ もしあなたがこれで実験したいのであれば､ ここにZIPアーカイブとすべてのインストラクションも掲載されています｡

01:31.180 --> 01:34.780
そして､ すぐにPythonに入るだけです｡ 

01:34.810 --> 01:41.050
そして､ まず最初にお見せしたいのは､ ここにライセンス情報があることです｡ 

01:41.050 --> 01:42.700
つまり､ こういうことです｡ 

01:42.700 --> 01:47.650
私たちは非常に幸運で､ 教育目的でこれらのプロジェクトを自由に使用・拡張してよい､ ただし､

01:47.650 --> 01:50.860
分散ソリューションを提供せよ､ と言われました｡

01:50.890 --> 01:57.790
あなたは､ 私たちが持っているこの通知を保持し､ 私たちも持っているリンクを含む､ UCバークレーへの明確な帰属を提供する｡

01:57.790 --> 02:01.660
もっと詳しく知りたい方は､ リンク先でご覧ください｡ 

02:01.660 --> 02:05.380
そして､ このプロジェクトに携わってくださったすべての方々に､ 心から感謝いたします｡ 

02:05.380 --> 02:08.170
では､ これから作るグリッドの世界です｡ 

02:08.170 --> 02:09.280
そこには､ 解決策がある｡ 

02:09.280 --> 02:14.650
そのためには､ 自分自身を孤立させるか､ あるいは解決策を見出さなければならないでしょう｡

02:14.950 --> 02:20.140
もしかしたら､ 皆さんの中にも､ あるいは皆さんのお知り合いの方にも､ もう一度お願いしたいことがあれば､ 助けていただけるかもしれません｡

02:20.140 --> 02:24.850
今この画面で見るだけだから､ 必要ないでしょ｡ 

02:24.850 --> 02:29.440
これらのファイルをすべて作成したら､ あとはこちらで起動すればいいわけです｡ 

02:29.440 --> 02:34.450
つまり､ この世界全体に関わるパラメータがあるわけです｡ 

02:34.570 --> 02:39.010
そして今､ 起動するとどのように見えるかだけをお見せします｡ 

02:39.010 --> 02:41.470
では､ マニュアルモードで起動してみましょう｡ 

02:41.470 --> 02:46.990
手動でエージェントをコントロールするために､ このパラメータの1つをマイナスしてください｡ 

02:46.990 --> 02:48.190
ここで､ 私たちのグリッドをご覧ください｡ 

02:48.190 --> 02:50.110
だから､ 上に､ 上に行けるんです｡ 

02:50.110 --> 02:54.910
ですから､ 私がいた州では､ 行動を起こし､ 始まり､ 始まっていることがおわかりいただけると思います｡ 

02:54.910 --> 03:00.100
そして､ 私が押し上げて､ 北に行動を起こし､ 初めてゼロワンになったのをご覧になったでしょう｡ 

03:00.100 --> 03:00.970
だから､ 登ったんです｡ 

03:01.270 --> 03:04.510
しかし､ 2度目は行動を休んでしまい､ 同じ状態で終わってしまいました｡ 

03:04.510 --> 03:04.930
私は動かなかった｡ 

03:04.930 --> 03:06.160
そこで､ あることが起こった｡ 

03:06.370 --> 03:07.180
ランダムが起こったのです｡ 

03:07.180 --> 03:10.810
左か右に行ったのですが､ デフォルトでパラメータが設定されています｡ 

03:10.810 --> 03:20.800
デフォルトでは､ 20%の確率で意図しない方向へ､ 10%の確率で左へ､ 10%の確率で右へというように設定されているのがおわかりいただけると思います｡

03:20.950 --> 03:23.350
だから､ 上に行ったら､ ほら､ 右に行くんですよ｡ 

03:23.350 --> 03:25.570
今すぐ行ってきました｡ 

03:25.570 --> 03:29.080
何度も何度も右往左往することはなかった｡ 

03:29.080 --> 03:29.680
そして､ 完成しました｡ 

03:29.680 --> 03:34.210
しかし､ この実装では､ この最終出力から抜け出すには､ もう一度クリックする必要があります｡ 

03:34.210 --> 03:37.000
だから､ 出口からもう一度クリックすれば終了です｡ 

03:37.000 --> 03:40.630
それは端末の状態なので､ マニュアルを実行することができるのです｡ 

03:40.630 --> 03:45.520
右､ 右､ 右､ 左上と進むとわかると思います｡ 

03:45.520 --> 03:49.990
ここで､ 以前見たエージェントがまっすぐ上に行かないというのは､ どういうことでしょうか？

03:49.990 --> 03:53.230
落とし穴に入る可能性があるなら､ 上に行く意味はないだろう？

03:53.230 --> 03:54.370
では､ エージェントがどうするか見てみましょう｡ 

03:54.490 --> 03:56.680
左に行くと､ ここは西だから､ 西に行くんだ｡ 

03:56.680 --> 04:01.930
そして､ 左をクリックしたのですが､ 上昇し､ ここで右をクリックすると､ 最終的に終了の状態になり､

04:01.930 --> 04:04.780
報酬が1になりました｡

04:05.170 --> 04:06.910
手動ではこんな感じなんですね｡ 

04:06.910 --> 04:12.460
では､ 実際にこれにAIをつないで通してみましょう｡ 

04:12.460 --> 04:16.720
そこで､ ここでHを行い､ いくつかのパラメータを追加してみましょう｡ 

04:16.720 --> 04:18.970
では､ ここで私が入力した内容を確認させてください｡ 

04:18.970 --> 04:27.910
Python Grid WorldのドットP､ そしてここからマイナスRは､ 生きるための報酬ということですね｡

04:27.910 --> 04:31.630
ということで､ 私の2本があるので､ これは外したほうがいいかもしれませんね｡ 

04:31.960 --> 04:34.510
では､ マイナスKは何回目のイタレーションなのでしょうか？

04:34.840 --> 04:36.610
反復回数が多すぎますね｡ 

04:36.610 --> 04:37.390
もっと少なくしよう｡ 

04:37.390 --> 04:39.850
10回くらい繰り返しましょう｡ 

04:39.850 --> 04:40.690
それで十分でしょう｡ 

04:40.960 --> 04:48.100
マイナスaはエージェントで､ ランダムエージェント､ バリューエージェント､ Q Qで､

04:48.100 --> 04:54.850
Q Qの学習エージェントがこれを行うことでマイナスsは何sの速度なのかです｡

04:54.850 --> 04:56.530
だから､ 速すぎるんです｡ 

04:56.530 --> 04:58.810
とりあえずデフォルトの速度でやってみよう｡ 

04:58.810 --> 05:02.440
マイナスRは生前退位

05:02.440 --> 05:04.690
そのため､ デフォルトでは0です｡ 

05:04.690 --> 05:07.630
ですから､ 最初の頃は､ 生活保護費ゼロからスタートしたことを思い出してください｡ 

05:07.630 --> 05:10.000
だから､ これもゼロとしよう｡ 

05:10.000 --> 05:15.760
ここでは､ このパラメータを削除して､ dxをDXディスカウントの内容とします｡ 

05:15.760 --> 05:16.990
だから､ 私たちのディスカウントファクター｡ 

05:16.990 --> 05:18.310
だから､ 0にしとこう｡  9.

05:18.310 --> 05:21.580
だから､ このセクションのスタート地点と非常によく似ているんです｡ 

05:21.580 --> 05:25.420
では､ その速すぎる道をもう一度走ってみましょう｡ 

05:26.300 --> 05:26.500
と思っています｡ 

05:26.580 --> 05:27.420
あ､ 実はこれ､ すごくきれいなんです｡ 

05:27.630 --> 05:29.280
だから､ 手探り状態なのがよくわかるんです｡ 

05:30.410 --> 05:33.350
そして今のところ3回マイナスを叩いている｡ 

05:33.350 --> 05:36.410
そして､ この四角の中でQ値が更新されていく様子がわかると思います｡ 

05:36.410 --> 05:37.810
つまり､ これらは価値観なのです｡ 

05:37.820 --> 05:38.990
ゼロから始まる｡ 

05:39.020 --> 05:40.640
Q値が表示されるようになりました｡ 

05:40.640 --> 05:46.220
そこで彼は､ これまたちょっと変わった実装で､ 最終段階まで行くと､ そこから抜け出さなければならないことを学びました｡

05:46.370 --> 05:48.890
終了するには､ もう1つボタンをクリックするだけです｡ 

05:48.890 --> 05:51.350
それで､ 1つに近いけど､ 正確には1つではないんです｡ 

05:51.530 --> 06:02.360
しかし､ 同時に､ ここでは､ その値が徐々に0に結晶化しているのがわかると思います｡

06:02.360 --> 06:02.360
8は明らかにどこかに行き着いてるんだけど､

06:02.360 --> 06:04.520
今までの残りは情報が足りなくて何が起きてるのか理解できないから0点って感じ｡

06:05.360 --> 06:05.520
なるほど｡ 

06:05.660 --> 06:08.600
さて､ どうなることやら......｡ 

06:10.080 --> 06:13.590
何が起こるか探る､ 探る､ 探る｡ 

06:13.620 --> 06:14.850
しばらくされていたこと｡ 

06:15.540 --> 06:17.610
そして忘れてはならないのは､ ここにはランダム性があるということです｡ 

06:17.850 --> 06:20.580
だから､ 今まで何度かそのいいところを突いてきたんです｡ 

06:20.910 --> 06:24.090
10回しか反復できないので､ 早く覚えなければならない｡ 

06:25.640 --> 06:26.630
そこにあなたが必要なんです

06:27.140 --> 06:28.670
見てみよう｡ 

06:29.180 --> 06:29.980
さあ

06:29.990 --> 06:31.790
もう､ その迷路から抜け出してください｡ 

06:32.760 --> 06:40.200
そうですね､ 10話なので平均的なリターンですが､ 私たちはそれにあまり興味がないんです｡ 

06:40.200 --> 06:42.510
では､ ここで......見たことのないものを見てみましょう｡ 

06:42.510 --> 06:43.770
そこをクリックすると......｡ 

06:43.770 --> 06:49.530
このように､ たった10回のエピソードの中でも､ 彼が考え出したポリシーがあることがおわかりいただけると思います｡ 

06:49.530 --> 06:50.610
彼はすでにポリシーを持っている｡ 

06:50.610 --> 06:52.290
よし､ バババババッといくぞ｡ 

06:52.380 --> 06:54.030
そして､ ここで私は下を向きます｡ 

06:54.030 --> 06:55.440
ここに降りてくる｡ 

06:55.440 --> 06:58.230
壁にぶつかって､ ここでバウンドするんです｡ 

06:58.440 --> 06:59.250
かっこいいですね｡ 

07:00.180 --> 07:02.100
では次に､ 速度を上げてみましょう｡ 

07:02.430 --> 07:05.520
そこでパラメータsxは何だったのか､ 2倍くらいにしよう｡ 

07:05.520 --> 07:11.220
では､ 4倍速にして､ 反復回数を増やしてみましょう｡ 

07:11.220 --> 07:13.440
だから､ 今回は20回の反復としよう｡ 

07:13.830 --> 07:18.660
今はもう少しスピードが上がっているのがわかるので､ もう少し通れるかどうか見てみましょう｡ 

07:19.580 --> 07:20.960
そして､ 彼は学んでいる｡ 

07:20.960 --> 07:24.080
この状態から抜け出すのは無理だと学習しているのだ｡ 

07:24.440 --> 07:29.990
右も左もないような良い行動や､ こういう行動はあまりないですね｡ 

07:30.020 --> 07:30.530
間違いなく｡ 

07:30.530 --> 07:31.910
これは絶対にダメです｡ 

07:32.300 --> 07:33.380
彼はまだそれを学ぶ必要があります｡ 

07:33.380 --> 07:34.550
だから､ ここからがまたいいんです｡ 

07:34.640 --> 07:36.290
この動作がかなり良いことがおわかりいただけると思います｡ 

07:36.710 --> 07:37.220
わかりました｡ 

07:37.220 --> 07:38.390
彼は何を得たのか？

07:38.430 --> 07:40.340
なるほど､ ここは面白い方針ですね｡ 

07:40.640 --> 07:42.020
彼は､ 上へ行くことを決意する｡ 

07:42.050 --> 07:43.190
ただ､ 情報が少ない｡ 

07:43.190 --> 07:44.360
では､ そうしましょう｡ 

07:44.420 --> 07:45.530
やり直そう｡ 

07:46.780 --> 07:50.140
そして､ 速度を100くらいまで上げてみましょう｡ 

07:50.230 --> 07:51.310
だから､ 超高速なんです｡ 

07:51.310 --> 07:57.940
そして､ 反復回数は､ そのシーンをCSを狂ったように速く走らせるために､ STEMを100回反復させることになるのです｡

07:57.940 --> 08:00.700
それに､ 繰り返しの回数が多いからこそ､ わかることがあるんです｡ 

08:01.000 --> 08:10.750
彼はより多くの情報と､ 実験する機会を得て､ 実際にこの､ 行列やマトリックス､ 今知っているすべての状態のキュー値を構築することができます｡

08:10.930 --> 08:13.070
0を見ることができます｡  89.

08:13.090 --> 08:15.730
例で言ったのは､ 0みたいなものです｡  86.

08:15.880 --> 08:20.080
もう一つ覚えておいてほしいのは､ このように､ どのような状態の値でも良いということです｡ 

08:20.620 --> 08:24.130
私たちが持っていた数式は､ Q値の最大値であることを忘れないでください｡ 

08:24.130 --> 08:26.930
ショートカット式で出てきたことを思い出してください｡ 

08:26.950 --> 08:29.370
では､ この状態での価値はどうなるのでしょうか？

08:29.380 --> 08:34.390
この状態のV､ 0になるんです｡  89は､ 4つの中で一番高いからです｡ 

08:34.540 --> 08:37.030
ここでは､ この状態の値を0とする｡  71.

08:37.030 --> 08:40.150
この状態の値は0である｡  61など｡ 

08:40.150 --> 08:41.350
だから､ それは覚えておいてほしい｡ 

08:41.350 --> 08:45.130
だから､ 私たちの例では､ 0だったように記憶しています｡  86とかだから､ かなり近い｡ 

08:45.670 --> 08:51.130
それで､ ここで次に行くと､ そのまま消えてしまったり､ 消えてしまったりするんです｡ 

08:51.580 --> 08:54.490
またやろう､ 復活させよう｡ 

08:55.090 --> 08:55.660
いい？

08:55.670 --> 08:56.060
なるほど｡ 

08:56.140 --> 08:57.250
ゆっくり､ ゆっくり､ ゆっくり｡ 

08:57.250 --> 09:00.310
スペースを埋める

09:01.060 --> 09:01.420
なるほど｡ 

09:01.420 --> 09:06.100
また､ 環境だけでなく､ 方針を知らないスタート時の探索の仕方もランダム性があるので､

09:06.100 --> 09:10.150
結構な確率で探索をしていますね｡

09:10.960 --> 09:12.020
どんどん消えていくんです｡ 

09:12.040 --> 09:13.180
その理由がわからない｡ 

09:13.510 --> 09:19.660
とにかく､ ここで数字を増やしたらどうなるか､ ここもほぼ同じ時間がかかるはずです｡

09:20.700 --> 09:22.800
スピードにキャップがない場合｡ 

09:23.820 --> 09:26.880
だから､ もっといろいろなことに挑戦できるんです｡ 

09:27.740 --> 09:32.490
OC 様子を見てみましょう､ 値が収束しているのがわかりますね｡ 

09:32.500 --> 09:43.050
でも､ 同時に､ ある種の最終的な値へとゆっくりと収束していく｡

09:43.050 --> 09:44.130
Q 価値観？

09:44.900 --> 09:48.450
OC おそらく1000は時間的にちょっと無理があると思います｡ 

09:48.450 --> 09:53.010
速度も比例して上がっているようには見えませんね｡ 

09:53.460 --> 09:55.110
だから､ その部分をカットする可能性があります｡ 

09:55.470 --> 09:57.090
速度を落とすとかね｡ 

09:57.420 --> 09:57.610
そうですね｡ 

09:57.720 --> 09:59.070
非常に長くなってしまいましたが｡ 

09:59.900 --> 10:01.970
このチュートリアルは､ 最後までご覧いただく必要はありません｡ 

10:01.970 --> 10:03.320
ただ､ かなり実験してみたいんです｡ 

10:03.320 --> 10:10.490
そこで､ いくつかの例を挙げますが､ このすべてに通じるということがお分かりいただけると思います｡

10:10.670 --> 10:14.600
ラムが動作に組み込まれているようなランダム性があります｡ 

10:14.600 --> 10:18.560
だから､ ポリシーみたいなものがあっても､ 模索を続けていくんです｡ 

10:18.560 --> 10:23.240
だから､ 一度基本方針を決めたら､ その方針に従い続けるということはないでしょう｡ 

10:23.240 --> 10:28.760
今後も､ たまに他のバリエーションも試して､ ポリシーを高めていくつもりだ｡ 

10:28.760 --> 10:31.280
すでに最適な政策がすぐには見つかっていないのかもしれません｡ 

10:31.280 --> 10:33.140
政策を改善できるかもしれない｡ 

10:33.140 --> 10:38.720
そのため､ 何度繰り返しても､ ランダムな効果が見られるのです｡ 

10:39.030 --> 10:43.640
環境のランダム性だけでなく､ エージェントがコントロールできるパラメータのようなものがあって､

10:43.640 --> 10:55.430
「ほとんどの時間､ 80％の時間は､ ポリシーに従った行動をするように」と設定できるからです｡

10:55.430 --> 11:03.140
でも､ 20％の確率で､ 楽しい実験をして､ 何が起こるかを見て､ その情報を使ってポリシーを更新していくのです｡

11:03.200 --> 11:03.400
なるほど｡ 

11:03.500 --> 11:05.150
時間がかかりすぎだ｡ 

11:05.180 --> 11:06.270
もう一度やってみよう｡ 

11:06.290 --> 11:06.680
そうですね｡ 

11:06.680 --> 11:11.540
このように､ エージェントはさまざまな状態で学習していくのですね｡ 

11:11.540 --> 11:11.780
そうかもしれませんね｡ 

11:11.780 --> 11:14.000
興味本位でもう1回やってみましょう｡ 

11:14.000 --> 11:16.520
では､ 他に何か変えられることはあるのでしょうか？

11:18.390 --> 11:20.540
それらにイテレーションを行う｡ 

11:21.600 --> 11:22.800
OC OC

11:22.810 --> 11:24.060
見てみよう｡ 

11:24.360 --> 11:26.610
ええ､ まあ､ 例えば割引を変えるとかね｡ 

11:26.610 --> 11:29.280
だから､ この場合､ こうも言える｡ 

11:30.640 --> 11:39.780
K -100, マイナスへのqマイナスはちょうど千です｡ 

11:39.790 --> 11:41.260
だから報酬｡ 

11:41.260 --> 11:42.100
残したいんです｡ 

11:42.100 --> 11:45.610
0にしとこうかな｡  04ですが､ もう一度言います｡ 

11:46.030 --> 11:49.210
報酬は-0にとどめよう｡  04毎回

11:49.210 --> 11:53.470
そして､ ここでは､ D．

11:54.250 --> 11:58.900
割引率は0ではありません｡  9ですが､ 0みたいなものです｡  5.

11:58.900 --> 12:02.140
だから､ ゲームを進めていくうちにかなり割り引かれていくんです｡ 

12:02.350 --> 12:10.360
そのため､ 現在では､ 州内のさらにゴール地点に近いところにある方が､ より高い価値を得られるというインセンティブが働いています｡

12:10.360 --> 12:12.790
だから､ すぐに価値が下がってしまうのがわかる｡ 

12:12.790 --> 12:15.340
以前のような緑色ではありません｡ 

12:16.130 --> 12:20.100
だから､ ここに､ 今のポリシーがあることがわかるのです｡ 

12:20.120 --> 12:23.180
だから､ あんなふうに､ こんなふうにとなるんです｡ 

12:23.180 --> 12:24.950
以前見たものと非常によく似ています｡ 

12:24.980 --> 12:28.430
ただ､ おそらくこことの違いは､ そのまま飛び込んでくることだと思います｡ 

12:28.580 --> 12:29.840
だから､ あれなんです｡ 

12:29.840 --> 12:32.420
そして､ もう1本だけ走ろう｡ 

12:32.450 --> 12:33.390
これは､ とても楽しいことです｡ 

12:33.410 --> 12:34.430
もう一回だけ走ろう｡ 

12:34.430 --> 12:34.880
だから

12:34.910 --> 12:38.940
Kマイナスk 100 a qの割引｡ 

12:38.960 --> 12:41.720
オリジナルのままでいい｡ 

12:41.720 --> 12:45.620
では､ この基本的なバニラのセットアップを実行してみましょう｡ 

12:46.690 --> 12:49.540
OC OC OCしている｡ 

12:49.540 --> 12:51.730
最後に方針が示されるかどうか､ 見てみましょう｡ 

12:53.300 --> 12:53.840
はい｡ 

12:53.840 --> 12:54.770
保険証券を手に入れた｡ 

12:54.770 --> 12:55.060
はい｡ 

12:55.070 --> 12:55.880
良い仕上がりです｡ 

12:56.180 --> 12:58.610
そこで､ ここに方針を示しました｡ 

12:58.730 --> 12:59.740
おなじみですね｡ 

12:59.750 --> 13:04.580
あの時､ AIが人間を出し抜いて､ あそこに行こうと壁にドーンとぶつかり､ ああ行こうと壁にドーンとぶつかり､

13:04.580 --> 13:08.510
確率を上げたのを覚えていますか？

13:08.510 --> 13:09.190
そうそう､ そうなんです｡ 

13:09.200 --> 13:13.760
これは人工知能の一例です｡ 

13:13.760 --> 13:16.250
とても､ 基本的でシンプルなキルラーです｡ 

13:16.250 --> 13:18.050
ですから､ 現段階ではディープラーニングはありません｡ 

13:18.440 --> 13:21.830
しかし同時に､ すでにかなりスマートになっています｡ 

13:21.830 --> 13:23.540
そして､ 今日のチュートリアルを楽しんでいただければと思います｡ 

13:23.540 --> 13:29.540
そしてもう一度､ UC Berkeleyに感謝します｡ 今日のチュートリアルを楽しんでいただけたらと思いますし､ 次回お会いできるのを楽しみにしています｡

13:29.540 --> 13:30.680
それまではお楽しみに｡ 

13:30.680 --> 13:31.220
I.
