ゼロから作るDeep Learning 4.4節を理解するために考えたことのメモ

ゼロから作るDeep Learning 4.4節がよくわからなくて、3章から読み直したらなんとなくわかった気になったので、自分なりの理解をメモをとして残しておく。

まずわからなかったのが、以下の文章。

形状が2×3の重みWだけを持つニューラルネットワーク

最初はこの文章だけでは、どんなニューラルネットワークをイメージすればいいのか分からなかったが、図3-14と図3-16を踏まえると、入力層が2個, 出力層が3個, 隠れ層なしの1層ニューラルネットワーク(バイアスと活性化関数は省略)を意味していることがわかった。

f:id:sonomirai:20170529001749j:plain

そのあと、simpleNetを使ってみるところでまたつまづいたが、出てきている値を上図に当てはめるとイメージが湧いた。ガウス分布で重み決めて、適当な入力与えて、結果的に最大だったインデックスを正解ラベルにしているということだと思う。 普通は正解ラベルは決まっているものだが、4.4節はあくまでニューラルネットワークに必要な勾配の概念を学習するという章なので、勾配の説明のために、普通とは違うことをしているのだと思う。その後の4.5節では、MNISTデータセット使って、実際の学習に即したやり方をしている。

f:id:sonomirai:20170529000706j:plain

そのあと勾配を求めていて、dWの値を見ると、正解ラベルへの重みはマイナス、正解ラベル以外への重みはプラスになっていることがわかる。これはつまり正解ラベルの重みを大きく、それ以外の重みを小さくするよう学習を進めようとしていることがわかる。

f:id:sonomirai:20170529000819j:plain

インデックス2と値の近いインデックス0への重みdw11, dw21は値が大きいのは、「dw11, dw21の重みを今以上に大きくしたら、正解であるインデックス2との区別がつかなくなるからやめろよ!」という意味だと思う。 (こんな風に入力と重みの関係が密なのは、今学習データが1つだけだからで、2つ以上になったらこの辺りは隠れてしまう気がする。)

f:id:sonomirai:20170529000830j:plain

今回は入力が(0.6, 0.9)の1個のみだが、他の入力が来た時でも、正解を正解と判断できるように重みを更新しているということだと思う。