自然语言处理 - ELMo

在这里插入图片描述


1. 提出背景

在2013年的word2vec及2014年的GloVe的工作中,每个词对应一个vector,对于多义词无能为力。ELMo的工作对于此,提出了一个较好的解决方案。不同于以往的一个词对应一个向量,是固定的。在ELMo世界里,预训练好的模型不再只是向量对应关系,而是一个训练好的模型。使用时,将一句话或一段话输入模型,模型会根据上下文来推断每个词对应的词向量。这样做之后明显的好处之一就是对于多义词,可以结合前后语境对多义词进行理解。比如apple,可以根据前后文语境理解为公司或水果。

ELMO,是Embedding from Language Model的缩写( Peters等人,2018年),通过无监督预训练多层双向LSTM模型来学习带上下文信息的(Contextualized)单词表示。

ELMo在中文上确实会比word2vec好很多, 使用中文语料测试成功了, 使用200m新闻语料训练语言模型, 然后在对该新闻语料进行分类(10类)。最终测试结果使用ELMO比word2vector高近2个百分点, 而且这还是没有对ELMO优化的情况下。

2.简介

与传统词向量用固定向量的表示不同,ELMo是一种动态词向量表示方法,其最终训练得到一个语言模型。当需要文本s中某个词w的词向量表示时,ELMo通过将s作为输入,得到文本的向量表示,继而获得词w在文本s语境下的词向量表示。
ELMo认为,通过联合bi-LSTM的各层内部状态来表示词向量可以表达词语更为丰富的信息,模型底层隐状态表达词语的语法信息(eg:适用于词性标注任务),而上层隐状态则捕捉了词语的语义信息(eg:适用于词义消歧任务)。
大量实验证明,ELMo在多种NLP任务中都获得极好的效果;另外,前人的工作以及论文最后对ELMo与GoVe的分析则证明,词向量的深度表示比仅利用LSTM的最后一层的效果更好。

3.ELMo原理

在这里插入图片描述
他们使用的是一个双向的LSTM语言模型,由一个前向和一个后向语言模型构成,目标函数就是取这两个方向语言模型的最大似然。

前向LSTM结构:

双向语言模型是ELMO的基础。模型的输入是由n个token构成的序列 ( x 1 , . . . , x n ) (x_1,...,x_n) (x1,...,xn),语言模型根据历史的序列预测 x 1 . . . . . x i − 1 x_1.....x_{i-1} x1.....xi1下一个token x i x_i xi的概率。在正向计过程中,根据历史的序列预测 x 1 . . . . . x i − 1 x_1.....x_{i-1} x1.....xi1下一个token x i x_i xi的概率
在这里插入图片描述
反向LSTM结构:

在反向计算过程中,根据历史之后的序列 x i + 1 . . . . . x n x_{i+1}.....x_n xi+1.....xn预测第i个token x i x_i xi的概率,在这里插入图片描述
最大似然函数:

该模型的loss是最小化两个方向的负对数似然( =最大化真实单词的对数似然) :
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
因此ELMo的基本输入单元为句子,每个词没有固定的词向量,是根据词的上下文环境来动态产生当前词的词向量,常见的场景可以较好解决一词多义的问题,这一点跟word2vec与glove等通用词向量模型是不同的。

参考https://blog.csdn.net/zwqjoy/article/details/101296941

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值