斯坦福深度学习课程笔记(三)

介绍神经网络

官网
slides

1 反向传播

上节课介绍了两种方法去计算梯度,一种是数值法计算梯度,也就是根据导数的定义计算;另一种是分析法计算梯度,根据微积分,使用公式计算。

这节课介绍一种计算梯度的新方法,使用计算图的方式计算梯度。

下图是svm多分类损失函数的一个计算图模型,计算图模型把公式中每个元素和符号都作为节点,连接起来。这个图模型有点类似于我们学编译原理的语法树,或者有限状态机,因为都是图模型嘛,差不了多少…

在这里插入图片描述

在图模型中,我们使用反向传播的方法计算梯度。下面是一个小例子:
已知 f ( x , y , z ) = ( x + y ) z f(x,y,z) = (x+y)z ,求 f x \frac{\partial f}{\partial x} f y \frac{\partial f}{\partial y} , f z \frac{\partial f}{\partial z} 的值。

如下图,为更好地说明,我们给 x , y , z x,y,z 赋上实值,然后沿着计算图正向传播先计算出中间值 q = x + y q=x+y 的值,再计算出最终值 f = q z f = qz 的值。
之后,我们从最终值 f f 开始,反向计算梯度。 f f \frac{\partial f}{\partial f} 的值为1,所以乘法符号的上游梯度为1。

在这里插入图片描述

然后由于 f = q z f = qz f q = z \frac{\partial f}{\partial q} = z f z = q \frac{\partial f}{\partial z} = q ,可以容易的计算出乘法节点下面 z z 分支的梯度为 q q 的值,即 3 3 。乘法节点上面 q q 分支的梯度为 z z 的值,即 4 -4

在这里插入图片描述

继续反向传播到 x x y y 节点时,依据链式法则,节点最终的梯度值等于上游梯度值 upstream gradient本地梯度值 local gradient相乘。
在这里插入图片描述

考虑另外一个更复杂的例子。首先正向传播算出所有中间值和最终值后,反向传播计算梯度。注意到 1 x \frac{1}{x} 的导数是 1 x 2 - \frac{1}{x^2} ,应用链式法则,可以计算出倒数第二个节点的梯度。
在这里插入图片描述

同一个公式的计算图并不是唯一的。上面的两个例子是把公式拆分到最细粒度,我们也可以将节点合并,如下图:蓝框框圈的地方可以合并为sigmoid函数。然后直接利用sigmoid的梯度公式求梯度值。
在这里插入图片描述

反向传播有三种很重要的模式:

  • add gate: gradient distributor. 梯度分配器。也就是说加法门(节点)分支的梯度和上游梯度相等。
  • max gate: gradient router.梯度路由。也就是说最大门(节点)某个分支(至值最大的那个分支)的梯度和上游节点相等,其它分支为0.
  • mul gate: gradient switcher,梯度交换器。也就是说乘法门(节点)分支的梯度是另一个分支的值。

在深度学习中,变量一般是向量或矩阵的形式。那么,如何用反向传播法求向量变量的梯度呢?

首先介绍一下雅各比矩阵(Jacobian Matrix):

在这里插入图片描述

以图中的 z x \frac{\partial z}{\partial x} 为例,假设 z z m m 维向量, z = { z 1 , z 2 , . . . , z m } z = \{z_1,z_2,...,z_m\} ; x x n n 维向量, x = { x 1 , x 2 , . . . x n } x = \{x_1,x_2,...x_n\} ,那么求 z z x x 的偏导,可以使用雅各比矩阵:
J = [ z x 1 , z x 2 , z x 3 , . . . , z x n ] = z 1 x 1 z 1 x 2 z 1 x 3 . . . z 1 x n z 2 x 1 z 2 x 2 z 2 x 3 . . . z 2 x n . . . . . . . . . . . . . . . z m x 1 z m x 2 z m x 3 . . . z m x n ) J = [\frac{\partial z}{\partial x_1},\frac{\partial z}{\partial x_2},\frac{\partial z}{\partial x_3},...,\frac{\partial z}{\partial x_n}] = \begin{vmatrix} \frac{\partial z_1}{\partial x_1}&\frac{\partial z_1}{\partial x_2}&\frac{\partial z_1}{\partial x_3}&...&\frac{\partial z_1}{\partial x_n}\\ \frac{\partial z_2}{\partial x_1}&\frac{\partial z_2}{\partial x_2}&\frac{\partial z_2}{\partial x_3}&...&\frac{\partial z_2}{\partial x_n}&\\...&...&...&...&...\\\frac{\partial z_m}{\partial x_1}&\frac{\partial z_m}{\partial x_2}&\frac{\partial z_m}{\partial x_3}&...&\frac{\partial z_m}{\partial x_n}\end{vmatrix}) \\

可以看到该雅各比矩阵有 m m n n 列。

在这里插入图片描述

2 神经网络

猜你喜欢

转载自blog.csdn.net/sjz_hahalala479/article/details/82822974