E. 深度学习 --- Transformer

E. 深度学习 — Transformer

概述

  • 应用场景
    • Language
    • Image
    • 语音生成
    • 笔迹
    • 语音生成
    • 图片字幕生成

Seq2Seq(Transformer)

  • 概述
    • seq2seq属于encoder-decoder结构的一种,这里看看常见的encoder-decoder结构,基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。
      • encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码。
      • decoder则负责根据语义向量生成指定的序列,这个过程也称为解码
  • 应用场景
    • 语音识别
    • 机器翻译
    • 语音翻译
    • 语音合成
    • 聊天机器人
    • QA
      • 输入:问题、文章
      • 输出:答案
    • 文法解析:论文 Grammar as a Foreign Language
    • 文章摘要:百万篇文章
  • Encoder
    • 步骤
      • 将source文本的词序列先经过embedding层转化成向量
      • 然后输入到一个RNN结构(可以是普通RNN,LSTM,GRU等等)中
  • Decoder
    • 输出
      • Autoregressive:不定长输出
      • Non AutoRegressive:定长输出,可以并行化
        • Fertility
          • Fixed targets
            • Labels comes from external aligner
            • Observing attention weights in auto-regressive models
          • Fine-tune
            • Updating fertility classifier with REINFORCE
        • Sequence -level knowledge distillation
          • Teacher:Autoregressive model,Student:Non-autoregressive model
          • 通过 Teacher 模型构建语料库
          • Teacher’s greedy decode output as student’s training target
        • Nosiy Parallel Decoding(NPD)
          • 优化
            • Iterative Refinement
            • Insertion-based
            • Insert + Delete
            • CTC-based
        • Mask-Predict:借鉴 BERT
        • KERMIT:Kontextuell Encoder Representations Made by Insertion Transformations
          • 优化
            • Multilingual KERMIT
        • Levenshtein Transformer
        • Imputer(CTC + Mask-Predict)
    • 训练方法
      • teacher forcing:根据标准答案decode
      • free running:根据上一步的输出作为下一步输入的decode
        • 缺点
          • 误差爆炸(exposure bias):没有任何的引导,一开始会完全是瞎预测,正所谓“一步错,步步错”,而且越错越离谱,这样会导致训练时的累积损失太大
    • 预测
      • Greedy Decoding
        • 概述:每一步,都预测出概率最大的那个词,然后输入给下一步
        • 缺点:每一步最优,不一定全局最优
      • Beam Search
        • 概述:每一步,多选几个作为候选,最后综合考虑,选出最优的组合。
        • 步骤
          • 首先,我们需要设定一个候选集的大小beam size=k;
          • 每一步的开始,我们从每个当前输入对应的所有可能输出,计算每一条路的“序列得分”;
          • 保留“序列得分”最大的k个作为下一步的输入;
          • 不断重复上述过程,直至结束,选择“序列得分”最大的那个序列作为最终结果。
            • 对每个序列的得分,除以序列的长度。根据调整后的结果来选择best one。
        • 优化
          • 数值下溢
            • 数值下溢就是数值太小了,导致电脑的浮点表示不能精确地储存,因此在实践中,我们不会最大化这个乘积,而是取值。
          • 倾向于短的翻译
            • 目标函数进行归一化,得到归一化的对数似然目标函数由于会有多个分支,所以很有可能我们会遇到多个标识,由于分支较多,如果等每一个分支都遇到才停的话,可能耗时太久,因此一般我们会设定一些规则,比如已经走了T步,或者已经积累了N条已完成的句子,就终止beam search过程。
          • 超参数竖宽B的调节
            • B越大
              • 优点是:可考虑的选择越多,能找到的句子越好
              • 缺点是:计算代价更大,速度越慢,内存消耗越大
            • B越小
              • 优点是:计算代价小,速度快,内存占用越小
              • 缺点是:可考虑的选择变少,结果没那么好
  • Tips
    • Copy Mechanism
      • 聊天机器人
      • 文章摘要
    • Guided Attention
    • exposure bias
      • scheduled sampling:在训练的时候,加入一些错误的数据,增加模型的容错性
        • Tips: 可以先用正确的数据训练,等模型稳定之后,再加入一些错误的数据
  • 评估
    • 优点
    • 缺点
      • 实践上:有些rnn轻易可以解决的问题transformer没做到,比如复制string,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding)
      • 理论上:transformers非computationally universal(图灵完备),(我认为)因为无法实现“while”循环

Attention机制

  • 概述
    • 注意力机制,是一种将模型的注意力放在当前翻译单词上的一种机制。例如翻译 “I have a cat”,翻译到 “我” 时,要将注意力放在源句子的 “I” 上,翻译到 “猫” 时要将注意力放在源句子的 “cat” 上。
  • 问题
    • 对于比较长的句子,很难用一个定长的向量 c 完全表示其意义。
    • RNN 存在长序列梯度消失的问题,只使用最后一个神经元得到的向量 c 效果不理想。
    • 与人类的注意力方式不同,即人类在阅读文章的时候,会把注意力放在当前的句子上。
  • 优化点
    • Attention机制通过在每个时间输入不同的c来解决这个问题
  • attention计算步骤
    • 第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等
    • 第二步一般是使用一个softmax函数对这些权重进行归一化
    • 最后将权重和相应的键值value进行加权求和得到最后的attention
  • Block
    • self-attention: q、k、v
    • 全链接神经网络
  • 评估
    • 优点
      • 在输出序列与输入序列“顺序”不同的情况下表现较好,如翻译、阅读理解
      • 相比RNN可以编码更长的序列信息
    • 缺点
      • 对序列顺序不敏感
      • 通常和RNN结合使用,不能并行化

Transformer的变种

  • Sandwich Transformer
    • 核心区别
      • 拆开block,打乱self-attention和全连接神经网络的顺序
    • 特点
      • self-attention 尽量靠前
      • 全连接神经网络尽量靠后
      • 例如:ssssfsfsffff
  • Universal Transformer
    • 概述
      • Universal Transformer对transformer的缺点进行了改进,在问答、语言模型、翻译等任务上都有更好的效果,成为了新的seq2seq state-of-the-art模型。
    • 区别
      • 主要的改动就是加上了循环,但不是时间上的循环,而是depth的循环。
      • Weight sharing:归纳偏置是关于目标函数的假设,CNN和RNN分别假设spatial translation invariace和time translation invariance,体现为CNN卷积核在空间上的权重共享和RNN单元在时间上的权重共享,所以universal transformer也增加了这种假设,使recurrent机制中的权重共享,在增加了模型表达力的同时更加接近rnn的inductive bias。
      • Conditional computation:通过加入ACT控制模型的计算次数,比固定depth的universal transformer取得了更好的结果
  • Residual Shuffle Exchange Network
  • Reformer
    • 概述
      • 解决的问题 — 占用内存过大
        • 由于激活需要被存储并用于反向传播,有着 N 层的模型的大小比单层大了 N 倍;
        • 由于中间的全连接层的深度 d_ff 通常远大于注意力激活层的深度 d_model,因此需要占用很大的内存;
        • 在长度为 L 的序列上的 attention 的计算和时间复杂度是 O(L2),所以即使是一个有 64K 字符的序列就会耗尽 GPU 的内存。
      • 解决的思路
        • 可逆层(Reversible layer),在整个模型中启用单个副本,所以 N factor 就消失了;
        • 在前馈层(feed-forward layer)分开激活和分块处理,消除 d_ff factor,节省前馈层的内存;
        • 基于局部敏感哈希(locality-sensitive hashing,LSH)的近似注意力计算,让注意力层的 O(L2) 因子替代 O(L) 因子,实现在长序列上的操作。
  • Longformer
    • 解决的问题
      • 优化O(n^2)

其他

  • 预训练seq2seq
    • MASS
    • BART
  • Skip Thougtht
    • 目标:跟句子一个Embeddings
    • 模型
      • 输入:一个sentence
      • 输出:next sentence
  • Skip Thougtht
    • 目标:跟句子一个Embeddings
    • 思想
      • 如果是两个相邻的句子,Embeddings越相近约好
  • T5(Transfer Text-to-Text Transformer)
  • C4(Colossal Clean Crawled Corpus)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值