CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
1
Lecture Notes: Part V
Language Models, RNN, GRU and LSTM 2
CS224n
RNN LSTM CNN
transformerbert问答要、成、模型
理解等前沿内容。
笔记核心词
Language Models. RNN. Bi-directional RNN. Deep RNN.
GRU. LSTM.
课程部资料和已整
获取!!
微信公众号·全套资料
回复 CS224n
底部菜单栏
Bilibili·课程视频
视频简介
置顶评论
GitHub·项目代码
阅读 ReadMe
点击超链接
系列内容
Awesome AI Courses Notes Cheat Sheets
@
ShowMeAI
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
1. Language Models
1.1 Introduction
m 个单
的序
1
,…,
的概率定义为
1
,…,
。单
前有
1
,…,
词。
P w
1
,…,
w
m
=
i=1
i=m
P
w
i
|w
1
,…,w
i−1
i=1
i=m
P
w
m
|w
i−n
,…,w
i−1
上面的公式在语音识别和机器翻译系统对判断一个词序列是否为
一个输入句子的准确翻译起到了重要的作用。在现有的机器翻译
/
{I have,I has,I had,me have,me had}
以确定最可能的翻译序列。
在机器翻译中,对一个输入短语,通过评判每个候选输出词序列
的得分的高低,来选出最好的词顺序。为此,模型可以在不同的
单词排序或单词选择之间进行选择。它将通过一个概率函数运行
所有单词序列候选项,并为每个候选项分配一个分数,从而实现
这一。最的序结果相比 small is
the cat the cat is small
walking house after school walking home
after school 更高的得分。
1.2 n-gram Language Models
n-gram
n-gram bi-
gram bi-gram
单词相合进行计算然后除以对 uni-gram 频率。下
的两个公式展示了 bi-gram 模型和 tri-gram 模型的区别。
2
|
1
=
count
1
,
2
count
1
3
|
1
,
2
=
count
1
,
2
,
3
count
1
,
2
1 Notes info.
课件/Slides
Lecture 6, P2
视频/Video
Lecture 6, 01:28
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeA
I
1.2 Notes info.
课件/Slides
Lecture 6, P7
视频/Video
Lecture 6, 03:45
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeAI
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
上式 tri-gram 模型的关系主要是基于一个固定的上下文窗口(
n 个单词)预测下一个单词。一般 n 的取值为多大才好呢?在
n
够的上下文信息。例如,考虑句子(类似完形填空,预测下一个
最可能的单词
“Asthe proctor started the clock, the students opened
their “the students
opened their”,那计算线有可
“books”—— n
的上下文,那么下划线中最优可能出现的单词会是“exam”
n-gram
储。
1) Sparsity problems with n-gram Language models
n-gram 语言模型的问题源于两个问题。
1
,
2
.
3
过,
3
的概 0决这,在
数后面加上一个很小的 ,这就是平滑操作。
然后考虑中的 如果
1
,
2
在语中从现过
那么
3
的概将会无法。为了解个问,这里可
是单独考虑
2
,这就是“backoff”操作。
增加 n 会让稀疏问题更加严重,所以一般 5
2) Storage problems with n-gram Language models
n-gram
随着 n 的增(或语料库大小的增),模型的大小也会增加。
1.3 Window-based Neural Language Model
Bengio A Neural Probabilistic Language Model
言处理的大规模的深度学习模型,这个模型能够通过学习单词的
分布式表示,以及用这些表示来表示单词的概率函数。右图展示
了对应的神经网络结构,在这个模型中,输入向量在隐藏层和输
出层中都被使用。
1.3 Notes info.
课件/Slides
Lecture 6, P18
视频/Video
Lecture 6, 15:45
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeA
I
Figure 1: The first deep neural
network architecture model for NLP
presented by Bengio et al.
1:Bengio NLP
个深层神经网络结构模型。】
Figure 2: A simplified
representation of Figure 1.
2:图 1 的简化表示。】
系列内容
Awesome AI Courses Notes Cheat Sheets
@
ShowMeAI
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
下面公式展示了由标准 tanh 数(即隐藏层)组成的 softmax
函数的数以及线性函
(3)
+
(3)
,捕获有前 n 个输
词向量。
=softmax
(2)
tanh
(1)
+
(1)
+
(3)
+
(3)
(1)
绿线
头),
(2)
是应用在隐藏层(也是绿色实线箭头)和
(3)
是应
用在词向量(绿色虚线箭头)。
这个模型的简化版本如右图所示,其中蓝色的层表示输入单词的
embedding 拼接 =
(1)
;
(2)
;
(3)
;
(4)
,红色的层表示隐
=
+
1
绿
softmax 概率分布
=softmax ℎ+
2
2. Recurrent Neural Networks (RNN)
n
RNN
库中所有前面的单词为条件进行语言模型建模。
右图示的 RNN 架构其中形框一个的一
藏层 t
每个这样的隐藏层都有若干个神经元,每个神经元对输入向量用
一个线矩阵后通线性例如 tanh )得
输出。在每一个时间步,隐藏层都有两个输入:前一个时间步的
−1
−1
权重
(ℎℎ)
当前
矩阵
(ℎ)
相乘当前步的
,然
和权
重矩
()
相乘,接对整个表通 softmax 得到下
个单词的预测结果
,如下面公式所示:
=
(ℎℎ)
−1
+
(ℎ)
[]
=softmax
()
每个神经元的输入和输出如右图所示
使
(ℎℎ)
(ℎ)
。这模型学习
序列的长度无——这从而解决了维度灾难。
2 Notes info.
课件/Slides
Lecture 6, P22
视频/Video
Lecture 6, 21:00
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeA
I
Figure 3: A Recurrent Neural
Network (RNN). Three time-steps
are shown. 3
RNN
骤。】
Figure 4: The inputs and
outputs to a neuron of a RNN.
4RNN 神经元的输入和输出】
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
5
以下是网络中每个参数相关的详细信息:
x
1
,…,x
t−1
,x
t
,x
t+1
,…x
T
:含 T 单词料库的词
量。
t
=σ
W
(ℎℎ)
t−1
+W
(ℎx)
x
t
t
出特征的计算关系
x
t
d
:在时间步 t 的输入词向量。
W
ℎx
D
×d
:输入词向量 x
t
对应的权重矩阵。
W
ℎℎ
D
×D
t−1
阵。
t−1
D
t-1 线
0
D
是在时间步 t=0 的隐藏层的一个初始化向量。
σ
:非线性函数(这里是 sigmoid 函数)。
y
=softmax
W
(S)
t
:在每个时间步 t 全部单词的概率分布
y
t−1
x
t
W
(S)
|V|×
D
y
|V|
,其中
|V|
是词汇表的大小。
一个 RNN 言模的例图所示。右图的符有一
(ℎℎ)
(ℎ)
()
表示单词输入
()
转化为
()
RNN 常用失函之前过的叉熵差。
的公式是这个函数在时间步 t 全部单词的求和。最后计算词表中
softmax
(5)
的不同选择的概率分布。这时的输入可以比 4 5 个单词更
长。
2.1 RNN Loss and Perplexity
RNN 的损失函数一般是交叉熵误差。
J
(t)
(θ)=
j=1
|V|
y
t,j
×log
y
t,j
在大小为 T 的语料库上的交叉熵误差的计算如下
J=
1
T
t=1
T
J
(t)
(θ)=
1
T
t=1
T
j=1
|V|
y
t,j
×log
y
t,j
Figure 5: An RNN
Language Model. 5:RNN
言模型。】
2.1 Notes info.
课件/Slides
Lecture 6, P24
视频/Video
Lecture 6, 26:13
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeAI
系列内容
Awesome AI Courses Notes Cheat Sheets
@
ShowMeAI
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
2.2 Advantages, Disadvantages and
Applications of RNNs
RNN 有以下优点:
1. 它可以处理任意长度的序列
2. 对更长的输入序列不会增加模型的参数大小
3. 对时间步 t 的计算理论上可以利用前面很多时间步的信息
4.
时具有对称性
但是 RNN 也有以下缺点:
1. ——
间步,所以不能并行化
2.
步的信息。
RNN
mini batch k
k
RNN 必须
矩阵
的可
它的大小不会随着语料库的大小而变化(与传统的语言模型不一
1000 RNN
1000×1000
而与语料库大小无关。
RNN
体识别),句子分类(情感分类),编码模块(问答任务,机器
翻译和其他很多任务)。在后面的两个任务,我们希望得到对句
子的表示,这时可以通过采用该句子中时间步长的所有隐藏状态

的最大值或平均值来获得。
RNN RNN
的每个隐层用一个环来表示
2.3 Vanishing Gradient & Gradient Explosion
Problems
RNN
RNN
如,考虑以下两个句子:
Figure 6: The illustration of a
RNN as a loop over time-steps.
6:RNN 随时间步长循环的图示】
2.3 Notes info.
课件/Slides
Lecture 7, P6
视频/Video
Lecture 7, 04:37
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeA
I
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
7
“John”,第二个两个句子的下文中均提了好几的人。迄
RNN RNN
RNN
处答案正确可能性,第一句要比第二句高。这是因为在反向传播
失。因此,对于长句子,预测到“John”是空
白处的答案的概率会随着上下文信息增大而减少。下面,我们讨
论梯度消失问题背后的数学原因。
t RNN


间步的误差都加起来。也就是说,计算并累积每个时间步长 t


∂E
∂W
=
i=1
T
E
t
∂W
通过分链式法用于 (6) (5) 计算间步
的误;公 (11)
ℎ
ℎ
对之
所有的 k 个时间步的偏导数。
∂E
t
∂W
=
k=1
T
∂E
t
∂y
t
∂y
t
∂ℎ
t
∂ℎ
t
∂ℎ
k
∂ℎ
k
∂W
下式
ℎ
ℎ
的关;这时间
[,]
内对
有的隐藏层的应用一个简单的微分链式法则。
∂ℎ
t
∂ℎ
k
=
j=k+1
t
∂ℎ
j
∂ℎ
j−1
=
j=k+1
t
W
T
×diagf
'
j
j−1
因为
D
n
,每个
∂ℎ
j
j−1
h Jacobian 矩阵的元素:
∂ℎ
j
j−1
=
∂ℎ
j
j−1,1
∂ℎ
j
j−1,D
n
=
j,1
∂ℎ
j−1,1
j,1
∂ℎ
j−1,
D
n
j,D
n
j−1,1
j,D
n
j−1,
D
n
系列内容
Awesome AI Courses Notes Cheat Sheets
@
ShowMeAI
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
将公式合起来,我们有以下关系。
∂E
∂W
=
t=1
T
k=1
t
∂E
t
∂y
t
∂y
t
t
j=k+1
t
∂ℎ
j
∂ℎ
j−1
k
∂W
Jacobian β
W
β
矩阵范数的上界值。因此通过公式所示的关系计算在每个时间步
t 的部分梯度范数。
∂ℎ
j
∂ℎ
j−1
W
T
diagf
'
j−1
β
W
β
计算这两矩阵的 L2 范数。在定的非线性函 sigmoid
f
'
j−1
的范数只能等 1
t
k
=
j=k+1
t
j
∂ℎ
j−1
β
W
β
t−k
小于 1 者远远大于 1,指数项
−
的值就很容易变得
常小或者非常大。由于单词之间的距离过大,用一个很大的
评估交熵误差可能会出现问题。在反向传播的早期就出现
度消失,那么远处单词对在时间步长 t 预测下一个单词中,所起
到的作用就会变得很小。
在实验的过程中,一旦梯度的值变得非常大,会导致在运行过程
NaN梯度
0
在,同时降低模型对语料库中的远距离的单词的学习质量;这样
的问题称为梯度消失问题。如果相对梯度消失问题的有更直观的
了解,你可以访问这个样例网站。
2.4 Solution to the Exploding & Vanishing
Gradients
现在我们知道了梯度消失问题的本质以及它在深度神经网络中如
何表现出来,让我们使用一些简单实用的启发式方法来解决这些
问题。
为了解决度爆炸的题,Thomas Mikolov 首先提出
个简单的启发式解决方案,每当梯度大于一个阈值的时候,将其
截断为一个很小的值,具体如下面算法中的伪代码所示。
样例网站:
https://link.zhihu.com/?target=http
%3A//cs224d.stanford.edu/noteb
ooks/vanishing_grad_example.html
2.4 Notes info.
课件/Slides
Lecture 7, P19
视频/Video
Lecture 7, 22:10
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeAI
Algorithm : Pseudo-code for norm
clipping in the gradients whenever
they explode
剪辑在梯度每当他们爆炸
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
9
右图
偏置项为
的很小的 RNN 网络的决面。该模由一
单一单元的循环神经网络组成,在少量的时间步长上运行;实心
箭头阐述了在每个梯度下降步骤的训练过程。当在梯度下降的过
程中,模型碰到目标函数中的高误差壁时,梯度被推到决策面上
的一个遥远的位置。截断模型生成了虚线,在那里它将误差梯度
拉回到靠近原始梯度的地方
为了解决梯度消失问题,我们提出两个技术。第一个技术是不去
随机初始化
(ℎℎ)
,而是初始化为单位矩阵。
使 Rectified Linear ReLU
sigmoid 函数ReLU 0 1梯度
的导数是 1,而不会在反向传播了一定的时间步后梯度变小。
2.5 Deep Bidirectional RNNs
到目止,们已论了 RNN 何使过去词来
序列下一单词理,以通 RNN 反向
语料,根来单行预Irsoy 展示
度神网络在每间步 t网络持两隐藏一个
是从左到右传播而另外一个是从右到左传播。为了在任何时候维
持两个隐藏层,该网络要消耗的两倍存储空间来存储权值和偏置
参数。最的分类结
,是结合两个 RNN 藏层成的
果得分产生。右图展示了双 RNN 的网络结构。
RNN
式之间唯一的区别是递归读取语料库的方向不同。最后一行展示
了通过总结过去和将来的单词表示,显示用于预测下一个单词的
分类关系。
=

+
−1
+
=

+

−1
+
=
ℎ
+
=
;
+
Figure 7: Gradient
explosion clipping visualization
7:渐变爆炸剪裁可视化】
2.5 Notes info.
课件/Slides
Lecture 7, P36
视频/Video
Lecture 7, 59:00
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeAI
Figure 8: A bi-directional
RNN model 8 RNN
模型】
系列内容
Awesome AI Courses Notes Cheat Sheets
@
ShowMeAI
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
RNN RNN
下面的隐藏层传播到下一层。如图所示,在该网络架构中,在时
t个时 RNN
接收参数前一 RNN 藏层两组数;组参
RNN RNN
入。
为了建一 L 的深 RNN
的关系,其中在
层的每个中间神经元的输入是在相同时间
t RNN 1层的输出。最后的输出
,每个时间步都是输
入参数通过所有隐层传播的结果。
=

+
−1
+
=

+

−1
+
=
+
=
;
+
2.6 Application: RNN Translation Model
传统的翻译模型是非常复杂的:它们包含很多应用在语言翻译流
机器中, RNN
型的考虑 RNN
Echt dicke Kiste Awesome
sauce
首先 为一言的
特征(
3
)。后面两个时间步解码
3
为英语单词输出。下式分
别展示了编码阶段和解码阶(后两行)
t
=ϕ
t−1
,x
t
=f W
(ℎℎ)
t−1
+W
(ℎx)
x
t
t
=ϕ
t−1
=f
W
(ℎℎ)
t−1
y
t
=softmax W
(s)
t
一般认为使用交函数 RNN 型可生成精度
译结果。实际上,在模型中增加一些扩展方法可以提升翻译的准
确度表现。
max
θ
1
N
n=1
N
log
p
θ
y
(n)
|x
(n)
Figure 9: A deep bi-
directional RNN with three RNN
layers. 9 RNN
的深双向 RNN。】
Figure 10: A RNN-based
translation model. The first three
RNN hidden layers belong to the
source language model encoder, and
the last two belong to the destination
language model decoder 10
RNN
RNN
器】
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
11
扩展 1训练 RNN 时,使用不
这使单元耦, RNN 块中每一行更
预测。意味着在公 (23) (24) ()函数中是使用不同
(ℎℎ)
矩阵。
扩展 2:使用三个不同的输入计算解码器中的每个隐藏状态
前一个隐藏状
t−1
(标准的)
编码阶段的最后一个隐藏层(上图中 c=
T
前一个预测的输出单词 y
t−1
为下式的
函数。上图展示了这个模型。
t
=ϕ
t−1
,c,y
t−1
扩展 3使 RNN 神经
的层越深,模型的就具有更强的学习能力从而能提升预测的准确
使
型。
扩展 4:训练双向编码器,提高准确度
扩展 5:给定一语词序 A B C,它的英翻译 X Y
训练

时不使 A B C X Y而是使 C B A X Y
A X
率。
3. Gated Recurrent Units
除了为止论的方法外,经发 RNN 使
用更复杂的激活单元来获得表现更好。到目前为止,我们已经讨
论了隐藏状态
−1
转换方法,使一个仿射

的非线转换。在这里,我们讨论门激活函数的使
RNN RNN
实际难训网络这一。门元可 RNN
更多的持久性内存,从而更容易捕获长距离信息。让我们从数学
GRU 使
−1
。然后我们将深入了解 GRU 架构
Figure 11: Language model
with three inputs to each decoder
neuron:
t−1
,c,y
t−1
11
t−1
,c,y
t−1
3 Notes info.
课件/Slides
Lecture 7, P28
视频/Video
Lecture 7, 46:30
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeAI
系列内容
Awesome AI Courses Notes Cheat Sheets
@
ShowMeAI
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
z
t
=σ W
(z)
x
t
+U
(z)
t−1
(Updategate)
r
t
=σ
W
(r)
x
t
+U
(r)
t−1
(Resetgate)
t
=tanh
r
t
U
t−1
+W
x
t
(Newmemory)
t
=
1z
t
t
+z
t
t−1
(Hiddenstate)
上述共识可以 GRU 四个基本阶段,下这些
公式出更直观释,图展 GRU 基本结构算流
程:
1. New memory generation
t
新的
x
t
和过
t−1
共同
t−1
根据过去的上下文来总结得到向量
t
2. Reset Gate
r
t
是负确定
t−1
对总
t
的重
t
够完全消除过去的隐藏状态(即忽略之前隐藏的信息)。
3. Update Gate z
t
t−1
z
t
1
t−1
z
t
0
t
状态。
4. Hidden state使用
t−1
和新生成的记
t
生成隐藏状态
t
GRU
数:
,,
()
,
()
,
()
,
()
。这些参数同样是通过反向传播算
法学习所得。
4. Long-Short-Term-Memories
Long-Short-Term-Memories GRU 点不另外
种类的复杂激经元。它用与 GRU 似,神经
LSTM
式,然后再深入了解这个神经元的设计架构:
=
()
+
()
−1
(Input gate)
=
()
+
()
−1
(Forget gate)
=
()
+
()
−1
(Output/Exposure gate)
=tanh
()
+
()
−1
(New memory cell)
=
−1
+
(Final memory cell)
=
tanh
Figure 12: The detailed
internals of a GRU 12:GRU
的详细内部结构,大图见本节最后
一页】
4 Notes info.
课件/Slides
Lecture 7, P22
视频/Video
Lecture 7, 29:40
GitHub·代码
实时在线查阅文档
Bilibili·视频
中英字幕课程视频
Stanford University X ShowMeAI
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
13
右图是 LSTM 的计算图示
LSTM
意义:
1. New memory generation:这个阶段是类似于 GRU
x
t
藏状态来生成一个包括新单
x
(t)
的新的记忆
c
t
2. Input Gate之前
——
使
产生它作为这个信息的指示器。
3. Forget Gate
——
态,并生成 f
t
4. Final memory generation
f
t
c
t−1
i
t
c
t
结果相加生成最终的记忆
c
t
5. Output/Exposure Gate GRU
c
t
LSTM ,该
忆单
c
t
的哪分需状态
t
中。评估
o
t
c
t
o
t
tanh c
t
t
Figure 13: The detailed
internals of a LSTM
13:LSTM
见本节最后一页】
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
14
Figure 12: The detailed internals of a GRU【图 12:GRU 的详细内部结构】
Figure 13: The detailed internals of a LSTM【图 13:LSTM 的详细内部结构】
CS224n | Natural Language Processing with Deep Learning Stanford University
Lecture Notes: Part V - Language Models, RNN, GRU and LSTM 2
15
机器学习
深度学习
自然语言处
计算机视觉
知识图谱
Machine Learning
Deep Learning
Natural Language Processing
Computer Vision
Knowledge Graphs
Stanford · CS229
Stanford · CS230
Stanford · CS224n
Stanford · CS231n
Stanford · CS520
# 系列内容 Awesome AI Courses Notes Cheatsheets
图机器学习
深度强化学
自动驾驶
Machine Learning with Graphs
Deep Reinforcement Learning
Deep Learning for Self-Driving Cars
Stanford · CS224W
UCBerkeley · CS285
MIT · 6.S094
...
...
...
ShowMeAI 的分覆盖知名TOP20+ AI 旨在学习一整
高品质中文学习笔记和速查表。
斯坦(Stanford University) Natural Language Processing with Deep Learning (CS224n)
系列的第三门产出。
课程版本 2019 Winter,核心深(transformerbert问答摘要、文生成)在当(2021 )
业界和研究界依旧是前沿的方法。最新版课程的笔记生产已在规划中,也敬请期待。
笔记内容经由深度加工整合,以 5 个部分构建起完整的CS224n 容世界”,并依托 GitHub 建了汇总
页。快扫描二维码,跳转进入吧!有任何建议和反馈,也欢迎通过下方渠道和我们联络 (*3)~