神经网络、前向传播、BP神经网络(反向传播算法)

神经网络

人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于回归任务、分类任务。

感知机(Perceptron)是由单神经元(有的说是两层,两层的说法是将输入层当作了一层神经网络层)组成的一个简单模型,即只有输入层和输出层。输入层只是接受外界信号(样本属性,输入层的神经元个数等于样本的属性数目)并传递给输出层。感知机与之前线性模型中的回归思想基本是一样的,都是通过对属性加权(w)与另一个常数(b)求和,再使用sigmoid函数将这个输出值压缩到0-1之间,从而实现分类(回归,回归和分类在处理上稍有不同)。

深度前馈网络(又称“**多层感知器MLP**”)就是除了输入层和输出层外,还有隐藏层,有多个隐藏层时也称“深度”神经网络。卷积神经网络(CNN)和循环神经网络(RNN)只是前馈网络的一些特殊情况。 好了,暂且把所有的网络都叫做神经网络,其前向传播很好理解,两层神经网络可见下图:
激活函数

一般情况下,在神经网络每一层输出后,会经过一个激活函数,然后再把结果当作下一层的输入。如果我们不运用激活函数的话,则输出信号将仅仅是一个简单的线性函数。线性函数是一个一级多项式。现如今,线性方程是很容易解决的,但是它们的复杂性有限,并且从数据中学习复杂函数映射的能力更小。一个没有激活函数的神经网络将只不过是一个线性回归模型(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函数

取值范围为[-1,1],图像如下:

求导数结果为

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=σ(wlal1+bl)
为了方便表示,记 z l = ( w l a l − 1 + b l ) z^{l}=\left(w^{l} a^{l-1}+b^{l}\right) zl=(wlal1+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(ypy)2
这个值称之为损失(loss),这个函数称为损失函数(代价函数,cost function),损失函数有多种,这里不加讨论。我们的目标就是使对所有训练数据的损失和尽可能的小。BP算法需要借助梯度下降实现。
BP算法是一个迭代算法,它的基本思想为:

  1. 先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);
  2. 计算每一层的误差,误差的计算过程是从最后一层向前推进的(这就是反向传播算法名字的由来),向前推进的过程需要使用链式法则;
  3. 更新参数(目标是误差变小)。迭代前面两个步骤,直到满足停止准则(比如满足迭代次数、满足误差不在减小等)。
    误差反向传播(方向传播,BP)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
输出层的权重参数更新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

隐藏层的权重参数更新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输出层和隐藏层的偏置参数更新

在这里插入图片描述
在这里插入图片描述

BP算法四个核心公式

在这里插入图片描述

BP算法计算某个训练数据的代价函数对参数的偏导数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BP算法总结:用“批量梯度下降”算法更新参数

在这里插入图片描述
在这里插入图片描述

梯度消失问题及其解决办法

在这里插入图片描述
参考:
神经网络BP反向传播算法原理和详细推导流程
BP神经网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值