感知机perceptron算法。感知机是由美国学者Frank Rosenblatt在1957年提出来的。为何我们现在还要学习这一很久以前就有的算法呢?因为感知机也是作为神经网络(深度学习)的起源的算法。因此,学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想
感知机
感知机接收多个输入信号,输出一个信号。感知机的信号只有“流/不流”(1/0)两种取值。0对应“不传递信号”,1对应“传递信号”。
x1、x2是输入信号,y是输出信号,w1、w2是权重,输入信号被送往神经元时,会被分别乘以固定的权重,神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号θ表示
我们用上面的两个输入的感知机来实现与门、与非门、或门,下面分别是真值表
需要做的就是确定能满足每个真值表的w1、w2、θ的不同的值
- 与门:(w1, w2, θ) = (0.5, 0.5, 0.7)
- 与非门:(w1, w2, θ) = (−0.5, −0.5, −0.7),实际上,只要把实现与门的参数值的符号取反,就可以实现与非门。
- 或门:(w1, w2, θ) = (-0.5,1, 1)
这里w1, w2, θ感知机参数是人工设置的,但机器学习的课题就是将这个决定参数值的工作交由计算机自动进行,学习来确定合适的参数
改进
但是考虑到以后的事情,我们将其修改为另外一种实现形式,首先把式子的θ换成−b,于是就可以用式子来表示感知机的行为
w1和w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1的程度)的参数
多层感知机
其实上面实现与门、与非门、或门,都是通过一个几何问题,用线性函数分割,比如,○表示0,△表示1。或门是这样的
那异或门呢
想要用一条直线将图2-7中的○和△分开,无论如何都做不到。事实上,用一条直线是无法将○和△分开的。我们要用曲线
感知机不能表示异或门让人深感遗憾,但也无需悲观。实际上,感知机的绝妙之处在于它可以“叠加层”(通过叠加层来表示异或门是本节的要点)
异或门的制作方法有很多,其中之一就是组合我们前面做好的与门、与非门、或门进行配置。
实际上,与门、或门是单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机(multi-layered perceptron)
感知机通过叠加层能够进行非线性的表示,理论上还可以表示计算机进行的处理