深度前馈网络(三)

反向传播和其他微分算法

输入 x x x提供初始信息,然后传播到每一层的隐藏单元,最终产生输入 y ^ \hat{y} y^,这称之为前向传播。在训练过程中,前向传播可以持续向前,直到它产生一个标量代价函数 J ( θ ) J(\theta) J(θ)。而反向传播算法则允许来自代价函数的信息通过网络向后流动,以便计算梯度(减少数值化求解梯度的计算代价)。实际上,反向传播仅仅是指用于计算梯度的方法,而不是用于多层神经网络的整个学习算法(这种算法叫随机梯度下降,是使用梯度来进行学习)。在学习算法中,我们最常见的是代价函数关于参数的梯度,即 ∇ θ J ( θ ) \nabla _\theta J(\theta) θJ(θ)。其实,它也可以计算任意函数的梯度 ∇ x f ( x , y ) \nabla _x f(x, y) xf(x,y),其中 x x x是待求导数的变量,而 y y y是函数的另外一组输入而已。

计算图
为了精确描述反向传播算法,需要使用更为精确的计算图语言。这里,我们使用图中的每一个节点来表示一个变量(标量、向量、矩阵、张量)。我们引入操作概念,是指一个或者多个变量的简单函数,可以通过将多个操作复合在一起来描述更为复杂的函数,操作的返回或者输出可以是标量,甚至向量。计算图中的边是有向的。

微积分中的链式法则
用于计算复合函数的导数。标量的链式法则很直观,我们可以将其扩展到多维空间。假设 x ∈ R m x \in \mathbb{R}^m xRm y ∈ R n y \in \mathbb{R}^n yRn z ∈ R z \in \mathbb{R} zR y = g ( x ) y = \mathcal{g}(x) y=g(x) z = f ( y ) z = f(y) z=f(y),那么:
∂ z ∂ x i = ∑ j ∂ z ∂ y j ∂ y j ∂ x i \frac{\partial z}{\partial x_i} = \sum_{j}^{} \frac{\partial z}{\partial y_j} \frac{\partial y_j}{\partial x_i} xiz=jyjzxiyj使用向量记法,等价表示为:
∇ x z = ( ∂ y ∂ x ) T ∇ y z \nabla _x z = (\frac{\partial y}{\partial x} )^T \nabla _y z xz=(xy)Tyz上式是向量对向量求偏导得到的矩阵(Jacobian矩阵)的转置,和标量对向量求偏导得到的向量的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值