NLP基础笔记——ELMo

预训练词向量(Word2Vec和GloVe)通常只编码词汇间的关系,对上下文信息考虑不足,且无法处理一词多义问题。如“bank”一词,根据上下文语境不同,可能表示“银行”,也可能表示“岸边”,还有如“苹果”一词在不同的上下文中的含义是不同的,却对应相同的词向量,这样显然是不合理的。

ELMo也是基于大量文本训练深层双向LSTM网络结构的语言模型。ELMo在词向量的学习中考虑深层网络不同层的信息,并加入到单词的最终Embedding表示中。ELMo这种使用预训练语言模型的词向量作为特征输入到下游目标任务中,被称为Feature-based方法。

另一种方法是微调(Fine-tuning)。GPT、BERT和后续的预训练工作都属于这一范畴,直接在深层Transformer网络上进行语言模型训练,收敛后针对下游目标任务进行微调,不需要再为目标任务设计Task-specific网络从头训练。

ELMo

关于ELMo的若干问题整理记录 https://zhuanlan.zhihu.com/p/82602015(6问)

1.基本原理是什么?

第一阶段:利用语言模型进行预训练

左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外的上文Context-before;右端的逆向双层LSTM代表反方向编码器,输入的是从右到左的逆序的句子下文Context-after;每个编码器的深度都是两层LSTM叠加。

使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子​ ,句子中每个单词都能得到对应的三个Embedding:

  • 最底层是单词的Word Embedding
  • 往上走是第一层双向LSTM中对应单词位置的Embedding,这层编码单词的句法信息更多一些;
  • 再往上走是第二层LSTM中对应单词位置的Embedding,这层编码单词的语义信息更多一些。

ELMO的预训练过程不仅仅学会单词的Word Embedding,还学会了一个双层双向的LSTM网络结构,而这两者后面都有用。

第二阶段:下游任务利用预训练好的embedding

以QA问题为例,展示下游任务如何利用预训练好的embedding。

  • 对于问句X,我们可以先将句子X作为预训练好的ELMO网络的输入,这样句子X中每个单词在ELMO网络中都能获得对应的三个Embedding,
  • 之后给予这三个Embedding中的每一个Embedding一个权重a,这个权重可以学习得来,根据各自权重累加求和,将三个Embedding整合成一个。
  • 然后将整合后的这个Embedding作为X句在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用。

对于下游任务QA中的回答句子Y来说也是如此处理。因为ELMO给下游提供的是每个单词的特征形式,所以这一类预训练的方法被称为“Feature-based Pre-Training”。

2.训练过程是什么样的?损失函数是什么?

3.训练好了之后如何使用?

4.ELMo的优点是什么?ELMo为什么有效?

5.ELMo为什么能够达到区分多义词的效果?

6.ELMo把三种不同的向量叠加的意义是什么?这样做能达到什么样的效果?

1 、模型原理与架构

原文链接:Deep contextualized word representations

论文中使用的预训练BiLM在Jozefowicz et al.中的CNN-BIG-LSTM基础上做了修改,最终模型为2层biLSTM(4096 units, 512 dimension projections),并在第一层和第二层之间增加了残差连接。同时使用CNN和两层Highway对token进行字符级的上下文无关编码。使得模型最终对每个token输出三层向量表示。

2、 模型的优缺点

优点

  1. 效果好,在大部分任务上都较传统模型有提升。实验证实ELMo相比于词向量,可以更好地捕捉到语法和语义层面的信息。
  2. 传统的预训练词向量只能提供一层表征,而且词汇量受到限制。ELMo所提供的是character-level的表征,对词汇量没有限制。

缺点

速度较慢,对每个token编码都要通过language model计算得出。

3、 适用任务

  • Question Answering
  • Textual entailment
  • Semantic role labeling
  • Coreference resolution
  • Named entity extraction
  • Sentiment analysis



参考博客:
https://zhuanlan.zhihu.com/p/42618178
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值