感知机
感知机(perceptron)是由美国学者Frank Rosenblatt在1957年提出来的
感知机接收多个输入信号,输出一个信号
感知机的信号只有“流/不流”( 1/0)两种取值
感知机是什么
- $x_1、x_2$ 输入信号
- $y$ 输出信号
- $w_1、w_2$ 权重
- 图中的圆圈○ 神经元|节点
- 输入信号被送往神经元时,会被分别乘以固定的权重($w_1x_1、w_2x_2$)
- 神经元被激活 神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1
- 阈值$θ$ 这个界限值
简单逻辑电路
与门
满足与门(同时为1,信号的加权总和才会超过阈值$θ$)的参数例子:
- $(w_1,w_2, θ) = (0.5, 0.5, 0.7)$
- $(w_1,w_2, θ) = (0.5, 0.5, 0.8)$
- $(w_1,w_2, θ) = (1.0, 1.0, 1.0)$
与非门
满足与非门(不同时为零,信号的加权总和就会超过阈值$θ$)的参数例子:$(w_1,w_2, θ) = (-0.5, -0.5, -0.7)$
只要把实现与门的参数值的符号取反,就可以实现与非门
或门
满足或门(只要有一个 1 ,信号的加权总和就会超过阈值$θ$)的参数例子:$(w_1,w_2, θ) = (0.5, 0.5, 0.3)$
感知机的实现
简单实现与门
1 | def AND(x1, x2): |
导入权重和偏置
- 偏置的输入信号一直是1,为了区别会涂成灰色
- $θ$换成$−b$
- 权重 $w_1、w_2$
- 偏置 $b$
1 | def AND(x1, x2): |
1 | def NAND(x1, x2): |
1 | def OR(x1, x2): |
感知机的局限性
异或门
事实上,用一条直线是无法将○和△分开的
单层感知机的局限性就在于它只能表示由一条直线分割的空间
线性和非线性
- 线性空间 由直线分割而成的空间
- 非线性空间 由曲线分割而成的空间
多层感知机
已有门电路的组合
异或门的实现
1 | def XOR(x1, x2): |
拥有权重的层实质只有2层,称为 2层感知机 ;其他文献有的也称 3层感知机