NLP–Transformer 入门

Part1 自然语言处理

​ 自然语言处理,又称计算语言学(NLP)。借助计算机研究人类语言的科学。

​ 自然语言的研究基本上分为两个阶段:

​ 1.通过语法理解自然语言。 该阶段主要目的是分析语句、获取语义。依靠语言学家人工总结文法规则,但实际上自然语言是一种上下文有关文法,实际很难用计算机进行解析。

​ 2.统计语言学。 基于数学模型和统计方法。例如语音识别、词性分析(核心是通信系统加隐马尔可夫模型,输入输出一维符号,且保留原始次序),机器翻译(输出为二维树型结构的句法分析)。

统计语言模型:

模型的核心思想判断一个文字序列是否构成人类能够理解并且有意义的句子。

IBM 实验室的 Jelinek提供如下思路:

​ 一个文字序列 w1,w2,w3......wnw_1,w_2,w_3......w_n是否合理,看这个句子S出现的概率大小P(S)如何,概率越大说明这个句子越合理。

P(S)=P(w1,w2,w3,...,wn)=P(w1)P(w2w1)P(w3w1,w2)...P(wnw1,w2,...wn1)P(S) = P(w_1,w_2,w_3,...,w_n) = P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)...P(w_n|w_1,w_2,...w_{n-1})

​ 但是随着文字序列的增长,条件概率的计算会变得无比繁琐。所以可以进行改善,文字wnw_n出现的概率仅跟它前面 N-1 个文字有关。

P(wiw1,w2,w3,...,wi1)=P(wiwiN+1,wiN+2,wiN+3,...,wi1)P(w_i|w_1,w_2,w_3,...,w_{i-1}) = P(w_i|w_{i-N+1},w_{i-N+2},w_{i-N+3},...,w_{i-1})

​ 这种假设被称为 马尔科夫假设 , 对应的语言模型被称为 N 元(N-Gram) 模型。特殊的,当 N = 2 的时候,wiw_i出现的概率只跟它前面一个词有关,这种模型被称为二元(Bigram)模型;当 N= 1 的时候,显然是一个上下文无关模型。实际中常用的 N = 3。

​ 当涉及到更高阶的语言模型的时候,比如两个段落之间的上下文,马尔可夫莫模型就不再使用,需要用到LSTM(长短时记忆网络),Transformer等模型来捕获词句之间的长程依赖关系了。

NNLM(神经网络语言模型)

​ NNLM的全拼为:Neural Network Language Model。是通过前面n-1个词来预测当前词。

alt

​ 首先通过查表 C 得到预测词wtw_t前 n-1 个词对应的词向量 C(wtn+1),...,C(wt2),C(wt1)C(w_{t-n+1}),...,C(w_{t-2}),C(w_{t-1}) ,然后将这些词向量进行拼接输入到带有激活函数的隐藏层,最后通过softmax函数预测概率。

​ 需要注意的是词向量矩阵C 也是需要学习获得,是模型的一个参数。

Word2Vec

​ 模型的结构与NNLM模型基本一致,但是训练方法分为 CBOW (Continuous Bag-of-Words) 和 Skip-gram 两种。

alt

​ Word2Vec 在结构上更加自由,训练目标也更多地是为获得词向量服务

​ Word2Vec 对于一词多义很难进行处理,方法 可以利用互信息