ニューラルネットワークは、最初から正しい予測ができるわけではありません。
最初のうちは、AIの予測はたいてい間違います。
しかしAIは、その間違いを手がかりにして、少しずつモデルを修正していきます。
このとき使われる仕組みが、誤差逆伝播法(Backpropagation)です。
誤差逆伝播法を理解する、イメージを書いてみましょう。
あるチームが大事な仕事をしていて、最後にミスが見つかったとします。
するとリーダーは考えます。
「このミスは、どこで起きたのだろう?」
まず、最後の担当者を確認します。もしそこに問題がなければ、その前の担当者、さらにその前の担当者へと、原因をさかのぼって調べていきます。
つまり、
結果 → 原因
という順番で、ミスの原因を探していくわけです。
誤差逆伝播法も、これと似た仕組みです。
ニューラルネットワークでは、
入力層
↓
隠れ層
↓
出力層
という順番で計算が行われます。
そして最後に、予測結果と正解の違いが、誤差(error)として計算されます。
誤差逆伝播法では、この誤差を
出力層 → 隠れ層 → さらに前の層
という順番で、後ろから前へと伝えていきます。
そして、それぞれの層で「どれくらい修正すればよいか」を計算しながら、重みを少しずつ調整していくのです。
連鎖律(チェーンルール)
ニューラルネットワークの計算は、
いくつもの処理が順番につながっている構造になっています。
たとえば、
入力
↓
計算A
↓
計算B
↓
出力
という流れです。
ここで最後の結果が間違っていたとします。
するとAIは、「この間違いは、どこから生まれたのだろう?」と考えます。
まずは、出力に一番近い計算Bの影響を調べます。
もしBが少し変わったら、結果はどれくらい変わるのか。
次に、その前の計算Aを見ます。
Aが変わったら、Bを通して最終結果はどれくらい変わるのか。
このように、後ろの変化が、前の部分にどれくらい影響するのかを順番にたどっていく考え方が、連鎖律(チェーンルール)です。
連鎖律をイメージで考えてみましょう。
料理を作っていて、最後に味見をしたとき、「ちょっと味が濃い」と感じたとします。
すると料理人は考えます。
「どこで味が濃くなったのだろう?」
思い浮かぶのは、
・塩を入れすぎたかもしれない
・醤油が多かったかもしれない
・煮詰まりすぎたかもしれない
といった原因です。
つまり、最終的な味(結果)からさかのぼって、どの工程がどれくらい影響しているかを考えているわけです。
料理の味は、いろいろな工程がつながってできています。
たとえば、
材料
↓
調味料
↓
加熱
↓
最終的な味
という流れです。
もし塩の量を少し変えたら、最終的な味も少し変わります。
しかしその変化は、
調味料
↓
加熱
↓
味
という工程を通って最後の結果に影響します。
このように、前の工程が、後ろの結果にどれくらい影響するのかを順番に考えていく方法が、連鎖律(チェーンルール)です。
誤差逆伝播法では、
出力層
↓
隠れ層
↓
さらに前の層
へと誤差を伝えていきます。
そのとき、「この部分を少し変えたら、最終結果はどれくらい変わるのか」を順番に計算する必要があります。
連鎖律は、その影響のつながりをたどるための方法なのです。
next ▶ 誤差が伝わるときの問題