题图:jordan-steranka-645051-unsplash
语言模型是指已知 n 个连续单词预测第 n+1 个单词的模型,完成这项工作的系统称为语言系统。一个 n-gram 组是指 n 个连续的单词片断,常见的有: unigrams 是指 一个单词为一组,'the', 'students', 'opened', 'their';bigrams 是指两个单词为一组: 'the students', 'students opened', 'opened their';trigrams 是指三个单词为一组:' the students opend', 'students opened their' ; 4grams 是指将四个单词组为一组:'the students opened their' .
n-gram 定义下的语言模型,简称为 n-gram 语言模型。假设第 t+1 个单词wt+1 依赖于前 n-1 个单词。在这个假设下,wt+1 出现的概率为:前 n-1 个单词出现的情况下 wt+1出现的概率。怎么计算它呢? 若已经一个很大的预料库,分别统计 n-1 个连续单词出现的次数,统计结果显示出现了100 次。这 n-1 个单词后出现单词 wt+1 为 books 的次数为 20 次,则说明 n-gram 模型下出现下一个单词:books 的概率为 0.2;wt+1 为 laptops 出现了 25 次,则表明 n-gram 下 前 n-1 个单词下一个单词为 laptops 的概率高于 books.
n-gram 语言模型预测比较直观,但是,它有明显的弱点。如果语料库中没有出现 n-1 个单词片,分母为 0; 如果没有出现 n-1个单词和 wt+1的组合,分子为 0;需要加载 O(e^n) 量级的 n-gram 到内存,单词数和 n-gram 数为指数关系。
固定时间窗的神经网络语言模型,a fixed-window neural language model. 如下的三层神经网络,输入为 one-hot 的单词序列,输出为下一个单词的概率分布。
这个三层神经网络解决了 n-gram 模型的稀疏问题和存储问题。但是它每一个输入片段的长度为固定的,并且每一个 n-gram 输入的权重 w 非共享。这些问题限制了此网络模型的通用性,毕竟强制指定输入的长度是不科学的。
接下来,RNN 登场了,它解决了以上三层神经网络架构出现的问题。
RNN 网络的 W 是共享的,并且输入序列的长度是任意的。以下这张PPT 完整地展现了 RNN 的实际应用,xi 是经过 one-hot 编码的向量,经过 嵌入词向量函数 E 映射后得到词向量 ei,输入RNN 的输入层,经过隐含层,和 softmax 输出层得到下一个单词的概率分布图,如右上角所示。
RNN这种网络结构已经很完美了,RNN 网络理论上可以记忆很多时步前的信息,但是实践表明这些信息很难传递下去。
限于篇幅,明天的推送会送上 RNN 网络的训练推导的详细过程。祝大家劳动节快乐!