Tag Archives: 语言模型

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个位置(时刻)的词是xx可以是词典V中的任意一个词。

Continue reading