【机器学习】反向传播神经网络推导

简单的反向传播神经网络可以说就是将基本单元如感知器,组成层级结构,划分出输入层、隐含层、输出层;不同层之间通过连接来形成耦合,从而组成一个有功用的网状算法结构。
感知器可以通过迭代计算来逼近想获取的结果,迭代过程中感知器不断和计算结果反馈,较为常用的迭代计算方法有梯度下降法。当感知器组成网络之后,每个感知器如果获得结果反馈就比较麻烦,这里就要用到反向传播方法。
假设我们有一个计算过程 y=ab+c ,其中 a,b,c 都是输入变量,y是输出。按照梯度下降法,针对 a 的迭代计算过程为ak+1=ak+ηya=akηb。其中 η 是学习率,是一个经验值。以上对于b和c同理。如果我们把乘法提升到加法的上一层,每一层之间用connect连接来耦合:

connect1:q=abconnect2:y=q+c

那么 a,b,c 的迭代计算过程都要相应变化:
ck+1=ckη1grad(q)=1,qk+1=qkη1ak+1=akηgrad(q)b

注意到这里将 q=ab 单独提取出来,其实是可以用微积分的链式法则来推导的。另外, η 一般是个很小的值,是不能传递的,因此每一层之间要传递与 η 无关的提低。实际应用中需要使用链式法则来计算神经网络的反馈。
一般而言神经网络每一层的输出是一堆数据,这里我只推导简单的反向传播神经网络。前向单次计算过程是:先计算连接,输入为上次的输出;然后用H函数激活连接计算后的结果,作为下一次的输入。第k层的感知器输入之后需要经过滤波,定义为激活函数 Oq=H(Q1,Q2...) ,层之间的连接函数为 [Q1,Q2...]=wqpIq 。其中 Iq=Op 。我们要反馈修正的是权值w。这里定义神经网络层名为j->p->q。
设总的代价函数为
cost(O)=12(TO)2
,则根据链式法则,修正量计算为
grad(wqp)=cost(O)wqp=cost(O)OqOqQqQqwqp=cost(O)OqΔHqIq=(TOq)ΔHq(Qq)Iq

其中T表示目标输出,是人工标记结果。 Oq 是神经网络输出层的输出。输出层没有前向连接,修正量为 Δwqp=ηgrad(wqp)
然后是隐含层,隐含层是中间层,受到前方多重连接的影响,且不知道中间目标输出T应该是多少,因此需要从输出层向前递推,其中 Nq 是第q层的感知器数量:
grad(wpj)=cost(O)OpOpQpQpwpj=q=1Nqcost(O)QqQqOpΔHpIp=q=1Nqcost(O)QqwqpΔHpIp=q=1Nqcost(O)OqOqQqwqpΔHpIp=q=1Nqgrad(wqp)IqwqpΔHpIp

注意这里的代价函数是cost(O),只和输出有关,而不是 cost(Op) 等中间代价函数,后者是无法传递计算的。
H(x)=11ex ,即 sigmoid 函数,有 ΔH(Qq)=H(Qq)(1H(Qq))=Oq(1Oq) ,则输出端修正量为
Δwqp=η(TOq)Oq(1Oq)Iq
隐藏层修正量为
Δwpj=ηq=1Nqgrad(wqp)IqwqpOp(1Op)Ip=ηq=1Nqgrad(wqp)wqpOp(1Op)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值