## ２章
### パーセプトロン

\begin{eqnarray}
y
 =
  \begin{cases}
    0 & ( b + w_1x_1 + w_2x_2 \leqq \theta ) \\
    1 & ( b + w_1x_1 + w_2x_2 \gt \theta )
  \end{cases}
\end{eqnarray}
- 最終的に0か1を返す。
- $ x_1 $、$ x_2 $　は入力信号、$ w_1 $、$ w_2 $ は重み。
- 「重み」は電流でいう抵抗のようなもの。

| $ x_1 $ | $ x_2 $ | AND | NAND | OR | XOR |
|----|----|----|----|----|----|
| 0 | 0 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 1 | 1 | 0 | 1 | 0 |




```python
# パーセプトロンの実装
import numpy as np

def AND (x1 ,x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else :
        return 1

def NAND (x1 ,x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else :
        return 1

def OR (x1 ,x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else :
        return 1

data = np.array([[0,0], [0,1], [1,0], [1,1]])

for p in data:
    y = AND(p[0], p[1])
    print(str(p) + " -> " + str(y))
for p in data:
    y = NAND(p[0], p[1])
    print(str(p) + " -> " + str(y))
for p in data:
    y = OR(p[0], p[1])
    print(str(p) + " -> " + str(y))
```

    [0 0] -> 0
    [0 1] -> 0
    [1 0] -> 0
    [1 1] -> 1
    [0 0] -> 1
    [0 1] -> 1
    [1 0] -> 1
    [1 1] -> 0
    [0 0] -> 0
    [0 1] -> 1
    [1 0] -> 1
    [1 1] -> 1


### パーセプトロンの限界
単純パーセプトロンは AND NAND OR を表現できるが、XORは表現できない
非線形は表現できない

### 多層パーセプトロン
パーセプトロンは層を重ねることができる
XOR ゲートは単純なパーセプトロンの層を重ねることで表現できる


```python
def XOR (x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

for p in data:
    y = XOR(p[0], p[1])
    print(str(p) + " -> " + str(y))
```

    [0 0] -> 0
    [0 1] -> 1
    [1 0] -> 1
    [1 1] -> 0


### 数式の書き方
参考: https://easy-copy-mathjax.nakaken88.com/
\begin{align}
    y = ax
\end{align}

\begin{align}
\lim_{n \to \infty} n (\sqrt{n^2+1} -n) \\
\end{align}


2591b61b60901c765f1acb733ee61d54d45f6bdd
ipynb
Jupyter Notebook
ch02/ch02.ipynb
machupi2/deep-learning-from-scratch
98c0ed1b3d0f216dd1e0a08b5a970de901c117e8
MIT
ch02/ch02.ipynb
machupi2/deep-learning-from-scratch
98c0ed1b3d0f216dd1e0a08b5a970de901c117e8
MIT
ch02/ch02.ipynb
machupi2/deep-learning-from-scratch
98c0ed1b3d0f216dd1e0a08b5a970de901c117e8
MIT
Qwen/Qwen-72B
1. YES
2. YES