一文盘点预训练神经语言模型

本文全面介绍了预训练语言模型,包括神经语言模型的基础、n-gram、词向量、自回归和自编码模型,如Word2Vec、BERT、GPT、ELMo和XLNet。通过对比分析,阐述了这些模型如何逐步提升自然语言处理的能力,重点讨论了双向和上下文相关的词表示。文章适合NLP初学者和研究人员,提供深入理解预训练模型的入口。
摘要由CSDN通过智能技术生成

©PaperWeekly 原创 · 作者 | 西南交一枝花

学校 | 西南交通大学CCIT实验室

研究方向 | 命名实体识别

本文是参考了现有的相关研究,加以作者的理解,如发现问题,望不吝赐教。

语言模型(Language Model, LM)包括统计语言模型和神经语言模型,能够表示自然语言文本在语料中的概率分布,可用于判断语句是否为正常描述,也可理解为判断文本是否为“人话”。

本文主要介绍了神经语言模型以及预训练语言模型 PTMs,首先列出所需的预备知识(只是简单介绍);紧接着,概述统计语言模型 n-gram;然后,以词向量为过渡引出神经语言模型;最后,对各种模型进行介绍(自回归语言模型:NNLM, Word2Vec, ELMO, GPT, XLNet、自编码语言模型:BERT)。

补充两个概念:

自回归语言模型:根据前一段文本序列预测下一词的概率(反之亦然,即根据后一段文本序列预测上一个词概率),这类语言模型被称为自回归语言模型。简单记之,单向语言模型。

有人可能会有疑问,ELMO 利用了上文和下文信息,应该是自编码模型。虽然 ELMO 是做了两个方向的信息整合(通过拼接),但是我认为两者并未交互,所以本质是一个自回归语言模型的结合。此外,在知乎的一个提问中,也进行了一些探讨,希望在评论区有一些新的讨论。

提问:“双向语言模型的实现像 ELMo,考虑两个单向的 LSTM 来完成,为什么不直接用一个 BiLSTM 实现呢?

https://www.zhihu.com/question/337165915

自编码语言模型:BERT 通过 mask 机制,能够依据当前词的上下文,预测当前词。这其实就是典型的去噪自编码器 DAE 思想,mask 词可以看作加入的噪声

目录

  1. 预备知识

  2. n-gram 语言模型

  3. 词向量

  4. 神经概率语言模型

  5. Word2Vec

  6. Glove

  7. ELMO

  8. BERT

  9. XLNET

  10. GPT-1, GPT-2, GPT-3

  11. 总结

预备知识

  • 马尔科夫假设、马尔科夫链

  • 贝叶斯公式

  • 哈夫曼树

  • 激活函数 sigmoid\softmax

  • 交叉熵损失函数

  • 神经网络结构:CNN\LSTM\GRU\Transformer\Attention机制等

n-gram语言模型

以下主要参考 [1]《统计自然语言处理》。

语言模型可以描述为字符串 s 的概率分布 p(s),p(s) 表示 s 作为一个正确句子出现的频率,正确句子即符合我们常理认知的文本描述。若 s 由 n 个词构成,p(s) 可以表示为:

从上式可以看出计算第 i 个词的概率,依赖于前 i-1 个词。容易想到,如果前面有 i-1 个词,就会存在 种不同的序列,上述概率计算必须考虑在所有序列下的第i个词的概率,计算量过大,很难从训练集数据中估计出这些参数。

考虑到这种情况,可以将前 i-1 文本序列按照某种方式映射到某种等价类,且这个等价类的序列远远小于前面所提到的所有不同序列。

n 元文法 n-gram 是上述某种映射方式的一种,当 n=1 时,可以认为 独立于前面位置的序列,这种一元文法又被称为 unigram;当 n=2 时, 仅与前一个词语 有关,二元文法可以称为一阶马尔科夫链,记做 bigram;n=3 时,二阶马科夫链,记作 trigram。

以 bigram 为例,上述计算公式可以被转换为:

词向量 Word Vector

之所以先提一下词向量,主要是为下面章节做个铺垫。构造词向量的方法有很多,下面主要基于的神经网络语言模型角度出发进行介绍。

词,可以看作一个输入单元,在英文当中一个单词为一个单元,中文中词语或字可以看作一个单元。词的嵌入表示从独热编码到词向量(分布式表示),使得现在 NLP 中各个领域的表现性能有了很大的进展。

形如:one-hot ,其中 N 表示词的个数,可以看出该表示非常稀疏,且无法度量词之间的距离(表述远近)。

Word Vector

N 表示词的个数,D 表示向量的维度,D 远远小于 N,即低维、稠密、实值表示。

词向量是在 word2vec 之后,被大家所熟知(可能一致专注于该研究的学者一直都熟知,但对于类似我这种萌新,以为词向量是从 word2vec 开始的),最早由Hinton [2] 于 1986 年提出。

那么在神经语言模型之前,如何得到词向量呢?

介绍两种方式:LSA 潜在语义分析LDA 隐含狄利克雷分布主题模型

以 LSA 为例,通过统计文档中词出现的频词,构建词频矩阵,利用 SVD 矩阵分解,左边的矩阵就可以看作词向量表示。

神经概率语言模型

Bengio [3] 在 2013 年发表了该工作,提出了基于神经网络的语言模型,其中词向量是语言模型的副产物。

该模型很简单,包括:输入层、投影层、隐藏层、输出层。该方面的解读已经很多了,这里也不多加赘述,主要说一下该模型相对于 n-gram 模型的优点:

  • 词的相似性,在 n-gram中 无法捕获词语之前的相似性,举例:A cat is running in the room 和 A dog is running in the room。如果前者在语料中出现 1000 词,后者出现一次。p(前者)远远大于 p(后者)。但在神经概率语言模型中,这两者应该是大致相等的。

  • 词向量的平滑性,n-gram 在计算时对于统计频次出现 0 的情况,需要进行数据平滑。

Word2Vec

一句话说明 word2vec 思想:word2vec 可以理解为模型在学习 word 和 context 的 co-occurrence。 非原创,忘记在哪里看到的。

首先,推荐以下文献或解读,在整个过程中,确实看了很多参考文献。

  • 论文 [4] 提出了两种框架 CBOW 和 Skip-gram。

  • 论文 [5] 提出了两种提高词向量训练的方式 Hierarcial Softmax 和 Negative sampling。

  • 解读 [6],强推!讲的很系统,清晰,也是本文上半部分的主要参考。这里给出百度网盘的链接。

    链接:https://pan.baidu.com/s/1MJmi-jOKshOGuF9VEpyoHQ提取码:ba8y

  • 解读 [7] 讲的也是很清楚,总体推导不错。

基本上,上述文献综合起来能够很清楚解释说明 Word2vec 模型,本文也不想多做摘录。下面主要总结 word2vec 的几大特点:

1. 改变了原有的投影层之后的拼接操作,改为累加求和,无需隐藏层,输出为层次 softmax,结构上来说,从线性结构转树形结构。

上述操作,带来一个问题,在后向传播时,由于取得是各个词向量之和,每个词向量表示如何更新呢?原文中使用的方法很简单,正向的时候用的是各个词向量的求和,那么后向传播的时候将总梯度依次对所有词向量进行更新,即把总和的梯度贡献到每一个词的向量表示。

2. sigmoid 函数的近似计算,使用查表方式计算,省去了大量的计算。

3. 哈希表存储词典

4. 低频词筛选,设置阈值滤除,mincount 通常为 1,2。高频词,设置词频阈值,当前此以指定概率被丢掉,概率计算为 

  1. 自适应学习率

  2. 多线程并行

GloVe [8]

GloVe 全称 Global Vectors for Word Representation,结合了全局词频统计信息和局部上下文信息,可以理解为了综合了 LSA 和 word2vec 的词向量表示。

文中使用全局矩阵分解和局部上下文窗口方法,主要解决了两个问题:

1. LSA 在分解 cooccurrence matrix 时,使用了 SVD 方法,该方法在处理大语料时存在计算代价过高的不足,此外,LSA 中所有单词的统计权重都是一样的。还有一点很重要基于词频统计的语言模型不具备 word analogy 能力,举例说明  king - queen = man - woman。

2. Word2Vec 无论是 CBOW 还是 Skip-gram 框架都是基于局部的上下文信息,没有利用到全局的统计信息。

推荐一个 GloVe 的解读,文中给出了相应示例,较为清晰、详细。

https://blog.csdn.net/u014665013/article/details/79642083

6.1 GloVe工作流程

第一步:构建cooccurrence matrix

表示单词 j 出现在单词 i 上下文窗口中的次数,Glove 在实验中使用了词频权衰减因子,简单来说就是随着 j 随着在 i 窗口的距离增加,其频数权重降低。j 与 i 的距离为 d,decay = 1/d。

第二步:构建cooccurrence probability matrix

上述表示单词 j 出现在单词 i 上下文中的概率。

第三步:从共现概率矩阵中进一步提取信息

文中引入了探测词(Probe words)k,并以此定义了 k 与 i 和 j 关系。分为了四种情况:1. 单词 i , k 相关; 2. 单词 i, k 不相关;3. 单词 j, k 相关;4. 单词j, k 不相关。

文中引出 ratio 概念,表示三者之前的关系,计算方式为:

三者之间的具有下列的关系:

如果三者的词向量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值