学習率とは

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

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

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

重み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テキスト処理のエッセンス
  • 初級者向け・テキスト処理と正規表現の基本をマスター
業務に役立つPerl
  • 実務者向け・ログ解析など日本語を含むテキスト処理の実践!
Perlクラブ
  • 仲間と出会い
    ゆとりあるエンジニアライフを送る