前回,
今回はそのパーセプトロンの解き方のヒミツを見ていくのですが,
最適化
ここまでの連載の中で
最大化は,
プログラマが
機械学習と一口にいっても様々なアプローチがあるのですが,
特に線形回帰の目的関数はとても扱いやすい形をしていたので,
しかしこのように簡単に解けるのはむしろ例外。パーセプトロンの誤差関数は,
そういう場合にも最小点を求めるにはどうすればよいでしょう。
勾配法
わかりやすさのために,
f(x)の最小点はグラフから明らかにx=x*です。つまり,
しかしグラフが描けるとは,
機械学習や自然言語処理の問題では数百次元,
そこで,
まずは,
えいやと選んだ点はx=x0。残念! 最小点ではありませんでした……。
いやいや,
そこでx=x0の周りをちょっとだけ見てみます
さらに嬉しいことに,
では注目点を少し左のx=x1に移して,
しかし,
まず,
それから
「ちょっとだけ周りを見たい」
また,
そこで傾きに比例した距離だけ動かしてみるという手が考えられます。その比例係数をη>0と書くことにすると,
これで傾きが正なら左に,
このηは
この方法なら,
この操作を続けていき,
ここまで1次元の関数の例で説明しましたが,
例えば3次元関数f(x,y,z)の場合,となります。
すなわち,
空間が多次元ですから傾きもその次元分のベクトルとなり,
こういったアプローチで最小点を求めようとする手法を総称して
勾配法の問題点
「むむむ,
実際,
例えば次の図の
初期値をx1の場所に取れれば正しい最小点x*にたどり着く可能性は高くなるでしょうが,
また図の
他にも,
(3)
しかし
このようにさまざまな難点を抱えつつも,
その背景には,
連載の中でも何度か述べたとおり,
もちろん,