
ゼロから作る Deep Learning を、データサイエンス初心者の私と一緒にやっていきませんか?
ゼロから作る Deep Learning とは
ゼロから作るDeep Learning とは、python の基礎からのDeep Learning を実戦的に学べる書籍なのでぜひ手に取ってみてください。
今回は第1回、第2章のパーセプトロンについてやっていきたいと思います。(第1章はPythonの導入の部分なので今回は扱いません。)
今回の目標
今日の目標は、パーセプトロンの実装をおこない
・AND ゲート
・NAND ゲート
・OR ゲート
・XOR ゲート
の4つを実装するプログラムを書くことです。
第2章 パーセプトロン

パーセプトロンとは、ニューラルネットワークの起源となるアルゴリズムです。複数の入力信号に対し、出力信号を出す情報伝達の流れみたいなものをイメージして下さい。
ANDゲート

AND ゲートとは、2つの入力がどちらも1の時のみ1、その他は0となるような回路です。
# y=0 (w1x1+w2x2<=θ) # y=1 (w1x1+w2x2>θ) def AND(x1,x2): x=np.array([x1,x2]) w=np.array([0.5,0.5]) b=-0.7 tmp= np.sum(w*x)+b if tmp<=0: return 0 elif tmp>0: return 1
AND (0,0),AND(0,1),AND(1,0),AND(1,1) # (0, 0, 0, 1) となればOK
NANDゲート

NAND ゲートとは、AND ゲートの逆で2つの入力がどちらも1の時のみ0、その他は1となるような回路です。
def NAND(x1,x2): x=np.array([x1,x2]) w=np.array([-0.5,-0.5]) b=0.7 tmp= np.sum(w*x)+b if tmp<=0: return 0 elif tmp>0: return 1
NAND (0,0),NAND(0,1),NAND(1,0),NAND(1,1) #(1, 1, 1, 0) となればOK
ORゲート

OR ゲートとは、2つの入力のうち、少なくとも一つが1であれば、
1となるような回路です。
def OR(x1,x2): x=np.array([x1,x2]) w=np.array([0.5,0.5]) b=-0.4 tmp= np.sum(w*x)+b if tmp<=0: return 0 elif tmp>0: return 1
OR(0,0),OR(0,1),OR(1,0),OR(1,1) #(0, 1, 1, 1) となればOK
XORゲート(排他的論理和)

XORゲートは今までの3つとは違い、線形分離ができないため、既存のゲートの組み合わせによりゲートを表現することができます。
def XOR(x1,x2): s1 = NAND(x1,x2) s2 = OR(x1,x2) y= AND(s1,s2) return y
XOR(0,0),XOR(0,1),XOR(1,0),XOR(1,1) #(0, 1, 1, 0) となればOK
まとめ
以上、AND,NAND,OR,XOR の4つの論理ゲートを実装できました。
パーセプトロンはニューラルネットワークの基本となる概念なので、ここをおろそかにせず、
次回以降のニューラルネットワークの実装に入っていきましょう。
ゼロから作る Deep Learning 解説ブログ 第2回 はこちらです。
コメント