0:00
前回は、ステップ②:パラメータを評価する基準を設定する
を2回にわたり説明しました。
今回はいよいよ、その基準を用いて、最適なパラメータを
決定していきたいと思います。
具体的には、前回説明した誤差関数(最小二乗法の場合は二乗誤差)を
最小化するようなパラメータを決める方法を説明していきます。
最小化の方法には様々なものがありますが、
今回はそれらのもととなっている最も基本的な方法である、
勾配降下法について説明したいと思います。
勾配降下法は、微分によって誤差関数の勾配ベクトルを求め、
その勾配の逆方向へパラメータの値を更新し続けることで、
誤差関数を最小化するようなパラメータを見つけ出すという方法です。
次元数が増えると式が非常に複雑になるので、
今回は最も分かりやすい関数で例を見てみましょう。
この記事の画像に載せた2次関数を見てください。
式は
です。
x=0のときに最小値をとると明らかに分かります。
しかし今回はあえて、この関数の最小値を、
勾配降下法を使って求めてみましょう。
まず、この関数をxで微分すると導関数は、
となります。
今回は、仮にxの初期値を10としてみます。
この初期値を導関数に代入すると、
となりますね。
これが、先ほど記載した勾配ベクトル(今回はスカラーですが)
に相当するものになります。
次に、この勾配ベクトルの逆方向にxの値を更新します。
勾配ベクトルは20ですので、更新値は-20と言いたいところですが、
これでは値が大きすぎて、最小値を通り過ぎてしまいます。
そこで使うのが学習率という値です。
具体的には、xを更新する際に、その更新値に掛ける係数になります。
今回は、更新値が大きすぎることが問題となっているので、
学習率を0.1としてみましょう。
するとxの更新値は-2となり、新しいxの値は8になりますね。
以上の、勾配ベクトルを求める→学習率を掛けてxの値を更新する
という操作を何度も繰り返し、関数を最小化するxの値を求めていきます。
このように、パラメータを勾配ベクトルの逆側に
ひたすら坂を下っていくように更新していくことから、
勾配降下法という名前が付いています。
また、関数での最小化の続きを見ていくと、更新値は
-1.6→-1.28→-1.024 と最小値に近づく(勾配が緩やかになる)につれて、
絶対値が小さくなっていきます。
これにより、うまいこと最小値付近に
xの値が収束していくというわけです。
以上が、勾配降下法における基本的な操作です。
実際に機械学習を行う場面では、
誤差関数のパラメータが非常に多く、
複雑な誤差関数になると思います。
その場合でも基本的な操作は変わりません。
勾配ベクトルが、各パラメータについて偏微分を行った値になり、
パラメータの数分、次元数が増えるだけです。
現在は、この勾配降下法を改良した
色々な誤差関数の最小化手法が存在しています。
それらについても、またいずれ学んでいきましょう。
今回で、回帰分析の3ステップはひとまず終了です。
お疲れ様でした!
を2回にわたり説明しました。
今回はいよいよ、その基準を用いて、最適なパラメータを
決定していきたいと思います。
具体的には、前回説明した誤差関数(最小二乗法の場合は二乗誤差)を
最小化するようなパラメータを決める方法を説明していきます。
最小化の方法には様々なものがありますが、
今回はそれらのもととなっている最も基本的な方法である、
勾配降下法について説明したいと思います。
勾配降下法は、微分によって誤差関数の勾配ベクトルを求め、
その勾配の逆方向へパラメータの値を更新し続けることで、
誤差関数を最小化するようなパラメータを見つけ出すという方法です。
次元数が増えると式が非常に複雑になるので、
今回は最も分かりやすい関数で例を見てみましょう。
この記事の画像に載せた2次関数を見てください。
式は
です。
x=0のときに最小値をとると明らかに分かります。
しかし今回はあえて、この関数の最小値を、
勾配降下法を使って求めてみましょう。
まず、この関数をxで微分すると導関数は、
となります。
今回は、仮にxの初期値を10としてみます。
この初期値を導関数に代入すると、
となりますね。
これが、先ほど記載した勾配ベクトル(今回はスカラーですが)
に相当するものになります。
次に、この勾配ベクトルの逆方向にxの値を更新します。
勾配ベクトルは20ですので、更新値は-20と言いたいところですが、
これでは値が大きすぎて、最小値を通り過ぎてしまいます。
そこで使うのが学習率という値です。
具体的には、xを更新する際に、その更新値に掛ける係数になります。
今回は、更新値が大きすぎることが問題となっているので、
学習率を0.1としてみましょう。
するとxの更新値は-2となり、新しいxの値は8になりますね。
以上の、勾配ベクトルを求める→学習率を掛けてxの値を更新する
という操作を何度も繰り返し、関数を最小化するxの値を求めていきます。
このように、パラメータを勾配ベクトルの逆側に
ひたすら坂を下っていくように更新していくことから、
勾配降下法という名前が付いています。
また、関数での最小化の続きを見ていくと、更新値は
-1.6→-1.28→-1.024 と最小値に近づく(勾配が緩やかになる)につれて、
絶対値が小さくなっていきます。
これにより、うまいこと最小値付近に
xの値が収束していくというわけです。
以上が、勾配降下法における基本的な操作です。
実際に機械学習を行う場面では、
誤差関数のパラメータが非常に多く、
複雑な誤差関数になると思います。
その場合でも基本的な操作は変わりません。
勾配ベクトルが、各パラメータについて偏微分を行った値になり、
パラメータの数分、次元数が増えるだけです。
現在は、この勾配降下法を改良した
色々な誤差関数の最小化手法が存在しています。
それらについても、またいずれ学んでいきましょう。
今回で、回帰分析の3ステップはひとまず終了です。
お疲れ様でした!