要解决的问题
用神经网络处理语言,第一步通常是把每个词变成一个向量。常见做法是查一张固定的词向量表:同一个词无论在哪个句子里出现,拿到的向量都一样。语言并不是这样运作的,词的含义会随句子改变,词的语法角色也会改变。本文提出一种深层语境化的词表示(deep contextualised word representation),它既刻画词的使用中复杂的特性(如句法和语义),也刻画这些用法如何随语言环境而变化[1]。论文题为《Deep contextualized word representations》,2018 年 2 月 15 日首次提交到 arXiv,编号 1802.05365[1];第一作者是 Matthew E. Peters,全文共六位作者[1]。
怎么做的
这里的词向量不是查表查出来的,而是一个在大规模文本语料上预训练的深层双向语言模型(bidirectional language model)内部状态的函数,由训练学得[1]。语言模型是一类在纯文本上训练的网络,它给真实出现的文本打出高概率,为此必须吸收大量关于词语如何组合的规律。「双向」指网络从两个方向读入文本,因此某个位置上的状态既能利用它前面的内容,也能利用它后面的内容。要给句子中某个词做表示,就把整句送进这个预训练网络,取出该位置上的内部状态。由于这个状态依赖整个上下文,同一个词在不同句子里会得到不同的向量,这就是「语境化」的含义。
分析:为什么要暴露深层内部
论文中的分析显示,把预训练网络的深层内部暴露出来至关重要,这让下游模型可以混合不同层的表示[1]。换句话说,有用的信息并不只存在于网络的最终输出里;让下游模型看到中间层,并由它自己决定如何组合这些层,是这套表示效果好的原因之一。这样一来,预训练模型的内部结构就成了要主动利用的东西,而不是一个只取最后一层的黑箱。
结果
作者表明,这些表示可以很容易地加到已有模型上[1]。这样做在六个有挑战的自然语言处理任务上显著提升了当时的最好成绩,其中包括问答(question answering)、文本蕴含(textual entailment)和情感分析(sentiment analysis)[1]。关键在于「加上」:下游系统不需要为每个任务重新设计一套结构,把一个从无标注文本算出来的通用表示当作额外输入接进去,原有模型照常工作即可。
为什么重要
有两点值得注意。其一,这项工作把两件事分开了:一件是从原始文本中学到的语言知识,另一件是从任务标注中学到的具体判断。大规模语料以预训练网络的形式一次性提供语言知识,下游任务直接复用,不必从零开始。其二,它把深层网络内部的各个层当成一种资源。下游模型通过混合多层表示而受益,这说明中间层承载着不同且互补的信息,如何把它们暴露出来本身就是一个需要认真对待的设计选择。对要做一个新语言任务系统的人来说,实际的信息是:一个强的语境化词表示可以借用而不必重造,而它如何接入模型其余部分,与表示本身同样重要。
注释与来源
- Deep contextualized word representationshttps://arxiv.org/abs/1802.05365
引用本页: 深层语境化词表示(ELMo). TellWorld, https://www.tellworld.net/zh/papers/elmo-2018. 更新于 2026-11-07