Tag Archives: 语言模型

CS224N(2.26)Natural Language Generation

今天要介绍的内容比较多,但都是概述性的内容,主要了解自然语言生成领域的进展。


Section 1: Recap LMs and decoding algorithms

之前已经讲过什么是语言模型,语言模型就是给定句子中的一部分词,要求预测下一个词是什么。形式化表述就是预测$P(y_t|y_1,...,y_{t-1})$,其中的$y_1,...,y_{t-1}$就是目前已知的词,$y_t$就是要预测的下一个词。

条件语言模型是指除了已知$y_1,...,y_{t-1}$,还给定了$x$,这个$x$就是提供给语言模型的额外的信息。比如机器翻译的$x$就是源语言的句子信息;自动摘要的$x$就是输入的长文;对话系统的$x$就是历史对话内容等。

需要提醒的是,语言模型在训练阶段,输入Decoder的是正确的词,这种方法被称为Teacher Forcing,即不论上一步的输出是什么,都强制给这一步输入正确的词。而如果在测试阶段,Decoder的输入是上一步的输出。

Continue reading

CS224N(2.19)Contextual Word Embeddings

今天介绍几种新的词向量学习方法,在此之前,建议大家看看我关于word2vec或GloVe等传统词向量的介绍:CS224N(1.8)Introduction and Word Vectors

传统词向量,比如word2vec,它在训练阶段学习到一个词的向量表示之后,在下游的各种NLP任务中,这个词向量不再变动了。也就是说传统词向量的特点是,对一个词只学习一个词向量,且在具体任务中固定不变。传统词向量有两个主要的不足:

1. 难以表达一词多义。一个词在不同的上下文语境中可能表示不同的含义,比如“苹果”在“苹果真好吃”和“苹果手机很好用”这两个句子中表示不同的含义,但word2vec学习到的“苹果”词向量只有一个,也就是说下游任务对于这两个句子用的是同一个词向量。虽然word2vec的词向量可能同时包含了这两个含义,但它把这两个含义糅合到一个向量中了,导致在“苹果真好吃”中可能引入了“苹果手机”的干扰因素,在“苹果手机很好用”中引入了“吃的苹果”的干扰因素。总之就是,word2vec学习到的词向量粒度较粗,向量固定不变,无法根据具体的上下文语境进行改变。

2. 难以表达不同的语法或语义信息。一个词,即使是同一个意思,在语法或语义上也可能充当不同的角色,比如“活动”这个词,既可以做名词、也可以做动词,既可以做主语、也可以做谓语等。但word2vec对一个词只给出一个词向量,无论这个词在句子中充当什么角色,词向量都是一样的。虽然word2vec训练时可能已经学到了一个词的不同语法或语义特征,但它把这些信息糅合到一个向量中了,也就是粒度较粗的问题。

其实上述两点暴露出来的word2vec的不足,本质上是同样的两个原因:1. 词向量是静态的,无法根据上下文进行调整;2. 词向量表示只有一个向量,糅合了太多信息,粒度较粗。

Continue reading

CS224N(1.31)Translation, Seq2Seq, Attention

今天介绍另一个NLP任务——机器翻译,以及神经网络机器翻译模型seq2seq和一个改进技巧attention。

机器翻译最早可追溯至1950s,由于冷战的需要,美国开始研制由俄语到英语的翻译机器。当时的机器翻译很简单,就是自动从词典中把对应的词逐个翻译出来。

后来在1990s~2010s,统计机器翻译(Statistical Machine Translation, SMT)大行其道。假设源语言是法语$x$,目标语言是英语$y$,机器翻译的目标就是寻找$y$,使得$P(y|x)$最大,也就是下图的公式。进一步,通过贝叶斯公式可拆分成两个概率的乘积:其中$P(y)$就是之前介绍过的语言模型,最简单的可以用n-gram的方法;$P(x|y)$是由目标语言到源语言的翻译模型。为什么要把$P(y|x)$的求解变成$P(x|y)*P(y)$?逐个击破的意思,$P(x|y)$专注于翻译模型,翻译好局部的短语或者单词;而$P(y)$就是之前学习的语言模型,用来学习整个句子$y$的概率,专注于翻译出来的句子从整体上看起来更加通顺、符合语法与逻辑。所以问题就转化为怎样求解$P(x|y)$。

Continue reading

CS224N(1.29)Vanishing Gradients, Fancy RNNs

梯度消失

今天介绍RNN的梯度消失问题以及为了解决这个问题引出的RNN变种,如LSTM何GRU。

上一篇博客中,通过公式推导,我们已经解释了RNN为什么容易产生梯度消失或梯度爆炸的问题,核心问题就是RNN在不同时间步使用共享参数$W$,导致$t+n$时刻的损失对$t$时刻的参数的偏导数存在$W$的指数形式,一旦$W$很小或很大就会导致梯度消失或梯度爆炸的问题。下图形象的显示了梯度消失的问题,即梯度不断反传,梯度不断变小(箭头不断变小)。

Continue reading

CS224N(1.24)Language Models and RNNs

今天要介绍一个新的NLP任务——语言模型(Language Modeling, LM),以及用来训练语言模型的一类新的神经网络——循环神经网络(Recurrent Neural Networks, RNNs)。

语言模型就是预测一个句子中下一个词的概率分布。如下图所示,假设给定一个句子前缀是the students opened their,语言模型预测这个句子片段下一个词是books、laptops、exams、minds或者其他任意一个词的概率。形式化表示就是计算概率

\begin{eqnarray}P(x^{(t+1)}|x^{(t)},...,x^{(1)})\tag{1}\end{eqnarray}

$x^{(t+1)}$表示第$t+1$个位置(时刻)的词是$x$,$x$可以是词典$V$中的任意一个词。

Continue reading