误差逆伝搬法を理解したい
皆さん、こんにちは。尝笔开発グループの苍-辞锄补飞补苍です。
ハチドリは空中で静止するために、毎秒约55回も羽ばたいており、全动物中で最も活発な代谢を行っています。加えて、体が极めて小さいことで放散も激しいため、常に花の蜜からカロリーを摂取しないとすぐに饿死するのだそうです。
本题です。
以前、主に多层构造となるニューラルネットワークの学习方法について整理しました。学习には损失関数、误差逆伝搬法、勾配降下法の3つポイントがあります。今回はその内の1つである误差逆伝搬法を深堀したいと思います。
目次
误差逆伝搬法
概要
误差逆伝搬法は、ニューラルネットワークの学習において、出力結果と正解ラベルとの差(損失)をもとに、各パラメータがどれだけ損失に寄与しているかを計算します。误差逆伝搬法の名前の由来は、出力層から入力層で遡って伝搬して計算するところに因んでいます。
误差逆伝搬法の目的は、各層の重みやバイアス項が損失関数にどれだけ影響を与えているのか、損失関数の勾配を求めることにあります。勾配が求まると、各層の重みやバイアス項が変化したときに、損失がどれぐらい変化するのか、その変化量が分かるようになります。その変化量は、損失が減る方向に対して各層の重みやバイアス項をどれぐらい調整すればいいのかの指針になります。

チェーンルール
误差逆伝搬法はチェーンルールの応用で計算を行います。
チェーンルールは、复数の関数が入れ子になっている场合に、全体の微分を効率よく计算するための方法です。例えば、以下のように関数が入れ子になっているとします。
この関数が入れ子となっている式に対して测を虫で微分するとき、まず内侧の関数 g(x) の微分を求め、その结果に外侧の関数 f の微分を掛け合わせます。これにより、复雑な関数の微分も段阶的に计算できます。
误差逆伝搬法では、各層の勾配を計算する際に、各層の出力が次の層の入力となるため、局所的な微分を掛け合わせて全体の勾配を求めます。その為、チェーンルールに基づいて計算する必要があるのです。
计算式
では、実際にどういう計算を行うのかを見てみましょう。误差逆伝搬法の计算式は、各層のパラメータに対する損失関数の勾配を求めることにあります。具体的には、出力層から入力層に向かって、各層の重みやバイアスに対する微分値を計算します。计算式は以下の通りです。
Lは损失です。yは活性化関数の结果で、出力层であれば予测结果になります。zは総和で线形変换の结果で、活性化関数に入る前の値になります。wは各层の重みやバイアス项です。
日本語でこの式を表現すると、先ほども言った通り、误差逆伝搬法は「各層の重みやバイアス項(w)が、どれぐらい损失(L)に影响するのか」を求めます。つまり、?L / ?w です。
この各层の重みやバイアス项(w)から损失(L)への道程には、いくつかの要因があります。まず、损失(L)は活性化関数の结果(y)に影响されます(?L / ?y)。そして、活性化関数の结果(y)は线形変换の结果(z)に影响されます(?y / ?z)。最后に、线形変换の结果(z)は重みやバイアス项(w)に影响されます(?z / ?w)。この数珠繋ぎにより上記の计算式となる訳です。

おわりに
今回、误差逆伝搬法を勉強するにあたり、数学を勉強しなおしました。计算式をなんとか私なりに理解できる範囲で日本語に訳してみたのですが、どうでしょうか。G検定ではここまでの数式は出てきませんので、误差逆伝搬法は出力層から中間層に逆伝搬で勾配を求めていくもの、と覚えておけば良いかと思います。
ちなみに、活性化関数にソフトマックスで损失関数に交差エントロピー误差を使う等、损失関数と出力の関係がシンプルなケースでは、线形変换の结果(z)を省略することができるそうです。
私の数学への理解力が不足しているため、调べてみても良く分かりませんでした。もっと数学を勉强しないとなと思いました。
ではまた。
