損失関数について その1

今回は損失関数についてメモる。
機械学習ディープラーニングとかの言葉をたくさん聞くようになってきたけど、何を学習しているのか?
勉強して調べた結果、今の所学習とは訓練データから最適な重みパラメータの値を自動で獲得するという認識に落ち着いた。


f:id:Owatank:20170623121117p:plain
重みパラメータの例としてミックスジュースをあげる。ミックスジュースAには20%がりんご、30%がみかん、50%がいちごだとする。
A~Cのミックスジュース(使ってる果物は同じと考える、割合が違う)の教師データからどれがAかを判定する学習モデルを考える。
このとき、人はAがどの割合でミックスジュースが構成されているのか「分かっている」ので学習モデルに割合を教えてあげれば教師データなんてなくてもすぐに判別するモデルが作れる。
でも教えないときはどうか?そのとき学習モデルはA~Cの教師データから「学習」をして20%がりんご、30%がみかん、50%がいちごの割合はおそらくAのミックスジュースだと判定するようになる。
これは教師データから一定のパターン、特徴を見つけ出していると考えることができる。
この一定のパターン、特徴こそがニューラルネットワークにおける重みパラメータに相当する、はず。

決定した重みパラメータの値が間違っている可能性もある。
というのも上の例で1000個の教師データがあるとき、100個のデータから重みパラメータを見つける時と、500個のデータから見つけるときでは重みパラメータは違うかもしれない。(前者では1:2:7の割合をAとする重みパラメータ、後者は2:4:4の割合をAとする重みパラメータとして決定してしまうかもしれない)
だから学習を繰り返しながら重みパラメータを修正、更新する機能を持っていなくてはいけない。
修正、更新するために損失関数という指標が存在する。

長くなりそうなのでこのへんで