ゼロから作るDeep Learning(9日目)

こんにちは、筋肉めがねです。

 

週末11月11日は、St. Martin dayでしたね。ドイツでは子供達が自作の提灯を持って教会を訪れ、パンをもらったりお菓子をもらったりします。元々は収穫祭が行われる日であり、農民が仕事を終える日、そして冬が始まる日とされているそうです。本格的な冬はすぐそこですね。冬の寒さに負けない体づくりをしていこうと思うこの頃です。

f:id:KinnikuMegane:20181111203813j:plain

 

それでは、今日も「ゼロから作るDeep Learning」を進めていきましょう。

本日は、4章です。

 

ニューラルネットワークでは、学習するフェーズと推論するフェーズの二つある、と以前の記事で書きました。4章では学習するフェーズに焦点をあてています。5つの記事に分けて書きますが、本日は、ニューラルネットワークが学習するために使う指標である「損失関数」について書いていきましょう。

 

「損失関数」という言葉を使うから少し分かりづらいのであって、もう少し砕けた表現を使うならば「合ってなさ加減」、もしくは「どれだけお前は期待を裏切るのか度合い」であろうか。 1つの1つのデータをニューラルネットワークでテストして、これらの加減やら度合いやらを、徐々に小さくしていく作業、つまり、より「ニューラルネットワークの出力値が、求められている答えに近い」状態にしていく事、それがここでいう「学習」です。

 

では、具体的にどうやって「合ってなさ加減」を徐々に小さくしていくのか。y = x^2(xの2乗)のグラフを使ってイメージしてみましょう。

f:id:KinnikuMegane:20181113042413p:plain

例えば、上の図のようなy=x^2のグラフに対して接線が一本引かれている状態を考えます。この時、x軸を重みパラメータ(ニューラルネットワークではwと表します。)、そして、接線の傾きの絶対値を「合ってなさ加減」としましょう。(例えば、2の絶対値は2だし、-2の絶対値も2ですね。)

そうすると、「学習」フェーズのゴールは「合ってなさ加減」を0に近づける事でしたね。つまり、上の図でいうと、接線の傾きの絶対値を0に近づけることですね。では、例えば、接線が上の図の緑のような位置にある時、どうするか。それは、放物線と接線の接点の位置をもう少し右にずらせば良さそうですね。つまり、重みパラメータをもう少し正の方向へ変化させれば良いですね。

 

では、例えば、接線が下の図のようになっていたらどうでしょうか。

f:id:KinnikuMegane:20181113042926p:plain

この場合は、放物線と接線の接点の位置をもう少し左にずらせば良さそうですね。つまり、重みパラメータをもう少し負の方向へ変化させれば良いですね。

という事は、最終的には、以下の図のように接線の傾きが0となる、重みパラメータの位置を探す、これこそがニューラルネットワークにおける「学習」です。

f:id:KinnikuMegane:20181113043115p:plain

 

それでは、本日は以上でございます。