前些开始准备找实习找工作了複习机器学习算法的时候发现BP算法又忘了,这次写博客记录一下由于我矩阵知识不是很好,所以这篇文章没有以矩阵运算的方式来讲解本文表面是原创,实际上参考了很多很多文章
L : 当前神经网络的总层数
l层神经元拥有的神经元个数
l+1层神经网络中的第j个神经元的的偏置项(想不出来叫啥了)
E : 神经网络的总损失
j个属性值(特征值whatever)
j个输出的预测值,也就是
请结合图看重点关注第j个神经元之间的权重更新
l+1层神经元之间的关系:
神经元的输入与输出的关系:
w,f′,αjl+1?都已知,如果知道了第?αjl+2??E?就能求得第
?αjL??E?=?βjL??E??αjL?βjL??
然后由(7)我们就鈳以得到上一层的?αjL?1??E?,由(8)就可以的得到这一层的梯度
?bjl??E?就非常简单了因为他就等于
E=∣∣y?f(α)∣∣2,那么
k为类别个数假设该样本真实类别为
resnet可以把梯度传回到更远的位置
为什么叫反向呢?李宏毅老师给出的解释非常好在这里简单说一下,如果我们把?αkl+2??E?看做输入的话那(8)这个式子就像这个神经网络在反着从后往前走一样,具体请见
格式:PDF ? 页数:7页 ? 上传日期: 21:36:45 ? 浏览次数:22 ? ? 1000积分 ? ? 用稻壳阅读器打开
全文阅读已结束如果下载本文需要使用
下图是一个三层的神经网络分別为输入层,隐含层输出层。反向传播算法基于此图推导
x1?,x2?,x3?...xn?分别是输入单个样本向量的各个维的值
y1?,y2?,....ynH?分别是隐含层各个单元嘚输出值
z1?,z2?,...zc?分别是输出向量各个维的值如果是分类问题,值最大的那维就对应相应的预测类别
t1?,t2?,...tc?是相应输出向量各个维的真實值,也就是目标值
wkj?代表第j个隐含单元到第k个输出单元的权值
wji?代表第i个输入单元到第j个隐含单元的权值
netk?=j=1∑nH??yj?wkj?+wk0?代表所有隐含层单元对一个输出单元的净激活(没有加激活函数)
很容易理解,这就是一个均方差加了21?是为了后面的计算。
沿梯度的反方向调整参数尽量减少训练误差。第二个公式是误差对单个权值的偏导