はじめに
この記事はゼロから作るディープラーニング 3章パーセプトロンを自分なりに理解して分かりやすくアウトプットしたものです。
文系の自分でも理解することが出来たので、気持ちを楽にして読んでいただけたら幸いです。
また、本書を学習する際に参考にしていただけたらもっと嬉しいです。
ANDゲート・ORゲート・NANDゲートとは
これらのゲートはパーセプトロンを元に作れる選別機のようなもので、決められた条件に合致した時だけ1を出力してそれ以外は0を出力します。簡単に言うと、機能を固定したパーセプトロンや機能を制限したパーセプトロンとも言えます。
ANDゲートは、2つある入力信号の両方が1の場合だけ1を出力します。
ORゲートは、2つある入力信号のうち1つ以上が1の時に1を返します。
NANDゲートは、ANDゲートの逆で2つある入力信号の両方が1の場合に0を返します。
これらのゲートはパーセプトロンのパラメータを変えるだけで実装することができ、構造自体を変える必要はありません。
これがパーセプトロンの良いところであり、このメリットを活かすことでニューラルネットワークを実装していきます。
実際に実装してみる
今回の実装からはパーセプトロンのパラメータの1つである闘値の代わりにバイアスと言うパラメータを使っていきます。
理由としては、パーセプトロンをニューラルネットワークに進化させることを考えるとバイアスの方が適しているからです。
しかし、バイアスは闘値にマイナスをつけただけなので全く難しくはありません。
実際にバイアスを使ったパーセプトロンを図で表してみます。
式が少し変わるだけなので難しくはありません。
ANDゲート実装
def AND_b(x1,x2):
x = np.array([x1,x2])#入力信号
w = np.array([0.5,0.5])#重み
b = -0.7#バイアス
newlon = x*w
newlon = newlon.sum()
if newlon + b > 0:
return 1
elif newlon + b <= 0:
return 0
ORゲート実装
def OR_b(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.4
newlon = x*w
newlon = newlon.sum()
if newlon + b > 0:
return 1
elif newlon + b <= 0:
return 0
NANDゲート実装
def NAND_b(x1,x2):
x = np.array([x1,x2])
w = np.array([-0.5,-0.5])
b = 0.7
newlon = x*w
newlon = newlon.sum()
if newlon + b > 0:
return 1
elif newlon + b <= 0:
return 0