ELMo、GPT、BERT

为何预训练语言模型能够达到如此好的效果?主要有如下几点:

  • word2vec等词向量模型训练出来的都是静态的词向量,即同一个词,在任何的上下文当中,其向量表征是相同的,显然,这样的一种词向量是无法体现一个词在不同语境中的不同含义的。
  • 我们采用预训练模型来代替词向量的关键在于,其能够更具上下文的不同,对上下文中的词提取符合其语境的词表征,该词表征向量为一个动态向量,即不同上下文输入预训练模型后,同一个词的词表征向量在两个上下文中的词表征是不同的。

预训练任务简介

总的来说,预训练模型包括两大类:自回归语言模型自编码语言模型

自回归语言模型

通过给定文本的上文,对当前字进行预测,训练过程要求对数似然函数最大化,即:
在这里插入图片描述
代表模型:ELMo/GPT1.0/GPT2.0/XLNet
优点:该模型对文本序列联合概率的密度估计进行建模,使得该模型更适用于一些生成类的NLP任务,因为这些任务在生成内容的时候就是从左到右的,这和自回归的模式天然匹配。
缺点:联合概率是按照文本序列从左至右进行计算的,因此无法得到包含上下文信息的双向特征表征;

ELMO

ELMo为一个典型的自回归预训练模型,其包括两个独立的单向LSTM实现的单向语言模型进行自回归预训练,不使用双向的LSTM进行编码的原因正是因为在预训练任务中,双向模型将提前看到上下文表征而对预测结果造成影响。因此,ELMo在本质上还是属于一个单向的语言模型,因为其只在一个方向上进行编码表征,只是将其拼接了而已

细节

  • 引入双向语言模型,其实是2个单向语言模型(前向和后向)的集成,这样做的原因在上一节已经解释过了,用共享词向量来进行预训练;
  • 通过保存预训练好的2层biLSTM,提取每层的词表征用于下游任务;
    在这里插入图片描述

ELMO的训练过程

在这里插入图片描述
在这里插入图片描述

ELMO训练好了之后如何使用

对于下游任务而言,我们需要把所有层的ELMo表征整合为一个单独的向量,最简单的方式是只用最上层的表征,而更一般的,我们采用对所有层的ELMo表征采取加权和的方式进行处理,即:
在这里插入图片描述在这里插入图片描述
得到ELMo表征之后,则需要将其用于下游任务中去,注意,ELMo的微调过程中,并不是严格意义上的微调,预训练模型部分通常是固定的,不参与到后续训练当中。具体的,有以下几种操作方法:
方法一:直接将ELMo表征与词向量拼接,输入到下游任务当中去;
方法二:直接将ELMo表征与下游模型的输出层拼接
另外,还可以在ELMo模型中加入dropout, 以及采用 L2 loss的方法来提升模型。

ELMO为什么可以区分多义词

在ELMo第一阶段训练完成之后,将句子输入模型中在线提取各层embedding的时候,每个单词(token)对应两边LSTM网络的对应节点,那两个节点得到的embedding是动态改变的,会受到上下文单词的影响,周围单词的上下文不同应该会强化某种语义,弱化其它语义,这样就达到区分多义词的效果

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

  1. 一是之前很多方法都只用了最顶层LSTM的hidden state,但是通过实验验证,在很多任务中,将每一层hidden state融合在一起会取得更好的效果;
  2. 二是在上述实验中得到结论,每一层LSTM得到单词的embedding所蕴含的信息是不一样的,因此将所有信息融合起来,会让单词embedding的表达更丰富。

来源

https://ac.nowcoder.com/discuss/260001?type=2
https://www.cnblogs.com/sandwichnlp/p/11947627.html

GPT

生成式的预训练模型,与ELMo不同的是,其采用多层Transformer Decoder作为特征抽取器,并且GPT则只采用Context-before这个单词的上文来进行预测,而抛开了下文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值