WEBVTT

00:01.720 --> 00:04.360
こんにちは､ 今日もディープラーニングの講座にようこそ｡ 

00:04.360 --> 00:06.850
バックプロパゲーションで締めくくる｡ 

00:07.150 --> 00:07.480
わかりました｡ 

00:07.480 --> 00:11.950
つまり､ ニューラルネットワークの中で何が起こっているのか､ 知るべきことはもうほとんど分かっているのです｡ 

00:11.950 --> 00:18.250
入力層に情報が入力され､ それが前方に伝搬されてYハット､ つまり出力値が得られるという､

00:18.250 --> 00:23.560
順伝播というプロセスがあることが分かっています｡

00:23.560 --> 00:31.780
そして､ それらをトレーニングセットの実際の値と比較し､ 誤差を計算します｡

00:31.780 --> 00:41.350
そして､ その誤差を逆向きにネットワークに逆伝播することで､ 重みを調整することでネットワークを学習させることができるのです｡

00:41.350 --> 00:49.570
ここで覚えておくべき重要なことは､ 逆伝播は非常に興味深く洗練された数学によって駆動される高度なアルゴリズムであり､

00:49.570 --> 01:02.290
重みの調整､ すべての重みを同時に調整することができる､ ということです｡

01:02.290 --> 01:08.890
ですから､ 手作業でやっている場合､ あるいは別のタイプのアルゴリズムを考えている場合､

01:08.890 --> 01:14.080
誤差を計算して､ それぞれの重みが誤差に与える影響を理解しようとしても､

01:14.080 --> 01:20.860
それぞれの重みを独立して､ あるいは個別に調整しなければならないのです｡

01:21.900 --> 01:28.770
逆伝播の大きな利点は､ これは覚えておくべき重要なことですが､ 逆伝播のプロセスの間､

01:28.770 --> 01:35.910
単にアルゴリズムの構造上の理由から､ です｡

01:36.720 --> 01:47.070
すべての重みを同時に調整することができるので､ 基本的にはニューラルネットワークの各重みがどの部分の誤差を担っているかを知ることができます｡

01:47.100 --> 02:00.600
これが､ バックプロパゲーションの重要な基本原理で､ 1980年代に急速に普及した理由です｡

02:00.600 --> 02:02.540
そして､ これが大きなブレイクスルーとなった｡ 

02:02.550 --> 02:08.370
もしあなたがそのことをもっと知りたいなら､ そして､ バックグラウンドで数学がどのように機能しているかを正確に知りたいなら､

02:08.370 --> 02:14.700
すでに述べたように､ ニューラルネットワークとディープラーニングは､ 実はマイケル・ニールセンの本で､

02:14.700 --> 02:23.520
数学が書き出されていて､ まさにこれがどのように可能なのかを理解するのに役立つ良い記事です｡

02:23.520 --> 02:33.210
しかし､ 今のところ､ 直感的に考えれば､ 重要なのは､ 「逆伝播はこういうことだ」と覚えておくことです｡

02:33.210 --> 02:36.120
すべてのウェイトを同時に調整するのです｡ 

02:36.690 --> 02:45.170
そして､ ニューラルネットワークのトレーニングで何が起こるのか､ 順を追って説明し､ すべてをまとめたいと思います｡

02:45.180 --> 02:45.570
わかりました｡ 

02:45.570 --> 02:50.790
そこでステップ1では､ 重みをゼロに近い､ しかしゼロではない小さな数値にランダムに初期化する｡ 

02:50.790 --> 02:56.550
直感チュートリアルでは重みの初期化にはあまりこだわりませんでしたが､ 重みはどこかで始めなければならないので､

02:56.550 --> 03:02.550
0に近いランダムな値で初期化されます｡

03:02.550 --> 03:08.100
そして､ そこから四伝搬､ 逆伝搬のプロセスを通じて､ 誤差が最小になるまで､

03:09.000 --> 03:13.320
コスト関数が最小になるまで､ これらの重みが調整される｡

03:13.710 --> 03:17.560
次に､ ステップ2は､ データセットの最初の観測値を入力します｡ 

03:17.560 --> 03:21.390
つまり､ 入力層への最初の行は､ 各特徴が1つの入力ノードとなる｡ 

03:21.390 --> 03:24.930
だから､ 基本的には列をとって入力ノードに入れる｡ 

03:25.620 --> 03:30.720
ステップ3 左から右への伝搬のため､ 各ニューロンの活性化の影響が重みで制限されるように､

03:30.720 --> 03:32.760
ニューロンを活性化する｡

03:32.760 --> 03:39.780
つまり､ 重みは基本的に各ニューロンの活性化がどの程度重要であるかを決定し､ 予測される結果y

03:39.780 --> 03:43.740
hatが得られるまで活性化を伝播させるのです｡

03:43.740 --> 03:46.590
つまり､ 基本的には左から右へ伝搬していくわけです｡ 

03:46.590 --> 03:49.890
最後まで行くと､ Y字ハットがもらえます｡ 

03:50.040 --> 03:58.560
そして､ 予測結果と実際の結果を比較して､ 発生した誤差を測定し､ 右から左へ誤差を逆伝播するのです｡

03:58.560 --> 04:02.040
誤差の原因に応じて重みを更新する｡ 

04:02.040 --> 04:08.280
これも､ 摂動による逆伝播アルゴリズムの構造上､ 重みをどれだけ更新するかで学習率が決まるので､

04:08.280 --> 04:12.570
計算できるのですね｡

04:12.570 --> 04:17.160
学習率は､ ニューラルネットワークで制御できるパラメータです｡ 

04:17.640 --> 04:22.830
ステップ 6 ステップ 1 から 5 を繰り返し､ 各観測後に重みを更新する｡ 

04:23.190 --> 04:24.810
それが強化学習と呼ばれるものです｡ 

04:24.810 --> 04:33.840
私たちの場合は､ 確率的勾配降下法､ つまり1から5までのステップを繰り返しながら､ 観測のバッチが終わった後にのみ重みを更新しています｡

04:33.840 --> 04:40.710
バッチ学習では､ 完全勾配降下法､ バッチ勾配降下法､ ミニバッチ勾配降下法のいずれかを使用します｡

04:40.710 --> 04:48.930
そして､ ステップ7は､ エポックよりエポックやり直しをする人工ニューラルネットワークを介して全体のトレーニングセットのパスをするとき｡

04:48.930 --> 04:54.810
つまり､ 基本的にはそれを繰り返していくことで､ ニューラルネットワークがより良く訓練され､

04:54.810 --> 05:02.460
コスト関数を最小化しながら常に自己調整していくのです｡

05:02.460 --> 05:03.870
そうそう､ そうなんです｡ 

05:04.320 --> 05:09.720
以上が､ 人工ニューラルネットワークを構築し､ 学習させるために必要なステップです｡ 

05:09.720 --> 05:13.530
そして､ これらは一緒に歩んでいくことになるのです｡ 

05:13.530 --> 05:19.370
実践的なチュートリアルで学ばれたのですね､ 頑張ってください､ 次回も楽しみにしています｡

05:19.380 --> 05:21.450
それまでは､ ディープラーニングを楽しんでください｡ 
