Part 1、语言模型
语言模型就是计算一个单词序列(句子)的概率(P(w1,…,wm)P(w1,…,wm))的模型。听上去很简单,做起来很难;听上去没什么用处,但用处非常多。比如在机器翻译中,判断译文序列中一种词序的自然程度高于另一种,判断一种用词选择优于另一种。
传统的语言模型:
为了简化问题,必须引入马尔科夫假设,句子的概率通常是通过待预测单词之前长度为nn的窗口建立条件概率来预测:
为了估计此条件概率,常用极大似然估计,比如对于BiGram和TriGram模型,有:
在数据量足够的情况下,n-gram中的n越大,模型效果越好。但实际上,数据量总是不如人意,这时候一些平滑方法就不可或缺。另外,这些ngram可能会占用上G的内存,在最新的研究中,一个1260亿的语料在140G内存的单机上花了2.8天才得到结果。
Bengio et al提出了第一个大规模深度学习自然语言处理模型,只不过是用前nn个单词的词向量来做同样的事情(上文建模)而已,其网络结构如下:
Part 2、RNN
新的语言模型是利用RNN对序列建模,复用不同时刻的线性非线性单元及权值,理论上之前所有的单词都会影响到预测单词。
Part 3、RNN 语言模型
Part 4、训练常见问题和技巧
Part 5、双向RNN