パーセプトロン  (ディープラーニングStepⅠ)

やっとこさで、ディープラーニングの途に就きます。 ディープラーニングの起源となるパーセプトロンは、ニュートラルネットワークの基礎のアルゴリズムということです。  StepⅠとして、論理関数の AND関数、NAND関数、OR関数、XOR関数 の導入をします。

1. ANDゲート : パーセプトロン(perceptron)の実装 

ANDゲートは、 次の式(1)を実装した関数で、 図(1)で示されます。

式(1)

図(1)

プログラム_1:  [ ANDゲートを定義して論理値を返します。 ]

1)ANDゲートをdef関数で定義。 引数はX1,X2。 

2)w1とw2,Thetaを定数で決める。 カンマ(, )で各変数を区切って代入できる。

3)計算結果をとりあえず、Ans とします。

4)Ans がThetaの値以下なら、 0を返す。

5)Ans がThetaの値より大きければ、 を返す。

6)主プログラムは X1,x2をそれぞれ引数として、関数を呼び出す。

7)X1,X2≂(0,0),(1.0)(0.1),(1.1)の4パターンで、ANDゲートの結果をそれぞれy1,y2,y3,y4 とする。

8)y1,y2,y3,y4を印字

結果(1) : プログラム_1の結果 

ここで、ANDゲートの論理値表を描くのプログラムを作ります。 前回のおさらいになります。

プログラム_2:  [ ANDゲートの論理値表を描くのプログラムを追加 します。 ]

1)pyplot を追加でインポートします。

2)Tex用に数式フォントセット( mathtext.fontset )をにしておきます。

3)タイトル用にフォントセット(font.family)はTimes New Romanにします。

4)x1、x2、yのタイトル文字を適当な間隔を開けて印字。数字の下付き$x_1$ $x_2$を使います。

5)Texの制御文字’$’を予め、S= '$'としておきます。 コーテションを省略できる。

6)x1、x2とAND関数結果yを呼び出します。 forで4つのケースを繰返すようにしました。 

7)X1,X2,yを制御文字$と組み合わせた文字列り、位置を変えて描きます。

 ( Texで変数の値を直接印字するの方法が分からなかった。 ネット検索で、文字列を作って印字する方法が紹介されていた。 多分、直接変数の値を印字する方法もあるのではないかとは思います。)

8)区切りの線引きをます。横線はaxhline 縦線はaxvlineを使い、実線(Solid)と破線(dashed)を設定します。

結果(2) : プログラム_2の結果 

次に、重み付けとしてのThetaの代わりにbを乗せたゲート関数を定義します。

式(2)

プログラム_3 : 式(2)を描画するプログラム。 

プログラム_4 : 式(2)を実装したプログラムをコーディング。 w1,w2,bの各値を0.5, 0.5, -0.7といます。 

1)修正と追加は、AND結果を計算結果を0との比較ではなく、1との比較とするために1加え、int文で整数部分のみを関数の結果として返します。

論理値表の描画もします。 結果は同じなので、省略。

2. NANDゲート , ORゲート

さらに、 NANDゲート と ORゲート を作ります。

プログラム_5 : NANDゲート 。 プログラム4の関数を変更するだけです。 

プログラム5の結果:NANDゲート

プログラム_6 : ORゲート 。 同じく関数を変更するだけです。

プログラム6の結果:ORゲート

3. XORゲート

プログラム_7 : XORゲート 。

XORゲートは、ANDゲート、NANDゲート、ORゲートの組み合わせによって実装が出来ます。

NAND結果をs1、OR結果をs2として、 s1、s2をANDにすればいいだけ。

すでに、3つのゲートを関数設定してあるので、順番に通すだけです。

以上で、Perceptoron の実装が出来ました。


YouTube画像を公開

初心者がPythonでプログラミング入門。初歩からデープラーニングを体験的に学習する記録

プログラム初心者でも解るように説明をしながら、これからの時代に必要なPython(パイソン)を使って、プログラミング入門から初めてAIデープラーニングを体験的に学習するサイトです。主の教科書に「ゼロから作るDeep Learning 」(オライリージャパン)を使って、多くの情報サイトを使います。自主学習の記録として留めておきたいこと、これから学習する人が知りたいだろうことをブログ式にまとめています

0コメント

  • 1000 / 1000