深度学习入门(3)–感知机
定义
感知机接收多个信号,输出一个信号。
下图为一个最基本的两输入感知机例子:
1 | graph TD; |
x1、x2是输入信号,y是输出信号,w1、w2是权重,⚪称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号总和,只有当总和超过某个界限值(阈值,用$\theta$表示)时,才会输出1。也被成为“神经元激活”。
可以用下列式表示:
$$y = \begin{cases}
0 & \text{if } (w_1x_1 + w_2x_2 \leq \theta) \
1 & \text{if }( w_1x_1 + w_2x_2 > \theta )
\end{cases}$$
使用感知机实现与门、或门、非门
简单实现
直接实现代码:(w与$\theta$的计算过程省略,可自己演算一遍)
1 | def AND(x1, x2): |
输出:
1 | 0 |
使用numpy实现
将开头的式子变形如下:
$$y = \begin{cases}
0 & \text{if } (b + w_1x_1 + w_2x_2 \leq 0) \
1 & \text{if }( b + w_1x_1 + w_2x_2 > 0 )
\end{cases}$$
其中b = -$\theta$
此处,b称为偏置
现在使用numpy按上述式子的方式来实现与门:
1 | import numpy as np |
输出:
1 | 0 |
非门的实现:
1 | def NAND(x1, x2): |
或门的实现:
1 | def OR(x1, x2): |
与门、或门、非门是具有相同构造的感知机,区别只在于权重参数的值
异或门的实现
单层感知机无法实现异或电路。单层感知机只能区分线性空间,而不能实现异或门这种的非线性空间。
但是,感知机可以通过“叠加层”变为多层感知机
异或门的逻辑电路图:
1 | graph TD |
于是,可以用之前定义的三个逻辑门函数,通过叠加实现异或门:
1 | def XOR(x1, x2): |
异或门就是2层感知机。叠加了多层的感知机也称为多层感知机
- 本文作者: Phquathi
- 本文链接: http://phquathi.github.io/pHq-blog/2024/06/18/深度学习入门(3)/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!