CS231n-2017 第4讲 反向传播算法与神经网络

一. 反向传播算法

计算图模型

设有算式

f ( W , x ) = 1 1 + e ( ω 0 x 0 + ω 1 x 1 + ω 2 )

使用计算图模型展示其前向计算过程,以及梯度的后向传播过程如下图所示:

图 1. 计算图模型展示前向与后向传播

在反向传播过程中,加法门像一个分发器,将传过来的梯度值分发给加法门的输入;最大操作门像一个路由器,将传过来的梯度值导向最大值;乘法门像一个交换器,将传过来的梯度值分别乘上各自的乘数。

:个人认为计算图适合可视化地展示前向计算和后向传播过程,但不适合指导编程。(虽然在编程时,可以把各个运算操作抽象为对象,然后对每一类门规定其前向与后向算法。)后面将针对神经网络给出基于代数表达的后向传播算法。

二. 神经网络

网络结构

考虑线性多分类器中的系数 ω ,其可以视为一个模板向量,最终输出的是每幅图像在各个类别的模板向量上的得分。这个模型的一个不足之处是各个类别仅有一个模板向量。比如现在要匹配一匹马,马可能头朝右,可能头朝左,还可能头朝下在吃草。那么一个模板向量就不够用了。那么考虑一个类别对应多个模板向量,然后再添加一层,将一幅图在多个模板向量上的得分综合一下,得到在输出类别上的得分,这样就构成了一个二维神经网络的雏形。但又考虑到线性函数的复合仍为线性函数,因此,在两个线性函数之间添加一个非线性激活函数。两层神经网络的结果图示如下:

图 2. 两层神经网络结构图

其数学表达为:

f = W 2 max ( 0 , W 1 x )

反向传播算法——基于代数的表达

由于神经网络由一层一层的类似结构堆叠而成,因此可以考虑对某一层进行偏导计算。设该层结构如下图示,则其输入输出关系可表达为

z = h ( a ) = h ( W x )

图 3. 某神经网络层输入输出图示

注意,上述表达中已经将偏置项吸收进了 W 。则有

[ z 1 z P ] = [ h ( r o w 1 W x ) h ( r o w P W x ) ] z i W = h ( a i ) [ 0 x T 0 ] i t h r o w

设损失函数关于 z 的偏导已求出,记为 L / z ,则

L W = i L z i z i W = [ L z h ( a ) ] x T

其中 表示Hadamard积,即两个同维向量对应元素相乘。

现考虑 L / z 。事实上,对下一层求 L / z ,即对上一层求 L / x

z i x = h ( a i ) [ r o w i W ] T L x = i L z i z i x = W T [ L z h ( a ) ]

:

  • 若要获得偏置项 b 的梯度,仅需从 W 的梯度表达中将最后一列单独拆出。
  • 对于输出层, L / z 单独计算。

一些有用的链接

猜你喜欢

转载自blog.csdn.net/suredied/article/details/82320317
今日推荐