上世纪50年代,早期神经网络研究者们从人类大脑的神经元那里得到了灵感,从而构建了名为感知器的算法。
想要了解什么是感知器,我们先来看一下什么是神经元。
每一个神经元都由三部分组成:
树突(Dendrites):神经信息的接收器,用于感知其他神经元所传来的刺激。
神经元胞体(Soma):包含着细胞核的神经元“核心”, 它决定一个神经信号是否会被传送到其他的神经元。
轴突(Axon):神经元向外伸长的突起,用于将神经信号传递给临近的神经元。
同样的,感知器也由三部分组成:
输入单元:接受输入信号(数字)并传递给感知器。
感知器:汇总所有输入信号并进行数学运算。
输出单元:感知器的输出就是数学运算的结果。
在感知器里,神经元与神经元的连接被简化成了一条线,其中被传递的神经信号也用数字来表示。
在动画中,位于上方的输入单元和感知器之间被一条很粗的线链接。这意味着感知器所接收到的信号值会被相应地放大(动画中的信号被放大了两倍)。
与之相比,位于下方的输入单元和感知器之间的连接线就细了许多。这会导致信号值被缩小为原来的三分之二。在接收到全部缩放后的信号后,感知器便会把这些信号加起来:来自上方的信号值2加上来自下方的信号值2, 得到汇总的信号值4。
在深度学习中,连接线的粗细程度被称为权重(weight)。
接下来,感知器会通过“抖一抖”的方式来继续处理这些信号。在动画中,信号值增加了1。
感知器的“抖动程度”被称为偏置(bias) - 它可以增加或者减少一个信号的值。
最后,我们用一个 激活函数(activation function)来控制一个感知器应该输出多强的信号。我们很快将解释什么是激活函数。
在这里,我们采用Sigmoid函数。它是激活函数的一种,可以把信号值映射到一个0到1的区间。在我们的示例中,信号值5被映射成了0.99,成为了最终的输出值。
早期的研究者试图用感知器来检测一张图片里有人脸的概率,但是他们很快就遇到了一个问题:最后输出的概率经常会高于100%或者低于0%。
为了解决这些问题,研究者们把一个激活函数放在了感知器的输出单元里,从而控制感知器的输出数值区间。Sigmoid函数和ReLU都是用来限制输出范围的一些常用的激活函数。
Sigmoid函数可以计算概率。例如,如果你想知道这是不是一张猫的图片,你就需要用到Sigmoid函数来把输出值变成一个概率(一个0到1之间的数字)。
ReLU(线性整流函数)则被用来确保输出值是非负的。有别于Sigmoid函数的是,ReLU主要被用来增加模型复杂度从而使多层神经网络学习更复杂的概念。我们会在第五章里更深度的讨论这一点。
在这一章里,我们了解了感知器的工作原理和大脑里的神经元是如何启发感知器算法的构建的。在下一章里,我们会学习如何用数据来训练感知器和其他更复杂的神经网络。
What the Hell is Perceptron?
Perceptrons and Neural Networks
感知器:一种源于神经元的算法,复杂神经网络的基本元素。
权重:附于连接线上的数值,可以放大,减小,或倒置信号。
偏置:一个被加到所有输入信号的加权和的数值。
激活函数:一个用来控制感知器单元最后输出值的函数。