论文:Learned in Translation: Contextualized Word Vectors
Cove(麦卡恩等人,2017年),是上下文词向量(Contextual Word Vectors)的缩写,是一种由机器翻译领域中的Seq2Seq + Attention模型的Encoder学习得到的word embedding。与传统的word embedding不同,CoVe单词表示是整个输入句子的函数。
NMT回顾
神经机器翻译( NMT )模型由标准的双层双向LSTM构成的编码器,和带Attention Module的双层单向LSTM构成的解码器组成。
假设先采用英-德翻译任务进行模型预训练。编码器学习并优化英语单词的embedding,以便将其翻译成德语。一般而言,编码器应该在将单词转换成另一种语言之前捕获该语言相关的高级语义和句法含义,编码器输出用于为各种下游语言任务提供基于上下文化的word embedding。
源语言(英语)中n个单词构成的序列: x=[x1,…,xn]。
目标语言(德语) 中的m单词构成的序列: y=[y1,…,ym]。
源语言单词Glove vector:Glove( x )。
目标语言种word的随机初始化embedding向量: z=[z1,…,zm]。
biLSTM编码器输出的一系列隐状态: h=[h1,…,hn]= biLSTM (Glove( x)),其中ht = [ h→t;h←t ] 正向和反向LSTM输出的隐状态。
带注意力机制的解码器输出的t时刻word的分布: p(yt∣H,y1,…,yt−1),其中H是沿着时间维度构成的隐状态{h}:
解码器的隐状态:s(t) = LSTM([z(t-1); h^(t-1)], s(t-1))
注意力权重:α(t) = softmax(H(W1 s(t) + b1)
经过context-adjusted之后的隐状态: h~(t) = tanh(w2[h⊤α(t);s(t) ] + b2 )
解码器的输出: p(yt∣h,y1,…,yt−1)=softmax(Wout h~(t)+bout )
在下游任务中使用CoVe
NMT编码器输出的隐状态被定义为其他语言任务的上下文向量(context vectors):
CoVe(x)=biLSTM (Glove( x))
原始论文建议将Glove和CoVe结合起来用于问答和分类任务。Glove从全局单词共现的频率中学习,因此它没有编码单词上下文语境信息,而CoVe是通过处理文本序列生成的,能够捕捉单词上下文信息。
v = [Glove( x );CoVe ( x ) ]
给定一个下游任务,我们首先生成输入单词的Glove+ CoVe拼接而成向量,然后将它们作为附加特征馈送到task-specific模型中。
总结: CoVe的局限性是显而易见的:
( 1 ) 预训练受限于翻译模型种可获取的双语数据集数据量的影响;
( 2 ) CoVe对最终性能的贡献受与特定于任务相关的模型体系结构的限制。
随后,ELMO通过无监督的预训练方式克服了问题( 1 ),OpenAI GPT & BERT通过无监督的预训练+task-specific 的有监督的fine-tuning进一步克服了这两个问题。