Transformer实战-系列教程1:Transformer算法解读1

🚩🚩🚩Transformer实战-系列教程总目录

有任何问题欢迎在下面留言

Transformer实战-系列教程1:Transformer算法解读1
Transformer实战-系列教程2:Transformer算法解读2

现在最火的AI内容,chatGPT、视觉大模型、研究课题、项目应用现在都是Transformer大趋势了

名称解释:

  • Transformer:一个基于Encoder-Deocder使用纯注意力机制的基础网络
  • embbeding:词嵌入,将一个单词(或者汉字)转化为一组向量
  • Positional Encoding:位置编码
  • Multi-Head Attention:多头注意力机制
  • Add:残差连接
  • Norm:Normalization,主要分为Batch Normalization和Layer Normalization,一个是对批做归一化,一个是对层做归一化
  • Feed Forward:全连接神经网络,加上激活函数以及Dropout
  • Encoder-Deocder:编码器-解码器,编码器将原始输入转化为特征,解码器将特征转化为输出

1、传统的RNN

在这里插入图片描述
Transformer是基于RNN改进提出的,RNN不同于CNN、MLP是一个需要逐个计算的结构来进行分类回归的任务,它的每一个循环单元不仅仅要接受当前的输入还要接受上一个循环单元的输出,因此它被提出是为了提取带有先后关系、时序信息的特征的。

因此在很长的一段时间,RNN以及RNN的变体LSTM、GRU都被经常用来时间序列分析、文本分析的任务。

如图所示 x 0 x_0 x0经过一个循环单元的计算,得到了 h 0 h_0 h0,而 h 1 h_1 h1 h 0 h_0 h0 x 1 x_1 x1经过一个循环单元的计算得到的结果,当然 h 0 h_0 h0的计算不仅有 x 0 x_0 x0还有一个初始化的h。因此这种计算方式使得 h 1 h_1 h1包含了 x 0 x_0 x0 x 1 x_1 x1的特征, h 2 h_2 h2包含了 x 0 x_0 x0 x 1 x_1 x1 x 2 x_2 x2的特征, h t h_t ht包含了前面所有的特征

2、RNN的局限性

RNN的每一个循环单元的计算,都需要前面的所有循环单元计算结束后才可以进行,比如 h 1 h_1 h1的计算需要等 h 0 h_0 h0计算完成后才可以进行,后面同理。当输入序列比较长的时候,对于前面的信息容易遗忘,比如 h t h_t ht可能已经对 h 0 h_0 h0 h 1 h_1 h1的信息已经包含的较少了(当序列比较长的时候)。还有RNN没有对每一个输入的重要性进行筛选,可能我们最后需要的结果在0到t个输入中,有些比较重要,有些重要性比较低,而有些则根本不重要。

因此可以总结出RNN的三大缺陷:

  1. 不能并行计算,只能串行计算,效率低
  2. 容易遗忘早期信息
  3. 不能计算各个输入信息的重要性

3、Attention与self-Attention

注意力机制就是用来计算各个输入信息的重要性的一种方法,出现过大量的CNN、RNN结合注意力机制去做CV、NLP任务,2017年一篇论文《Attention is all you need》把注意力机制带到了高潮,因为它是一种纯注意力机制的架构,这个架构被命名为Transformer,后面的故事大家都已经很熟悉了。

在这里插入图片描述

所谓的Attention就是让机器学习注意点那些更有价值的信息

比如这两句句话:
The animal didn’t cross the street because it was too tired.
The animal didn’t cross the street because it was too narrow.

如果是这来那个句话对比,很显然,每个词对一句话表达的含义的重要性很显然不同,而且每一个词与每一个词之间的相关性也显然不同,比如第一句话animal和tired的相关性大,第二句话street 和narrow相关性大,因为它们修饰的词都不一样,很显然tired是修饰animal的,narrow是修饰street的。

每个词之间的相关性各不相同,使用Attention将这种相关性计算出来,就被称为Attention机制

每个词之间都存在相关性,那一个词自己与自己之间也是有相关性的,而且这个相关性最大的,考虑了自己与自己之间的关系的Attention被称为self-Attention,自注意力机制。
在这里插入图片描述

  1. 假设这个句话有N个词
  2. 第一个词都与所有的词计算相关性,可以得到N个相关系数
  3. N个相关系数经过softmax可以得到N个权重
  4. N个权重再与所有的词的特征进行重构,得到N个特征
  5. 用这N个特征代替原本第一个词的特征
  6. 第二个词也用同样的方式进行计算
  7. 将原本所有的特征都进行重构

这个权重是怎么计算的呢?肯定是通过学习得到的

4、self-Attention如何计算

在这里插入图片描述

如图所示,计算Thinking与Machines之间的相关性

  1. Thinking和Machines各自embbeding成一个向量(可以是预训练的词嵌入), x 1 x_1 x1 x 2 x_2 x2
  2. x 1 x_1 x1经过 W Q W^Q WQ W K W^K WK W V W^V WV 3组可学习参数,生成3个特征 q 1 q_1 q1 k 1 k_1 k1 v 1 v_1 v1
  3. 同理, X 2 X_2 X2生成 q 2 q_2 q2 k 2 k_2 k2 v 2 v_2 v2
  4. q 1 q_1 q1 q 2 q_2 q2和拼接得到Q,K、V同理,这就是Q(Query)K(Key)V(Value)的来源
  5. q 1 q_1 q1 k 1 k_1 k1内积得到一个值 s 1 s_1 s1 q 1 q_1 q1 k 2 k_2 k2内积也得到一个值 s 2 s_2 s2,这个s表示的是Score分数的意思
  6. s 1 s_1 s1 s 2 s_2 s2都要除以一个数 d k \sqrt{d_k} dk 再经过softmax,得到两个 w 1 w_1 w1 w 2 w_2 w2,这两个权重分别乘以 v 1 v_1 v1 v 2 v_2 v2后再相加,得到 z 1 z_1 z1
  7. 同理 q 2 q_2 q2 k 1 k_1 k1 k 2 k_2 k2也经过这样的计算得到 z 2 z_2 z2 X 1 X_1 X1 X 2 X_2 X2就这样重构成了 z 1 z_1 z1 z 2 z_2 z2

这就是两个特征之间进行一次self-Attention计算的结果,实际任务中不可能只有两个特征相互计算,可能是10个100个等,那么同样也是这样的计算方式,比如 q 1 q_1 q1就要和 k 1 k_1 k1 k 2 k_2 k2、…、 k 100 k_{100} k100计算内积得到100个分数,再除以对应的 d k \sqrt{d_k} dk 后经过softmax得到100个权重,100个权重再分别和 v 1 v_1 v1 v 2 v_2 v2、…、 v 100 v_{100} v100相乘后再相加就得到了 z 1 z_1 z1

其中 d k d_k dk表示的是 q 1 q_1 q1 k 1 k_1 k1这些向量的长度,所有的q、k、v的维度(一般用768比较多)都是一样的

为什么要除以 d k \sqrt{d_k} dk 呢,因为不能让分值随着向量维度的增大而增加

因为 z 1 z_1 z1 z 2 z_2 z2、…、 z n z_{n} zn的计算都是可以同时进行的,所以这种并行的计算方式相比RNN,极大的提高了运行速度,此外也不会产生遗忘早期信息的问题,而经过多次计算损失的训练, W Q W^Q WQ W K W^K WK W V W^V WV 与经过softmax计算的权重都会使得所有的z能够更好的关注在原始输入中( x 1 x_1 x1 x 2 x_2 x2、…、 x n x_{n} xn)与自己相关性比较大的的输入。这完美的解决了RNN存在的3个问题

Transformer实战-系列教程1:Transformer算法解读1
Transformer实战-系列教程2:Transformer算法解读2

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

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

相关文章

2024年【道路运输企业安全生产管理人员】免费试题及道路运输企业安全生产管理人员模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 道路运输企业安全生产管理人员免费试题参考答案及道路运输企业安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及道路运输企业安全生产管理人员操作证已考过的学员汇总,相对有效帮助道路运…

Python||五城P.M.2.5数据分析与可视化_使用华夫图分析各个城市的情况(下)

目录 沈阳市的空气质量 华夫图 柱状图 总结 五城P.M.2.5数据分析与可视化——北京市、上海市、广州市、沈阳市、成都市,使用华夫图和柱状图分析各个城市的情况 沈阳市的空气质量 华夫图 import numpy as np import pandas as pd import matplotlib.pyplot as plt …

网络安全之漏洞扫描

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。这些缺陷、错误或不合理之处可能被有意或无意地利用,从而对一个组织的资产或运行造成不利影响,如信息系统被攻击或控制…

华为数通方向HCIP-DataCom H12-821题库(单选题:401-420)

第401题 R1的配置如图所示,此时在R1查看FIB表时,关于目的网段192.168.1.0/24的下跳是以下哪一项? A、10.0.23.3 B、10.0.12.2 C、10.0.23.2 D、10.0.12.1 【答案】A 【答案解析】 该题目考查的是路由的递归查询和 RIB 以及 FIB 的关系。在 RIB 中,静态路由写的是什么,下…

2阶段提交_3阶段提交(phase-commit)

1. 2PC(两阶段提交) 如上所示是2阶段提交的一个过程,可为什么要进行两阶段提交呢?这里主要来说是将操作事务能力和提交、回滚事务能力分开来做成2阶段,如果不分开会造成什么后果呢: 如果单纯 A 向 B 发送一个请求就以…

AS-V1000 视频监控平台产品介绍:客户端功能介绍(一)

目 录 一、引言 1.1 AS-V1000视频监控平台介绍 1.2平台服务器配置说明 二、软件概述 2.1 客户端软件用途 2.2 客户端功能 三、客户端功能说明 3.1 登陆和主界面 3.1.1登陆界面 3.1.2登陆操作 3.1.3主界面 3.1.4资源树 3.2 视频预览 3.2.1视频预览界面 3.2.…

YGG 为 Axie Infinity: Origins 发布超级任务游戏内训练器,深化对 Ronin 的支持

自 2023 年以来,Ronin 已成为增长最快的游戏区块链。由于 Axie Infinity 和 Pixels 等游戏的持续成功,日活跃用户数量至少增长了 10 倍。在过去的一年里,有超过 120 万个新地址加入,并且,这个数字还在持续增长。 ​Ron…

hbuiderx+uniapp基于Android宠物饲养交流养宠系统 微信小程序3_reqva

3.2 APP需求分析 作为一款宠物饲养管理APP,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更…

基于SpringBoot+Vue的校园资料分享平台(V2.0)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

vivado 运行编译

运行合成 运行定义并配置在合成过程中使用的设计方面。一个合成run定义了以下内容: •AMD设备在合成过程中成为目标 •要应用的约束集 •启动单个或多个合成运行的选项 •控制合成引擎结果的选项 要定义RTL源文件和约束的运行,请执行以下操作&…

MySQL 安装配置 windows

一、下载 去官网MySQL :: MySQL Downloads 下载社区版 然后根据自己的系统选择 直接下载。 二、安装 点击安装程序 这边看样子缺少东西。 去这边下载 Latest supported Visual C Redistributable downloads | Microsoft Learn 然后再一次安装mysql 三、配置 安装完成后&a…

Kotlin-集成SpringBoot+MyBatis+代码生成器

目录 一、相关版本 二、Maven因引入相关依赖 三、SpringBoot配置文件 四、代码生成工具 五、实现用户服务模块案例 1、Controller 2、Service 3、Entity 4、Mapper 5、接口测试 一、相关版本 工具版本Idea2022.3.2Springboot2.7.12MyBatis3.5.3.1MySQL8.0.28JDK1.8 …