はじめに
ディープラーニングの元であるパーセプトロンについて理解する。
私が調べて学習した範囲なので、抜けている点や疑問点がありましたら、そちらは各々調べていただければと思います。
また、間違っている部分がありましたらご指摘いただけると幸いです。
前提知識
パーセプトロンについて理解するうえで必要となる前提知識。
ANDゲートとNANDゲート
ANDゲート
二値の条件を満たしている(True)時、出力することができる。
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
NANDゲート
二値の条件を満たしていない時にTrueになる。逆に二値の条件を満たしている時はFalseになる。
NANDゲートはANDゲートの逆のゲートである。
x1 | x2 | y |
---|---|---|
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
ORゲートとNORゲート
ORゲート
二値の条件のうちどちらかが満たしている(True)ならば出力することができる。
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
NORゲート
二値の条件を満たしていない時にTrueになる。逆に二値の条件を満たしている時はFalseになる。
NORゲートはORゲートの逆のゲートである。
x1 | x2 | y |
---|---|---|
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 0 |
XORゲート
XORゲートは排他的論理和と呼ばれている。排他的論理和とは自分以外は拒否するという意味である。
下図にあるようにx1、x2のどちらかが1の時にだけ出力できる。
x1 | x2 | y |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
パーセプトロンとは
パーセプトロンはアルゴリズムであり、1957年にアメリカの研究者のローゼンブラットによって考案された。
これは人間の脳神経回路を真似た学習モデルである。
仕組み
- 複数信号を入力とし、1つの信号を出力
- 出力は信号を流す 1 か流さない 0 の二値分類
- 閾値を超えるか否かで出力信号が決定
パーセプトロンは入力された信号の総和が計算され、この総和がある限界値を超えた場合にのみ「1」を出力する。これを"ニューロンが発火する"と表現することがある。
ここでは、その限界値を閾値と呼ぶ。
パーセプトロンの動作原理は、これだけである。以上のことを数式で表すと次の式(1)のようになる。
y = \left\{
\begin{array}{ll}
0 & (x_{1} + x_{2} \geq 0) \\
1 & (x_{1} + x_{2} \lt 0)
\end{array}
\right.\tag{1}
パーセプトロンの実装
今回は、Pythonを用いて簡単なパーセプトロンの実装を行う。
パーセプトロンには閾値があるが、これに加えて入力の個数分重みも用意する。
ANDゲート
def AND(x1, x2)
# 重みをw1とw2、閾値をthetaとする
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
AND(0, 0) # 0を出力
AND(1, 0) # 0を出力
AND(0, 1) # 0を出力
AND(0, 0) # 1を出力
まとめ
今回は、ディープラーニングの元であるパーセプトロンについて私が学習した範囲でまとめてみました。
あくまで私の記録用の意味合いが強いですが、私のような初心者の方のお役に立てたら幸いです。
さらに理解したことが増えれば随時更新していこうと思います。