誤り訂正学習から始める機械学習

広告

前回は簡単なモデルの内容を説明しました。図を再喝します。

というモデルでした。さて誤り訂正学習というのは、このシステムが出す出力yと教師データの正解tが一致するように重みwと閾値θの値を更新していく方法です。

ここで問題です。正解は1なのに、このシステムのニューロンは発火せず0を出力してしまいました。どのように重みwと閾値θを調整すれば良いでしょうか?

これは簡単ですね。このモデルをより発火しやすくすれば良いのですから、

  • 重みを大きく
  • 閾値を小さく

することで正解の出力に近づけるということですね。逆に正解は0なのに、興奮しちゃってニューロンが発火した場合は、この反対の処理をすれば良いわけです(重みを小さく、閾値を大きく)。正解とモデルの出力が一致すれば値を変更する必要はありません。

もう一つポイントがあります。もし

x1=0

x2=1

のとき発火する式は、

となりますね。この出力が間違えていたとき、重みw1を更新する必要はあるでしょうか?

ありませんね。なぜならこの出力が間違えていたとしても、発火する式に重みw1は関わっていないわけですから、w1に責任はありません。間違っている責任はw2とθにあるわけですから、この二つを更新するだけで大丈夫ですね。

さて、以上のことをまとめると、重みと閾値を更新する式を以下のように表せますね。

αとβは共に正の値で、1回でどれくらい値を更新するかを決めている定数です。学習係数と言います。この式をよく見てください。うまいことできてるなと感じませんか。

y=0 , t=1 (発火して欲しいのに発火しないとき)の状況を考えて見てください。値の更新式は次のようになりますね。

このとき2つの入力が1であれば、重みを大きく、閾値を小さくするように値が更新されるはずです。2つの入力が共に0であれば、閾値を小さくという目的だけが実現できるようになります。

1回の学習でうまくいくかわかりませんが、この値更新を何度も繰り返すことでいつか学習が終わる、というシステムになります。腑に落ちないところがあれば、コメントでの質問も歓迎しています。返事はすぐにはできないかもしれませんが。

ところで、この入力が2つ、出力が1つ、そしてこれらは1か0のデジタル、と聞いて何か思いつくものはありませんか?

そうですね!

論理回路ですね!

次回はこのモデルを使って実際に手計算でAND回路を学習して見ましょう。AND回路が知らなくても「AND回路 真理値表」とググっていただければなんとなくわかると思います。

次回は4. AND回路を誤り訂正学習してみた

関連記事