文章目录
- 反向传播
-
- 1. 链式法则
- 2. 计算图
- 3. 变量向量化
- 神经网络
反向传播
1. 链式法则
使用链式法则计算复合表达式? 考虑复合函数 f ( x , y , z ) = ( x + y ) × z f(x, y, z) = (x+y)\times z f(x,y,z)=(x+y)×z。我们将公示分为两部分 q = x + y q = x + y q=x+y 和 f = q × z f = q\times z f=q×z。所以我们有 ? f ? q = z , ? f ? z = q \frac{\partial f}{\partial q} = z, \frac{\partial f}{\partial z} = q ?q?f?=z,?z?f?=q ; ? q ? x = 1 , ? q ? y = 1 \frac{\partial q}{\partial x} = 1 , \frac{\partial q}{\partial y} = 1 ?x?q?=1,?y?q?=1。然而函数 f f f 关于 x , y , z x, y, z x,y,z 的梯度才是需要关注的。从而我们需要使用链式法则
。链式法则指出将这些梯度表达式链接起来的正确方式是相乘,比如 ? f ? x = ? f ? q ? q ? x \frac{\partial f}{\partial x} = \frac{\partial f}{\partial q}\frac{\partial q}{\partial x} ?x?f?=?q?f??x?q?。
计算对应的计算图如下:
前向传播从输入计算到输出(绿色),反向传播从尾部开始,根据链式法则递归地向前计算梯度(显示为红色),一直到网络的输入端。可以认为,梯度是从计算链路中回流。
Sigmoid例子? 如下表达式,描述了一个含输入 x x x 和权重 w w w 的2维的神经元,该神经元使用了sigmoid激活函数
。
f ( w , x ) = 1 1 + e ? ( w 0 x 0 + w 1 x 1 + w 2 ) f(w,x) = \frac{1}{1 + e^{-(w_0x_0 + w_1x_1 + w_2)}} f(w,x)=1+e?(w0?x0?+w1?x1?+w2?)1?
其对应的计算图如下所示:
sigmoid函数求导简化?sigmoid函数关于其输入的求导是可以简化的(使用了在分子上先加后减1的技巧):
σ ( x ) = 1 1 + e ? 1 → d σ ( x ) d x = e ? x ( 1 + e ? x ) 2 = ( 1 + e ? x ? 1 1 + e ? x ) ( 1 1 + e ? x ) = ( 1 ? σ ( x ) ) σ ( x ) \sigma (x) = \frac{1}{1 + e^{-1}} \\ \to \frac{d \sigma(x)}{dx} = \frac{e^{-x}}{(1 + e^{-x})^2} = (\frac{1 + e^{-x} - 1}{1 + e^{-x}})(\frac{1}{1 + e^{-x}}) = (1 - \sigma(x))\sigma(x) σ(x)=1+e?11?→dxdσ(x)?=(1+e?x)2e?x?=(1+e?x1+e?x?1?)(1+e?x1?)=(1?σ(x))σ(x)
通过这个技巧,我们就可以实现门的合并。
2. 计算图
我们通常将操作节点叫做门
,一般的我们有:
add
:梯度分发器。 z = x + y ? ? L ? x = ? L ? z ? z ? x = ? L ? z × 1 z = x + y \Rightarrow \frac{\partial L}{\partial x} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial x} = \frac{\partial L}{\partial z} \times 1 z=x+y??x?L?=?z?L??x?z?=?z?L?×1。max
:梯度路由器。 z = m a x ( x , y ) ? z = max(x, y) \Rightarrow z=max(x,y)?被选中的参数梯度为 ? L ? z \frac{\partial L}{\partial z} ?z?L?,否则为 0 0 0。mul
:梯度交换器。 z = x × y ? ? L ? x = ? L ? z ? z ? x = ? L ? z × y z = x \times y \Rightarrow \frac{\partial L}{\partial x} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial x} = \frac{\partial L}{\partial z}\times y z=x×y??x?L?=?z?L??x?z?=?z?L?×y。
3. 变量向量化
神经网络
在一层的线性分类器(感知器)中,我们仅仅学习了 n n n 个模板,对于有多种特征的实体进行分类时,这明显是不足的。
多层神经网络可以解决单层神经网络的模板单一、鲁棒性差的问题。比如我们加深网络层数到两层,第一层输入为实体特征,第二层输入为第一层各分类模板得分。最后再通过 W 2 W_2 W2? 进一步整合,以 W 1 W_1 W1? 各模板得分为特征,得到最终的分类得分。