当前位置: 首页 > news >正文

机器学习:Transformer

Transformer

sequence-to-sequence(seq2seq)

在这里插入图片描述
很大语音没有文本,7000种中超半数没有文字。
在这里插入图片描述
遇到的问题:
在这里插入图片描述
遇到问题时候可以先不管它,先出一个baseline看看效果,后续再进行提升。

tts: 文本转语音,语音合成
目前是两阶段:先用文本转成中文音标,再转成声音信号。
在这里插入图片描述


Seq2seq for chatbot

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

可以将大多数的NLP任务看做是Question Answering任务(QA),QA问题可以用seq2seq解决。定制化的模型比单一模型效果要好一点,但随着大模型的到来,效果可能会越好越好。感兴趣的可以继续学习下面课程。

在这里插入图片描述

Seq2seq for syntactic parsing

在这里插入图片描述


Seq2seq for Multi-label classification

在这里插入图片描述
机器自己决定输出多少个类别。


Seq2seq for object detection

在这里插入图片描述
硬解目标检测问题,输入是图像,输出是文本框及类别

Seq2seq 基本原理

包含两个部件,编码器encoder和译码器decoder
在这里插入图片描述
最早起源于14年,目前成熟结构是transformer结构。

Seq2seq’s Encoder

在这里插入图片描述
encoder的作用是将一个向量编码成另外一个向量,有很多部件都能完成该功能,比如self-attention,RNN,CNN,目前流行的是transformer。

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

block中的过程要更加复杂一点,将block的输出与输入叠加送到下一层,类似于残差结构,然后进行normalizaition,使用的是layer norm, 对每一层计算均值和标准差。

在这里插入图片描述
有很多变体:
在这里插入图片描述
在transformer中,batch normalization表现没有layer normalization表现好,作者又提出了PowerNorm。


Decoder-Autoregressive(AT)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
begin是special token,然后经过softmax得到最大分数的结果“机”, 基于这两个输入输出“器”。以此类推,输入变多,再预测输出。decode的输入是前一个的输出。
在这里插入图片描述
中间有可能识别错误导致输出变错,但是会继续往下传下去。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将decoder中间状态遮盖起来后,encoder和decoder是差不多,只是multi-head上面加了mask。

在这里插入图片描述
之前的self-attention得到的时候需要考虑所有的信息。现在变成masked-self-attention, 就是不能考虑右边的信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为什么要加masked,是计算a2时候不知道a3,a4…,没法考虑右边的信息。
在这里插入图片描述
另外不知道输出的正确长度。
在这里插入图片描述
在这里插入图片描述
增加一个stop token 让其不一直无限推理下去。

在这里插入图片描述

Decoder-Non-autoregressive(NAT)

在这里插入图片描述

NAT不知道什么时候停,有两种方式:

  • 训练一个长度分类器
  • 直接输出,如果遇到end就忽略后续的结果

好处就是并行化,能一下子输出结果,比较能够控制输出的长度,但实际应用上一般而言NAT的效果比AT的效果要差,原因是Multi-modality。

Cross attention

在这里插入图片描述
encoder和decoder连接,通过cross attention进行连接
在这里插入图片描述
kv来自encoder,q来自decoder。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


Train

在这里插入图片描述
每次decoder产生中文字时候做了一次分类问题。
在这里插入图片描述
每一个输出都会有cross entropy,所有的cross entropy的总和最小。
end也会参与计算。
在这里插入图片描述
输入的时候是给的正确答案,teacher forcing,正确答案当作decoder的输入。

Tips

Copy Mechanism

  • char-bot
    在这里插入图片描述
  • summarization
    在这里插入图片描述
    在这里插入图片描述

Guided Attention

在这里插入图片描述
可以通过monotonic attention等方式避免上述这种问题。

Beam Search

在这里插入图片描述
每次选最大的是贪心的方式,如红色所示;但是如果走绿色的是最优的方式。
可以用beam search方法找到一个不是完全精准的解决方法。
在这里插入图片描述
beam search有时候是有用的,有时候是无用的。可以加一些随机性在decoder里面。
tts的时候,decoder中加一点noise,可能效果会变好。模型训练好后,测试的时候也要加noise。
Accept that nothing is perfect, true beauty lies in the cracks of imperfection.

optimizing Evaluation Metrics

在这里插入图片描述
blue score不好计算,遇到无法优化的时候,使用reinforcement learning(RL)硬来训练。
在这里插入图片描述
给一些错误的输入。
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/28969.html

相关文章:

  • pytorch-模型构建,参数访问,模型存取API接口,对比学习
  • javaEE 初阶 — 数据链路层中的以太网数据帧
  • 泼辣修图Polarr5.11.4 版,让你的创意无限延伸
  • leetcode打卡-深度优先遍历和广度优先遍历
  • 【0177】Linux中POSIX信号量实现机制
  • 跳表--C++实现
  • c#:System.Text.Json 的使用一
  • kaggle数据集下载当中所遇到的问题
  • TEX:高阶用法
  • UML 类图
  • 项目实战典型案例1——redis只管存不管删除 让失效时间删除的问题
  • @RequestParam和@PathVariable的用法与区别
  • 【大数据 AI 人工智能】数据科学家必学的 9 个核心机器学习算法
  • IronPDF for .NET 2023.2.4 Crack
  • 3.4-前端的10个问题
  • 开发手册——一、编程规约_9.其他
  • 23.3.4打卡 AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)A~E
  • Gem5模拟器,一些运行的小tips(十一)
  • 【JAVA】List接口
  • Hbase RegionServer的核心模块
  • 【Java开发】JUC进阶 01:Lock锁详解
  • 关于登录校验的解决方案以及原理(回顾知识点)--项目开发那点事(自问自答版本)
  • 【数据结构】邻接矩阵和邻接图的遍历
  • 设计跳表(动态设置节点高度)
  • 基于神经辐射场(Neural Radiance Fileds, NeRF)的三维重建- 简介(1)
  • 【AI面试】NMS 与 Soft NMS 的辨析
  • 一文让你彻底理解Linux内核多线程(互斥锁、条件变量、读写锁、自旋锁、信号量)
  • 利用python写一个gui小公举--环境搭建
  • 英飞凌Tricore实战系列02_ENDINIT属性看门狗原理及应用
  • Java Number类