WEBVTT

00:00.500 --> 00:03.800
こんにちは､ 人工知能の講座にようこそ｡ 

00:03.800 --> 00:06.920
そして､ いよいよ楽しい企画に突入です｡ 

00:06.920 --> 00:09.080
ディープラーニングに突入

00:09.200 --> 00:09.650
わかりました｡ 

00:09.650 --> 00:10.520
では､ 見てみましょう｡ 

00:10.550 --> 00:14.030
前回は､ キー・ラーニングとその内容についてお話ししました｡ 

00:14.030 --> 00:21.680
そして､ 年齢や環境､ エージェントがこちらの状態をどう見るか､ などを学びました｡

00:21.710 --> 00:24.620
行動を起こす､ 報酬を得る､ 新しい状態に入る｡ 

00:24.620 --> 00:29.360
そして､ そのフィードバックループに基づいて､ 彼らは行動を起こし続け､ そこから学び､

00:29.360 --> 00:32.000
より良い行動が何かを理解するのです｡

00:32.000 --> 00:34.880
そこで､ この迷路の基本的な例を見てみました｡ 

00:34.880 --> 00:40.370
私たちは､ エージェントが環境を探索し､ 状態の価値が何であるかを理解することを理解しました｡ 

00:40.400 --> 00:46.490
そして､ 状態の価値を扱うことから､ 行動の価値､ あるいはQ値の価値を扱うことに移行したのです｡

00:46.490 --> 00:55.190
そして､ それをもとに､ 非確率的な環境における計画の仕組みと､ 確率的な環境における政策の仕組みを理解したのです｡

00:55.190 --> 00:56.690
そして､ これはポリシーの一例です｡ 

00:56.870 --> 01:01.160
以上､ 基礎学習で説明したことを簡単にまとめてみました｡ 

01:01.160 --> 01:08.060
そして今度は､ これがディープラーニングによって､ ディープラーニングを加えることによって､ どのように次のレベルに進むことができるかを見てみましょう｡

01:08.450 --> 01:16.040
これは私たちの環境です｡ これから行うのは､

01:16.040 --> 01:22.490
今ある行列で基本的な計算を行うだけでなく､

01:22.490 --> 01:30.200
軸を追加することです｡

01:30.230 --> 01:33.500
そして､ ここに列の番号を付けます｡ 

01:33.500 --> 01:35.930
1､ 2､ 3､ 4､ ここに列の番号を付けます｡ 

01:35.930 --> 01:36.650
1､ 2､ 3

01:36.650 --> 01:43.730
こうして､ すべての状態は､ 2つの値x1とx2の組で記述できるようになった｡ 

01:43.730 --> 01:50.870
つまり､ エージェントが入る可能性のあるこれらの正方形のうち､ どれかはx1x2で記述することができる｡ 

01:50.870 --> 01:58.250
例えば､ 今､ 彼はx1が1でx2が2の正方形にいるわけですが､ この正方形は､ x1が1､ x2が2です｡ 

01:58.250 --> 02:03.350
つまり､ どのような状態でも表現できるのです｡

02:03.350 --> 02:10.070
もちろん､ これは状態を記述する環境を非常に単純化したものですが､ それでも､ この場合はうまくいきます｡

02:10.070 --> 02:17.240
そして､ この状態をニューラルネットワークに送り込むことができるようになったということです｡ 

02:17.240 --> 02:24.020
ところで､ コースの最後に､ 附属書､ 附属書1と附属書2があることを申し添えておきます｡

02:24.110 --> 02:28.490
このセクションをうまく進めるために､ 附属書の1番､ 人工ニューラルネットワークをチェックして､

02:28.490 --> 02:35.840
その仕組みを理解しておくと､ ここで掘り下げなくてもよくなります｡

02:35.840 --> 02:40.550
そして､ 人工ニューラルネットワークの仕組みの知識の恩恵を利用すればいいのです｡ 

02:40.550 --> 02:49.670
そして､ この状態の情報をニューラルネットワークに送り込み､ その情報を処理するわけです｡

02:49.670 --> 02:55.290
つまり､ X､ Y､ xの2つは､ ニューラルネットワークの構造によっては､ 隠れ層が複数あったりするわけです｡

02:55.310 --> 02:58.670
そのあたりは､ 実践的なチュートリアルの中で考えてみてください｡ 

02:58.670 --> 03:06.500
しかし､ 最後に4つの値を吐き出すように構成します｡ この4つの値が､ 実は私たちのキューの値になるのです｡

03:06.500 --> 03:09.830
つまり､ どのような行動をとるべきかを決定する価値観です｡ 

03:09.830 --> 03:14.990
さらにこのチュートリアルでは､ これらのQ値がどのようにアクションを決定するために使われるかを正確に見ていきます｡

03:14.990 --> 03:22.430
しかし､ ここでのポイントは､ もはや学習という観点からこの迷路だけを見ているわけではない､ ということです｡ 

03:22.430 --> 03:30.830
迷路の状態をディープニューラルネットワークに入力し､ 手がかりとなる値を得ているのです｡

03:30.830 --> 03:33.860
そしてそして､ 最後はやはりアクションを考えます｡ 

03:33.860 --> 03:36.920
やはり､ どのようなアクションが必要なのかを理解することですね｡ 

03:36.920 --> 03:38.900
そして､ これらについては､ さらに詳しく説明します｡ 

03:38.900 --> 03:40.340
しかし､ 今問題なのは､ なぜなのか？

03:40.340 --> 03:41.870
なぜ､ こんなことをするのか？

03:41.870 --> 03:42.900
なぜ遵守するのか？

03:42.950 --> 03:48.140
その最初の学習方法がすでにうまくいっていたのに､ なぜこんなに複雑にしているのでしょうか｡

03:48.320 --> 03:54.440
その理由は､ 学習がこの非常に単純化された環境で行われていたからで､ コンセプトをよりよく理解するために､

03:54.440 --> 03:59.750
今のところこの非常に単純化された環境との取引を続けているのです｡

03:59.750 --> 04:05.930
しかし同時に､ より複雑な環境では､ その単純な学習はもはや通用しない｡ 

04:05.930 --> 04:12.020
そして､ 例えば､ 人工知能がドゥームを作ったり､ ブレイクアウトなどのアタリゲームをプレイしたりする自動運転車や､

04:12.260 --> 04:26.480
ロボットが歩き回ってアクションを起こすなど､ より高度な強化学習的なものについても話しています｡

04:26.480 --> 04:30.380
いずれも基礎学力が不足している､ 強くないということです｡ 

04:30.380 --> 04:34.610
それらの課題をクリアできるほどのパワーはない｡ 

04:34.610 --> 04:39.980
そして､ ディープラーニングのコースで見てきたように､ 私たちのデプロイメントコースに参加したり､

04:39.980 --> 04:45.680
アネックスのセクション､ アネックス1号と2号をやったりすれば､ ディープラーニングが単純学習はもちろん､

04:45.680 --> 04:51.560
どんな種類の機械学習よりも圧倒的に優れていることが本当によくわかると思います｡

04:51.560 --> 04:54.140
そのため､ ここではディープラーニングの力を活用しています｡ 

04:54.140 --> 04:58.430
つまり､ 環境に関する情報を値のベクトルとして送り込んでいるわけです｡ 

04:58.430 --> 04:59.330
だから､ この場合は､ ただに｡ 

04:59.380 --> 05:01.270
値をディープニューラルネットワークに

05:01.270 --> 05:07.170
そして､ それを使って､ エージェントが取るべき行動を決定するためのアクションを実行しているのです｡

05:07.180 --> 05:11.590
これが､ 私たちがなぜこのようなことをしているのか､ その概要のようなものです｡ 

05:11.590 --> 05:17.860
では､ 単純な学習からディープラーニングに移行する際に､ キーとなる学習の概念がどうなるのか､

05:17.860 --> 05:23.860
もう少し詳しく見てみましょう｡

05:23.860 --> 05:33.520
そこで､ 前回の直感チュートリアルでご覧いただいたように､ 時間差学習の基礎となるこのようなスライドがありました｡

05:33.520 --> 05:37.390
これが時間差の計算式で､ 基本的にそうなのでスルーしてしまいましょう｡ 

05:37.390 --> 05:45.520
つまり､ 青い矢印で示した状態のエージェントがいて､ 例えば「上がる」というキュー値に対して､

05:45.520 --> 05:51.340
時間差がどのように働くかを理解していたのです｡

05:51.520 --> 05:56.410
そして､ ここで見たのは､ これがディープラーニングではなく､ シンプルラーニングにおけるものである前に､ です｡ 

05:56.410 --> 05:57.550
これを簡単な学習で｡ 

05:57.580 --> 06:06.130
私たちが見たのは､ エージェントがこの上がるというアクションを学習した､ ある色相の値を持つ前のものでした｡

06:06.130 --> 06:08.620
そして､ このような行動を起こして､ 上を目指すことにしたわけです｡ 

06:08.620 --> 06:16.420
そして､ この行動をとった直後に､ この状態でこの行動をとったことに対する報酬を得る､ それがその報酬です｡

06:16.420 --> 06:25.780
さらに､ 今､ 彼は､ 新しい行動の､ すべてのキューの値の最大値である､ 現在の状態の値を評価することができます｡

06:25.780 --> 06:32.170
彼は新しい状態の素数を素数とし､ 我々はそれにガンマの減衰係数を掛けることができる｡ 

06:32.170 --> 06:43.000
つまり､ これは本質的に､ その行動をとるための新しい手がかり､ あるいは経験的な手がかりのようなものなのです｡

06:43.000 --> 06:45.550
そして､ この2つは同じであることが理想です｡ 

06:45.550 --> 06:51.010
つまり､ この状態でのこの行動に関する記憶の中の手がかりの値は､ 実際の報酬と､

06:51.010 --> 06:57.370
ガンマ時間､ つまり最終的に置かれた状態の値と等しくなるはずなのです｡

06:57.370 --> 06:59.800
したがって､ 時間差を計算するのもそのためです｡ 

06:59.800 --> 07:05.110
彼が手に入れたもの､ 彼が考えていたもの､ 彼が期待していたものを差し引いて得たものを､ 私たちは手に入れます｡ 

07:05.110 --> 07:07.600
片方を引くと､ 時間差になるんです｡ 

07:07.600 --> 07:16.840
そして､ 学習率αを使って､ Q値､ 新しいキュー値を時間差で調整するのですが､ αの係数で調整します｡

07:16.840 --> 07:20.260
それが､ シンプルなキュー学習の本質なんですね｡ 

07:20.260 --> 07:24.310
では､ ディープラーニングでどう変わるのかを見てみましょう｡ 

07:24.310 --> 07:29.350
スライドを見ながら､ 何が起こっているのかを確認することができます｡ 

07:29.350 --> 07:35.440
つまり､ ディープラーニングでは､ 前のスライドで見たように､ ニューラルネットワークが4つの値を予測することになります｡ 

07:35.440 --> 07:44.710
このチュートリアルの後半で説明するように､ ニューラルネットワークは4つの値を予測しますが､ 与えられた状態で可能なアクションが多ければもっと多くの値を予測するかもしれません｡

07:44.710 --> 07:48.430
しかし､ この場合､ 動作は直立､ 左､ 下の4つしかないことが分かっています｡ 

07:48.430 --> 07:53.080
そして､ ニューラルネットワークは､ このうち4つの値を予測することになるわけです｡ 

07:53.080 --> 07:56.710
だから､ ディープラーニングの場面では､ インはないでしょう｡ 

07:56.710 --> 07:58.750
大切なのは､ 「前も後もない」ということを理解することです｡ 

07:58.750 --> 08:01.510
そして､ このことをもう少し詳しく知ることができるのです｡ 

08:01.510 --> 08:11.740
つまり､ ニューラルネットワークはこれらの値のうち4つを予測し､ その後どうなるかではなく､ ニューラルネットワークはこの正確な値と比較するのです｡

08:11.740 --> 08:17.530
しかし､ 前のステップで計算したのはこの値である｡ 

08:17.530 --> 08:22.870
だから､ エージェントがこの正方形にいた前の時間では｡ 

08:22.870 --> 08:34.210
例えば､ ある日､ エージェントが再びこの正方形の中にいて､ 以前この値を計算したとしましょう｡

08:34.210 --> 08:40.270
つまり､ ずっと前の時間に､ エージェントがこの値を計算し､ 次にエージェントがこの値を未来のために保存し､

08:40.270 --> 08:43.510
そして今､ 未来がやってきたのです｡

08:43.510 --> 08:48.580
今､ 彼は再び広場にいて､ 今度は予測されるこれらのQ値を持っています｡ そのうちの1つは､

08:48.580 --> 08:50.410
上に行く4つの値です｡

08:50.410 --> 08:58.600
そこで今度は､ 予測されたQの値と､ 前回記録したこの値とを比較することになる｡

08:58.930 --> 09:01.840
そして､ なぜそれが重要なのか､ 今すぐ正確に理解することができます｡ 

09:01.840 --> 09:06.910
ここで重要なのは､ この特定の広場に警官が来る前ではなく､ この特定の時間に､

09:06.910 --> 09:13.540
ニューラルネットワークを使って予測したQ値を取っている､ ということです｡

09:13.540 --> 09:22.930
そして､ その値と､ 彼がこの広場ですべての状況を判断したときの値を比較しているのです｡

09:22.930 --> 09:28.060
そして､ 前回と同じく実際にこのアクションを行ったというわけです｡ 

09:28.060 --> 09:29.230
そうそう､ そうなんです｡ 

09:29.230 --> 09:33.280
では､ これがニューラルネットワークでどのように機能するのか､ その理由を見てみましょう｡ 

09:33.280 --> 09:35.110
なぜ､ そんなふうになるのでしょうか｡ 

09:35.110 --> 09:39.940
今は少し複雑に聞こえますが､ 簡単に説明しましょう､ ね､ ちょっとだけ｡

09:39.940 --> 09:45.550
このニューラルネットワークに環境の状態を入力し､ 隠れ層を経由しているわけです｡

09:45.550 --> 09:47.200
そうすると､ こういう出力で出てくるんです｡ 

09:47.230 --> 09:48.760
q1､ q2､ q3､ q4｡ 

09:48.760 --> 09:57.310
その特定の状態において､ ニューラルネットワークが予測する可能性のある行動の手がかりとなる値である｡

09:57.310 --> 09:58.180
それがQ値です｡ 

09:58.180 --> 09:59.260
じゃあ､ 私たちは｡ 

09:59.360 --> 10:04.610
ターゲットと比較すると､ このターゲットはまさにそうで､ ここに戻ると､ これがターゲットです｡ 

10:04.610 --> 10:07.100
つまり､ これが予測された値なのです｡ 

10:07.100 --> 10:11.600
それから､ でも､ 前回の広場での目標があることもわかっています｡ 

10:11.600 --> 10:16.430
同じアクションでも､ 例えば上という目標があるんです｡ 

10:16.430 --> 10:18.770
ここではターゲットを決めて､ 比較するわけです｡ 

10:18.770 --> 10:20.750
つまり､ 第1四半期とその目標を比較しているわけです｡ 

10:20.750 --> 10:24.890
Q Twoと以前の目標値との比較をしています｡ 

10:25.310 --> 10:26.480
Q 3対目標｡ 

10:26.480 --> 10:28.070
Q 4対目標｡ 

10:28.070 --> 10:38.580
そして､ この部分は､ ニューラルネットワークやエージェントが､ ディープラーニングによって､ よりうまく空間を通過する方法を学習しているところなのです｡

10:38.600 --> 10:41.950
そして､ ここで重要なのは､ 「まだ応募している」という点です｡ 

10:41.960 --> 10:47.180
Q 学習といっても､ 単純な学習では､ 時間的差異を通じて学習するわけですが､ これは非常にわかりやすく､

10:47.180 --> 10:50.630
すでに説明したとおりで､ もうかなりわかっていると思います｡

10:50.630 --> 10:54.530
しかし同時に､ ディープラーニングにおいて､ ニューラルネットワークはどのように学習するのでしょうか｡ 

10:54.530 --> 10:56.870
ニューラルネットワークは､ 重みを調整することで学習していきます｡ 

10:56.870 --> 11:08.450
ですから､ 単純なキー学習の概念を強化する概念を､ ニューラルネットワークの実際の働き方に適応させなければならないのです｡

11:08.450 --> 11:10.820
そしてそれは､ 体重をアップデートすることで実現します｡ 

11:10.820 --> 11:12.500
そして､ ここで考えようとしているのは､ このことなのです｡ 

11:12.500 --> 11:20.960
その時間差の概念をどのようにニューラルネットワークに適応させれば､ ニューラルネットワークの力をフルに発揮できるのか｡

11:20.990 --> 11:22.160
そして､ 今のところ､ こんな感じになっています｡ 

11:22.160 --> 11:29.360
ここで環境状態を入力し､ ベクトルをニューラルネットワークに通すと､ Q値の予測値が得られます｡

11:29.360 --> 11:34.340
そして､ エージェントがその状態であった前回から､ これらがあります｡ 

11:34.340 --> 11:35.090
Q ターゲットを教えてください｡ 

11:35.090 --> 11:39.230
Q それぞれの行動に対して､ ターゲット1､ 2､ 3､ 4を設定します｡ 

11:39.230 --> 11:43.040
ということで､ OKまで来ましたので､ それぞれを比較してみましょう｡ 

11:43.340 --> 11:50.360
ここから先は､ ニューラルネットワークの知識があれば､ とても簡単に理解できるようになります｡ 

11:50.360 --> 11:52.350
もう一度言いますが､ それはすべて別館での話です｡ 

11:52.370 --> 11:57.890
その1､ ここでLとなる損失を計算し､ 私たちは

11:57.890 --> 12:01.400
Q ターゲットこれ一本からQマイナスこれ一本｡ 

12:01.700 --> 12:02.900
それを四角くするんです｡ 

12:02.900 --> 12:06.500
つまり､ それぞれの二乗差で､ それらを合計するのです｡ 

12:06.500 --> 12:13.760
そこで､ これらのQ値と目標値の二乗差の和をとり､ それを合計したものが損失となるわけです｡

12:13.760 --> 12:19.160
理想的には､ 時間差学習のときと同じように､ ちょっと戻って､ 理想的にはこれがこれと等しくなるようにと言ったのを思い出して､

12:19.160 --> 12:25.100
時間差はゼロになるようにしたいのです｡

12:25.100 --> 12:34.610
つまり､ 基本的にエージェントは､ エージェントが予測するQ値を正確に予測しているということです｡

12:34.610 --> 12:38.060
あるいは､ 記憶があるというのは､ まさに環境の描写です｡ 

12:38.360 --> 12:42.650
そのため､ エージェントはかなり上手に環境をナビゲートすることができます｡ 

12:42.650 --> 12:42.920
そうですね｡ 

12:42.920 --> 12:43.940
サプライズがない｡ 

12:43.940 --> 12:51.260
この時間的な差異が非常に正または非常に負である限り､ 驚きがあるのです｡

12:51.260 --> 12:55.400
しかし､ もし時間的な差がゼロなら､ 彼は環境をよく知っているので､ 何が起こっているかを予測することができるし､

12:55.400 --> 12:56.510
できる｡

12:56.510 --> 13:01.070
それゆえ､ 彼の政策は非常に優れたものとなり､ それをナビゲートすることができるようになるのです｡ 

13:01.070 --> 13:02.630
だから､ ここでも同じこと｡ 

13:02.630 --> 13:07.400
だから､ このロスを限りなくゼロに近づけ､ しかも小さくしたいのです｡ 

13:07.400 --> 13:15.590
だからこそ､ これからニューラルネットワークの本当の力を発揮していこうというところです｡

13:15.590 --> 13:21.410
そこで､ この損失を取り､ 逆伝播または確率的勾配降下法を用いて､ ネットワークを通じて損失を受け渡し､

13:21.410 --> 13:29.360
バックまたはバック､ ネットワークを通じて伝搬し､ 確率的勾配降下法を介して受け渡すことにします｡

13:29.420 --> 13:36.950
ネットワーク内のこれらの概要の重みを更新して､ 次にこのネットワークを通過するときには､ 重みがすでに環境を少しよく説明するようになっている､

13:36.950 --> 13:41.000
まさにそのような仕組みです｡

13:41.000 --> 13:48.020
つまり､ このように計算され､ 損失が計算され､ それがネットワークに伝搬されるのです｡

13:48.020 --> 13:49.100
ウェイトが更新される｡ 

13:49.100 --> 13:56.600
そして､ 次にここに来たらまたこうなって､ ここに来たらまたこうなって､ ということが繰り返されるのです｡

13:56.600 --> 13:59.900
そして､ このエージェントはそうやって学習していくのです｡ 

13:59.900 --> 14:06.890
つまり､ エージェントの脳であるニューラルネットワークが学習することで､ 環境に対する説明力が高まり､

14:06.890 --> 14:11.960
エージェントは環境をナビゲートできるようになるのです｡

14:12.140 --> 14:17.900
記述的環境と言ったのは､ 基本的には､ エージェントがいる環境の状態を入れると､

14:17.900 --> 14:24.830
実際のキュー値にどんどん近づいていく可能性が高いということです｡

14:24.830 --> 14:29.120
それは､ 私たちが求める重要な価値観と､ 正しい行動を見出すためです｡ 

14:29.120 --> 14:33.530
それは､ このQターゲットが実際に経験的に導き出されたものだからです｡ 

14:33.530 --> 14:36.680
では､ 彼はどうやってこのかわいいターゲットを見つけているのでしょうか？

14:36.680 --> 14:38.390
それは､ 実はこれなんです｡ 

14:38.390 --> 14:40.240
だから､ 彼は実際に観察しているのだ｡ 

14:40.250 --> 14:42.800
では､ この一歩を踏み出したら､ どんなご褒美があるのでしょうか？

14:42.800 --> 14:44.870
それから､ この状態の価値は何なのか？

14:44.870 --> 14:48.620
つまり､ 以前Qラーニングで見た単純な学習の直感と同じことです｡ 

14:48.620 --> 14:54.190
それを試行錯誤しながら学習し､ 予測される手がかりの値がどんどん近くなるようにネットワークを構築したり､

14:54.500 --> 14:59.140
重みのネットワークを更新していくわけです｡

14:59.220 --> 15:01.260
ターゲットを近似する｡ 

15:01.260 --> 15:09.330
Q値なので､ ここで説明した単純な学習アルゴリズムの時間差学習の概念と非常に似ています｡

15:09.690 --> 15:10.380
そうそう､ そうなんです｡ 

15:10.380 --> 15:12.360
それが､ エージェントの学習方法です｡ 

15:12.360 --> 15:13.590
というわけで､ ここまで来ました｡ 

15:14.280 --> 15:15.390
それが学びの部分です｡ 
