2022最新版-李宏毅机器学习深度学习课程-P32 Transformer

一、 seq2seq

 1. 含义

输入一个序列,机器输出另一个序列,输出序列长度由机器决定。

  • 文本翻译:文本至文本;  
  • 语音识别:语音至文本;  
  • 语音合成:文本至语音;  
  • 聊天机器人:语音至语音。

2. 应用

自然语言处理(NLP问题),不过seq2seq有时候不一定是最佳的解决方法。

语音辨识

输入是声音讯号的一串的vector,输出是语音辨识的结果,也就是输出的这段声音讯号,所对应的文字⇒输出的长度由机器自己决定

机器翻译

机器读一个语言的句子,输出另外一个语言的句子,

输入的文字的长度是N,输出的句子的长度是N',那N跟N'之间的关系,也要由机器自己来决定

语音翻译

把他听到的英文的声音讯号翻译成中文文字

(动机:世界上有很多语言,他根本连文字都没有,不能用1.+2.串接)

训练数据:乡土剧语音+字幕

新词:硬train一发

语音合成Text-to-Speech (TTS) Synthesis

输入文字 输出声音讯号

Chatbot

输入输出都是文字

利用人的对话进行训练

Question Answering (QA)

很多natural language processing的任务,都可以想成是question answering,QA的任务。QA的问题,就可以用Seq2Seq model来解

⇒具体来说,Seq2Seq model输入的就是有问题跟文章把它接在一起,输出就是问题的答案

⇒输入一个文字序列→输出一个文字序列

  • 翻译
  • 摘要
  • 情感分析

▶️对多数NLP的任务,或对多数的语音相关的任务而言,往往為这些任务特制化模型,你会得到更好的结果

https://speech.ee.ntu.edu.tw/~hylee/dlhlp/2020-spring.html

Syntactic Parsing句法分析(文法剖析)

grammar as a Foreign Language

例如,给机器一段文字,Deep learning is very powerful,机器要做的事情是产生一个文法的剖析树 。

输出结果(剖析树)告诉我们,deep 加 learning 合起来是一个名词短语,very 加 powerful 合起来是一个形容词短语,形容词短语加 is 以后会变成一个动词短语,动词短语加名词片语合起来是一个句子

文法剖析要做的事情就是产生这样子的一个 Syntactic tree,所以在用 deep learning 解决 文法剖析的任务里面,输入是一段文字(一个Sequence),输出是一个树状的结构,(可以把他看作是一个Sequence,一个代表句法分析树的序列)

multi-label classification

(多标签分类问题:同一个对象可以属于多个class

区分:

  • multi-class classification:为样本从数个 class 中选择某一个 class(多对一)
  • multi-label classification:同一个样本可以属于多个 class (一对多)

难点:每篇文章对应几个 class 不好确定 ⇒ seq2seq 决定要输出几个

Object Detection 物体检测

图像识别领域

3.  Seq2seq 实现方式

seq2seq's model = Encoder(编码器) + Decoder(解码器)

这两部分可以使用RNN或transformer实现,seq2seq主要是为了解决输入和输出长度不确定的情况。

Encoder:将输入(文字、语音、视频等)编码为单个向量,这个向量可以看成是全部输入的 抽象表示

Decoder:接受 encoder 输出的向量,逐步解码,一次输出一个结果,每次输出会影响下一次的输出,开头加入 <BOS> 表示开始解码, <EOS> 表示输出结束。

①   Encoder

用途:输入一排向量(序列),输出另外一排同样长度的向量(序列)

可以使用:Self-attention,RNN,CNN

 A、encoder 就是通过多层 block(模块),将输入转换成向量。每一个 block 都包含若干层( self-attention 和 fully connect 等网络结构 ),每个 block 输入一排向量,输出相同数量的一排向量。

B、block 的内部细节构成如下(在 input 送入 block 之前,需先进行 positional encoding,这个知识点在 self - attention 中有提过)。

C 、 它考虑所有输入向量后的输出向量,其中 b 是原来的 input 向量,经过残差网络(residual connection:把 a vector 加上它的 b  input  vector 作为 output )和标准化后,送到全连接神经网络 FC ,由于在 FC network 中也有 residual 的架构,因此需要再经过一组 残差网络 + 标准化 后得到输出。(注意:这里的标准化是 layer normalization 而不是 batch normalization)。这个输出才是 residual network 里一个 block 的输出。

batch normalization:对 不同的 example 不同 feature 的 同一个 dimention 去计算平均值 mean 和标准差 standard deviation。
layer normalization:对 同一个 example  同一个 feature的 不同 dimention 去计算平均值 mean 和标准差 standard deviation。
To Learn more

1.transformer的encoder变式

如:Residual与Normalization的顺序调换

2.为什么是layer Norm:Power Norm

Power Norm:Rethinking Batch Normalization In Transformers,

https://arxiv.org/abs/2003.07845

 ②  Decoder

decoder主要有两种:AT(autoregressive)与 NAT(non-autoregressive),Decoder 要做的事情:产生最终的输出结果

A、autoregressive(AT)decoder :以语音辨识为例

1. 向 Decoder 输入 Encoder 产生的向量

2. 在 Decoder 可能产生的文字库里多加一个标识字符 BEGIN ,它代表 “ Decoder 开始识别” 来提醒机器(BOS: begin of sentence)

NLP 的问题中,每一个 Token 用一个 One-Hot 的 Vector 来表示,其中正确的类别标识是 1,其他都是 0,其中 BEGIN 也是用 One-Hot Vector 来表示

3. 经过 softmax 之后,Decoder 会输出一个和 输入的 Vocabulary Size 一样的向量长度的 向量结果。对比已知文字库,找到相似度最高的字符就是最终输出的字符。(这里“机”字 就是这个 Decoder 的第一个输出)

Vocabulary Size:取决于你输出的单位。比如输出中文,则size是中文方块字的数目。

4. 再把上一步的输出当做下一个的输入。(在本例中,第二次 Decoder 把 “机” 当做是 Decoder 的 Input,在上一步 “机” 是 Decoder 的输出结果)经过一系列相同的操作后我们会得到第二次 Decoder 的输出,再作为第三次的输入,继续输出后续的文字,以此类推……

 5.  机器自己决定输出的长度:一个特别的标识符 ”END” 代表工作结束

 总结: 除了中间的部分,Encoder 跟 Decoder 并没有太大的差别。最后我们可以再做一个 Softmax,可以通过计算输出的概率分布与 Ground Truth 之间的 交叉熵(Cross Entropy)并求梯度实现优化,交叉熵的值越小越好。

 缺点:如果Decoder 看到错误的输入,让 Decoder 产生错误的输出并被代入到下一步 Decoder 工作的输入中,会会造成 Error Propagation(一步错,步步错)⇒  解决:Teacher Forcing技术 (但是测试的时候 显然没有正确答案可以给 Decoder 看)

由于 Teacher Forcing的存在,训练跟测试的情景不一致。Decoder 在训练的时候永远只看过正确的东西,但是在测试的时候,仍然会导致一步错、步步错。

解决:给 Decoder 的输入加一些错误的东西  ⇒ Scheduled Sampling(但是也会一定程度损害平行化的能力)

B、Non-autoregressive (NAT) decoder

 ① 特点:NAT 不是依次有序进行 decoder 工作并挨个输出,而是一次性在输入时赋予 整个句子 一整排的 “ BEGIN ” 标识,把整个句子的 decoder 结果一次性都输出

 ② 思路:如何确定BEGIN的个数:

  1. 另外训练一个 Classifier,输入 Encoder 的 Input vector,输出是一个数字(代表 Decoder 应该要输出的长度)
  2. 给它若干个 BEGIN 的 Token,比如输出句子的最大长度不超过 300,就给 input  300 个 BEGIN token,然后就会相应地一次性输出 300 个字(遇到有输出 END 时表示这个句子输出结束),但是可能会比较耗费内存空间

③ 好处:

  1. 并行化。NAT 的 Decoder 不管 input 句子的长度大小,都是一次性输出完整的句子结果,所以在执行速度上 NAT 的 Decoder 比 AT 的 Decoder 要快
  2. 容易控制输出长度。

④ 应用

 常用在语音合成,例如:利用其中一个 决定 NAT 的 Decoder 应该输出的长度的 Classifier,我们可以通过设置这个输出长度的大小以调整语音的速度。(如果要让输出的语音讲快一点,就把 Classifier 输出的长度数值 除以 N,它讲话速度就变成 N 倍速;同理,如果想要合成的语音变为慢速,就把 Classifier 输出的长度数值乘 N 倍)

⑤ 缺点:虽然 NAT 看起来有很多优点(尤其是并行化),但是 NAT 的 Decoder 实际上 Performance 往往都不如 AT 的 Decoder。为什么NAT 没有 AT 实际效果好  ⇒ Multi-Modality   参考链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/176878.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HiQPdf Library for .NET - HTML to PDF Crack

HiQPdf Library for .NET - HTML 到 PDF 转换器 .NET Core&#xff0c;用于 .NET 的 HiQPdf HTML 到 PDF 转换器 &#xff1a;HiQPdf HTML to PDF Library for .NET C# 和 HTML to PDF .NET Core 为您提供了一个现代、快速、灵活且强大的工具&#xff0c;只需几行代码即可创建复…

CSS标点符号换行问题

最近遇到一个奇怪的现象,元素中中文文本正常显示,但是加了一堆符号后中文文本居然换行了. div{width: 200px;border: 1px solid blue;word-break: break-all;} <div>文本</div>经过研究发现&#xff0c;因为标点符号不允许出现在行首和行尾&#xff0c;连带着符号…

echarts 画散点图, x周,y周在指定位置标志一下

文章目录 echarts 画散点图&#xff0c; x周&#xff0c;y周在指定位置标志一下示例一例子二示例三 echarts 画散点图&#xff0c; x周&#xff0c;y周在指定位置标志一下 示例一 let scatterData {data: [[[-0.2, -0.6],[0.4, 0.3],[0.1, 0.4],[0.3, 0.5],[0.09, 0.1],[0.7,…

安卓现代化开发系列——从生命周期到Lifecycle

由于安卓已经诞生快二十载&#xff0c;其最初的开发思想与现代的开发思想已经大相径庭&#xff0c;特别是Jetpack库诞生之后&#xff0c;项目中存在着新老思想混杂的情况&#xff0c;让许多的新手老手都措手不及&#xff0c;项目大步向屎山迈进。为了解决这个问题&#xff0c;开…

NI USB-4431对标国产化4路同步采集卡解决方案

102.4 kS/s , 100 dB , 0.8 Hz AC/DC耦合&#xff0c;4输入/单输出声音与振动设备 USB-4431专为声音和振动应用而设计。输入通道集成了用于加速度计和麦克风的集成电路压电式(IEPE)信号调理功能。四个USB-4431的输入通道可同步对输入信号进行数字化。模拟输出(AO)通道是激励响…

成集云 | 钉钉集成用友T费用报销付款接口 |解决方案

源系统成集云目标系统 方案介绍 钉钉是一款免费沟通和协同的多端平台&#xff0c;提供PC版、Web版和手机版&#xff0c;支持手机和电脑间文件互传。钉钉帮助中国企业通过系统化的解决方案&#xff08;微应用&#xff09;&#xff0c;提升中国企业的沟通和协同效率。应用场景包…

Springboot 集成 Seata

Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的分布式解决方案。Seata官网 1.找到适合的Seata版本 参考&#xff1a;SpringCloudAlibaba S…

Spring Cloud Gateway + Knife4j 4.3 实现微服务网关聚合接口文档

目录 前言Spring Cloud 整合 Knife4jpom.xmlapplication.ymlSwaggerConfig.java访问单服务接口文档 Spring Cloud Gateway 网关聚合pom.xmlapplication.yml访问网关聚合接口文档 接口测试登录认证获取登录用户信息 结语源码 前言 youlai-mall 开源微服务商城新版本基于 Spring…

右击文件或者文件夹使用vscode打开

平常我们在打开项目时&#xff0c;经常会需要快捷打开方式&#xff0c;直接使右键使用编辑器打开&#xff0c;但是有时在安装时忘记了选择 “Add “Open with Code” action to Windows Explorer file context menu” 在Windows资源管理器文件上下文菜单中添加“用代码打开”操…

ubuntu PX4 vscode stlink debug设置

硬件 stlink holybro debug板 pixhawk4 安装openocd 官方文档&#xff0c;但是第一步安装建议从源码安装&#xff0c;bug少很多 github链接 编译安装&#xff0c;参考 ./bootstrap (when building from the git repository)./configure [options]makesudo make install安装后…

服务器带宽忽然暴增,不停的触发告警

问题&#xff1a; 线上环境&#xff0c;服务器的外网下行带宽达到某个阈值&#xff0c;触发告警&#xff0c;查了下服务器的带宽监控信息&#xff0c;是从某个时间开始突然串上去的&#xff0c;然后监控图形非常有规律&#xff0c;都是每秒达到顶峰后&#xff0c;又立马下去了…

IDEA初步入门

1 安装 现在的系统更迭很快&#xff0c;很多软件都只支持win10 和 11了&#xff0c;但我们过时党还在用win7. 所以就必须找到合适的版本。在windows 7 64位系统下&#xff0c;可以使用IDEA 2020.1.4版本。 在Jetbrain官方下&#xff0c;找到历史版本&#xff0c;找到windows版…

php收发邮件的多种方法?

1、添加扩展&#xff1a; # 第一种&#xff1a; composer require php-imap/php-imap # 第二种&#xff1a; composer require phpmailer/phpmailer2、这里采用第二种方式&#xff1a; <?php declare(strict_types1);namespace App\Controller\v1\email;use App\Controll…

怎样利用 AI 大模型,辅助研发管理与效能提升?

AI 大模型已经逐渐渗透到各行各业的应用场景中&#xff0c;在软件研发领域也不例外。在软件研发领域&#xff0c;从需求分析到软件设计&#xff0c;从软件开发到测试&#xff0c;以及最后发布上线&#xff0c;AI 在各个环节都发挥着重要作用。10 月 21 日&#xff0c;思码逸首席…

计算机从内存中读取数组元素

在计算机中&#xff0c;我们可以把内存看成是一些排列好的格子&#xff0c;每个格子对应一个内存地址&#xff0c;那么数据会分散的存储在不同的格子中&#xff1a; 对于数组&#xff0c;计算机会在内存中为其申请一段连续的空间&#xff0c;并且会记下索引为0处的内存地址&…

图像特征Vol.1:计算机视觉特征度量|第二弹:【统计区域度量】

目录 一、前言二、统计区域度量2.1&#xff1a;图像矩特征2.1.1&#xff1a;原始矩/几何矩2.1.2&#xff1a;中心距2.1.3&#xff1a;归一化的中心矩2.1.4&#xff1a;不变矩——Hu矩2.1.5&#xff1a;OpenCv实现矩特征及其应用 2.2&#xff1a;点度量特征2.3&#xff1a;全局直…

Jmeter之JSR223

一、JSR223组件 JSR是Java Specification Requests的缩写,意思是Java规范提案。JSR已成为Java界的一个重要标准. JSR223其实包含了有好几种组件,但是其用法都是一致的,并且都是执行一段代码&#xff0c;主要分类如下&#xff1a; JSR223 PreProcessor JSR223 Timer JSR223 S…

【二叉树经典题目】

根据二叉树创建字符串 本题的关键在于什么情况要省略括号&#xff0c;什么情况不能省略&#xff1a; 左右为空可以省略括号 左不为空&#xff0c;右为空可以省略括号左为空,右不为空不能省略括号 class Solution { public://1.左右为空可以省略括号//2.左不为空&#xff0c;右…

初识HTML超文本标记语言

文章目录 前端简介引入前端三剑客什么是HTML&#xff1f;超文本传输协议前戏HTTP超文本传输协议1.什么是HTTP协议2.四大特性3.数据格式4.响应状态码 基于HTTP协议搭建HTMLHTML简介HTML文档结构head常见标签1.meta 定义网页源信息(很多配置)2.style内部支持编写CSS代码3.link引入…

SpringCloud(二) Eureka注册中心的使用

在SpringCloud(一)中,我们学会了使用RestTemplate进行远程调用,但是在调用user-service时候需要在order-service中发送http请求,请求中需要书写对应微服务的ip和端口号,十分不方便,如果此时有多个user-service实例的话,就不知道调用哪个了(除非每次调用的时候都对ip和端口号进行…