【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 学习率

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

随着训练的推进,可以适当减低学习率:可以手工调整,每k个周期学习率减半;或者根据公式调整:l r = l r 0 e − k t l r=l r_{0} e^{-k t}lr=lr

0

e

−kt

,t为第t个epoch轮次。

三、Language modeling + RNNs (45 mins)

3.1 Language Modeling

语言建模的任务:预测下一个单词是啥。

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

(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.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

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

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

image.png

4.2 RNNs有啥用

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

各种不同的RNN结构:

image.png

相关文章
|
数据采集 机器学习/深度学习 自然语言处理
Masked Language Modeling,MLM
Masked Language Modeling(MLM)是一种预训练语言模型的方法,通过在输入文本中随机掩盖一些单词或标记,并要求模型预测这些掩盖的单词或标记。MLM 的主要目的是训练模型来学习上下文信息,以便在预测掩盖的单词或标记时提高准确性。
579 1
|
机器学习/深度学习 人工智能 自然语言处理
Paper:GPT-3《 Language Models are Few-Shot Learners》的翻译与解读(四)
Paper:GPT-3《 Language Models are Few-Shot Learners》的翻译与解读
|
7月前
|
机器学习/深度学习 并行计算 关系型数据库
【RetNet】论文解读:Retentive Network: A Successor to Transformer for Large Language Models
【RetNet】论文解读:Retentive Network: A Successor to Transformer for Large Language Models
212 1
|
7月前
|
机器学习/深度学习 数据采集 自然语言处理
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
281 1
|
存储 自然语言处理 数据可视化
【提示学习】AUTOPROMPT: Eliciting Knowledge from Language Models with Automatically Generated Prompts
Prompt任务需要构建合适的Pattern,但是编写合适的Pattern需要手动工作和人为猜测,有很大的不确定性。为了解决这个问题,提出AUTOPROMPT模型,基于梯度下降搜索来创建Pattern。
171 0
|
7月前
|
Python
[UNILM]论文实现:Unified Language Model Pre-training for Natural Language.........
[UNILM]论文实现:Unified Language Model Pre-training for Natural Language.........
47 0
|
7月前
|
自然语言处理 算法 Python
[SentencePiece]论文解读:SentencePiece: A simple and language independent subword tokenizer...
[SentencePiece]论文解读:SentencePiece: A simple and language independent subword tokenizer...
110 0
|
自然语言处理 算法 vr&ar
X-GEAR:Multilingual Generative Language Models for Zero-Shot Cross-Lingual Event Argument Extraction
我们提出了一项利用多语言预训练生成语言模型进行零样本跨语言事件论元抽取(EAE)的研究。通过将EAE定义为语言生成任务,我们的方法有效地编码事件结构并捕获论元之间的依赖关系。
129 0
|
人工智能 自然语言处理 算法
Tree of Thoughts: Deliberate Problem Solving with Large Language Models
Tree of Thoughts: Deliberate Problem Solving with Large Language Models
343 0
|
自然语言处理 算法 知识图谱
DEGREE: A Data-Efficient Generation-Based Event Extraction Model论文解读
事件抽取需要专家进行高质量的人工标注,这通常很昂贵。因此,学习一个仅用少数标记示例就能训练的数据高效事件抽取模型已成为一个至关重要的挑战。
169 0