神经网络算法
神经网络算法试图模拟生物神经系统的学习过程,以此实现强大的预测性能。不过由于是模仿人类大脑,所以神经网络的模型复杂度很高也是众所周知。在现实应用中,神经网络可以说是解释性最差的模型之一,商业环境中很少使用神经网络。然而除了商业分析,还有许多算法应用的部分,其中最重要的是深度学习和人工智能的领域,现在大部分已经成熟的人工智能技术:图像识别,语音识别等等,背后都是基于神经网络的深度学习算法。因此,作为机器学习中(可能是)最复杂的,深度学习中基础的算法,神经网络的了解和学习是很有必要的。
从感知机到神经网络
神经网络与多层感知机还是有一点区别的。用图来表示神经网络的话,如下图所示。我们把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层(有的教材也称为隐藏层)。所谓"隐藏"的意思,在这里面的神经元我们是看不见的。我们把下图的三层依次称为第0层,第1层,第2层,分别对应输入层,中间层,输出层。
单就神经网络的这种连接方式,和之前的感知机是没有任何差别的。感知机的公式:
在之前的图片中,偏置 并没有在图像中显示出来,我们可以把图片改成下图来表示权重 ,它对应的输入信号固定为1。
这个感知机将x1 、x2、1 三个信号作为神经元的输入,将其和各自的权重相乘后,传送至下一个神经元。在下一个神经元中,计算这些加权信号的总和。如果这个总和超过0,则输出1,否则输出0。而偏置部分的信号始终是1,是不变的。现在,我们为了能够进一步简化公式,为之后使用线性代数计算更方便,我们把公式再一次进行改造:
y=h(b+ω1x1 +ω2x2)y=h(b+ω_1x_1~+ω_2x_2)y=h(b+ω1x1 +ω2x2)
而h(x)就应该是这样的:
h(x)={
0x⩽01x⩾0h(x)=\left\{ \begin{array}{ll} 0 & x \leqslant 0\\1 & x \geqslant 0 \end{array} \right.h(x)={
01