誤差逆伝播法を数式なしで理解する ニューラルネットワークが学習する仕組み
こんにちは。ゆうせいです。
前回の記事では、学習とはコスト関数を最小化することだと説明しました。そのためには勾配が必要でした。
しかし、13,002個の偏微分をどうやって計算するのか。この問いには答えていませんでした。
答えが誤差逆伝播法です。
この手法を学ぶとき、多くの人が数式と添え字の海で溺れます。私もそうでした。しかし、一つひとつの操作が何をしているかを言葉で追えば、意外なほど素直な話です。
この記事では、数式をほとんど使いません。何が起きているかだけを、順を追って説明します。
結論
誤差逆伝播法の中身は、三つの文で言い切れます。
| 要点 | 内容 |
|---|---|
| 要望を集める | 出力層で「こうなってほしい」という要望を作る |
| 前の層へ伝える | その要望を、一つ前の層への要望に翻訳する |
| 平均を取る | すべての訓練例の要望を平均し、実際に更新する |
特に二番目が核心です。
出力層で生じた要望を、前の層へ、さらにその前の層へと遡らせる。この「遡る」動きが、逆伝播という名前の由来です。
以下、順に見ていきます。
1 前回の復習
勾配の意味
前回、勾配ベクトルの各成分は二つのことを教えてくれると説明しました。
| 情報 | 内容 |
|---|---|
| 符号 | そのつまみを上げるべきか下げるべきか |
| 大きさ | そのつまみを動かしたときの影響の大きさ |
二番目を、感度という言葉で言い換えると分かりやすくなります。
感度としての勾配
たとえば、ある重みの勾配成分が3.2、別の重みの成分が0.1だったとします。
比を計算します。
コスト関数は、前者の重みに対して32倍敏感だということです。
同じだけ両方を動かしたとき、前者による変化は後者の32倍になります。
この読み方が重要な理由
13,002次元の空間を思い描くことはできません。
しかし、13,002個のつまみそれぞれについて「どれくらい重要か」を記録した一覧表だと考えれば、無理なく扱えます。
この記事では、一貫してこの読み方で進めます。
練習問題1
ある重みの勾配成分が0.8、別の重みの成分が0.05でした。コスト関数はどちらに何倍敏感ですか。また、この情報をどう使いますか。
解答を示します。
比を計算します。
前者に16倍敏感です。
使い方としては、前者を大きく動かし、後者を小さく動かします。限られた更新量を、効果の大きいつまみに配分するためです。
補足します。勾配降下法では、更新量が勾配に比例します。
したがって、感度が16倍なら、更新量も16倍になります。この配分は自動的に行われます。
2 一枚の画像から始める
理解の出発点として、訓練データを一枚だけ取り出します。
状況設定
数字の2が書かれた画像を入力したとします。
ネットワークはまだ学習が済んでおらず、出力はでたらめです。
| 出力ニューロン | 現在の活性化 | あるべき値 |
|---|---|---|
| 0 | 0.5 | 0 |
| 1 | 0.8 | 0 |
| 2 | 0.2 | 1 |
| 3 | 0.6 | 0 |
| ... | ... | ... |
| 8 | 0.1 | 0 |
| 9 | 0.4 | 0 |
正解は2ですから、3番目の値だけが1になり、他は0であってほしいのです。
活性化は直接変えられない
ここで重要な制約があります。
活性化の値を、直接書き換えることはできません。私たちが操作できるのは、重みとバイアスだけです。
活性化は、それらの結果として決まる値です。
それでも要望は記録する
直接変えられないとしても、「こうなってほしい」という要望を記録しておくことには意味があります。
その要望が、重みとバイアスをどう動かすべきかを教えてくれるからです。
要望の大きさ
すべての出力を等しく動かしたいわけではありません。
| ニューロン | 現在 | 目標 | 差 | 要望の強さ |
|---|---|---|---|---|
| 2 | 0.2 | 1 | 0.8 | 強い |
| 1 | 0.8 | 0 | 0.8 | 強い |
| 8 | 0.1 | 0 | 0.1 | 弱い |
8番目は、すでに目標にかなり近い状態です。わざわざ大きく動かす必要はありません。
2番目と1番目は、目標から大きく離れています。優先的に修正すべきです。
要望の強さは、現在の値と目標値の隔たりに比例します。
練習問題2
正解が7である画像に対し、次の出力が得られました。どのニューロンの修正を最も優先すべきですか。
| ニューロン | 活性化 |
|---|---|
| 3 | 0.9 |
| 7 | 0.3 |
| 5 | 0.2 |
| 1 | 0.05 |
解答を示します。
目標との差を計算します。
| ニューロン | 現在 | 目標 | 差の絶対値 |
|---|---|---|---|
| 3 | 0.9 | 0 | 0.9 |
| 7 | 0.3 | 1 | 0.7 |
| 5 | 0.2 | 0 | 0.2 |
| 1 | 0.05 | 0 | 0.05 |
最も優先すべきはニューロン3です。差が0.9と最大であり、しかも正解でないのに最も強く反応しています。
補足します。ニューロン1は、すでにほぼ目標に達しています。ここに修正の労力を割く必要はありません。
限られた更新量を、差の大きいところに配分する。これが効率の良い学習です。
3 活性化を上げる三つの方法
出力層の一つのニューロンに注目します。2番目のニューロン、つまり数字の2に対応するものです。
このニューロンの活性化を上げたい。どうすればよいでしょうか。
活性化の決まり方
復習します。活性化は次のように決まります。
前の層の活性化に重みを掛けて足し、バイアスを加え、活性化関数を通します。
手段は三つ
この式を見れば、上げる方法は三つしかありません。
| 手段 | 内容 |
|---|---|
| バイアスを上げる | 底上げする |
| 重みを上げる | つながりを強くする |
| 前の層の活性化を変える | 入ってくる信号を変える |
一つずつ見ていきます。
練習問題3
の中身が
であるとき、バイアス
を0.1増やすと
はいくつ変わりますか。
解答を示します。
バイアスは、そのまま足される項です。
は0.1増えます。
補足します。バイアスの影響は、他の値によらず一定です。
重みの影響は、掛け合わせる活性化の大きさによって変わります。この違いが、次の節の話につながります。
4 重みをどう調整するか
三つの手段のうち、まず重みを見ます。
重みごとに効果が違う
すべての重みが、同じ効果を持つわけではありません。
重み付き和の各項は、次の形をしています。
重み を少し増やしたとき、この項がどれだけ増えるでしょうか。
の分だけ増えます。
明るいニューロンほど重要
したがって、前の層の活性化が大きいニューロンとのつながりほど、重みを変えたときの効果が大きくなります。
数値で確認します。
| つながる相手の活性化 | 重みを0.1増やしたときの変化 |
|---|---|
| 0.9 | |
| 0.5 | |
| 0.1 |
9倍の差があります。
効率の良い調整
前回の記事で、勾配は重要度を表すと説明しました。ここでも同じ話です。
限られた更新量を、どこに配分すべきか。答えは、活性化が大きいニューロンとのつながりです。
そこを動かすほうが、効果が大きいのです。
神経科学との類似
この振る舞いは、ヘッブの法則を思い起こさせます。
神経科学の理論で、しばしば次の言葉でまとめられます。
同時に発火する神経細胞は、互いの結合を強める。
ここでも、最も強く結合が強化されるのは、現在活発なニューロンと、活発にしたいニューロンの間です。
2を見たときに反応しているニューロンと、2を意味するニューロンが、より強く結ばれます。
注意しておくこと
ただし、人工のニューラルネットワークが生物の脳と同じように動いているかどうかは、別の話です。
ヘッブの法則自体にも、単純化されすぎているという指摘があります。
あくまで緩やかな類似として受け取ってください。研修で紹介する際も、断定は避けるべきです。
練習問題4
前の層の二つのニューロンの活性化が、それぞれ0.8と0.2でした。どちらとのつながりの重みを変えるほうが、効果が大きいですか。また、何倍の差がありますか。
解答を示します。
活性化0.8のニューロンとのつながりです。
比を計算します。
4倍の差があります。
補足します。同じだけ重みを動かしても、効果に4倍の開きが出ます。
学習では、この差が自動的に反映されます。勾配が大きくなるため、更新量も大きくなるためです。
練習問題5
重みの調整において、前の層の活性化が0に近いニューロンとのつながりはどうなりますか。また、それは妥当ですか。
解答を示します。
ほとんど更新されません。重みを変えても、 となり、出力への影響がないためです。
これは妥当です。活性化が0に近いということは、そのニューロンが今回の入力に対してほとんど寄与していないことを意味します。寄与していない経路の重みを調整しても、この入力に関しては意味がありません。
補足します。ただし、別の入力に対しては、そのニューロンが活発になるかもしれません。
したがって、この重みが永久に更新されないわけではありません。訓練データ全体を通じて、少しずつ調整されます。
5 前の層への要望
三つ目の手段に進みます。ここが誤差逆伝播法の核心です。
何を望むのか
2番目の出力ニューロンの活性化を上げたい。そのために、前の層の活性化をどう変えてほしいでしょうか。
重みの符号によって、望みが変わります。
| つながりの重み | 望むこと |
|---|---|
| 正 | その活性化を上げてほしい |
| 負 | その活性化を下げてほしい |
正の重みでつながっている相手が明るくなれば、こちらの活性化も上がります。負の重みなら逆です。
望みの大きさ
ここでも、大きさに差があります。
重みの絶対値が大きいつながりほど、相手の活性化の変化が大きく響きます。
したがって、重みの絶対値に比例した強さで要望を出します。
やはり直接は変えられない
前の層の活性化も、直接は変えられません。
しかし、要望として記録しておくことには意味があります。その要望が、さらに前の層の重みとバイアスをどう動かすべきかを決めるからです。
練習問題6
ある出力ニューロンの活性化を上げたいとします。前の層の三つのニューロンとのつながりが、それぞれ重み 、
、
でした。それぞれの活性化をどうしてほしいか、優先度とともに答えてください。
解答を示します。
| 重み | 望むこと | 優先度 |
|---|---|---|
| 0.9 | 上げてほしい | 高い |
| 下げてほしい | 中程度 | |
| 0.1 | 上げてほしい | 低い |
符号が正なら上げてほしい、負なら下げてほしいと望みます。優先度は絶対値の大きさで決まります。
補足します。重み0.1のつながりは、ほとんど影響しません。
この相手の活性化を動かしても、こちらへの効果は小さいためです。要望を出しても見返りが少ないので、優先度は低くなります。
6 要望を足し合わせる
ここで、視野を広げます。
一つの声ではない
ここまで、2番目の出力ニューロンの立場だけを見てきました。
しかし、出力層には10個のニューロンがあります。それぞれが、前の層に対する要望を持っています。
| ニューロン | 望むこと | 前の層への要望 |
|---|---|---|
| 2 | 活性化を上げたい | 正の重みの相手を明るく |
| 0 | 活性化を下げたい | 正の重みの相手を暗く |
| 1 | 活性化を下げたい | 正の重みの相手を暗く |
| ... | ... | ... |
10個の声が、同時に上がります。
足し合わせる
これらをすべて足し合わせます。
ある中間層のニューロンに対して、あるニューロンは「明るくしてほしい」と言い、別のニューロンは「暗くしてほしい」と言うかもしれません。
その場合、要望は打ち消し合います。合計が最終的な要望になります。
会議の比喩
10人が参加する会議を想像してください。
ある案件について、賛成する人と反対する人がいます。しかも、発言の重みが人によって違います。
強く関係する人の意見は重く、関係が薄い人の意見は軽く扱われます。
最終的な結論は、重み付きの合計として決まります。
これが逆伝播の第一歩
要望を足し合わせると、前の層の各ニューロンについて「どれだけ変わってほしいか」の一覧ができます。
これで、前の層に対する目標が定まりました。
出力層で起きたことと、同じ状況です。
練習問題7
中間層のあるニューロンに対して、三つの出力ニューロンが次の要望を出しました。最終的な要望を求めてください。
| 出力ニューロン | 要望 |
|---|---|
| A | |
| B | |
| C |
解答を示します。
足し合わせます。
最終的には、 分だけ上げてほしいという要望になります。
補足します。Bの要望は打ち消されました。
これは、Bの声が無視されたという意味ではありません。他の二つと合算した結果、正味で上げる方向になったということです。
もしBの要望が であれば、合計は
となり、下げる方向になります。
7 同じことを繰り返す
再帰的な構造
前の層に対する要望が定まりました。
すると、その層でも同じ問いが立てられます。
「この活性化を望む方向へ動かすには、どうすればよいか」
答えも同じです。バイアスを変える、重みを変える、さらに前の層の活性化を変える。
遡っていく
この手続きを、入力層に向かって繰り返します。
| 段階 | 内容 |
|---|---|
| 1 | 出力層で要望を作る |
| 2 | 中間層2への要望に翻訳する |
| 3 | 中間層2の重みとバイアスの調整量が決まる |
| 4 | 中間層1への要望に翻訳する |
| 5 | 中間層1の重みとバイアスの調整量が決まる |
これが、逆伝播という名前の由来です。
順伝播との対比
流れを比較します。
| 方向 | 何が流れるか |
|---|---|
| 順伝播 | 入力層から出力層へ、活性化が流れる |
| 逆伝播 | 出力層から入力層へ、要望が流れる |
情報が行って帰ってくる構造です。
図解案
研修資料では、二本の矢印で描いてください。
上段に左から右への矢印を置き、「活性化」と書きます。下段に右から左への矢印を置き、「要望」と書きます。
この一枚で、順伝播と逆伝播の関係が伝わります。
練習問題8
誤差逆伝播法において、なぜ出力層から始めて入力層へ遡るのですか。逆の順序では何が問題になりますか。
解答を示します。
要望の出発点が出力層にあるためです。正解が分かっているのは出力層だけであり、中間層の理想的な値は誰も知りません。
逆の順序では、入力層の側から始めることになります。しかし、入力層の活性化がどうあるべきかという情報は存在しません。入力は与えられるものであり、変えられません。
補足します。中間層の値は、出力層の要望から逆算して初めて定まります。
この依存関係があるため、順序は出力層から入力層へと決まります。
8 一枚だけでは足りない
2ばかり答える網になる
ここまでの手続きは、数字の2の画像一枚に対するものでした。
この要望だけに従って調整すると、どうなるでしょうか。
ネットワークは、何を見ても2と答えるようになります。それがコストを下げる最短の道だからです。
すべての例で計算する
したがって、訓練データのすべてについて同じ手続きを行います。
| 画像 | 要望 |
|---|---|
| 2の画像 | 2のニューロンを上げてほしい |
| 7の画像 | 7のニューロンを上げてほしい |
| 0の画像 | 0のニューロンを上げてほしい |
| ... | ... |
それぞれが、異なる要望を出します。
平均を取る
すべての要望を平均します。
この平均値の集まりが、前回の記事で扱った負の勾配にあたります。厳密には比例する量ですが、方向は同じです。
民主的な決定
比喩で言えば、全員の意見を集めて平均を取るようなものです。
一部の声だけを聞けば偏ります。全員の声を平均すれば、どの画像に対してもそれなりに良い結果を出す設定に近づきます。
練習問題9
訓練データ一枚だけに基づいて重みを更新し続けると、何が起きますか。
解答を示します。
その画像に対してのみ良い結果を出すネットワークになります。
たとえば2の画像だけで学習させれば、どんな入力に対しても2と答えるようになります。それが、その一枚に対するコストを最小にする方法だからです。
補足します。実際の学習では、この極端な状態は起きません。
すべての訓練データの要望を平均するためです。ただし、訓練データの構成に偏りがあれば、その偏りは結果に反映されます。
たとえば2の画像が全体の半分を占めていれば、迷ったときに2と答える傾向が生まれます。データの偏りに注意が必要な理由です。
9 ミニバッチ確率的勾配降下法
理論は分かりました。しかし、実行すると問題が起きます。
計算が終わらない
訓練データが数万枚あります。
一歩進むたびに、すべての画像について逆伝播を行い、平均を取る。これを何千回も繰り返す。
計算時間が膨大になります。
現実的な工夫
そこで、次の方法が使われます。
| 手順 | 内容 |
|---|---|
| 1 | 訓練データをランダムに並べ替える |
| 2 | 100枚程度ずつの束に分ける |
| 3 | 一つの束だけで勾配を計算し、更新する |
| 4 | 次の束で同じことを繰り返す |
この束をミニバッチといいます。
正確ではないが速い
100枚から求めた勾配は、全データから求めた真の勾配とは異なります。
しかし、おおよそ同じ方向を向いています。そして、計算は数百倍速くなります。
酔っ払いの比喩
二人の人物が、山を下りる様子を想像してください。
一人は慎重です。一歩ごとに周囲を精密に測量し、最適な方向を計算してから進みます。正確ですが、非常に遅い。
もう一人は、だいたいの下り方向を見てすぐ歩き出します。ふらつきますが、速い。
結果として、後者のほうが早く谷底に着きます。
これが確率的勾配降下法の考え方です。
用語の整理
| 名称 | 一度の更新に使うデータ |
|---|---|
| バッチ勾配降下法 | 全データ |
| ミニバッチ確率的勾配降下法 | 数十から数百件 |
| 確率的勾配降下法 | 1件 |
実務で最も使われるのは、真ん中の方式です。単にSGDと呼ばれることもあります。
ふらつきの副産物
ふらつきには、思わぬ利点があります。
浅い谷にはまっても、ふらつきの勢いで抜け出せることがあるのです。
正確に下りすぎると、最初に見つけた谷から出られません。多少の乱れが、より良い解を見つける助けになる場合があります。
練習問題10
訓練データが60,000枚、ミニバッチのサイズが100のとき、全データを一巡するのに何回の更新が行われますか。また、この一巡を何と呼びますか。
解答を示します。
更新回数を計算します。
600回です。
この一巡をエポック(epoch)と呼びます。
補足します。学習では、通常このエポックを何十回も繰り返します。
10エポックなら、更新回数は次の通りです。
6,000回の更新が行われます。
練習問題11
ミニバッチのサイズを大きくした場合と小さくした場合、それぞれの利点と欠点を挙げてください。
解答を示します。
大きくした場合の利点は、勾配の推定が正確になることです。真の勾配に近い方向へ進めます。また、並列計算の効率が上がります。
欠点は、一回の更新にかかる時間が増えることです。また、ふらつきが減るため、局所最適解から抜け出しにくくなる場合があります。
小さくした場合の利点は、更新が頻繁に行えることです。ふらつきにより、浅い谷から抜け出せる可能性もあります。
欠点は、勾配の推定が不正確になることです。学習が不安定になる場合があります。
補足します。実務では32から256程度がよく使われます。
メモリの制約も関係します。大きなバッチは、その分だけメモリを消費します。
10 全体の流れ
ここまでを整理します。
一回の更新で起きること
| 段階 | 内容 |
|---|---|
| 1 | ミニバッチを取り出す |
| 2 | 各画像について順伝播し、出力を得る |
| 3 | 各画像についてコストを計算する |
| 4 | 各画像について逆伝播し、要望を求める |
| 5 | 要望を平均する |
| 6 | 重みとバイアスを更新する |
これを何千回も繰り返します。
三つの記事のつながり
これまでの内容を並べます。
| 記事 | テーマ | 中心となる考え |
|---|---|---|
| 第1回 | 構造 | ネットワークは関数である |
| 第2回 | 学習 | 学習はコスト関数の最小化である |
| 第3回 | 逆伝播 | 勾配は要望を遡らせて求める |
三つがつながって、学習の全体像になります。
練習問題12
順伝播と逆伝播の違いを、流れる向きと流れるものの両面から説明してください。
解答を示します。
順伝播は、入力層から出力層へ向かいます。流れるのは活性化、つまり計算結果の数値です。
逆伝播は、出力層から入力層へ向かいます。流れるのは、各ニューロンの活性化をどう変えてほしいかという要望です。
補足します。数学的には、逆伝播で流れるのはコスト関数の偏微分です。
しかし、実装を書く前の段階では、要望という言葉で捉えるほうが理解しやすいと考えています。
11 データが要る
最後に、実務上の制約に触れます。
大量の正解データが必要
誤差逆伝播法が機能するには、正解付きのデータが大量に必要です。
要望を作る出発点が、正解だからです。正解がなければ、何を望めばよいか決められません。
MNISTという幸運
手書き数字の例が入門に適しているのは、MNISTというデータセットが存在するためです。
数万枚の画像に、人間が一枚ずつラベルを付けてくれています。
現実の課題
実務では、この前提が成り立ちません。
| 課題 | 内容 |
|---|---|
| 量が足りない | 数万件のラベル付きデータを用意できない |
| 費用がかかる | 人手でラベルを付ける作業には工数が必要 |
| 専門性が要る | 医療画像などは専門家でなければ判断できない |
| 品質が一定しない | 作業者によって判断が揺れる |
機械学習の案件で最も時間がかかるのは、アルゴリズムの選定ではなくデータの準備です。この事実は、研修で必ず伝えてください。
打開策
データ不足への対処として、いくつかの方法があります。
| 方法 | 内容 |
|---|---|
| データ拡張 | 既存データを回転、拡大などして水増しする |
| 転移学習 | 別の課題で学習済みのモデルを流用する |
| 自己教師あり学習 | データ自身から正解を作る |
三番目が、大規模言語モデルを支えている仕組みです。ラベル付けの制約を外したことが、現在の性能につながっています。
練習問題13
誤差逆伝播法が正解付きデータを必要とする理由を説明してください。
解答を示します。
要望を作る出発点が、出力層における目標値だからです。
正解が分かって初めて、「この出力をこう変えてほしい」という要望が定まります。その要望を遡らせることで、各重みの調整量が求まります。
正解がなければ、出力がどうあるべきか分からず、要望を作れません。
補足します。教師なし学習では、別の枠組みが使われます。
たとえばオートエンコーダでは、入力そのものを正解として扱います。入力を復元するよう学習させるため、外部から正解を与える必要がありません。
自己教師あり学習も、同じ発想の延長線上にあります。
12 研修での教え方
このテーマを扱う場合の設計案です。
90分の構成
| 時間 | 内容 | 形式 |
|---|---|---|
| 5分 | 前回の復習。勾配は感度の一覧表 | 講義 |
| 10分 | 一枚の画像から。出力層の要望を作る | 講義 |
| 10分 | 活性化を上げる三つの手段 | 講義 |
| 15分 | 重みの調整。練習問題4と5 | 講義と個人 |
| 10分 | 前の層への要望。練習問題6 | 講義と個人 |
| 10分 | 要望の足し合わせ。練習問題7 | 講義と個人 |
| 10分 | 遡る構造。順伝播との対比 | 講義 |
| 10分 | ミニバッチ。練習問題10 | 講義と個人 |
| 10分 | データの重要性とまとめ | 講義 |
教える順序の考え方
三つ、意識してください。
一つ目は、数式を後回しにすることです。
いきなり偏微分と添え字を出すと、多くの受講者が脱落します。何をしているかを言葉で理解してから、数式に進むほうが定着します。
二つ目は、一枚の画像から始めることです。
全データの平均という話を先にすると、抽象的になります。まず一枚で何が起きるかを追い、その後で平均の話をしてください。
三つ目は、三つの手段を明示することです。
バイアス、重み、前の層の活性化。この三つを表で示すと、話の構造が見えます。特に三つ目が逆伝播につながる点を強調してください。
つまずきやすい点
四つあります。
一つ目は、活性化を直接変えられないという制約です。
「活性化を上げたい」と言いながら「直接は変えられない」と続けるため、混乱が生じます。操作できるのは重みとバイアスだけだと、繰り返し確認してください。
二つ目は、要望を足し合わせる意味です。
10個の出力ニューロンが、それぞれ前の層に要望を出す。この構造が見えていないと、なぜ足すのか分かりません。会議の比喩が有効です。
三つ目は、逆伝播とミニバッチの区別です。
逆伝播は勾配の計算方法、ミニバッチは計算量を減らす工夫です。別の話です。混同されやすいので、明確に分けてください。
四つ目は、名前の誤解です。
誤差逆伝播法という名前から、誤差そのものが流れると思われがちです。流れるのは、コスト関数に対する各値の影響度です。
想定される質問
質問1 なぜ「誤差」逆伝播法という名前なのですか。
回答します。出力層での誤差を起点として、その影響を遡らせるためです。ただし、中間層で流れる値は誤差そのものではなく、コスト関数の偏微分です。歴史的な名前だと考えてください。
質問2 計算量はどれくらいですか。
回答します。順伝播とほぼ同程度です。これが誤差逆伝播法の優れた点です。素朴に一つずつ偏微分を求めると、パラメータ数に比例した回数の順伝播が必要になります。13,002回です。逆伝播なら、1回の順伝播と1回の逆伝播で済みます。
質問3 層が深いと問題は起きませんか。
回答します。起きます。要望を遡らせる際、活性化関数の微分が掛け合わされます。この値が1より小さいと、遡るほど要望が薄まります。勾配消失問題です。ReLUや残差接続といった工夫が、この対策として生まれました。
質問4 学習が終わったかどうか、どう判断しますか。
回答します。コストの下がり方が緩やかになった時点が一つの目安です。ただし、訓練データのコストが下がり続けても、テストデータでの性能が悪化することがあります。両方を監視し、テストデータの性能が悪化し始めたら止めます。
まとめと次の学習ステップ
誤差逆伝播法は、勾配を効率よく計算する手法です。
出発点は、出力層での要望です。正解と現在の出力を比べ、どのニューロンをどれだけ動かしたいかを決めます。差が大きいほど、要望は強くなります。
活性化を上げる手段は三つあります。バイアスを上げる、重みを上げる、前の層の活性化を変える。三つ目が、逆伝播へとつながります。
重みの調整では、つながる相手の活性化が大きいほど効果が高くなります。活性化0.9の相手とのつながりは、0.1の相手の9倍の効果を持ちます。限られた更新量を、効果の大きいところへ配分する仕組みです。
前の層への要望は、10個の出力ニューロンすべてから寄せられます。それらを足し合わせて、前の層の目標が定まります。そして同じ手続きを、入力層に向かって繰り返します。
一枚の画像だけでは偏るため、すべての訓練例について計算し、平均を取ります。ただし、それでは計算が終わりません。そこで100枚程度の束ごとに更新する方法が使われます。ミニバッチ確率的勾配降下法です。
最後に、この仕組みには大量の正解付きデータが必要です。実務では、ここが最大の壁になります。アルゴリズムよりデータ。この認識が、現場では重要です。
次の学習ステップとして、三つを提案します。
一つ目は、数式で追い直すことです。この記事では言葉で説明しましたが、連鎖律を使った導出を一度は自分の手で行ってください。2層程度の小さなネットワークで、実際に偏微分を計算すると、ここで述べた内容が数式と対応していることが確認できます。
二つ目は、実装してみることです。ライブラリの自動微分を使わず、逆伝播を自分で書くと理解が確実になります。数値微分と比較して、値が一致すれば正解です。
三つ目は、勾配消失問題に進むことです。層を深くすると何が起きるのか。ReLU、適切な初期化、バッチ正規化、残差接続。これらの工夫が、すべて同じ問題への対処として生まれたことが見えてきます。
三回にわたって、構造、学習、逆伝播を追ってきました。ここまで理解できていれば、現代の深層学習の文献を読む土台はできています。
セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
新人エンジニア研修講師2026年9月20日多層パーセプトロンはどこに知識を蓄えているのか GPTのパラメータの3分の2
新人エンジニア研修講師2026年9月20日アテンション機構を理解する クエリ、キー、バリューの正体
新人エンジニア研修講師2026年9月20日GPTの中身を追う 埋め込みからSoftmaxまで
新人エンジニア研修講師2026年9月20日大規模言語モデルは何をしているのか 次の単語を予測する仕組み
