Pocket

パーセプトロンとは複数の入力を重み付けして0または1を出力するアルゴリズムのことです。

パーセプトロンは重みとバイアスを調整するだけで出力を変えることができます。

総入力(a)

総入力(a)とは入力(x)と重み(w)とバイアス(b)からなる次のニューロンへの最終的な入力のことです。

入力(x)

入力(x)とはパーセプトロンに入力される値(説明変数)のことです。

重み(w)

重み(w)とは入力の重要度を調整する値のことです。

バイアス(b)

バイアス(b)とは1を出力する度合いを調整するための値(出力の閾値)のことです。

パーセプトロンの総入力(a)を式で表すと以下のようになります。 $$
a=\sum_{i=1}^{n}x_iw_i+b
$$ 総和(Σ)のnは入力ニューロン数、iは何番目の入力ニューロンであることを表し、入力ニューロンごとの入力(x)と重み(w)をかけ合わせたものを足し合わせ、そこにバイアス(b)を足したものをステップ関数(f(a))への総入力(a)として渡します。

ニューロン(ノード)

ニューロンとはパーセプトロン内の各ユニットのことです。

ステップ関数(f(a))

ステップ関数(f(a))とはバイアス(b)を超えていれば1を出力し、超えていなければ0を出力する活性化関数のことです。

活性化関数

活性化関数とはあるニューロンから次のニューロンへ出力する際に、入力値を別の数値に変換して出力してモデルの表現力を上げる関数のことです。

パーセプトロンはステップ関数(f(a))により入力が0または0より小さければ0を出力し、0より大きければ1を出力します。 $$
f(a) = \begin{cases}
0 & (a \text{ ≦ } 0) \\
1 & (a \text{ > } 0)
\end{cases}
$$

出力(y)

出力(y)はステップ関数(f(a))の出力(目的変数)をそのまま出力します。 $$
y = f(a)
$$

Pythonで実装する

上記を元にPythonでパーセプトロンを実装し実行します。
# ステップ関数(活性化関数)
def step(a):
   if a <= 0:
       y = 0
   else:
       y = 1

   return y

# パーセプトロン
def perceptron(x1,x2,w1,w2,b):
   ## 引数
   # x1:入力1
   # x2:入力2
   # w1:重み1
   # w2:重み2
   # b:バイアス

   # 総入力
   a = x1 * w1 + x2 * w2 + b

   # 出力
   return step(a)
上記の処理に入力値・重み・バイアスを渡して実行します。
print(perceptron(x1=0,x2=0,w1=0.4,w2=0.4,b=-0.6))
上記の場合は総入力が0より小さいので0が出力されます。
print(perceptron(x1=1,x2=0,w1=0.6,w2=0.4,b=-0.3))
1
上記の場合は総入力が0より大きいので1が出力されます。

参考