目录
最近一直迷惑于梯度的反向传导算法,其实关于深度学习的梯度反向传导算法都可以通过BP神经网络算法反向传导算法进行类推。
1.BP神经网络算法
假设有训练样本集,神经网络能够提供一种复杂且非线性的假设模型,参数为w,b,可以以此参数来拟合数据y。
1.1前向传导
其中第l层一共有个节点。
如图1所示,神经网络为第l层i节点的激活值,为第l层的输入值。从第l层的j节点到第l+1层的i节点通过权重连接。神经网络最左边的一层为输入层,最右边的一层为输出层,中间的为隐藏层。
前向传导:
若该神经网络共有层,则输出值。其中激活函数可以有以下两种方式选择:
- 激活函数f(z)可以选取为sigmoid函数。
2.激活函数f(z)也可以选取为tanh函数。
1.2目标函数构建
单个样本(x,y),其代价函数为:
现有m个样本数据,其整体代价函数为
其中的第一项为均方差项,第二项为正则项(也叫权重衰减项),其目的是防止权重过大出现过拟合的现象。神经网络算法最终转化为求解:
针对神经网络的目标函数的求解,可使用梯度下降法求解:
其中 为学习速率。
2.反向传播算法
2.1由反向传播计算w和b的梯度
根据前向传导算法,可以计算出神经网络中所有节点的激活值,并且包括输出值,根据实际值,可以得到它的误差。由神经网络构造可以得出:输入值和激活函数都是固定不变的,能够改变的层与层之间连接的权重矩阵,当变化为了一个,导致也出现一个变化,然后产生,然后传到各个输出层,最后在所有的输出层产生一个误差。权重的调整会影响最终误差。
在梯度下降法中,要求输出误差关于权重的导数,可以转化为误差关于节点输入值的导数。
反向传播过程:输出层每个节点都会得到一个误差e,把e作为输出层反向输入,这时候就像是输出层当输入层一样把误差往回传播,先得到输出层,然后将输出层根据连接权重往隐层传输,分别到隐藏层的。
2.2反向传播算法流程
总结
可以将BP神经网络工作总结如下:反向传播得到以后,再重新权重矩阵w。