1、梯度下降法中的关键点
第一篇博客讲的非常详细我就不再阐述了,主要写下自己在学习中遇到的问题
- 如果为多个输出如上图,误差函数E对W1ij的偏导是对所有输出单元嘚导数的和
问题一:无限迭代时中间层的误差是否参与
我们首先直观的介绍反向传播算法,最后再来介绍这个算法的推导当然读者也可以完全跳过推导部分,因为即使不知道如何推导也不影响你写出来一个神经网络的训练代码。事实上现在神经网络成熟的开源实现多如牛毛,除了练手之外你可能都没有机会需要去写一个神经网络。
我们以监督学习为例来解释反向传播算法在一文中峩们介绍了什么是监督学习,如果忘记了可以再看一下另外,我们设神经元的激活函数为函数(不同激活函数的计算公式不同详情见一節)。
我们假设每个训练样本为其中向量是训练样本的特征,而是样本的目标值
首先,我们根据上一节介绍的算法用样本的特征,计算出神经网络中每个隐藏层节点的输出以及输出层每个节点的输出。
然后我们按照下面的方法计算出每个节点的误差项:
其中,是节點的误差项(梯度中的一项,乘上输入值a4就为梯度)是节点的输出值,是样本对应于节点的目标值举个例子,根据上图对于输出层节点8来說,它的输出值是而样本的目标值是,带入上面的公式得到节点8的误差项应该是:
其中是隐藏层节点的输出值,是输出节点i到它的隐藏层节点k的连接的权重是节点i的下一层节点k的误差项。例如对于隐藏层节点4来说,计算方法如下:
最后更新每个连接上的权值:
(偅点)若上面为减号,此处则应为减号
其中是节点 i 到节点 j 的权重,是一个成为学习速率的常数是节点 j 的误差项,是节点 i 传递给节点 j 的輸入例如,权重的更新方法如下:
类似的权重 的更新方法如下:
偏置项的输入值永远为1。例如节点4的偏置项应该按照下面的方法计算:
反向传播算法的名字的含义:
显然,计算一个节点的误差项需要先计算每个与其相连的下一层节点的误差项。这就要求误差项的计算顺序必须是从输出层开始然后反向依次计算每个隐藏层的误差项,直到与输入层相连的那个隐藏层
当所有节点的误差项计算完毕后,我们就可以根据式5来更新所有的权重