NLP教程笔记:ELMo 一词多义

NLP教程

TF_IDF
词向量
句向量
Seq2Seq 语言生成模型
CNN的语言模型
语言模型的注意力
Transformer 将注意力发挥到极致
ELMo 一词多义
GPT 单向语言模型
BERT 双向语言模型
NLP模型的多种应用


怎么了

不管是图片识别还是自然语言处理,模型都朝着越来越臃肿,越来越大的方向发展。 每训练一个大的模型,都会消耗掉数小时甚至数天的时间。我们并不希望浪费太多的时间在训练上,所以拿到一个预训练模型就十分重要了。 基于预训练模型,我们能够用较少的模型,较快的速度得到一个适合于我们自己数据的新模型,而且这个模型效果也不会很差。

所以预训练的核心价值就是:

  1. 手头只有小数据集,也能得到一个好模型;
  2. 训练速度大大提升,不用从零开始训练。

词向量有问题

传统使用skip gram 或者 CBOW 训练出来的词向量, 在ELMo看起来,是有问题的。ELMo的全称是 Embeddings from Language Models,他的主要目标是:找出词语放在句子中的意思

具体展开,ELMo还是想用一个向量来表达词语,不过这个词语的向量会包含上下文的信息。

想要让模型给出的词向量拥有上下文信息。我们就在词向量中加上从前后文来的信息就好了,这就是ELMo最核心的思想。 那么ELMo是怎样训练,为什么这样训练又可以拿到前后文信息呢?

如果学习过RNN的同学,其实你很容易理解下面的内容,ELMo对你来说,只是另一种双向RNN架构。ELMo里有两个RNN(LSTM), 一个从前往后看句子,一个从后往前看句子,每一个词的向量表达,就是下面这几个信息的累积:

  1. 从前往后的前文信息;
  2. 从后往前的后文信息;
  3. 当前词语的词向量信息。

在这里插入图片描述
没错!就这么简单。在预训练模型中,EMLo应该是最简单的种类之一了。有了这些加入了前后文信息的词向量,模型就能提供这个词在句子中的意思了。

如何训练

一般来说,我们希望预训练模型都是在无监督的条件下被训练的。所谓NLP的无监督学习,实际上就是拿着网上一大堆论坛,wiki等文本, 用它们的前文预测后文,或者后文预测前文,或者两个一起混合预测。不管是 BERT还是GPT, 都是这样的方式,因为我们网上的无标签文本还是特别多的。 如果模型能理解人类在网上说话的方式,那么这个模型就学习到了人类语言的内涵。
在这里插入图片描述
ELMo的训练,就是上面这种模式。它的前向LSTM预测后文的信息,后向LSTM预测前文的信息。训练一个顺序阅读者+一个逆序阅读者,在下游任务的时候, 分别让顺序阅读者和逆序阅读者,提供他们从不同角度看到的信息。这就是ELMo的训练和使用方法。

学习案例

这次的案例我们就上些真实点的数据,这样才好判断这种体量大点的预训练模型的优势在哪。 所以我挑选到了学术界上常用的 Microsoft Research Paraphrase Corpus (MRPC) 数据集来测试训练过程。 这个数据集的内容大概是用这种形式组织的。
在这里插入图片描述
每行有两句话 #1 String#2 String, 如果他们是语义相同的话,Quality 为1,反之为0。这份数据集可以做两件事:

  1. 两句合起来训练文本匹配;
  2. 两句拆开单独对待,理解人类语言,学一个语言模型。

这个教学中,我们在训练ELMo理解人类语言的时候,用的是无监督的方法训练第2种模式。让ELMo通读人类语言,然后在大数据中寻找人类说话的规律。 学完之后,模型就有对词语和句子有一定的理解能力了。

代码

这次我们主要需要构建一个正向的多层LSTM模型,一个反向的LSTM模型,在构建正向LSTM的时候,我相信大家应该都没什么问题,但是在做反向的时候,有一些小技巧可以说明一下。 另外,让模型做预测的时候也要稍微注意下,每次用上文预测的是紧接着的下一个词。

代码的训练模式和我们之前写的那些都非常接近,为了让你将重点放在学习模型上,我在utils.py 将数据处理相关的代码封装进了utils.MRPCSingle()这里,现在我们只需要直接调用就能自动下载数据并处理数据了。

def train(model, data, step):
    for t in range(step):
        seqs = data.sample(BATCH_SIZE)      # 拿数据
        loss, (fo, bo) = model.step(seqs)   # 练数据,这里我让它返回了loss和前后向预测的logits

开启训练后,你就能看到类似这样的结果。

step:  0 | time: 1.52 | loss: 9.463
| tgt:  <GO> hovan , a resident of trumbull , conn . , had worked as a bus driver since <NUM> and had no prior criminal record . <SEP>
| f_prd:  atsb knew knew competition competition competition competition markup floors festivals merit merit merit korkuc korkuc korkuc fingerprinting grade grade car car nicky roush thoughts roush gain gain
| b_prd:  stockwell stockwell stockwell mta mta mta mta mta mta mta tornadoes tornadoes tornadoes router router halliburton halliburton talked engaged ona db2 life rashid rashid ursel ursel


step:  80 | time: 8.37 | loss: 7.975
| tgt:  <GO> the winner of the williams-mauresmo match will play the winner of justine henin-hardenne vs. chanda rubin . <SEP>
| f_prd:  the , , , , , , , , , , , , , , , , , ,
| b_prd:  , , , , , , , , , , , , , , , , , . <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP> <SEP>

...

step:  9840 | time: 8.35 | loss: 0.570
| tgt:  <GO> montgomery was one of the first places to enact such a law , but many places , including new york city , now ban smoking in bars . <SEP>
| f_prd:  the was being of the american places , enact such a law , but he places , including the york city , where ban smoking in bars . <SEP>
| b_prd:  while montgomery <GO> one at the <NUM> places to enact such a <NUM> , but <NUM> places , including new york <NUM> , air bans smoking in <NUM> .


step:  9920 | time: 8.36 | loss: 0.543
| tgt:  <GO> of personal vehicles , <NUM> percent are cars or station wagons , <NUM> percent vans or suvs , <NUM> percent light trucks . <SEP>
| f_prd:  the the vehicle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值