反向传播算法

《Neural Networks and Deep Learning》学习笔记——《Neural Networks and Deep Learning》是Michael Nielsen 所著的一本神经网络与深度学习的在线学习教材,通过Python(+Theano)实现神经网络识别MNIST手写数据集,生动易懂的讲解了神经网络与深度学习的基本原理,是一本非常不错的入门教材。本文是对其学习的总结。

目录

  1. 初识神经网络
    1.1 感知器
    1.2 Sigmoid函数
    1.3 代价函数
    1.4 梯度下降算法
  2. 反向传播算法
  3. 神经网络改进算法
  4. 深度学习
    4.1 万有逼近定理(Universal Approximation Theory)
    4.2 训练深度神经网络时的问题
    4.3 卷积神经网络(CNN)

我们现在知道可以通过梯度下降算法来学习权值 ω ω 和偏置b的最优值来获得目标输出,但如何快速计算梯度呢,这里就要应用到反向传播算法(Backpropagation algorithm)。
反向传播算法是目前计算梯度最常用的快速算法。
首先定义(第 l l 层)加权输入zl=wlal1+bl,则输出为 al=σ(zl) a l = σ ( z l ) 。其矩阵形式为,
zlj=kwljkal1k+blj z j l = ∑ k w j k l a k l − 1 + b j l ,其中 ωljk ω j k l 表示第 l l 层的j个神经元和第l1层的第k个神经元之间的权值
下面我们再定义第 l l 层第j个神经元的误差δjl=Czjl,引入误差 δl δ l 是因为反向传播算法是通过计算每一层的误差得到梯度值( C/ωljkC/blj ∂ C / ∂ ω j k l 和 ∂ C / ∂ b j l )的。
反向传播算法基于四个公式,


其中 表示哈马德乘积,即矩阵对应元素相乘。根据 δl δ l 的定义及链式求导法则可以证明这四个公式(证明略)。
基于上述定义,现在可以引入反向传播算法:

1输入 a1 a 1 (X)
2前向反馈 zl=wlal1+bl,al=σ(zl) z l = w l a l − 1 + b l , a l = σ ( z l )
3误差 δL=aCσ(zL) δ L = ∇ a C ⊙ σ ′ ( z L )
4反向传播 δl=((wl+1)Tδl+1)σ(zl) δ l = ( ( w l + 1 ) T δ l + 1 ) ⊙ σ ′ ( z l )
5输出 Cwljk=al1kδlj,Cblj=δlj ∂ C ∂ w j k l = a k l − 1 δ j l , ∂ C ∂ b j l = δ j l

注:反向传播算法实际上对单个输入样本计算梯度,因此这里面的代价函数C= Cx C x

那么反向传播算法的实质是什么呢?
假设将 l l 层的某个权值ωjkl增加 Δωljk Δ ω j k l ,则这个权值增量会影响 l+1 l + 1 层的输出 al+1j a j l + 1 ,继而又会影响 l+2 l + 2 层的所有输出 al+2 a l + 2 ,然后又影响之后各层的输出……从而影响代价函数C。(因此神经网络需要经过多轮训练,从而找到所有相互依赖的参数的最优值)

用数学描述上述过程,即

ΔCmnpqCaLmaLmaL1naL1naL2pal+1qaljaljwljkΔwljk,(1) (1) Δ C ≈ ∑ m n p … q ∂ C ∂ a m L ∂ a m L ∂ a n L − 1 ∂ a n L − 1 ∂ a p L − 2 … ∂ a q l + 1 ∂ a j l ∂ a j l ∂ w j k l Δ w j k l ,


Cwljk=mnpqCaLmaLmaL1naL1naL2pal+1qaljaljwljk.(2) (2) ∂ C ∂ w j k l = ∑ m n p … q ∂ C ∂ a m L ∂ a m L ∂ a n L − 1 ∂ a n L − 1 ∂ a p L − 2 … ∂ a q l + 1 ∂ a j l ∂ a j l ∂ w j k l .

综上,反向传播算法是一种巧妙的追踪参数( ω ω ,b)影响的算法,这种影响的描述即是梯度。


最后用流程对神经网络整体框架做一简单总结:

CC(GD)δ(BP)w,b(Cw,Cb)a C ↓→ ∇ C ( G D ) → δ ( B P ) → w , b ( ∂ C ∂ w , ∂ C ∂ b ) → a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值