Transformer 可解释性论文整理(超级详细)

news2025/1/16 16:51:22

Transformer 可解释性论文整理

前段时间想进一步的了解transformer的工作原理,于是找到了几篇可解释性的文章进行阅读,发现了许多比较有趣的现象和结论,对每篇文章都有自己的深度思考和理解,在此记录,欢迎交流。

1. Visualizing and Understanding Patch Interactions in Vision Transformer

TNNLS 2023

论文链接:https://arxiv.dosf.top/pdf/2203.05922.pdf

解决了什么问题?

一种新的可解释的可视化方法来分析和解释Transformer patch之间的关键注意相互作用。

动机:

动机就是想分析transformer的各个patch之间到底是如何交互的,通过统计分析得到了一些结论,同时进行了结构和方法的设计,提出了一种精确地patch筛选的方法。具体来说,是通过忽略交互区域边界外的patch来限制每个patch的交互范围。相当于限制了每个patch的建模范围,是很大的一点创新。
在这里插入图片描述

方法:

1.首先对patch-wise attention进行可视化、数值分析等方法量化patch之间的交互;
2.基于patch之间的交互关系计算出多层注意力矩阵方差 u(k x n x n)与对应的head方差U,U为某patch对应的注意力区域;
3.根据注意力区域,对重要程度进行从高往低的排序,计算当前patch的responsive field。
4.将当前patch的responsive field作为patch交互区域,通过分析得到的Window区域作为监督信号设计了一个Window-free Transformer(WinfT)模型。
在这里插入图片描述

数据集:

Imagenet 和细粒度的 CUB dataset

结论/启发:

得到的一些比较有意思的结论:
结论1:各个block的patch之间的注意力是如何变化的:即使是语义上不相关的patch之间(outer-object)也存在持续的比较低的相关性。语义上相关的patch(inner-object)之间一直保持比较高的相关性,但是不同的block之间变化的比较明显,方差比较大。
结论2:flexible and dynamic receptive field of ViT:对于一个patch而言,每一层的注意力矩阵都是不一样的,也就是说与当前的patch最相关的patch是在不断地变化的,因此是灵活的而且动态的感受野。
结论3:当前patch的交互区域大部分在其周边区域。所以说位置还是很重要的,但是transformer仍然具有cnn所不具有的全局交互的能力。
结论4:实验结果证明了每个patch的感受野都是相互独立的而且是数据依赖的(不同的数据感受野不一样,得到的自适应的感受野是根据数据集的特点得到的)。同时发现原始的ViT的全局注意力并不能带来性能的提升,我的理解是原始的 ViT 中包含了很多冗余的计算,导致性能的下降。实验结果证明了之前的方法 swim transformer 和 DynamicViT 都是将原始的 ViT的attention交互区域变小,从而提升了 ViT 的模型性能。
结论5:作者认为背景的patch越少越好。
结论6:有趣的是,在拟合合适的注意窗口后,32 × 32 patch大小的 ViT模型与16 × 16 patch大小的设置可以达到相似的性能(84.33% vs. 84.62%)。更大的补丁尺寸和更少的补丁数量可以大大降低自关注操作的计算复杂度。也就是说,使用大的patch依然可以达到很好的的分类结果。并不是patch划分的越小准确率越能高出来很多。(我认为这种发现局限于分类任务)

更多细节:

Adaptive Window Design 和Responsive Field 和 Indiscriminative Patch都是建立在原始的 ViT 的基础上的,只有对原始的ViT的量化的分析才能将本文的方法得以应用。

而且本文的方法是数据依赖的,也就是说如果是新的数据,需要重新对各个patch之间的交互进行统计分析,才能应用本文的方法。所以训练过程事比较繁琐的。

但是本文存在的最大优势就是推理阶段不需要这些统计的操作,可以直接进行复杂度和计算量较低的Window free Transformer的推理。

2. Self-Attention Attribution: Interpreting Information Interactions Inside Transformer

AAAI2021

论文链接:https://so3.cljtscd.com/scholar?hl=en&as_sdt=0%2C5&q=Self-Attention+Attribution%3A+Interpreting+Information+Interactions+Inside+Transformer&btnG=

解决了什么问题?

提出自注意力归因来解释Transformer中的信息交互。

动机:

动机就是想找到更加准确的方式解释Transformer信息交互
在这里插入图片描述

方法:

相比于过去的研究,本文提出了一种自注意力机制的归因算法,可对transformer内部的信息交互进行可解释性的说明。通过该方法,模型可识别较重要的注意力head,将其他不重要的head进行有效裁剪。还可通过构建归因树(attribution tree)将不同层之间的信息交互进行直观的可视化表示。最后,文章还以bert作为扩展的实例应用,通过对归因结果分析构建的Adversarial trigger对Bert发动攻击,使得bert的预测能力显著下降。

数据集:

自然语言处理的

结论/启发:

在这里插入图片描述

结论:**较大的注意力分数并不意味着对最终预测的贡献更大。**不过大体的趋势是这样的,看原文图2.
启发:很重要的一点启发:归因是对head的剪枝,具体来说取某个head的attention score矩阵中分数最大的值,然后在比较。E表示期望,x表示样本(验证集样本),就是说,从验证集中随机取一些数据,跑一遍,我们就可以得到在每条数据中每个head的归因最大分数,将每个head的这个分数求期望,然后排序。这样不就是对head的一个筛选吗?能不能用到小样本跨域上,作为通道维度的筛选?

3. Transformer Interpretability Beyond Attention Visualization。

CVPR2021

论文链接:https://openaccess.thecvf.com/content/CVPR2021/papers/Chefer_Transformer_Interpretability_Beyond_Attention_Visualization_CVPR_2021_paper.pdf

解决了什么问题?

挑战:
●vit依赖跳跃连接和自注意力计算,这两者会涉及多个激活图的相加或相乘
●transformer使用了relu以外的非线性计算, 会导致负特征值而造成数值不稳定的问题。如LRU方法通过这些层传播时相关性总量会发生变化。

动机:

目前学界对vit的可解释性研究较少,且大多是类别无关的(利用注意力图或启发式传播注意力)。本文中作者就使用一种基于深度泰勒分解方法来计算attention中的相关性图,再把相关性分数经过各个attention层回传,以获得最终的像素热图。该方法保持了跨层的相关性不变,且是类别相关的(即可以可视化出模型对不同类别的”关注点")

方法:

贡献:
●引入- -种相关性传播机制,可以对positive和negative因素进行归因传播
●提出非参数层的归一化方法,以保证做矩阵加法和乘法时的相关性不变
●整合注意力和相关性分数,并结合多个注意力块(均值)来作为最终结果,传播到输入层
在这里插入图片描述

可视化效果:本文的方法得到更好的可视化结果。

在这里插入图片描述

4. LEVERAGING REDUNDANCY IN ATTENTION WITH REUSE TRANSFORMERS

2021年10月arXiv 一直没能发表出来

论文链接:https://arxiv.dosf.top/pdf/2110.06821.pdf

动机:

本文分析了在Transformer的不同层计算的注意力分数的相似性,并发现它们实质上是冗余的。基于此观察,提出了一种新方法,通过跨层重用注意力分数来减少 Transformer在训练和推理期间的计算和内存使用量

方法:

基于成对product-based的注意力允许 Transformer 以依赖于输入的方式在tokens之间交换信息,并且是它们在语言和视觉方面的各种应用程序中取得成功的关键。 然而,典型的 Transformer 模型会在多个层的多个头中针对同一序列重复计算此类成对注意力分数。
我们系统地分析了这些分数在头部和层之间的经验相似性,并发现它们相当冗余,尤其是显示出高度相似性的相邻层。受这些发现的启发,我们提出了一种新颖的架构,可以在多个后续层中重用在一层中计算的注意力分数。
在这里插入图片描述

结论/启发:

启发:后面的层使用前面的层的attention score

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「优选算法刷题」:二分查找

一、题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 …

【JavaEE进阶】实现验证码

文章目录 🌲实现说明🍃Kaptcha插件介绍🚩插件原理🚩引入依赖🚩⽣成验证码🚩Kaptcha详细配置 🍀准备⼯作🌴约定前后端交互接⼝🚩需求分析🚩接⼝定义&#x1f6…

力扣 第 122 场双周赛 解题报告 | 珂学家 | 脑筋急转弯 + 滑窗反悔堆

前言 整体评价 倒开差点崩盘,T4这个反悔堆写吐了,T3往众数上去猜了,幸好case良心。 T1. 将数组分成最小总代价的子数组 I 思路: 取 nums[1:] 的最小2个值 可以部分排序,这样更快捷 class Solution {public int minimumCost(in…

Github操作网络异常笔记

Github操作网络异常笔记 1. 源由2. 解决2.1 方案一2.2 方案二 3. 总结 1. 源由 开源技术在国内永远是“蛋疼”,这些"政治"问题对于追求技术的我们,形成无法回避的障碍。 $ git pull ssh: connect to host github.com port 22: Connection ti…

Qt QCustomPlot 绘制子轴

抄大神杰作:QCustomplot(五)QCPAxisRect进行子绘图-CSDN博客文章浏览阅读5.9k次,点赞7次,收藏60次。文中介绍了QCustomPlot 子绘图需要掌握的类,也就是Matlab中的subplot,最后给出了一个完整的例…

EtherNet/IP开发:C++搭建基础模块,EtherNet/IP源代码

这里是CIP资料的协议层级图,讲解协议构造。 ODVA(www.ODVA.org)成立于1995年,是一个全球性协会,其成员包括世界领先的自动化公司。结合其成员的支持,ODVA的使命是在工业自动化中推进开放、可互操作的信息和…

人工智能原理实验1(2)——传教士与野人问题

🧡🧡实验内容🧡🧡 有n个牧师和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯牧师,要求无论在何处,牧师的人数不得少于野人的人数(除非牧师人数为0),且假…

算法练习-替换数字(思路+流程图+代码)

难度参考 难度:简单 分类:字符串 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。以下内容均为个人笔记,旨在督促自己认真学习。 题目 给定一个字符串S,它包含小写字母和数字字符&#xff0…

全国各省市上市公司数量数据,Shp、excel格式,含上市企业数量、行政区划中心点位经纬度等字段

基本信息. 数据名称: 全国各省市上市公司数量数据 数据格式: Shp、excel 数据时间: 2023年1月 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1province省份名称2provin_dm省份代码3city城市名…

力扣刷MySQL-第七弹(详细讲解)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

如何快速搭建springboot+前后端分离(vue),多商户客户端实现微信小程序+ios+app使用uniapp(一处编写,处处编译)

kxmalls外卖生鲜多商户,针对中小商户、企业和个人学习者开发。使用Java编码,采用SpringBoot、Mybatis-Plus等易用框架,适合个人学习研究。同时支持单机部署、集群部署,用户与店铺范围动态定位,中小商户企业可根据业务动…

C语言的编译和链接

每日一言 要保持希望在每天清晨太阳升起。 --自己 前言 当我们写下C语言代码(源文件、以.c为后缀)的时候,他需要经过一个翻译环境,被处理后形成一个可执行程序(以.exe为后缀)。形成的这个可执行程序里面放…

【服务器】搭建一台属于自己的服务器

​🌈个人主页:Sarapines Programmer🔥 系列专栏:【服务器】搭建网站⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 1. 购买服务器和域名 1.1 购买服务器 1.1.1 阿里云服务器 1.1.2 香草云服务器 1.2 购买域名 2. 安装宝塔…

matlab抽取与插值

什么是抽取? 我们假设一个数字信号 x ( n ) , n 1 , 2 , . . . , N x(n),n1,2,...,N x(n),n1,2,...,N共有 N N N个点,抽取就是每个几个点抽1个点,比如2倍抽取,那么抽取后的信号为 y ( n ) , y ( 1 ) x ( 1 ) , y ( 2 ) x ( 3 …

WebSocket-黑马好客租房

文章目录 网站中的消息功能如何实现?什么是WebSocket?http与websocket的区别httpwebsocket 浏览器支持情况快速入门创建itcast-websocket工程websocket的相关注解说明实现websocket服务测试编写js客户端 SpringBoot整合WebSocket导入依赖编写WebSocketHa…

Python实现M-Estimators稳健线性回归模型(RLM算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 M-Estimators 是稳健统计估计中的一个重要概念,它们在处理含有异常值、离群点或者影响点的…

GPT应用_AutoGPT

项目地址:https://github.com/Significant-Gravitas/AutoGPT 1 功能 1.1 整体功能,想解决什么问题 单独使用 ChatGPT 时,只提供基本的聊天,无法实现复杂多步的功能,以及与其它应用交互,如果想提供某种功…

【开源】基于JAVA的停车场收费系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

【微服务】springcloud集成sleuth与zipkin实现链路追踪

目录 一、前言 二、分布式链路调用问题 三、链路追踪中的几个概念 3.1 什么是链路追踪 3.2 常用的链路追踪技术 3.3 链路追踪的几个术语 3.3.1 span ​编辑 3.3.2 trace 3.3.3 Annotation 四、sluth与zipkin概述 4.1 sluth介绍 4.1.1 sluth是什么 4.1.2 sluth核心…

微电网优化MATLAB:遗传算法(Genetic Algorithm,GA)求解微电网优化(提供MATLAB代码)

一、微网系统运行优化模型 微电网优化是指通过对微电网系统中各个组件的运行状态进行监测和调节,以实现微电网系统的高效运行和能源利用的最大化。微电网是由多种能源资源(如太阳能、风能、储能等)和负载(如建筑、工业设备等&…