やってみよう!機械学習 - パーセプトロン
パーセプトロンって何?
パーセプトロンとは入力値2つから一つの値を導きます。
仕組みは入力値に重みずけして計算させ、その結果から値を導きます。
パーセプトロンの作りかた
閾値を thetaとして定義して作成。
入力値(x1,x2)に重み(w1,w2)を掛けて足しこみます。足した値と閾値(theta)を比較して結果を得ます。閾値を変えれば"1"を返します。
def AND(x1,x2):
w1 = 0.5
w2 = 0.5
theta = 0.7
z = w1*x1 + w2*x2
if z <= theta :
return 0
elif z > theta :
return 1
print("AND(1, 1)=" ,AND(1,1))
ポイントは
入力値に重みをかけたものを全て足しこむ。この足し込んだものを閾値と比較して結果を出します。
パーセプトロンをもっと効率的に
閾値を"0"を基準にして作ったもの
def AND(x1,x2):
w1 = 0.5
w2 = 0.5
b = -0.7
z = w1*x1 + w2*x2 + b
if z <= 0:
return 0
elif z > 0:
return 1
print("AND(1, 1)=" ,AND(1,1))
変わった点は
閾値の代わりにバイアス"b"をつけています。
パーセプトロンをもっと使いやすく。
ここから実装しやすくNumpyを使って計算式を単純化して見通しよく書けるようにします。
Numpyの使い方は
x = np.array([1,1])
w = np.array([0.5,0.5])
bb = -0.7
zz = np.sum(x*w) + bb
if zz <= 0:
print("0")
elif zz > 0:
print("1")
これで実行すると"1"と出ます。まとめてスッキリ書くことができます。
関数にします。
def andG(ex1,ex2):
x = np.array([1,1])
w = np.array([0.5,0.5])
b = -0.7
z = np.sum(x*w) + b
if z <= 0:
return 0
elif z > 0:
return 1
この記事が気に入ったらサポートをしてみませんか?