赞
踩
人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于回归任务、分类任务。
感知机(Perceptron)是由单神经元(有的说是两层,两层的说法是将输入层当作了一层神经网络层)组成的一个简单模型,即只有输入层和输出层。输入层只是接受外界信号(样本属性,输入层的神经元个数等于样本的属性数目)并传递给输出层。感知机与之前线性模型中的回归思想基本是一样的,都是通过对属性加权(w)与另一个常数(b)求和,再使用sigmoid函数将这个输出值压缩到0-1之间,从而实现分类(回归,回归和分类在处理上稍有不同)。
一般情况下,在神经网络每一层输出后,会经过一个激活函数,然后再把结果当作下一层的输入。如果我们不运用激活函数的话,则输出信号将仅仅是一个简单的线性函数。线性函数是一个一级多项式。现如今,线性方程是很容易解决的,但是它们的复杂性有限,并且从数据中学习复杂函数映射的能力更小。一个没有激活函数的神经网络将只不过是一个线性回归模型(Linear regression Model),它功率有限,并且大多数情况下执行得并不好。我们希望我们的神经网络不仅仅可以学习和计算线性函数,而且还要比这复杂得多。同样是因为没有激活函数,我们的神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。这就是为什么我们要使用人工神经网络技术,诸如深度学习(Deep learning),来理解一些复杂的事情,一些相互之间具有很多隐藏层的非线性问题,而这也可以帮助我们了解复杂的数据。常用的激活函数有:Sigmoid(Logistic函数)、ReLU(Rectified linear units,线性修正单元)、Tanh(Hyperbolic tangent,双曲正切函数)
Sigmoid函数
取值范围为[-5,5],
x
=
0
x=0
x=0时,值为0.5
其求导结果为:
tanh函数
求导数结果为
ReLU函数
神经网络将许多“神经元”联结在一起,一个神经元的输出可以是另一个“神经元”的输入,神经元之间的传递需要乘法上两个神经元对应的权重,下图就是一个简单的神经网络(两层神经网络,输入层一般不计入神经网络的层数):
使用圆圈来表示神经元的输入,“+1”被称为偏置节点(b),从左到右依次为输入层、隐藏层和输出层,从图中可以看出,有3个输入节点、3个隐藏节点和一个输出单元。
a
l
=
σ
(
w
l
a
l
−
1
+
b
l
)
a^{l}=\sigma\left(w^{l} a^{l-1}+b^{l}\right)
al=σ(wlal−1+bl)
为了方便表示,记
z
l
=
(
w
l
a
l
−
1
+
b
l
)
z^{l}=\left(w^{l} a^{l-1}+b^{l}\right)
zl=(wlal−1+bl)为
l
l
l层的输出,式中
a
l
a^{l}
al则变为
a
l
=
σ
(
z
l
)
a^{l}=\sigma\left(z^{l}\right)
al=σ(zl)。
其中,
a
(
l
)
a^{(l)}
a(l)(
l
l
l层神经元的状态),即
l
+
1
l+1
l+1层输入值,注意不是上一层的输出,一般上一层的输出
z
(
l
)
z^{(l)}
z(l)还会加入一个激活函数,再当作下一层的输入。
误差反向传播算法简称反向传播算法(即BP算法)。使用反向传播算法的多层感知器又称为BP神经网络。BP算法的目的是修正权重和偏置,让权重和偏置的值调整到最佳,以使得整个网络的预测效果最好。因此这个过程也是我们通常说的神经网络的训练过程。
首先给所有参数赋上随机值(通常是给一个裁剪过的正态分布),使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为
y
p
y_p
yp,真实目标为
y
y
y。那么,定义一个值loss,计算公式如下:
l
o
s
s
=
1
/
N
∑
(
y
p
−
y
)
2
loss =1/N \sum (y_p - y)^2
loss=1/N∑(yp−y)2
这个值称之为损失(loss),这个函数称为损失函数(代价函数,cost function),损失函数有多种,这里不加讨论。我们的目标就是使对所有训练数据的损失和尽可能的小。BP算法需要借助梯度下降实现。
BP算法是一个迭代算法,它的基本思想为:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。