transformer和Non-local

两者本质上是一个东西,都是用来求自注意力的,但具体而言还是有一些差别;

1:首先说Non-local,它是像素级别的self-attention,算的是图片中各个像素点对指定像素点的影响;

2:transformer我们拿swin-transformer和vision-transformer,来举例子。

如下可,我们可以看到,两者都对图像进行了分块,不同的是swin-transformer先分了大块,再在大块里面分小块,而VIT就只分为固定的快,然后他们在做self-attention的时候,其实是算的块与块之间的注意力,但值得注意的是swintranformer只算每一个大块里面的小块之间的注意力,也就是大块与大块之间不做注意力计算。

图和内容均参考自:http://Vision transformer_MarDino的博客-CSDN博客_transformer vision

https://zhuanlan.zhihu.com/p/485716110

 什么是transformer?

整个 transformer 的重点在 QKV 结构上。

以前的 CNN 试图通过卷积来表达不同位置数值之间的关系,学习卷积值也就是学习矩阵里的数值之间的特征,所以适合用在图像里面。因为图像就是一个个的像素点形成的矩阵。

RNN 试图通过加入反馈机制来理解一串数值前后的关系,所以适用于语言模型,因为这些数值之间有前后关系,像我们的句子里有先后逻辑。

而 transformer 里的 QKV 给你提供了一个新的思路:只研究问题和答案之间的关系。不去找前后,不去找相邻,就是单纯的问题(Query)和答案(Value),最多加了一个(Key)来辅助。

那为什么要用 QKV 呢?因为这是谷歌搜索等搜索引擎最开始的结构。一个搜索引擎的设计其实就是给一个问题然后找到对应答案。

任何一个问题(Query),会有很多的答案(Value),而之所以能找到这些答案,是因为这些答案里面包包含了有关于这个问题的关键信息(Key)

V=f(Q,K)

这是一个万能形式,任何问题的答案都是通过“问题本身+相关的关键信息”找到的,比如你去谷歌搜索“今天天气怎么样”,这个问题本身就是 Q,而你的语言是“中文”,你的位置是“北京”,你的时间是“今天”,这些就都是 K,那么找到的答案“下雨”就是 V。

一般来说肯定是通过方法找到 f( Q, K) 中的一些系数,就可以找到正确的 V 了。我们也可以把 V挪到公式右边,并且把他们存在的关系叫成 attention,那么就是:

attention = F(Q, K, V)

这就是整个 transformer 的最基础结构,有了这个万能结构,只需要学习 F里的各个参数,就可以回答你想要的问题。

那么,又为什么叫 transformer而不是简单的 attention 呢?

因为 transformer 它为了提高这个 F的 运算效率,做了一些规定,比如你的 attention 的输入输出维度需要一样,这样矩阵运算就可以加快。而且多个 attention 合在一起来算,也是为了加快运算速度和效率。

那整个 Transformer里的 encoded decoder 又是干嘛呢?

这个 QKV 结构是最基础的单元,为了适应不同的目标,把多个 QKV 的 attention 合在一起以后,它分了两个部分,一个用来学怎么 encode,一个用来学怎么 decode。这个就跟 GAN,对抗神经网络很像,基本就是还是为了找到数据高维空间下的一个空间分割平面。而这里为了前后关系,它把上一个运算出来的结果又给进去去计算下一个部分(decoder 部分),所以就可以放在语言任务上(因为语言有前后关系)。

对于像翻译这种任务,encoder 部分输入是第一种语言,而 decoder 部分是第二种语言,这样一来训练出来的模型就可以做翻译。

而 GPT 的全名是 Generative Pretrained Transformers,它用的是 self-attention 结构,也就是 encoder 部分是前半句(一个字,一个句子),decoder 部分是后半句(或者下一个字,或者下个句子,都行),就是自己学自己,不是两种不同语言,所以就是 self-attention。

当然这只是语言上的应用,像 ChatGPT,LLama 这种的。

因为 QKV 就是简单的“问题—答案”结构,这个可以应用在一切问题上,图片,语音,文字,或者相互关联相互变化,都可以。

所以现在如果我回过头来看的话,整个 transformers里面的重点就是它把基本的单元从原来神经元之间的连接结构变成了问答的(QKV)attention 结构。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法人生(22):从“生成对抗网络”看“逆商提升”

​ 在图像生成与编辑、音频合成、视频生成领域里,有一个非常重要的深度学习方法——生成对抗网络(简称GANs),它是由两个神经网络组成的模型,分别为生成器(Generator)和判别器(Discr…

移动硬盘数据恢复方法哪个好?六个硬盘恢复,新手也能用!

移动硬盘数据恢复方法哪个好?移动硬盘,作为我们存储重要数据的常用设备,一旦里面的视频、文档、音频等资料突然消失,确实会令人烦恼和担忧。然而,因为数据丢失的原因可能多种多样,因此恢复方法也会有所不同…

【嵌入式DIY实例】-Nokia 5110显示DS3231 RTC数据

Nokia 5110显示DS3231 RTC数据 文章目录 Nokia 5110显示DS3231 RTC数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS3231 RTC 模块制作一个简单的数字实时时钟,其中可以使用连接到 NodeMCU 的两个按钮设置时间和日期,并将它们打印在诺基亚 5110 …

Ubuntu server 24 (Linux) 新增磁盘 lvm 动态扩容磁盘空间

1 新增一块硬盘 #查看 sudo fdisk -l #重新分区,转换成lvm类型 sudo fdisk /dev/sdb 2 查看磁盘 df -h3 lvm 配置 #查看lvm逻辑卷 sudo lvdisplay #创建物理卷 sudo pvcreate /dev/sdb1 #扩展卷组 sudo vgextend ubuntu-vg /dev/sdb1 #扩展逻辑卷 sudo lvexte…

【Linux】pycharmgit相关操作

目录 1. git安装配置2. 相关内容3. pycharm连接远程仓库3.1 配置3.2 clone远程仓库3.3 本地仓库上传远程 4. 分支管理4.1 更新代码4.2 新建分支4.3 分支合并4.4 代码比对 5. 版本管理6. 命令行操作6.1 配置git6.2 基础操作6.3 分支操作 1. git安装配置 下载链接:官…

从数据库到数据仓库:数据仓库导论

导言 本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。 数据仓库作为重要的数据管理和分析工具,已经发展了30多年,其过程中生态和技术都发生了巨大的变化。尽管…

1832javaERP管理系统之能力物料管理Myeclipse开发mysql数据库servlet结构java编程计算机网页项目

一、源码特点 java erp管理系统之能力物料管理是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了serlvet设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用 B/S模式开发。开发环境为TOMCAT7.0,My…

深入理解指针(四)

目录 1. 回调函数是什么? ​2. qsort使用举例 2.1冒泡排序 2.2使用qsort函数排序整型数据 ​2.3 使用qsort排序结构数据(名字) 2.4 使用qsort排序结构数据(年龄) 3. qsort函数的模拟实现 1. 回调函数是什么? 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数…

CSS概述

CSS是一种样式表语言,用于为HTML文档控制外观,定义布局。例如, CSS涉及字体、颜色、边距、高度、宽度、背景图像、高级定位等方面 。 ● 可将页面的内容与表现形式分离,页面内容存放在HTML文档中,而用 于定义表现形式…

第五十七周:文献阅读

目录 摘要 Abstract 文献阅读:基于遗传算法的PM2.5时间序列预测深度学习模型超参数优化 一、现有问题 二、提出方法 三、方法论 1、HPO(猎人猎物算法) 2、深度学习算法 递归神经网络(RNN) LSTM GRU 3、GA…

20240613日志:COPAL

Location: Beijing 1 大模型剪枝 Fig. 1.1大模型压缩-剪枝 剪枝的分类:结构化修剪对于简化大型语言模型和提高其效率尤其相关。非结构化修剪关注的是选择性地去除单个权重,旨在消除网络中不那么关键的连接。 修剪的基于阶段的分类:修剪可以在…

解决Pycharm远程连接WSL2的python解释器,使用调试模式时显示超时的问题

环境 windows 11wsl2ubuntu20.04pycharm2023.3.3 问题 Pycharm远程连接WSL2的python解释器,使用调试模式时显示超时 分析 TCP连接错误。 解决方法 windows高级防火墙设置->入站规则->找到pycharm2023.3.3的TCP连接规则->双击允许连接 步骤截图见下…

【C语言】解决C语言报错:Use of Uninitialized Variable

文章目录 简介什么是Use of Uninitialized VariableUse of Uninitialized Variable的常见原因如何检测和调试Use of Uninitialized Variable解决Use of Uninitialized Variable的最佳实践详细实例解析示例1:局部变量未初始化示例2:数组未初始化示例3&…

Explain Python Machine Learning Models with SHAP Library

Explain Python Machine Learning Models with SHAP Library – Minimatech (能翻墙直接看原文) Explain Python Machine Learning Models with SHAP Library 11 September 2021Muhammad FawiMachine Learning Using SHapley Additive exPlainations …

Linux--MQTT(二)通信基本原理

一、MQTT 通信基本原理 MQTT 是一种基于 客户端 - 服务端 架构的消息传输协议,所以在 MQTT 协议通信中,有两个最为重要的角色,它们便是服务端 和 客户端 。 举例:若开发板向“芯片温度”这一主题发布消息,那么服务…

父亲节:我要做爸爸的健康监督员

父亲节将至,总想着能为爸爸做些什么,来表达我们的感激与关爱。在这个特殊的日子里,成为爸爸的健康监督员,用华为 Watch 4 的智慧健康功能,任何时刻都可以关注爸爸的健康状况,放心又安心了。 用一键微体检…

创建一个electron桌面备忘录

Sound Of Silence 1.创建electron项目命令: npm create quick-start/electron my-new-project 2选择:√ Select a framework: vue √ Add TypeScript? ... No √ Add Electron updater plugin? ... Yes √ Enable Electron download mirror proxy? .…

多模态大模型:基础架构

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

【使用 WSL子系统 在 Windows 上安装 Linux(官方教程)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、使用 wsl --install二、额外的命令 前言 在最新的Windows Insider Preview版本中,只需运行wsl.exe-install,就可以安装运行WSL所需…

Matlab|基于V图的配电网电动汽车充电站选址定容-可视化

1主要内容 基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题,提出了能够计及地理因素和服…