1. Word Embedding
1.1 基本概念
- Word Embedding可以理解为一种映射,其过程是:将文本空间中的某个word,通过一定的方法,映射或者说嵌入(embedding)到另一个数值向量空间。称之为embedding,是因为这种表示方法往往伴随着降维。
- 输入:原始文本中不重复的词语的序列。
- 输出:原始文本中每个word的向量表示。
- 类型:基于频率的Word Embedding(Frequency based embedding);
基于预测的Word Embedding(Prediction based embedding)
1.2 基于频率的Word Embedding
- 该类的本质是基于one-hot表示法。
(1) Count Vector
假设一个语料库有N个word,D个文档,那么构建一个 D × N D\times N D×N的词-文档矩阵,每行的各个维度表示该词在改行这个文档中出现的次数。但是当语料库十分庞大时,矩阵的规模也会很大,同时矩阵是稀疏的,会造成计算资源不能有效利用,因此一般会选取出现次数最频繁的词来构建语料库,即dictionary。
(2) TF-IDF
提高了权重设置的合理性,详见前一篇总结。
(3) Co-Occurence Vector
- 基于一个重要的研究结果:相似的单词趋向于有相似的上下文(context)。
- Context Window:假设context window为2,那么一个特定词的context为其前后各两个临近词(加起来一共四个)。
- Co-Occurence(共现):在上下文窗口内(context window)两个词共同出现了。
- 假设语料库中有n个word,那么构建的Co-Occurence Vector的维度为 n × n n\times n n×n。这种方法的优势是保留了语义信息,比前两种方法更加智能。但是,会存在维数过大的问题,通常可以使用矩阵分解等手段降维优化。
1.3 基于预测的Word Embedding
- 通过神经网络可以实现更好的文本表示方法:携带上下文信息;矩阵的表示是稠密的。
(1) CBOW
(2)skip-gram
1.4 总结
- Word Embedding可以应用于:计算相似度,在一组单词中找出与众不同的一个,直接进行词的运算,计算一段文字出现的可能性等等。
- 经过Word Embedding之后,各个word就组合成了一个相对低维空间上的一组向量,这些向量之间的远近关系则由他们之间的语义关系决定。
2. Glove
- 2014年斯坦福提出。
3. ELMo
参考:
(1) https://zhuanlan.zhihu.com/p/49271699
(2) https://zhuanlan.zhihu.com/p/38254332
3.1 原理
- ELMo:Embedding from Language Models.
- 提出ELMO的论文:“Deep contextualized word representation”(2018).
- 静态的word embedding:每个单词训练好的word embedding就固定住了,以后使用的时候,不论新句子上下文单词是什么,这个单词的word embedding不会跟着上下文场景的变化而改变。
- ELMo的本质思想:事先用语言模型学习好一个单词的word embedding,此时多义词无法区分 (即,这个单词的word embedding中包含了多个语义),不过这没关系。在实际使用word embedding的时候,单词已经具备了特定的上下文,这个时候可以根据上下文单词的语义去调整单词的word embedding表示,这样经过调整后的word embedding更能表达单词在这个上下文中的具体含义,自然也就解决了多义词的问题。所以ELMO本身是个根据当前上下文对word embedding动态调整的思路。
- ELMO采用了典型的两阶段过程:第一个阶段是利用语言模型进行预训练;第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中,这种方法称为 “Feature-based Pre-Training”。
- ELMo的网络结构:ELMo的网络结构如下图所示:
- ELMo在下游任务中的使用:ELMo在下游任务QA问题中的使用如下图所示:
- ELMo的优点:(1) 能够学习到词汇用法的复杂性,例如语法、语义等。
(2) 解决了多义词问题,能够学习不同上下文情况下的词汇多义性。
(3) 普适性强,应用在多个领域的效果都不错,例如,语义关系判断,分类任务,阅读理解等多个领域。 - ELMo的缺陷:(1) 选择的特征抽取器 LSTM 不如 Transformer 提取特征的能力强。
(2) ELMO采取双向拼接这种融合特征的能力可能比Bert一体化的融合特征方式弱。(这一点只是推断,并没有实验证明)
3.2 实践
- 哈工大的多语言版本:https://github.com/HIT-SCIR/ELMoForManyLangs
- 官方:pip install allennnlp,需要 python3.6。
4. GPT (Generative Pre-Training)
- 论文:Improving Language Understanding by Generative Pre-Training
- 使用的特征抽取器:Transformer。
- 采用两阶段过程:第一个阶段是利用语言模型进行预训练,第二阶段通过Fine-tuning的模式解决下游任务。
- 预训练过程中的语言模型目标任务:根据单词 W i W_i Wi 的上文 (context-before)预测单词 W i W_i Wi。
- GPT的网络结构:GPT的网络结构如下图所示:
- GPT在下游任务中的使用:下游任务使用GPT需要先将下游任务的网络结构改造成和GPT的结构一样,然后利用第一步预训练好的参数初始化GPT的网络结构,接着再使用手头任务训练这个GPT网络,对网络参数进行Fine-tuning,使得这个网络更适合解决手头的问题。对于不同类型的任务改造成GPT网络结构,只需要在输入部分施工即可,GPT论文给的改造施工图如下所示:
- GPT的缺陷:(1) 没有考虑下文 (context-after),即将单向语言模型改成双向语言模型,效果会更好。对GPT的进一步改进详见BERT篇。