【机器学习】反向传播神经网络推导
2016-08-23 02:17
731 查看
简单的反向传播神经网络可以说就是将基本单元如感知器,组成层级结构,划分出输入层、隐含层、输出层;不同层之间通过连接来形成耦合,从而组成一个有功用的网状算法结构。
感知器可以通过迭代计算来逼近想获取的结果,迭代过程中感知器不断和计算结果反馈,较为常用的迭代计算方法有梯度下降法。当感知器组成网络之后,每个感知器如果获得结果反馈就比较麻烦,这里就要用到反向传播方法。
假设我们有一个计算过程y=a∗b+c,其中a,b,c都是输入变量,y是输出。按照梯度下降法,针对a的迭代计算过程为ak+1=ak+η∂y∂a=ak−ηb。其中η是学习率,是一个经验值。以上对于b和c同理。如果我们把乘法提升到加法的上一层,每一层之间用connect连接来耦合:
connect1:q=a∗bconnect2:y=q+c
那么a,b,c的迭代计算过程都要相应变化:
ck+1=ck−η∗1grad(q)=1,qk+1=qk−η∗1ak+1=ak−ηgrad(q)∗b
注意到这里将q=a∗b单独提取出来,其实是可以用微积分的链式法则来推导的。另外,η一般是个很小的值,是不能传递的,因此每一层之间要传递与η无关的提低。实际应用中需要使用链式法则来计算神经网络的反馈。
一般而言神经网络每一层的输出是一堆数据,这里我只推导简单的反向传播神经网络。前向单次计算过程是:先计算连接,输入为上次的输出;然后用H函数激活连接计算后的结果,作为下一次的输入。第k层的感知器输入之后需要经过滤波,定义为激活函数Oq=H(Q1,Q2...),层之间的连接函数为[Q1,Q2...]=∑wqpIq。其中Iq=Op。我们要反馈修正的是权值w。这里定义神经网络层名为j->p->q。
设总的代价函数为cost(O)=12(T−O)2,则根据链式法则,修正量计算为grad(wqp)=∂cost(O)∂wqp=∂cost(O)∂Oq∂Oq∂Qq∂Qq∂wqp=∂cost(O)∂OqΔHqIq=−(T−Oq)ΔHq(Qq)Iq
其中T表示目标输出,是人工标记结果。Oq是神经网络输出层的输出。输出层没有前向连接,修正量为Δwqp=−ηgrad(wqp)。
然后是隐含层,隐含层是中间层,受到前方多重连接的影响,且不知道中间目标输出T应该是多少,因此需要从输出层向前递推,其中Nq是第q层的感知器数量:
grad(wpj)=∂cost(O)∂Op∂Op∂Qp∂Qp∂wpj=∑q=1Nq∂cost(O)∂Qq∂Qq∂OpΔHpIp=∑q=1Nq∂cost(O)∂QqwqpΔHpIp=∑q=1Nq∂cost(O)∂Oq∂Oq∂QqwqpΔHpIp=∑q=1Nqgrad(wqp)IqwqpΔHpIp
注意这里的代价函数是cost(O),只和输出有关,而不是cost(Op)等中间代价函数,后者是无法传递计算的。
设H(x)=11−ex,即sigmoid函数,有ΔH(Qq)=H(Qq)(1−H(Qq))=Oq(1−Oq),则输出端修正量为Δwqp=η(T−Oq)Oq(1−Oq)Iq隐藏层修正量为Δwpj=−η∑q=1Nqgrad(wqp)IqwqpOp(1−Op)Ip=−η∑q=1Nqgrad(wqp)wqpOp(1−Op)
感知器可以通过迭代计算来逼近想获取的结果,迭代过程中感知器不断和计算结果反馈,较为常用的迭代计算方法有梯度下降法。当感知器组成网络之后,每个感知器如果获得结果反馈就比较麻烦,这里就要用到反向传播方法。
假设我们有一个计算过程y=a∗b+c,其中a,b,c都是输入变量,y是输出。按照梯度下降法,针对a的迭代计算过程为ak+1=ak+η∂y∂a=ak−ηb。其中η是学习率,是一个经验值。以上对于b和c同理。如果我们把乘法提升到加法的上一层,每一层之间用connect连接来耦合:
connect1:q=a∗bconnect2:y=q+c
那么a,b,c的迭代计算过程都要相应变化:
ck+1=ck−η∗1grad(q)=1,qk+1=qk−η∗1ak+1=ak−ηgrad(q)∗b
注意到这里将q=a∗b单独提取出来,其实是可以用微积分的链式法则来推导的。另外,η一般是个很小的值,是不能传递的,因此每一层之间要传递与η无关的提低。实际应用中需要使用链式法则来计算神经网络的反馈。
一般而言神经网络每一层的输出是一堆数据,这里我只推导简单的反向传播神经网络。前向单次计算过程是:先计算连接,输入为上次的输出;然后用H函数激活连接计算后的结果,作为下一次的输入。第k层的感知器输入之后需要经过滤波,定义为激活函数Oq=H(Q1,Q2...),层之间的连接函数为[Q1,Q2...]=∑wqpIq。其中Iq=Op。我们要反馈修正的是权值w。这里定义神经网络层名为j->p->q。
设总的代价函数为cost(O)=12(T−O)2,则根据链式法则,修正量计算为grad(wqp)=∂cost(O)∂wqp=∂cost(O)∂Oq∂Oq∂Qq∂Qq∂wqp=∂cost(O)∂OqΔHqIq=−(T−Oq)ΔHq(Qq)Iq
其中T表示目标输出,是人工标记结果。Oq是神经网络输出层的输出。输出层没有前向连接,修正量为Δwqp=−ηgrad(wqp)。
然后是隐含层,隐含层是中间层,受到前方多重连接的影响,且不知道中间目标输出T应该是多少,因此需要从输出层向前递推,其中Nq是第q层的感知器数量:
grad(wpj)=∂cost(O)∂Op∂Op∂Qp∂Qp∂wpj=∑q=1Nq∂cost(O)∂Qq∂Qq∂OpΔHpIp=∑q=1Nq∂cost(O)∂QqwqpΔHpIp=∑q=1Nq∂cost(O)∂Oq∂Oq∂QqwqpΔHpIp=∑q=1Nqgrad(wqp)IqwqpΔHpIp
注意这里的代价函数是cost(O),只和输出有关,而不是cost(Op)等中间代价函数,后者是无法传递计算的。
设H(x)=11−ex,即sigmoid函数,有ΔH(Qq)=H(Qq)(1−H(Qq))=Oq(1−Oq),则输出端修正量为Δwqp=η(T−Oq)Oq(1−Oq)Iq隐藏层修正量为Δwpj=−η∑q=1Nqgrad(wqp)IqwqpOp(1−Op)Ip=−η∑q=1Nqgrad(wqp)wqpOp(1−Op)
相关文章推荐
- 神经网络中的反向传播的推导和python实现
- 神经网络中的矩阵求导及反向传播推导
- 机器学习笔记1:神经网络 反向传播(Backpropagation) week5
- 神经网络中的反向传播法算法推导及matlab代码实现
- 神经网络基础和反向传播推导
- 全连接神经网络的前向和反向传播推导
- 神经网络反向传播公式的推导
- 机器学习:神经网络反向传播推导
- Ng机器学习系列补充:7、神经网络反向传播BP算法(Back Propagation)
- 神经网络反向传播算法公式推导详解
- 双层神经网络与逻辑回归正反向传播数学公式简要推导
- 神经网络前向后向传播推导及实现
- 再谈神经网络反向传播原理
- 深度学习:神经网络中的前向传播和反向传播算法推导
- TensorFlow 深度学习框架 (2)-- 反向传播优化神经网络
- 神经网络-反向传播
- 神经网络前向后向传播公式推导
- 神经网络中误差反向传播(back propagation)算法的工作原理
- 神经网络的前向传播和误差反向传播(NN,RNN,LSTM)(一)
- CS231n学习记录Lec5 Backpropagation and Neural Networks反向传播与神经网络