词向量:ELMo

ELMo(Embedding from Language Models),出自NAACL 2018的一篇论文"Deep contextualized word representations"。ELMo的精髓提现在以下三个方面:

  • Contextual:The representation for each word depends on the entire context in which it is used.

  • Deep:The word representations combine all layers of a deep pre-trained neural network.

  • Character based:ELMo representations are purely character based, allowing the network to use morphological clues to form robust representations for out-of-vocabulary tokens unseen in training.

前面我们介绍过Word2Vec和GloVe,他们都有一个共性:语言模型训练完成后,每个词的向量表示就定下来了。不管下游任务是什么场景,词向量都是这个。这种方式有一个很明显的缺陷,没办法根据具体的上下文场景区分多义词

ELMo较前两者最大的进步是能够根据上下文区分多义词。其思想是:先训练语言模型得到一个初步的词向量,这时的词向量也是混合多种词义的。在实际使用过程中,再根据具体的上下文来做调整,经过调整后的词向量更能表示当前上下文的含义,从而解决多义词的问题。所以现在看来,ELMo是根据当前上下文对词向量动态调整的策略

ELMo分两个阶段:第一阶段是通过语言模型进行预训练;第二阶段是在做下游任务时,从预训练的网络中提取对应词的网络各层词向量作为新特征补充到任务中。

下图展示了预训练的过程(网络“盗图”)。


1.png

预训练网络结构采用两层双向LSTM。上图左边的前向双层LSTM表示正向编码器,输入的是从左到右顺序的除预测词W_{i}外的上文;右边的后向双层LSTM表示反向编码器,输入的是从右到左逆序的除预测词W_{i}外的下文。

给定N个token(t_{1}, t_{2},...,t_{N}),前向计算通过给定前面的k-1个位置的token序列计算第k个token的出现概率:
p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{1}, t_{2}, \ldots, t_{k-1}\right)
后向计算类似:
p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{k+1}, t_{k+2}, \ldots, t_{N}\right)
biLM训练目标就是最大化:
\sum_{k=1}^{N}\left(\log p\left(t_{k} | t_{1}, \ldots, t_{k-1} ; \Theta_{x}, \vec{\Theta}_{L S T M}, \Theta_{s}\right)+\log p\left(t_{k} | t_{k+1}, \ldots, t_{N} ; \Theta_{x}, \overleftarrow \Theta_{L S T M}, \Theta_{s}\right)\right)
ELMo对于每个token通过一个L层的biLM计算出2L+1个表示:
R_{k}=\left\{x_{k}^{L M}, \vec{h}_{k, j}^{L M}, \overleftarrow h_{k, j}^{L M} | j=1, \ldots, L\right\}=\left\{h_{k, j}^{L M} | j=0, \ldots, L\right\}
其中x_{k}^{L M}是对token进行直接编码的结果(字符级CNN编码),\mathbf{h}_{k, 0}^{L M}代表x_{k}^{L M}h_{k, j}^{L M}=\left[\vec{h}_{k, j}^{L M} ; \begin{array}{l}{L M} \\ {k, j}\end{array}\right],是每个biLSTM层输出的结果。

实际应用中将ELMo中所有层的输出R压缩成单个向量,E L M o_{k}=E\left(R_{k} ; \Theta_{\epsilon}\right),最简单的压缩方法是取最上层的结果作为token的表示:
E\left(R_{k}\right)=h_{k, L}^{L M}
更通用的做法是通过一些参数来联合各层的信息:
E L M o_{k}^{t a s k}=E\left(R_{k} ; \Theta^{t a s k}\right)=\gamma^{t a s k} \sum_{j=0}^{L} s_{j}^{t a s k} h_{k, j}^{L M}
其中\mathbf{s}^{\operatorname{task}}是softmax的结果,\gamma是任务相关的scale参数。\gamma在不同任务中取不同的值效果会有较大差异,在SQuAD中设置为0.01取得的效果要好于设置为1时。

文中提到的预训练的语言模型用了两层biLM,对token进行上下文无关的CNN字符级编码,然后将三层的输出scale到1024维,最后对每个token输出3个1024维的向量表示。之所以将三层的输出都作为token的embedding表示是因为实验已经证实不同层的输出信息对于不同任务的作用是不同的,也就是不同层的输出捕捉到的token的信息是不同的。

网络结构确定好,利用大量语料做语言模型任务就能预训练好这个网络。在训练好的网络上输入一个新句子,句中每个词都能得到对应的三个Embedding:最低层是词的word embedding;上一层是第一层双向LSTM中对应词位置的Embedding,这层编码词的句法信息更多一些;再上一层是第二层LSTM中对应单词位置的Embedding,这层编码单词的语义信息更多一些

前面说那么多都是预训练阶段,下面说一说ELMo在下游任务中的使用。拿QA问题举例,对于问句Q,先把Q作为前面预训练好的网络的输入,句中每个词能获得对应的三个embedding,然后根据权重(可以通过学习得到)来把它们合成一个embedding。然后把整合后的embedding作为句子Q在自己任务中对应词的输入即可。在QA问题中,对于回答句子A的处理也是类似。

因为ELMo给下游提供的是每个词的特征形式,所以这一类预训练的方法被称为"Feature-based Pre-Training"。

下图是ELMo在一些NLP任务中的表现:


2.png

可以看到在使用ELMo后,各个任务都有不同程度性能提升。上图中的NLP任务覆盖范围比较广,包含句子语义关系判断,分类任务,阅读理解等多个领域。这也说明ELMo的适用范围比较广,普适性强

参考:
https://allennlp.org/elmo
https://arxiv.org/pdf/1802.05365.pdf
https://www.jiqizhixin.com/articles/2018-12-10-8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355