見出し画像

やってみよう!機械学習 - パーセプトロン

パーセプトロンって何?

パーセプトロンとは入力値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))
        

ポイントは

z = w1*x1 + w2*x2

入力値に重みをかけたものを全て足しこむ。この足し込んだものを閾値と比較して結果を出します。

パーセプトロンをもっと効率的に

閾値を"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))

変わった点は

z = w1*x1 + w2*x2 + b

閾値の代わりにバイアス"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


この記事が気に入ったらサポートをしてみませんか?