其他分享
首页 > 其他分享> > 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

作者:互联网


循环神经网络与语言模型

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

语言模型、RNN、GRU与LSTM

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


引言

语言模型与RNN

(本篇内容也可以参考ShowMeAI的对吴恩达老师课程的总结文章深度学习教程 | 序列模型与RNN网络

概述

概述

1.语言模型

1.1 语言模型

语言模型

语言建模的任务是预测下一个单词是什么


更正式的说法是:给定一个单词序列 \(\boldsymbol{x}^{(1)}, \boldsymbol{x}^{(2)}, \ldots, \boldsymbol{x}^{(t)}\),计算下一个单词 \(x^{(t+1)}\) 的概率分布:

\[P\left(\boldsymbol{x}^{(t+1)} \mid \boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(1)}\right) \]

1.2 语言模型

语言模型


\[\begin{aligned} P\left(\boldsymbol{x}^{(1)}, \ldots, \boldsymbol{x}^{(T)}\right) &=P\left(\boldsymbol{x}^{(1)}\right) \times P\left(\boldsymbol{x}^{(2)} \mid \boldsymbol{x}^{(1)}\right) \times \cdots \times P\left(\boldsymbol{x}^{(T)} \mid \boldsymbol{x}^{(T-1)}, \ldots, \boldsymbol{x}^{(1)}\right) \\ &=\prod_{t=1}^{T} P\left(\boldsymbol{x}^{(t)} \mid \boldsymbol{x}^{(t-1)}, \ldots, \boldsymbol{x}^{(1)}\right) \end{aligned} \]

1.3 随处可见的语言模型

随处可见的语言模型

1.4 随处可见的语言模型

随处可见的语言模型

1.5 n-gram 语言模型

n-gram 语言模型

the students opened their __



1.6 n-gram 语言模型

n-gram 语言模型

\[\begin{aligned} P\left(\boldsymbol{x}^{(t+1)} \mid \boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(1)}\right) & =P\left(\boldsymbol{x}^{(t+1)} \mid \boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(t-n+2)}\right)\\ &=\frac{P\left(\boldsymbol{x}^{(t+1)}, \boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(t-n+2)}\right)}{P\left(\boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(t-n+2)}\right)} \end{aligned} \]


\[\approx \frac{\operatorname{count}\left(\boldsymbol{x}^{(t+1)}, \boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(t-n+2)}\right)}{\operatorname{count}\left(\boldsymbol{x}^{(t)}, \ldots, \boldsymbol{x}^{(t-n+2)}\right)} \]

1.7 n-gram 语言模型:示例

n-gram 语言模型:示例

假设我们正在学习一个 4-gram 的语言模型


\[P(\text{books} \mid \text{students opened their})=0.4 \]

\[P( \text{exams} \mid \text{students opened their})=0.1 \]


1.8 n-gram语言模型的稀疏性问题

n-gram 语言模型的稀疏性问题



1.9 n-gram语言模型的存储问题

n-gram 语言模型的存储问题

问题:需要存储你在语料库中看到的所有 n-grams 的计数

增加 \(n\) 或增加语料库都会增加模型大小

1.10 n-gram 语言模型在实践中的应用

Try for yourself: https://nlpforhackers.io/language-models/

n-gram 语言模型在实践中的应用


稀疏性问题

1.11 n-gram语言模型的生成文本

n-gram 语言模型的生成文本



1.12 如何搭建一个神经语言模型?

如何搭建一个神经语言模型?


1.13 固定窗口的神经语言模型

固定窗口的神经语言模型

1.14 固定窗口的神经语言模型

固定窗口的神经语言模型

1.15 固定窗口的神经语言模型

固定窗口的神经语言模型

超越 n-gram 语言模型的改进


NNLM存在的问题


我们需要一个神经结构,可以处理任何长度的输入

2.循环神经网络(RNN)

2.1 循环神经网络(RNN)

循环神经网络(RNN)

2.2 RNN语言模型

RNN语言模型

2.3 RNN语言模型

RNN语言模型


2.4 训练一个RNN语言模型

训练一个RNN语言模型


\[J^{(t)}(\theta)=C E\left(\boldsymbol{y}^{(t)}, \hat{\boldsymbol{y}}^{(t)}\right)=-\sum_{w \in V} \boldsymbol{y}_{w}^{(t)} \log \hat{\boldsymbol{y}}_{w}^{(t)}=-\log \hat{\boldsymbol{y}}_{\boldsymbol{x}_{t+1}}^{(t)} \]


\[J(\theta)=\frac{1}{T} \sum_{t=1}^{T} J^{(t)}(\theta)=\frac{1}{T} \sum_{t=1}^{T}-\log \hat{\boldsymbol{y}}_{\boldsymbol{x}_{t+1}}^{(t)} \]

2.5 训练一个RNN语言模型

训练一个RNN语言模型

\[J^{(1)}(\theta)+J^{(2)}(\theta)+J^{(3)}(\theta)+J^{(4)}(\theta)+\cdots=J(\theta)=\frac{1}{T} \sum_{t=1}^{T} J^{(t)}(\theta) \]

2.6 训练一个RNN语言模型

训练一个RNN语言模型

\[J(\theta)=\frac{1}{T} \sum_{t=1}^{T} J^{(t)}(\theta) \]


2.7 RNN的反向传播

RNN的反向传播

\[\frac{\partial J^{(t)}}{\partial \boldsymbol{W}_{\boldsymbol{h}}}=\sum_{i=1}^{t}\left.\frac{\partial J^{(t)}}{\partial \boldsymbol{W}_{\boldsymbol{h}}}\right|_{(i)} \]

2.8 多变量链式法则

Source: https://www.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/differentiating-vector-valued-functions/a/multivariable-chain-rule-simple-version

多变量链式法则

\[\frac{d}{d t} f(x(t), y(t))=\frac{\partial f}{\partial x} \frac{d x}{d t}+\frac{\partial f}{\partial y} \frac{d y}{d t} \]

2.9 RNN的反向传播:简单证明

RNN的反向传播:简单证明

\[\frac{d}{d t} f(x(t), y(t))=\frac{\partial f}{\partial x} \frac{d x}{d t}+\frac{\partial f}{\partial y} \frac{d y}{d t} \]

2.10 RNN的反向传播

RNN的反向传播

2.11 RNN语言模型的生成文本

RNN语言模型的生成文本

2.12 RNN语言模型的生成文本

Source: https://medium.com/@samim/obama-rnn-machine-generated-political-speeches-c8abd18a2ea0

Source: https://medium.com/deep-writing/harry-potter-written-by-artificial-intelligence-8a9431803da6

Source: https://gist.github.com/nylki/1efbaa36635956d35bcc

RNN语言模型的生成文本

Source: http://aiweirdness.com/post/160776374467/new-paint-colors-invented-by-neural-network

RNN语言模型的生成文本

补充讲解


3.评估语言模型

3.1 评估语言模型

评估语言模型

\[=\prod_{t=1}^{T}\left(\frac{1}{\hat{y}_{x_{t+1}}^{(t)}}\right)^{1 / T}=\exp \left(\frac{1}{T} \sum_{t=1}^{T}-\log \hat{\boldsymbol{y}}_{\boldsymbol{x}_{t+1}}^{(t)}\right)=\exp (J(\theta)) \]

3.2 RNN极大地改善了困惑度

Source: https://research.fb.com/building-an-efficient-neural-language-model-over-a-billion-words/

RNN极大地改善了复杂度

3.3 为什么我们要关心语言模型?

为什么我们要关心语言模型?


3.4 要点回顾

要点回顾

3.5 RNN可用于句子分类

RNN可用于句子分类

3.6 RNN语言模型可用于生成文本

RNN语言模型可用于生成文本

4.视频教程

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

[video(video-bJxwW4Zu-1651739749748)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=376755412&page=6)(image-https://www.icode9.com/i/ll/?i=img_convert/6e3e73119a626451364c298ef1ef1f06.png)(title-【双语字幕+资料下载】斯坦福CS224n | 深度学习与自然语言处理(2019·全20讲))]

5.参考资料

ShowMeAI 系列教程推荐

NLP系列教程文章

斯坦福 CS224n 课程带学详解

标签:NLP,语言,模型,boldsymbol,斯坦福,神经网络,RNN
来源: https://www.cnblogs.com/showmeai/p/16244486.html