ELMO,BERT——让机器读懂文字

引言

 上一节word embedding,主要讲的是Prediction based思想。本小白只知道nlp中有Bert和Transformer模型,所以先看个究竟,也不求完全理解。视频开头说明主题:如何让机器明白人类的词汇,one-hot是不行的,使用word embedding代替,用embedding表示一个词汇。
 原来Bert的t是from Transformers,所以讲bert要先看transformers,所以中途不得已插多一章。

word represent

 问题:(1)一词多义,bank可以表示银行,也可以表示河堤。但同一个词只能embedding同一个向量,这默认bank只有一个语义,显然不够好。(2)根据不同时间,不同地方,一个词有不同的意思,我们很难去统一一个词的语义。
在这里插入图片描述
李宏毅专业术语:
word token:一段文本形式的词,由边界划分。(词所在句子的位置)
word type:词的拼写。
以前每个word type一个embedding,或者固定对应多个embedding;现在是每个word token都有自己的embedding。
在这里插入图片描述
如:上面4个bank有各自的embedding,根据上下文决定。 此方法称为:Contextualized Word Embedding下面将讲述如何实现这个思想。

我的疑问:如果是对type固定一个embedding,我们只需输入词就得到向量,一次前向编码。那么对于token的embedding也是如此吗?答:如果要做到一词多义,我们就要每个token都结合句子,所以不能输入词就直接得到向量。
下面将介绍如何实现一词多义。

ELMO–Embeddings from Language Model

在这里插入图片描述
 只需要一大堆语句,输入前一个词来预测后一个词,把中间的某一层特征向量作为embedding。3个“退了”由于前文的影响,embedding不一样。
 加上双向RNN,前向和后向的embedding拼接起来;加上deep RNN后模型变成下图,像cv中的特征金字塔FPN,究竟用那一层的embedding呢?
在这里插入图片描述
全部都要: 假设现在有两层(深度)LSTM,输出的embedding分别是h1、h2,原则上是将两个相加,但两个的比重我们不可能人工加上去。(1.不知道哪一层重要,2.深度往往不止两层)。方法: 让网络自己去学习两个embedding相加的权重α1、α2。训练: 根据任务(翻译,问答)去训练。
在这里插入图片描述

解释一下右边的图:LSTM指不同层的α值,下面SRL、Coref...指不同的学习任务,具体我肯定不知道。为了说明Coref、SQuAD这两个任务的α值差异较大,其余都相近。

题外话:  梁同学向我介绍过什么是注意力机制,不知道是否准确,就是让网络学习权值α。拟人一点就是,网络应该把注意力放到哪一层embedding上。

Bidirectional Encoder Representations from Transformers (bert)

bert = encoder of transformer
在这里插入图片描述对于中文,词是无尽的,字是有限的,所以通常将字变成one-hot进行embedding。

训练的方法:

  1. Masked LM:一个句子中每个词以15%几率被掩盖掉,bert会输出每个词的词向量。被掩盖的词对应的词向量输入能力弱的分类器,要预测成功,要求bert的模型精准地embedding。(如果两个词在同一个地方没有违和感,那他们的embedding是相似的。)
    在这里插入图片描述
  2. Next Sentence Prediction:对于两个句子,我们判断是否应该接在一起。[SEP]用来表示两个句子的边界;[CLS]用来表示两个句子的信息,信息传入二分类器,判断是否有衔接关系。
    在这里插入图片描述
    方法一和方法二是都会使用的

如何使用bert:

  • 把bert用来embedding,作用于ELMO一样,得到词向量后再输入到其他任务的模型。
  • 直接用bert完成某些任务:
      case1:语义分析(积极or消极),文章分类
    在这里插入图片描述
    classifier的参数随机初始化,从头训练;Bert有训练好的参数,只需微调

 case2:slot filling,对每个词进行粗略分类。
在这里插入图片描述
 case3:给一个前提——sentence1,让机器判断假设——sentence2是True/False/unknown(三分类)。学会推理。
在这里插入图片描述
 case4:Extraction-based question answer,给机器一篇文章,机器会提取关键词,希望机器能回答某些问题。(前提条件:答案在文章中出现过) 。输入:文章D,问题Q。输出:答案的起始位置s,结束位置e。
  模型需要从头训练两个与bert输出同样维度的向量(下图橙色和蓝色),两个向量与文章的词向量作点积,目的是找与文章相关性高的词。
在这里插入图片描述
如果e<s,则机器表示unknown。
在这里插入图片描述


bert的变形:Enhanced Representation through Knowledge Integration,ERNIE。为中文而设计,因为Masked LM是针对每个字(character)。对于一个四字词,虽然挡住一个词,但很容易根据其他3个猜出来。所以ERNIE依然针对每个字输入,但就挡住一个词。

在这里插入图片描述

Generative Pre——Training(GPT)

类似Transformer的decoder。输入一个词预测下一个词,预测的词在下一个time step和已经预测的词一起作为输入。所以有时间序列。
    

参数较大,可以zero-shot,可以写作。
就这样吧,反正用不到。

总结

64分钟…
Transformer和bert原理都明白了,注意,只是原理。至于任务和代码还是一无所知,所以下一步很明确了——找代码看!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值