NLP知识普及 —— Encoder-Decoder 和 Seq2Seq

Encoder-Decoder

  • Encoder-Decoder、Seq2Seq 以及他们的升级方案Attention
  • Encoder-Decoder 算是一个通用的框架,在这个框架下可以使用不同的算法来解决不同的任务
    在这里插入图片描述
  • Encoder-Decoder 这个框架很好的诠释了机器学习的核心思路:将现实问题转化为数学问题,通过求解数学问题,从而解决现实问题!
  • Encoder:将现实问题转化为数学问题
    在这里插入图片描述
  • Decoder:求解数学问题,并转化为现实世界的解决方案
    在这里插入图片描述
  • PS:① 不论输入和输出的长度是什么,中间的「向量 c」 长度都是固定的(这也是它的缺陷,下文会详细说明)② 根据不同的任务可以选择不同的编码器和解码器(可以是一个 RNN ,但通常是其变种 LSTM 或者 GRU)

Seq2Seq

  • 输入一个序列,输出另一个序列。这种结构最重要的地方在于输入序列和输出序列的长度是可变的
    在这里插入图片描述
  • Seq2Seq的动机:一般的DL再图像分类上都很不错,他们的输入输出得是固定的长度!而机器翻译语音识别等方面都是长度未知的!
  • Seq2Seq 属于 Encoder-Decoder 的大范畴 // Seq2Seq 更强调目的,Encoder-Decoder 更强调方法
  • 应用:文字-文字;音频-文字;图片-文字
  • 机器翻译:Sequence to Sequence Learning with Neural Networks 2014
  • 语音识别:A Comparison of Sequence-to-Sequence Models for Speech Recognition 2017
  • 图像描述生成:Sequence to Sequence – Video to Text 2015

Attention

  • Encoder-Decoder 缺点就是压缩到了固定的长度,当输入信息太长时,会丢失掉一些信息。
  • Attention 机制就是为了解决「信息过长,信息丢失」的问题
  • Attention 模型的特点是 Eecoder 不再将整个输入序列编码为固定长度的「中间向量 C」 ,而是编码成一个向量的序列。引入了 Attention 的 Encoder-Decoder 模型如下图:
    在这里插入图片描述
  • Attention本质:核心逻辑就是「从关注全部到关注重点」,将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息
  • Attention 机制最早是在计算机视觉里应用的,随后在 NLP 领域也开始应用了,真正发扬光大是在 NLP 领域,因为 2018 年 BERT 和 GPT 的效果出奇的好,进而走红。而 Transformer 和 Attention 这些核心开始被大家重点关注。
    在这里插入图片描述

Attention的3大优点

  • 参数少 / 速度快 / 效果好 (这还写个啥…就无敌了呗…)
  • 参数少:模型复杂度跟 CNN、RNN 相比,复杂度更小,参数也更少。所以对算力的要求也就更小。
  • 速度快:Attention 解决了 RNN 不能并行计算的问题。Attention机制每一步计算不依赖于上一步的计算结果,因此可以和CNN一样并行处理。
  • 效果好:Attention 是挑重点,就算文本比较长,也能从中间抓住重点,不丢失重要的信息。下图红色的预期就是被挑出来的重点。

Attention的原理

  • Attention可以脱离机器翻译的框架!
    在这里插入图片描述

  • 第一步: query 和 key 进行相似度计算,得到权值

  • 第二步:将权值进行归一化,得到直接可用的权重

  • 第三步:将权重和 value 进行加权求和

  • 总结四个字:“带权求和”

Attention的类型

  • Soft Attention、Hard Attention、静态Attention、动态Attention、Self Attention 等等
    在这里插入图片描述
  • 计算区域分类标准:① Soft Attention,这是比较常见的Attention方式,对所有key求权重概率,每个key都有一个对应的权重,是一种全局的计算方式(也可以叫Global Attention)。这种方式比较理性,参考了所有key的内容,再进行加权。但是计算量可能会比较大一些。② Hard Attention,这种方式是直接精准定位到某个key,其余key就都不管了,相当于这个key的概率是1,其余key的概率全部是0。因此这种对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响。另一方面,因为不可导,一般需要用强化学习的方法进行训练。(或者使用gumbel softmax之类的)③ Local Attention,这种方式其实是以上两种方式的一个折中,对一个窗口区域进行计算。先用Hard方式定位到某个地方,以这个点为中心可以得到一个窗口区域,在这个小区域内用Soft方式来算Attention。
  • 所用信息分类标准:所用信息包括内部信息和外部信息,内部信息指的是原文本身的信息,而外部信息指的是除原文以外的额外信息。General Attention / Local Attention
  • 结构层次分类标准:单层Attention / 多层Attention / 多头Attention
  • 模型方面:Attention一般用在CNN和LSTM上,也可以直接进行纯Attention计算。① CNN+Attention ② CNN+Attention ③ 纯Attention
    • CNN+Attention:卷积操作可以看成提取重要特征的操作,多层cnv扩大视野;池化层如maxpooling提取最大数值的特征,像hard attention的思想!(注意这里还是NLP的cnn+attention)
      • Attention-Based BCNN-1 / Attention-Based BCNN-2 / 在pooling层做attention,代替max pooling。比如Attention pooling
    • LSTM+Attention:LSTM内部有Gate机制,其中input gate选择哪些当前信息进行输入,forget gate选择遗忘哪些过去信息,我觉得这算是一定程度的Attention了,而且号称可以解决长期依赖问题,实际上LSTM需要一步一步去捕捉序列信息,在长文本上的表现是会随着step增加而慢慢衰减,难以保留全部的有用信息。
      • ① 直接使用最后的hidden state(可能会损失一定的前文信息,难以表达全文)/ ② 对所有step下的hidden state进行等权平均(对所有step一视同仁)/ ③ Attention机制,对所有step的hidden state进行加权,把注意力集中到整段文本中比较重要的hidden state信息
    • 纯Attention:Attention is all you need 2017
  • 相似度计算方法:① 点乘 就是向量积 ② 矩阵相乘 ③ 余弦相似度 ④ concatenate ⑤ 多层感知器
  • Pytorch - seq2seq参考

BERT

  • Bidirectional Encoder Representation from Transformers
  • BERT是双向Transformer的Encoder,因为decoder是不能获要预测的信息的
  • 模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。
  • 从现在的大趋势来看,使用某种模型预训练一个语言模型看起来是一种比较靠谱的方法。从之前AI2的 ELMo,到 OpenAI的fine-tune transformer,再到Google的这个BERT,全都是对预训练的语言模型的应用。BERT这个模型与其它两个不同的是
  • 在训练双向语言模型时以减小的概率把少量的词替成了Mask或者另一个随机的词。我个人感觉这个目的在于使模型被迫增加对上下文的记忆。至于这个概率,我猜是Jacob拍脑袋随便设的。
  • 增加了一个预测下一句的loss。这个看起来就比较新奇了。
  • BERT模型具有以下两个特点:
    • 1 是这个模型非常的深,12层,并不宽(wide),中间层只有1024,而之前的Transformer模型中间层有2048。这似乎又印证了计算机图像处理的一个观点——深而窄 比 浅而宽 的模型更好。
    • 2 MLM(Masked Language Model),同时利用左侧和右侧的词语,这个在ELMo上已经出现了,绝对不是原创。其次,对于Mask(遮挡)在语言模型上的应用,已经被Ziang Xie提出了(我很有幸的也参与到了这篇论文中):[1703.02573] Data Noising as Smoothing in Neural Network Language Models。这也是篇巨星云集的论文:Sida Wang,Jiwei Li(香侬科技的创始人兼CEO兼史上发文最多的NLP学者),Andrew Ng,Dan Jurafsky都是Coauthor。但很可惜的是他们没有关注到这篇论文。用这篇论文的方法去做Masking,相信BRET的能力说不定还会有提升。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值