【CS224n】(lecture5)Language Models and RNN

简介: 以往的parsing的问题:稀疏;不完整;计算复杂(超过95%的时间都用于特征计算)

一、Neural dependency parsing (20 mins)

1.1 特征指标回顾

以往的parsing的问题:

稀疏;不完整;计算复杂(超过95%的时间都用于特征计算)

A neural dependency parser [Chen and Manning 2014]

斯坦福依赖关系的英语解析结果指标:

UAS (unlabeled attachment score) 指 无标记依存正确率 ,

LAS (labeled attachment score) 指有标记依存正确率。

Unlabeled attachment score (UAS) = head

Labeled attachment score (LAS) = head and label

image.png

1.2 first win:分布式表征

将每个单词表示为一个d维稠密向量(如词向量),并且相似的单词之间应有相近的向量。POS(part-of-speech tags)词性标注和dependency labels也表示为d维向量。

NNS(复数名词)应该接近NN(单数名词)

num(数值修饰语)应该接近amod(形容词修饰语)。

我们根据堆栈 / 缓冲区中提取一组tokens:

image.png

将其转换为词向量并将它们联结起来作为输入层,再经过若干非线性的隐藏层,最后加入softmax layer得到shift-reduce解析器的动作。

1.3 second win:非线性分类器

一个softmax分类器:image.png

传统的机器学习分类器,如贝叶斯、SVM、逻辑回归和softmax分类器等性能不太强,因为它们是用线性的decision boundaries进行分类。而非线性的decision boundaries才能像如下右图的效果进行分类:

image.png

1.4 Neural Dependency Parser Model Architecture

image.png

Dependency parsing for sentence structure

神经网络可以准确地确定句子的结构,支持解释,神经网络能够训练出一个简单且性能更优秀的dependency parser:

image.png

Further developments in transition-based neural dependency parsing

这项工作google一直在研究,用更大更深的网络和更好调优的超参数;使用beam search;全局、条件随机场CRF推理出决策序列。

SyntaxNet and the Parsey McParseFace model (2016):

image.png

1.5 Graph-based dependency parsers

为每条边的每⼀个可能的依赖关系计算⼀个分数

然后将每个单词的边缘添加到其得分最高的候选头部

并对每个单词重复相同的操作

image.png

二、A bit more about neural networks (15 mins)

2.1 正则化Regularization

如果特征很多,为了防止过拟合,可以对损失函数加上L2正则化:

image.png

2.2 Dropout

如果模型参数过多,训练样本少,训练出来的模型容易过拟合(即model在训练数据集上损失函数较小,预测的accuracy较高;但是在测试集上相反)。

Dropout 可以看作是bagging的一种近似方法

训练时是对子网络的训练,预测则是对子网络的ensemble

2.3 “Vectorization”向量化

可以看到用矩阵比单纯for循环计算要快:

image.png

2.4 Non-linearities, old and new

各种激活函数:

image.png

2.5 Parameter Initialization 变量初始化

image.png

2.6 Optimizers 优化器

一般使用SGD就够了,但是为了得到更好结果,我们需要手动微调学习率

为了应对更复杂的网络,可使用更复杂的自适应性优化器(that scale the parameter

adjustment by an accumulated gradient.)

其他优化器:Adagrad、RMSprop、Adam(常用)、SparseAdam等

2.7 Learning Rates 学习率

学习速率太大则模型可能发散或不收敛;太小则训练时间长;

image.png思路:收集关于不同n-gram出现频率的统计数据,并使用这些数据预测下⼀个单词。

3.2 n-gram Language Models

(1)介绍

句子:the students opened their ______

定义 :n-gram 是 ⼀个由n个连续单词组成的块

unigrams(一元): “the”, “students”, “opened”, ”their”;一元文法,词间互相独立,即和语序无关。

bigrams(二元): “the students”, “students opened”, “opened their”

trigrams(三元): “the students opened”, “students opened their”

4-grams(四元): “the students opened their”

1.马尔科夫假设

马尔科夫假设:假设x ( t + 1 ) \boldsymbol{x}^{(t+1)}x

(t+1)

只依赖于前面的n-1个单词


image.png

image.png

例如,假设在语料库中:

“students opened their” 出现了1000次

“students opened their books” 出现了400次

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

P( books ∣ students opened their )=0.4

“students opened their exams” 出现了100次

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

P( exams ∣ students opened their )=0.1

(2)Sparsity Problems with n-gram Language Models

解决n-gram模型的稀疏问题。

image.png

问题 :如果“students open their w ww” 从未出现在数据中,那么概率值为 0

(Partial)解决方案 :为每个 w ∈ V w \in Vw∈V 添加极小数 δ \deltaδ 。这叫做平滑。这使得词表中的每个单词都至少有很小的概率。

问题 :如果“students open their” 从未出现在数据中,那么我们将无法计算任何单词 的概率值

(Partial)解决方案 :将条件改为“open their”。这叫做后退。

Note: n 的增加使稀疏性问题变得更糟。⼀般情况下 n 不能大于5。

(3)Storage Problems with n-gram Language Models

image.png

增加 n 或增加语料库都会增加模型大小。

(4)n-gram语言模型栗子

我们可以建立⼀个超过170万个单词库(Reuters)的简单的三元组语言模型。

可以参考:https://nlpforhackers.io/language-models/

image.png

稀疏性问题:概率分布的区分度不大,可以看到上面前两个都是概率相同,都只出现过4次。

3.3 Generating text with a n-gram Language Model

可以通过语言模型来生成文本。

image.png

生成的文本为:

today the price of gold per ton , while production of shoe 
lasts and shoe industry , the bank intervened just after it 
considered and rejected an imf demand to rebuild depleted 
european stocks , sept 30 end primary 76 cts a share .

可以上看上面生成的文本,虽然语法基本正确,但是语句并不连贯,如果考虑 n=3 以上,可以更好地模拟语言,但是随着 n 增大,模型的稀疏性问题也会更大。

3.4 基于窗口的神经网络语言模型

window-based neural model在lecture 3 中提到,用于命名实体识别(Named Entity Recognition)。

image.png

根据滑动窗口,得到的input样本,输入网络(和NER一样的网络结构)中:

image.png

Approximately: Y. Bengio, et al. (2000/2003): A Neural Probabilistic Language Model

模型的改进:没有稀疏性问题;不需要观察到所有的n-grams

存在的问题:

固定窗口太小,即使窗口再大也可能不够

扩大窗口就需要扩大权重矩阵W WW

x ( 1 ) x^{(1)}x

(1)

和x ( 2 ) x^{(2)}x

(2)

乘以完全不同的权重,输入的处理不对称

我们需要一个可以处理任意长度的input的网络结构。

3.5 RNNs

(1)介绍

背景:生活中有很多序列化结构数据:

文本:字母和词汇的序列

语音:音节的序列

视频:图像帧的序列

时态数据:气象观测数据,股票交易数据、房价数据等

image.png

RNN的一般结构:

image.png

其中各个符号的表示:


image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

image.png

RNN案例

重复使用相同的权重矩阵 W WW。

image.png

RNN的优势:

可以处理任意长度的input

步骤 t 的计算可以使用来自之前所有步骤的信息,而不仅是一个窗口

模型大小不会 随着输入的增加而增加

在每个时间步上应用相同的权重,因此在处理输入时具有对称性

RNN的劣势:(后面课程会继续讲)

RNN计算速度慢。因为每个时间 t tt 的计算都要先计算之前的序列,即不能并行计算多个时间步。

在实践中,很难从许多步骤中获取信息,因为存在梯度消失和爆炸问题。

(2)训练RNN模型

获取一个较大的文本语料库(单词序列)

输入RNN-LM:计算每个步骤 t 的输出分布,即预测到目前为止,每个单词的概率分布。

步骤 t 上的损失函数为预测概率 y ^ ( t ) \hat{\boldsymbol{y}}^{(t)}

y

^

 

(t)

 与真实下一个单词 y ( t ) \boldsymbol{y}^{(t)}y

(t)

 (x t + 1 x^{t+1}x

t+1

的独热向量)之间的交叉熵。

image.png

(3)Backpropagation for RNNs

反向传播:

image.png

(4)Generating text with an RNN Language Model

(5)Evaluating Language Models

标准语言模型评估指标是 perplexity 困惑度(该值越小越好)

困惑度的基本思想:给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完后,测试集中的句子都是正常的句子,则:

image.png

(1)上面取了一个几何平均值的倒数;

(2)困惑度越小,句子概率越大,语言模型越好。

这种做法和交叉熵损失函数的指数类似:

image.png

预测输入、语音识别、手写识别、拼写/语法修正、身份识别、机器翻译、摘要、对话。

几种语言模型的困惑度的比较:

image.png

四、小结

4.1 Language Modeling

语言模型是一项 基准测试 任务,它帮助我们 衡量 我们在理解语言方面的进展。生成下一个单词,需要语法,句法,逻辑,推理,现实世界的知识等。

image.png

语言建模是许多NLP任务的子部分,尤其是涉及生成文本和估计文本概率的任务:

image.png

4.2 RNNs有啥用

RNN除了我们提到的序列标注、文本分类(情感分析等)、生成文本等,RNN还能作为一个编码器,如应用在QA问答系统、机器翻译等。

各种不同的RNN结构:

相关文章
|
5月前
|
机器学习/深度学习
【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介
【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介
【从零开始学习深度学习】33.语言模型的计算方式及循环神经网络RNN简介
|
1月前
|
机器学习/深度学习 数据采集 存储
时间序列预测新突破:深入解析循环神经网络(RNN)在金融数据分析中的应用
【10月更文挑战第7天】时间序列预测是数据科学领域的一个重要课题,特别是在金融行业中。准确的时间序列预测能够帮助投资者做出更明智的决策,比如股票价格预测、汇率变动预测等。近年来,随着深度学习技术的发展,尤其是循环神经网络(Recurrent Neural Networks, RNNs)及其变体如长短期记忆网络(LSTM)和门控循环单元(GRU),在处理时间序列数据方面展现出了巨大的潜力。本文将探讨RNN的基本概念,并通过具体的代码示例展示如何使用这些模型来进行金融数据分析。
256 2
|
5月前
|
机器学习/深度学习 自然语言处理 算法
RNN-循环神经网络
自然语言处理(Nature language Processing, NLP)研究的主要是通过计算机算法来理解自然语言。对于自然语言来说,处理的数据主要就是人类的语言,我们在进行文本数据处理时,需要将文本进行数据值化,然后进行后续的训练工作。
|
5月前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
6月前
|
机器学习/深度学习 自然语言处理 语音技术
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
152 3
|
6月前
|
机器学习/深度学习 自然语言处理 PyTorch
使用Python实现循环神经网络(RNN)的博客教程
使用Python实现循环神经网络(RNN)的博客教程
731 1
|
1月前
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
|
3月前
|
自然语言处理 C# 开发者
Uno Platform多语言开发秘籍大公开:轻松驾驭全球用户,一键切换语言,让你的应用成为跨文化交流的桥梁!
【8月更文挑战第31天】Uno Platform 是一个强大的开源框架,允许使用 C# 和 XAML 构建跨平台的原生移动、Web 和桌面应用程序。本文详细介绍如何通过 Uno Platform 创建多语言应用,包括准备工作、设置多语言资源、XAML 中引用资源、C# 中加载资源以及处理语言更改。通过简单的步骤和示例代码,帮助开发者轻松实现应用的国际化。
41 1
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
TensorFlow 中的循环神经网络超厉害!从理论到实践详解,带你领略 RNN 的强大魅力!
【8月更文挑战第31天】循环神经网络(RNN)在人工智能领域扮演着重要角色,尤其在TensorFlow框架下处理序列数据时展现出强大功能。RNN具有记忆能力,能捕捉序列中的长期依赖关系,适用于自然语言处理、机器翻译和语音识别等多个领域。尽管存在长期依赖和梯度消失等问题,但通过LSTM和GRU等改进结构可以有效解决。在TensorFlow中实现RNN十分简便,为处理复杂序列数据提供了有力支持。
38 0
|
4月前
|
机器学习/深度学习 数据采集 人工智能
循环神经网络RNN
7月更文挑战第2天
100 11
下一篇
无影云桌面