但这种方法会有一个很大的成绩,那就是后面提到的维度灾难,而这里要完成的神经网络言语模型(Neural Network Language Model),便是用神经网络构建言语模型,经过学习分布式词表示(即词向量)的方式处理了这个成绩。
言语模型无能什么
不过在谈神经网络言语模型前,我们先来看看言语模型的用途。
那它有什么用呢,如之前提到,言语模型可以说是古代 NLP 核心之一,无处不在。比如说词向量,最早算是言语模型的副产品;同时经典的序列到序列(seq2seq) 模型,其中解码器还可以被称为,Conditional Language Model(条件言语模型);而如今大火的预训练模型,次要义务也都是言语模型。
在实践 NLP 运用中,我以为能总结成以下三条:
第一,给句子打分,排序。先在大量文本上训练,之后就能用获得的言语模型来评价某句话的好坏。这在对一些生成结果停止重排序时非常有用,能很大程度地提高目的,机器翻译中有一个技巧便是结合言语模型 Loss 来重排序生成的候选结果。
第二,用于文本生成。首先其训练方式是根据后面词,生成之后词。于是只需不断反复此过程(自回归)就能生长大文本了。比较有名的例子就包括最近的 GPT2,其标题就叫 “ Better Language Models and Their Implications.” 它生成的句子效果真的非常棒,可以本人体验一番 https://talktotransformer.com/.
[attach]173956[/attach]
第三,作为预训练模型的预训练义务。最近很火的预训练模型,几乎都和言语模型脱不开关系。
比如说 ELMo 就是先训练双向 LSTM 言语模型,之后双向不同层向量拼接获得最后的 ELMo词向量,还有 BERT 里最次要的方法就是 Masked Language Model (遮掩言语模型)。
而最近的 XLNet 中最次要训练义务也叫做 Permutation language Model (陈列言语模型),可见言语模型在其中的重要性重要性。
神经网络言语模型架构
接上去简单引见一下这里要完成的网络结构,自创自 Bengio 的经典论文 A Neural Probabilistic Language Model 中的模型。