当前位置: 代码迷 >> 综合 >> CS231n:神经网络
  详细解决方案

CS231n:神经网络

热度:84   发布时间:2024-01-04 12:14:35.0

文章目录

  • 反向传播
    • 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? 各模板得分为特征,得到最终的分类得分。

  相关解决方案