Transformer1.0-预热

一.Encoder

        encoder:译为编码器,负责将输入序列压缩成指定长度的向量,这个向量就可以堪称是这个序列的语义。然后可进行编码或特征提取等操作

        在transformer中encoder由6个相同的层组成,每个层包含

  • Multi-Head Self-Attention
  • Position-Wise Feed-Forward Network

        Transformer中的Encoder可以看作多个Block组成,其中每个Block的输出由自注意力机制+残差链接+layerNorm+FC+残差链接+layerNorm组成

 图片来源:Transformer 中 Encoder 结构解读_by 弘毅_transformer encoder_mingqian_chu的博客-CSDN博客

二.Decoder

        Decoder:译为解码器,负责根据Encoder部分输出的向量c来做解码工作(推荐先看  三.注意力机制  再回头看二.Decoder)

 

 2.1Transformer的Decoder

        在Transformer中的Decoder由6个相同层组成,其中每个层包含

  • Multi-Head Self-Attention
  • Multi-Head Context-Attention
  • Position-Wise Feed-Forward Network

2.2Transformer中Encoder与Decoder区别

                        

        1.第一级中: 将self attention 模块改成了 masked self-attention, 用于只考虑解码器的当前输入和当前输入的左侧部分, 不考虑右侧部分; ( 注意,第一级decoder的key, query, value均来自前一层decoder的输出,但加入了Mask操作,即我们只能attend到前面已经翻译过的输出的词语,因为翻译过程我们当前还并不知道下一个输出词语,这是我们之后才会推测到的。)

        2.第二级中,引入了 Cross attention 交叉注意力模块: 在 masked self-attention 和 F C FCFC 全连接层 之间加入;

        Cross attention 交叉注意力模块的输入 Q,K,V 不是来自同一个模块: 而是来自K , V K,VK,V 来自编码器的输出, Q QQ解码器的输出

2.3Masked self attention

        只需考虑输入向量本身和输入向量只爱按的向量,即左侧向量。在求相关性分数时,q,k,v也只会考虑输入 向量的左侧向量部分

  •  输出向量b1,只考虑输入向量a1(k1)
  • 输出向量b2,只考虑输入向量a2(k2)和a2之前的输入向量a1(k1)
  • 输出向量b3,只考虑输入向量a3(k3)和a3之前输入的向量a2(k2),a1(k

2.3Cross attetion

        Cross attetion模块又成为交叉注意力模块,之所以叫做交叉,是因为向量q,k,v不是来自同一个模块,而是将来自解码器的输出向量q与来自编码器的输出向量k,v运算。

        q与v相乘得到注意力得分α1'

        注意力得分α1'再与v相乘求和得到向量v

2.4Transformer训练过程

  • Encoder将输入数据转换为向量,同时会输入一个启动标志向量Start
  • Masked self attention:解码器之前的输出,作为当前解码器的输入。并且在训练过程中,真是标签也会输入到解码器中,得到输出向量q
  • Cross attention:将向量q与来自编码器的输出向量k,v运算,得到向量v
  • 将向量v输入到feed-forward全连接层 

三.注意力机制-attention

3.1注意力机制-attention

        注意力机制:注意力机制来源于人对外部信息的处理能力。由于人每一时刻接收的信息都是庞大且复杂的,因此人在处理信息的时候,会将注意力放在需要关注的信息上,对于其他无关的外部信息进行过滤。

        对于计算机而言,对数据赋予权重,越重要的地方或者越相关的地方就赋予的权重越高

        可以理解成,当我们看人的时候要看脸,看书的时候看书名等等

3.2Query&key&Value q,k,v

Query 查询

查询的范围

自主提示

主观意识的特征向量

Key 键

被比对的项

非自主提示

物体的突出特征信息向量

Value

物体本身的特征详细,与key成对出现

        注意力机制是通过Query与Key的注意力汇聚,实现对Value的注意力权重分配,生成最终的输出结果(给定一个Query,计算Query与Key的相关性, 然后根据Query与Key的相关性找到最合适的Value)

        Query可以理解为在搜素时输入的关键字(外套),然后系统会根据这个关键则取查找一系列的Key (商品名称),最后得到相应的value(xx牌衣服)

        q,k,v每个属性虽然在不同的空间,但他们是具有一定的潜在关系,可以通过某种变换,使得三者属性在一个相近的空间中

3.3注意力机制计算

  • 阶段一:计算q,k两者之间的相关性或相似性,得到注意力得分

 MLP网络请见:全连接神经网络(MLP)_mlp网络_awigu的博客-CSDN博客

  • 阶段二:对注意力得分进行缩放scale (除以维度的根号),然后使用softmax函数进行归一化,还可以更加突出权重

  • 阶段三:根据权重系数是对v进行加权求和,得到Attention Value

四.自注意力机制-Self-Attention

4.1自注意力机制-Self-Attention

        自注意力机制是注意力机制的一种,解决神经网络接收的输入是很多大小不一的向量,并且不同向量之间又一定的关系,但实际训练的时候无法发挥这些输入之间的关系导致模型训练结果效果极差(机器翻译序列到序列,语义分析等),针对全连接神经网络对于多个相关的输入无法建立起相关性问题,可以通过自注意力机制解决,实际上让机器注意到整个输入中不同部分之间的相关性。

        自注意力机制减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性,且q,k,v都来自同一个x,通过x在x内部找关键点。

4.2自注意力机制计算

  • 得到q,k,v 

 对于每个输入乘上相应的权重矩阵W,得到相应的矩阵q,k,v

  • 计算相关性

        利用得到的q,k计算两个向量之间的相关性,一般用点积计算,即α=q·k ,矩阵形式为A=K^T·Q

  • Scale+softmax

        将上一步得到的相似度除以d^1/2,再进行softmax归一化

  • Matmul

        使用权重矩阵与v相乘,计算加权求和

4.3自注意力机制缺点

        自注意力机制的原理是筛选重要信息,过滤不重要信息,这就导致其有效信息的抓取能力会比CNN小一些。这是因为自注意力机制相比CNN,无法利用图像本身具有的尺度,平移不变性,以及图像的特征局部性(图片上相邻的区域有相似的特征,即同一物体的信息往往都集中在局部)这些先验知识,只能通过大量数据进行学习。这就导致自注意力机制只有在大数据的基础上才能有效地建立准确的全局关系,而在小数据的情况下,其效果不如CNN。 另外,自注意力机制虽然考虑了所有的输入向量,但没有考虑到向量的位置信息。

五.多头注意力机制-Multi-Head Self-Attention

5.1多头注意力机制-Multi-Head Self-Attention

        多头注意力机制:用独立学习得到的h组(一般为8)不同的线性投影来变换q,k,v,然后这h组变换后的q,k,v并行的送到注意力汇聚中,最后将这个h个注意力汇聚的输出拼接到一起,并通过另一个可以学习的线性投影进行变化,一产生最终输出。

5.2多头注意力机制计算

 

  •  定义多组W,生成多组Q,K,V
  • 定义h组参数,对应h组W,再分布进行Self-Attention,得到Z0-Z7

 

  • 将多组输出拼接后乘W0降维

图片来源:注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制 - 知乎

六.通道注意力机制-Channel Attention

6.1通道注意力机制-Channel Attention

        通道注意力是显示再模型不同通道之间的相关性。通过网络学习的方式来自动获取到每个特征通道的重要程度,最后再为每个通道赋予不同的权重系数,从而来强化重要的特征抑制非重要的特征。

        其目的在于让输入的图像更有意义,通过网络计算出输入图像各个通道的重要性(权重),从而提高特征表示的能力

6.2常用注意力机制

  • SENet
  • ECA
  • CBAM

七.空间注意力机制-Spatial Attention

        不是图像中所有的区域对任务的贡献都是同样重要的,只有任务相关的区域才是需要关心的,比如分类任务的主体,空间注意力模型就是寻找网络中最重要的部位进行处理。空间注意力旨在提升关键区域的特征表达,本质上是将原始图片中的空间信息通过空间转换模块,变换到另一个空间中并保留关键信息,为每个位置生成权重掩膜(mask)并加权输出,从而增强感兴趣的特定目标区域同时弱化不相关的背景区域。

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

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

相关文章

【Vue】Parsing error: No Babel config file detected for ... vue

报错 Parsing error: No Babel config file detected for E:\Study\Vue网站\实现防篡改的水印\demo02\src\App.vue. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files.             …

GD32F103VE侵入事件

GD32F103VE的TAMPER引脚(PC13),当PC13输入低电平时,会产生一个侵入检测事件。它会将所有“数据备份寄存器”内容清除。 这个功能有什么用? 一是防止被人开壳,抄袭。二是自毁功能。 直奔主题,多一句就是浪费时间。测试…

Docker快速入门笔记

Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起,它融合了便捷性、灵活性和可移植性,让开发者们欣喜若狂。它就是 Docker!无论你是一个初学者,还是一位经验丰富的开发者,都不能错过这个引领技术浪潮的工…

Elastic的下载

文章目录 ElasticSearch的下载扩展1(ElasticSearch 与 JDK 版本 适配)扩展2(访问 http://192.168.1.200:9200 没有显示信息)扩展3(免密登录) ElasticSearch的下载 官方下载网址:https://www.el…

maven install命令:将包安装在本地仓库,供本地的其它工程或者模块依赖

说明 有时候,自己本地的maven工程依赖于本地的其它工程,或者manven工程中的一个模块依赖于另外的模块,可以执行maven的install命令,将被依赖的包安装在maven本地仓库。 示例 一个工程包含几个模块,模块之间存在依赖…

码云 Gitee + Jenkins 配置教程

安装jdk 安装maven 安装Jenkins https://blog.csdn.net/minihuabei/article/details/132151292?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132151292%22%2C%22source%22%3A%22minihuabei%22%7D 插件安装 前往 Manage Jen…

解决Vs Code工具开发时 保存React文件时出现乱码情况

Vs Code工具开发时 保存React文件时出现乱码情况 插件库搜索:JS-CSS-HTML Formatter 把这个插件禁用或者卸载就解决保存时出现乱码的问题了; 如果没有解决,再看下面方案! 出现乱码问题通常是因为文件的编码格式不正确。您可以尝试以下解决方法: 确认文件编码格式&a…

Visual Studio 2019 实用功能设置(背景颜色,代码字体及行号设置)

前言 Visual Studio 2019 安装包的下载教程、安装教程 教程 博主博客链接:https://blog.csdn.net/m0_74014525 关注博主,后期持续更新系列文章 系列文章 第一篇:Visual Studio 2019 详细安装教程(图文版) 第二篇&…

在win10, win11 家庭版中安装远程桌面服务

win10, win11 家庭版中提供远程桌面服务 简介 在windows家庭版中,是不提供远程桌面服务的,你没有办法使用远程桌面连接到windows家庭版中。 当然, 你可用升级windows 版本到专业版,这样就可用享受到windows自带的远程…

基于ARM+FPGA (STM32+ Cyclone 4)的滚动轴承状态监测系统

状态监测系统能够在故障早期及时发现机械设备的异常状态,避免故障的 进一步恶化造成不必要的损失,滚动轴承是机械设备的易损部件,本文对以滚动 轴承为研究对象的状态监测系统展开研究。现有的监测技术多采用定时上传监 测数据,…

自定义elementui的主题

通常情况下,我们使用elementui框架的时候默认组件的主题都是白色的,比如: 但是如果想自定义主题,改变主题颜色,以及各种默认颜色,其实也不难: 配置默认主题,选好后点击下载 在vu…

重磅!百度再放大招,文心大模型3.5三大维度、20项指标遥遥领先

近日,清华大学新闻与传播学院沈阳团队发布《大语言模型综合性能评估报告》(下文简称“报告”),报告显示百度文心一言在三大维度20项指标中综合评分国内第一,超越ChatGPT,其中中文语义理解排名第一&#xff…

JVM基础篇-StringTable

StringTable 特性 常量池中的字符串仅是符号,第一次用到时才变为对象 利用串池的机制,来避免重复创建字符串对象 字符串变量拼接的原理是 StringBuilder (1.8) 字符串常量拼接的原理是编译期优化 可以使用 intern 方法&#…

VSCode C/C++ 分目录编译配置

分目录编译配置记录 launch.json文件 注释处为修改内容 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configur…

uniapp两个单页面之间进行传参

1.单页面传参:A --> B url: .....?code JSON.stringify(param), 2.单页面传参B–>Auni.$emit() uni.$on()

shell 入门练习小记

一、hello world #!/bin/bash echo "Hello World !"#! 为约定的标记,告诉系统这个脚本需要什么解释器执行,后接绝对路径 /bin/bash 表示期望 bash去解析并运行shell echo用于向窗口输出文本 chmod x ./test.sh #给脚本赋执行权限 ./test.sh …

Android性能优化—数据结构优化

优化数据结构是提高Android应用性能的重要一环。在Android开发中,ArrayList、LinkedList和HashMap等常用的数据结构的正确使用对APP性能的提升有着重大的影响。 一、ArrayList ArrayList内部使用的是数组,默认大小10,当数组长度不足时&…

【Linux命令详解 | cp命令】Linux系统中用于复制文件或目录的命令

文章标题 简介参数列表二,使用介绍1. 复制单个文件2. 复制多个文件3. 复制目录4. 保留文件属性5. 创建链接6. 强制覆盖7. 显示复制进度8. 创建备份9. 只有当源文件比目标文件新时才复制10. 复制链接文件 总结 简介 cp命令在Linux系统中用于复制文件或目录。其功能强…

通用人工智能操作系统

随着科技的飞速发展,人工智能已经成为了当今世界最热门的技术领域之一。从智能手机、自动驾驶汽车到智能家居系统,人工智能技术已经渗透到了我们生活的方方面面。然而,尽管人工智能在很多领域取得了显著的成果,但它仍然存在一些局…

电动汽车设计、制造、研发的学科、技术和前沿科技综述

引言:电动汽车作为替代传统燃油汽车的一种先进交通工具,不仅具有环保、低噪音等优势,而且对于能源消耗和气候变化等全球性问题也具有重要意义。本文将综述与电动汽车设计、制造、研发相关的学科、技术和前沿科技,以期对电动汽车领…