2017/01/13
0:00

機械学習理論入門~回帰分析ステップ③~

2次関数のグラフの図
前回は、ステップ②:パラメータを評価する基準を設定する
を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ステップはひとまず終了です。
お疲れ様でした!