其他分享
首页 > 其他分享> > 斯坦福NLP课程 | 第4讲 - 神经网络反向传播与计算图

斯坦福NLP课程 | 第4讲 - 神经网络反向传播与计算图

作者:互联网

作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/36
本文地址http://www.showmeai.tech/article-detail/236
声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容


神经网络反向传播与计算图

ShowMeAI斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!

神经网络与反向传播

本讲内容的深度总结教程可以在这里 查看。视频和课件等资料的获取方式见文末

引言

Backpropagation and Computation Graphs

内容覆盖

Backpropagation and Computation Graphs

1.简单神经网络的梯度矩阵与建议

1.1 权重矩阵的导数

权重矩阵的导数

\[\frac{\partial s}{\partial W}=\frac{\partial s}{\partial h} \frac{\partial h}{\partial z} \frac{\partial z}{\partial W} \]

\[\begin{aligned} s &= u^T h \\ h &= f(z) \\ z &= Wx+b \end{aligned} \]

1.2 反向传播梯度求导

对反向传播的梯度求导

\[\frac{\partial s}{\partial W}=\delta \frac{\partial z}{\partial W}=\delta \frac{\partial}{\partial W} Wx+b \]

\[\begin{aligned} \frac{\partial z_{i}}{\partial W_{i j}} &=\frac{\partial}{\partial W_{i j}} W_{i \cdot} x+b_{i} \\ &=\frac{\partial}{\partial W_{i j}} \sum_{k=1}^{d} W_{i k} x_{k}=x_{j} \end{aligned} \]

对反向传播的梯度求导

\[\frac{\partial s}{\partial W_{i j}} = \delta_i x_j \]

\[\begin{aligned} \frac{\partial s}{\partial {W}}&=\delta ^{T} x^{T}\\ [n \times m] &= [n \times 1][1 \times m] \end{aligned} \]

1.3 梯度求导:技巧与建议

梯度求导:技巧

\[\frac{\partial {y}}{\partial {x}}=\frac{\partial {y}}{\partial {u}} \frac{\partial {u}}{\partial {x}} \]

1.4 为窗口模型推导梯度

为窗口模型推导梯度wrt单词

\[\begin{aligned} \delta_{window}=\left[\begin{array}{c}{\nabla_{x_{\text {museums}}}} \\ {\nabla_{x_{i n}}} \\ {\nabla_{x_{\text {Pare}}}} \\ {\nabla_{x_{\text {are}}}} \\ {\nabla_{x_{\text {amazing}}}}\end{array}\right] \in \mathbb{R}^{5 d} \end{aligned} \]

1.5 在窗口模型中更新单词梯度

在窗口模型中更新单词梯度

1.6 重新训练词向量时的陷阱

重新训练词向量时的陷阱

背景:我们正在训练一个单词电影评论情绪的逻辑回归分类模型。

重新训练词向量时的陷阱

1.7 关于再训练的建议

关于“词向量”再训练的建议

2.计算图与反向传播

2.1 反向传播

反向传播

2.2 计算图和反向传播

计算图和反向传播

\[\begin{aligned} s &= u^Th \\ h &= f(z) \\ z &= Wx+b \\ x & \quad (input) \end{aligned} \]

Forward Propagation:前向传播
Back Propagation:沿着边回传梯度

2.3 反向传播:单神经元视角

反向传播:单神经元视角

反向传播:单点

2.4 反向传播计算图示例

示例

2.5 求和形态的梯度计算

上图中的 \(\frac{\partial f}{\partial y}\) 的梯度的计算

\[\begin{aligned} a &= x + y \\ b &= max(y,z)\\ f &= ab \end{aligned} \]

\[\frac{\partial f}{\partial y} = \frac{\partial f}{\partial a}\frac{\partial a}{\partial y} + \frac{\partial f}{\partial b}\frac{\partial b}{\partial y} \]

2.6 直挂理解神经元的梯度传递

直观理解神经元的梯度传递

2.7 同步计算所有梯度以提速

同步计算所有梯度以提速

2.8 一般计算图中的反向传播

一般计算图中的反向传播

\[\frac{\partial z}{\partial x} = \sum_{i=1}^n \frac{\partial z}{\partial y_i}\frac{\partial y_i}{\partial x} \]

2.9 自动微分

自动微分

2.10 反向传播的实现

反向传播的实现

为了计算反向传播,我们需要在前向传播时存储一些变量的值

2.11 实现:前向/反向API

实现:前向/反向API

为了计算反向传播,我们需要在前向传播时存储一些变量的值

2.12 梯度检查:数值梯度

梯度检查:数值梯度

2.13 总结

总结

2.14 为什么要学习梯度的所有细节?

为什么要学习梯度的所有细节?

3.神经网络训练实用知识技能

3.1 模型正则化防止过拟合

模型正则化防止过拟合

\[J(\theta)=\frac{1}{N} \sum_{i=1}^{N}-\log (\frac{e^{f_{y_{i}}}}{\sum_{c=1}^{C} e^{f_{c}}})+\lambda \sum_{k} \theta_{k}^{2} \]

3.2 向量化形态

向量化形态

3.3 非线性:常规激活函数

非线性:常规激活函数

tanh 只是一个重新放缩和移动的 sigmoid (两倍陡峭,[-1,1])

\[\tanh (z)=2 logistic(2 z)-1 \]

logistic 和 tanh 仍然被用于特定的用途,但不再是构建深度网络的默认值。

tiplogistic和tanh

设计复杂的数学运算,指数计算会减慢速度。所以人们提出了 hard tanh,并且效果很不错。于是才有了 ReLU

3.4 非线性:新的激活函数

非线性:新的激活函数

tipReLU

3.5 参数初始化

参数初始化

\[Var(W_i)=\frac{2}{n_{in}+n_{out}} \]

3.6 优化算法

优化算法

通常,简单的SGD就可以了

3.7 学习率策略

学习率策略

4.视频教程

可以点击 B站 查看视频的【双语字幕】版本

5.参考资料

ShowMeAI系列教程推荐

NLP系列教程文章

斯坦福 CS224n 课程带学详解

标签:NLP,frac,梯度,斯坦福,神经网络,课程,partial
来源: https://www.cnblogs.com/showmeai/p/16220095.html