Perlで学ぶディープラーニング入門

学習率とは

ディープラーニングにおける学習率とは、重みとバイアスのパラメーター更新を行うために、傾きに対して、どの割合で増やすかを指定する値です。

言葉で書いてもややこしいので、例を書きます。

学習率がイメージできる例

重みw11を、0.001増やすと、損失関数(誤差の指標。0に近いほど良い)の値が、0.002減ることがわかりました。重みw11に対する損失関数の傾きは-20(-0.002/0.001)です。

重みw21を、0.001増やすと、損失関数(誤差の指標。0に近いほど良い)の値が、0.001増えることがわかりました。重みw21に対する損失関数の傾きは10(0.001/0.001)です。

ディープラーニングの重みのパラメーターの更新は、求めた傾きの値をそのまま使うわけではありません。これをそのまま使ってしまうと、大きく飛び越え過ぎることになります。

パラメータを増やしたり、減らしたりすると損失関数がどの程度増えたり、減ったりするかがわかったので、それを基準に、少しだけ動きましょう。この「少しだけ動く」ということを表現するのが学習率です。

学習率を0.1に設定したとします

重みw11の更新量は「-20 * 0.1 = -2」で、これを重みから引き算します「w11 = w11 - (-2)」。

重みw11の更新量は「10 * 0.1 = 1」で、これを重みから引き算します「w11 = w11 - 1」。

引き算をするのは、損失関数の値が減る方向に動かす必要があるからです。

バイアスのパラメーターの更新も、重みの更新とまったく同じです。

重みとバイアスのパラメーターの損失関数に対する傾きは、逆誤伝播法というアルゴリズムを使うことで、すべての層において、一気に求まります。

Perlで学ぶディープラーニング入門のご紹介

コンテンツ