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

今回は実際に演習してみたいと思っているのですが、その前に今までのおさらいを軽くしてみます。まず、モデルを図で表すと

という感じで、数式で表すなら、

 

という形です。重みと閾値と学習係数は自分が適当に決めちゃって構いませんが、あまり変な値だと学習が収束しなかったり、収束が遅くなったりします。そして重みと閾値の更新式は

となりましたよね。さて、学習しようにも教師データがなければできません(誤り訂正学習の話です。)

なので、今回は学習させてAND回路と同じ出力となるよう重みを調整していきたいと思います。AND回路の真理値表は次のようになります。

x1x2y
000
010
100
111

ですね。これが教師データとなります。教師データの出力と学習モデルの出力を区別するために、教師データの出力をtとしましょう。

さて準備に必要なものは揃いました。それでは実際に誤り訂正学習をやって見ましょう。ここで初期値は

w1 = w2 = θ = 0

α = β = 0.5

と設定してみました。自分で適当に選んだものでも構いません。学習はワークシートのような表を使った方がやりやすいですが、とりあえず最初は普通にはじめてみます。それでは実際に学習してみます。

ステップ1 現在の状況  w1 = 0 , w2 = 0,  θ = 0

x1 = 0 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0≥0より、 y = 1

早速間違えましたね。値を更新する必要がありますね。

ステップ2 現在の状況  w1 = 0 , w2 = 0,  θ = 0.5

x1 = 0 , x2 = 1 のとき、

真理表より、t = 0 、ニューロンの発火式は 0<0.5より、 y = 0

正解したので値を更新する必要はありません。

ステップ3 現在の状況  w1 = 0 , w2 = 0,  θ = 0.5

x1 = 1 , x2 = 0 のとき、同様に正解しましたので値を更新する必要はありません。

ステップ4 現在の状況  w1 = 0 , w2 = 0,  θ = 0.5

x1 = 1 , x2 = 1 のとき、

真理表より、t = 1 、ニューロンの発火式は 0<0.5より、 y = 0

値の更新式は

ステップ5 現在の状況  w1 = 0.5 , w2 = 0.5,  θ = 0

x1 = 0 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0≤0より、 y = 1

ステップ6 現在の状況  w1 = 0.5 , w2 = 0.5,  θ = 0.5

x1 = 0 , x2 = 1 のとき、

真理表より、t = 0 、ニューロンの発火式は 0.5≤0.5より、 y = 1

ステップ7 現在の状況  w1 = 0.5 , w2 = 0,  θ = 1

x1 = 1 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0.5<1より、 y = 0 正解

ステップ8 現在の状況  w1 = 0.5 , w2 = 0,  θ = 1

x1 = 1 , x2 = 1 のとき、

真理表より、t = 1 、ニューロンの発火式は 0.5<1より、 y = 0

ステップ9 現在の状況  w1 = 1 , w2 = 0.5,  θ = 0.5

x1 = 0 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0<0.5より、 y = 0 正解

ステップ10 現在の状況  w1 = 1 , w2 = 0.5,  θ = 0.5

x1 = 0 , x2 = 1 のとき、

真理表より、t = 0 、ニューロンの発火式は 0.5≥0.5より、 y = 1

ステップ11 現在の状況  w1 = 1 , w2 = 0,  θ = 1

x1 = 1 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 1≥1より、 y = 1

ステップ12 現在の状況  w1 = 0.5 , w2 = 0,  θ = 1.5

x1 = 1 , x2 = 1 のとき、

真理表より、t = 1 、ニューロンの発火式は 0.5<1.5より、 y = 0

ステップ13 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1

x1 = 0 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0<1より、 y = 0 正解

ステップ14 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1

x1 = 0 , x2 = 1 のとき、

真理表より、t = 0 、ニューロンの発火式は 0.5<1より、 y = 0 正解

ステップ15 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1

x1 = 1 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 1≥1より、 y = 1

ステップ16 現在の状況  w1 = 0.5 , w2 = 0.5,  θ = 1.5

x1 = 1 , x2 = 1 のとき、

真理表より、t = 1 、ニューロンの発火式は 1<1.5より、 y = 0

ステップ17 現在の状況  w1 = 1 , w2 = 1,  θ = 1

x1 = 0 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0<1より、 y = 0 正解

ステップ18 現在の状況  w1 = 1 , w2 = 1,  θ = 1

x1 = 0 , x2 = 1 のとき、

真理表より、t = 0 、ニューロンの発火式は 1≥1より、 y = 1

ステップ19 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1.5

x1 = 1 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 1<1.5より、 y = 0 正解

ステップ20 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1.5

x1 = 1 , x2 = 1 のとき、

真理表より、t = 1 、ニューロンの発火式は 1.5≥1.5より、 y = 1 正解

ステップ21 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1.5

x1 = 0 , x2 = 0 のとき、

真理表より、t = 0 、ニューロンの発火式は 0<1.5より、 y = 0 正解

ステップ22 現在の状況  w1 = 1 , w2 = 0.5,  θ = 1.5

x1 = 0 , x2 = 1 のとき、

真理表より、t = 0 、ニューロンの発火式は 0.5<1.5より、 y = 0 正解

つまり、w1 = 1 , w2 = 0.5,  θ = 1.5のとき、4通りの入力全てに対して、出力が真理値表と一致したので、最適化が完了したということです。いや〜疲れましたね。まさかここまで長くなるとは思ってもいませんでした。まだ余力のある人はORゲートやXORゲートで試してみると良いかと思います。

今回は機械学習を手計算でやりました。機械学習の値更新のプロセスを実感することができたと思います。もっと複雑なモデルが出てきますが、結局はやっていることはこれと同じです。数学的な内容の難しさは段違いですが。次回はもうちょっと一般化したモデルを学んでみたいと思います。

次回は5. 単純パーセプトロン