Transformer的学习

文章目录

  • Transformer
    • 1.了解Seq2Seq任务
    • 2.Transformer 整体架构
    • 3.Encoder的运作方式
    • 4.Decoder的运作方式
    • 5.AT 与 NAT
    • 6.Encoder 和 Decoder 之间的互动
    • 7.Training

Transformer

1.了解Seq2Seq任务

NLP 的问题,都可以看做是 QA(Question Answering)的问题,QA 的问题可以看做是 Sequence to Sequence 的问题。

Sequence to Sequence 是一个常见的任务类型,例如:语音识别、语音翻译(语音辨识)、机器翻译、Chatbot、Text-to-Speech (TTS) Synthesis(文本到语音合成)、语法分析、多标签分类、目标检测等等。

image-20231214174439817

image-20231215151943187

Sequence to Sequence 任务可以由各种序列模型执行,其中 RNN 模型是经典的用于序列数据的模型,而随着 Transformer 的出现和成功,它已经在许多序列任务中取代了传统的RNN架构。

Transformer 实际上就是一个关于 Seq2Seq 的 model


2.Transformer 整体架构

image-20231215155457110

整体架构分为两部分:Encoder 与 Decoder

3.Encoder的运作方式

Encoder 做的就是输入一个Vector sequence,输出一个Vector sequence.

Alt

Encoder的运作方式如下所示:

Encoder 里面是由多个 Block 组成的,经过多个 Block 的堆叠,最后得到一个Vector sequence.

image-20231215160756468

每个 Block 所做的事情如下:对于输入的每一个 Vector sequence,首先通过 Multi-Head Attention 得到输出 a a a,然后通过残差连接得到 a + b a+b a+b,之后通过 Layer Norm 得到正则化后的Vector sequence,接着送到 Fully Connection layer,同样使用残差连接并使用 Layer Norm 得到 Encoder 的输出。

Alt

4.Decoder的运作方式

Decoder 可以分为:Decoder-Autoregressive(AT) 与 Decoder-Non-autoregressive(NAT),在transformer中使用的是 Decoder-Autoressive.

Decoder 做了什么?

  • Decoder 部分首先输入一个 START,经过 Decoder 并且使用 Softmax 就会得到一个概率分布,然后对这个概率分布使用 max 得到概率最大的那个值(也就是one-hot编码)。

Alt

  • 紧接着,将得到的输出作为输入,送入 Decoder ,不断的迭代这个过程,就得到了最后的输出。

Alt

在 Decoder 中用了一个 Masked Multi-Head Attention.

Alt

Masked Self-atttention 每次一个 vector 在输出的时候,不可以看右边的部分,也就是说在产生 b 1 b^1 b1 的时候不能在考虑 a 2 , a 3 , a 4 a^2,a^3,a^4 a2,a3,a4,产生 b 2 b^2 b2 的时候不能考虑 a 3 , a 4 a^3,a^4 a3,a4,产生 b 3 b^3 b3 的时候不能考虑 a 4 a^4 a4 ,产生 b 4 b^4 b4 的时候就可以考虑全部的信息了。

Alt

具体细节如下图所示:

Alt

目前的这个 Decoder 运作机制不知道它应该什么时候停下来。

为了让其停下来,所以要有一个END的标记。

image-20231215102329600

通过这个 END 的标记来让模型停下来。

5.AT 与 NAT

image-20231215103750514

AT Decoder 传入的是一个 START,然后一个一个的进行输出。NAT Decoder 直接传入多个 START,同时输出。

NAT好处:平行化,一个步骤产生出完整的句子,可以控制输出的长度。(怎么控制?可能会有一个 classifier 来决定输出的长度;或者输入很多个 START,那么就会输出很多个输出,忽略 END 之后的输出)

6.Encoder 和 Decoder 之间的互动

Alt

Encoder 和 Decoder 之间的互动是通过 Cross attention 机制进行互动的。主要过程就是将 Decoder 中通过第一个 Masked Multi-Head Attention 以及 Add 与 Norm 后的 vector sequence 与 encoder 输出中的所有 vector sequence 进行 qkv 的计算。计算流程见下图:

①第一个输出的计算

image-20231215110035112

②第二个输出的计算

image-20231215110055526

7.Training

image-20231215111338358

在decoder输入的时候,要输入正确的答案(Teacher Forcing技术,使用真实的标签作为输入)

把正确答案 Ground truth 给模型,让其与 distribution 进行 cross entropy,每一个输出有一个cross entropy,将这些 cross entropy 求和,进行梯度下降,求解最好的参数,希望 decoder 的输出跟正确答案越接近越好。


参考链接:

【强烈推荐!台大李宏毅自注意力机制和Transformer详解!】 https://www.bilibili.com/video/BV1v3411r78R/?p=3&share_source=copy_web&vd_source=a36f62f9fcd2efea97449039538032fa

😃😃😃

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

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

相关文章

字符串——OJ题

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、字符串相加1、题目讲解2、思路讲解3、代码实现 二、仅仅反转字母1、题目讲解2、思路讲解3…

Java报错-Non-terminating decimal expansion; no exact representable decimal result

1. 背景 在使用 BigDecimal 的 divide() 对两个数相除时,报了如题的错误。 public class Test {public static void main(String[] args) {BigDecimal b1 new BigDecimal(1);BigDecimal b2 new BigDecimal(3);System.out.println(b1.divide(b2)); // Sys…

最新AI绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】: sparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的…

动态内存管理,malloc和calloc以及realloc函数用法

目录 一.malloc函数的介绍 malloc的用法 举个例子 注意点 浅谈数据结构里的动态分配空间 二.calloc函数的介绍 三.realloc函数的介绍 四.柔性数组的介绍 为什么有些时候动态内存函数头文件是malloc.h,有些时候却是stdlib.h 一.malloc函数的介绍 malloc其实就是动态开辟…

linux内核使用ppm图片开机

什么是ppm图片 PPM(Portable Pixmap)是一种用于存储图像的文件格式。PPM图像文件以二进制或ASCII文本形式存储,并且是一种简单的、可移植的图像格式。PPM格式最初由Jef Poskanzer于1986年创建,并经过了多次扩展和修改。 PPM图像…

Appium 图像识别技术 OpenCV

在我们做App自动化测试的时候,会发现很多场景下元素没有id、content-desc、text等等属性,并且有可能也会碰到由于开发采用的是自定义View,View中的元素也无法识别到,很多的自动化测试框架对此类场景束手无策。Appium在V1.9.0中有给…

【AI美图】第02期效果图,AI人工智能全自动绘画,美图欣赏

今天给大家献上一组最新提示词 参照图生成图像 依据参照图生成新的图像需要掌握一些技巧,以下是一些可能有用的技巧: 观察参照图:在开始生成新图像之前,仔细观察参照图是非常重要的。你需要了解图像的布局、颜色、线条、细节等…

基于SSM的图书馆预约座位系统的设计与实现(部署+源码+LW)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SSM的图书馆预约座位…

十六、YARN和MapReduce配置

1、部署前提 (1)配置前提 已经配置好Hadoop集群。 配置内容: (2)部署说明 (3)集群规划 2、修改配置文件 MapReduce (1)修改mapred-env.sh配置文件 export JAVA_HOM…

初识JVM底层知识,一文读懂JVM知识文集。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

高并发如何实现单用户信息查询接口

高并发如何实现单用户信息查询接口 故事情节 产品:小李,有个单用户信息查询的功能,需要你实现一下小李:这还不简单,两分钟我给你实现两分钟过去…小李:欧克了,部署上线了运维:哪个…

【1】自动化测试环境配置(ARM服务器)

想要从事 or 了解自动化测试开发、装备开发的小伙伴,本专栏内容将从0到1学习如何针对ARM服务器产品进行自动化测试平台的搭建,包括:测试界面的实现(GUI)、测试项的功能实现(压力测试、接口测试、版本更新&a…