写在前面&&笔者的个人理解
目前基于Transformer结构的算法模型已经在计算机视觉(CV)领域展现出了巨大的影响力。他们在很多基础的计算机视觉任务上都超过了之前的卷积神经网络(CNN)算法模型,下面是笔者找到的最新的在不同基础计算机视觉任务上的LeaderBoard榜单排名,通过LeaderBoard可以看到,基于Transformer算法模型在各类计算机视觉任务上的统治地位。
- 图像分类任务
首先是在ImageNet上的LeaderBoard,通过榜单可以看出,前五名当中,每个模型都使用了Transformer结构,而CNN结构只有部分使用,或者采用和Transformer相结合的方式。
图像分类任务的LeaderBoard
- 目标检测任务
接下来是在COCO test-dev上的LeaderBoard,通过榜单可以看出,前五名当中,一半以上都是基于DETR这类算法结构进行延伸的。
目标检测任务的LeaderBoard
- 语义分割任务
最后是在ADE20K val上的LeaderBoard,通过榜单也可以看出,在榜单的前几名中,Transformer结构依旧占据是当前的主力军。
语义分割任务的LeaderBoard
虽然目前Transformer展现出了巨大的发展前景,但是现在的计算机视觉社区还并没有完全掌握Vision Transformer的内部工作原理,也没有掌握其决策(输出的预测结果)的基础,那对其可解释性的需求就逐渐凸显了出来。因为只有了解了这类模型是如何做出决策的,才不仅可以提高它们的性能,还可以建立对人工智能系统的信任。
所以本文的主要动机就是探索Vision Transformer的不同可解释性方法,并根据不同算法的研究动机、结构类型以及应用场景进行分类,从而形成了一篇综述文章。
刨析Vision Transformer
因为刚才提到,Vision Transformer的结构在各类基础的计算机视觉任务中都取得了非常不错的成绩。所以之后计算机视觉社区涌现出了很多方法来增强它的可解释性。本文我们主要以分类任务为主线,从Common Attribution Methods、Attention-based Methods、Pruning-based Methods、Inherently Explainable Methods、Other Tasks这五个方面中,挑选出最新以及经典的工作进行介绍。这里放一下论文中出现的思维导图,大家可以根据自身感兴趣的内容,进行更加细致的阅读~
本文思维导图
Common Attribution Methods
基于属性方法的解释通常的出发点是对模型的输入特征如何一步一步得到最终输出结果过程的解释。这类方法主要用于衡量模型的预测结果和输入特征之间的相关性。
在这些方法中,例如Grad-CAM以及Integrated Gradients算法是直接应用于了基于视觉Transformer的算法上。一些其他的方法像SHAP和Layer-Wise Relevance Propagation(LRP)已经被用来探索基于ViT的架构上了。但是由于SHAP这类方法到的计算成本非常大,所以最近的ViT Shapely算法被设计出来用于适配ViT的相关应用研究。
Attention-based Methods
Vision Transformer正是得益于其注意力机制使其拥有了强大的特征提取能力。而在基于注意力的可解释性方法中,对注意力权重结果进行可视化则是一种非常有效的方法。本文对其中的几种可视化技术进行介绍
- Raw Attention:该方法顾名思义,就是对网络模型中间层得到的注意力权重图进行可视化,从而对模型的效果进行分析。
- Attention Rollout:该技术通过对网络的不同层中扩展注意力权重来跟踪从输入token到中间embedding之间的信息传输。
- Attention Flow:该方法将注意力图视为一个流量网络,并使用最大流量算法计算从中间embedding到输入token的最大流量值。
- partialLRP:该方法是用于可视化Vision Transformer中的多头注意力机制提出来的,同时还考虑了每个注意力头的重要性。
- Grad-SAM:该方法用于缓解仅依靠原始注意力矩阵来解释模型预测的局限性,促使研究人员将梯度以用于原始的注意力权重中。
- Beyond Intuition:该方法也是一种用于解释注意力的方法,包括注意力感知和推理反馈两个阶段。
最后放一张不同可解释性方法的注意力可视化图,大家可以自行感受一下不同可视化方法的区别。
不同可视化方法的注意力图对比
Pruning-based Methods
剪枝是一种非常有效的方法,被广泛应用于优化transformer结构的效率和复杂性。剪枝方法通过对冗余或者没用的信息进行删减,从而降低模型的参数量和计算复杂度。虽然剪枝算法侧重于提高模型的计算效率,但是该类算法依旧可以实现对模型的可解释性。
本文中针对基于Vision-Transformer的剪枝方法,大体可以分成三大类:explicitly explainable(显式可解释)、implicitly explainable(隐式可解释)、possibly explainable(可能可解释)。
-
Explicitly Explainable
在基于剪枝的方法当中,有几类方法可以提供简单而且更可解释的模型。
-
- IA-RED^2:该方法的目标是在算法模型的计算效率以及可解释性之间实现一个最优的平衡。并且在这个过程当中,保持原有ViT算法模型的灵活性。
- X-Pruner:该方法是一种用于剪枝显著性单元的方法,通过创建一个可解释性的感知掩码来衡量每个可预测单元在预测特定类中的贡献。
- Vision DiffMask:该剪枝方法包括在每个ViT层上加入门控机制,通过门控机制,可以实现在屏蔽输入的同时保持模型的输出。除此之外,该算法模型可以清晰地触发剩余图像中的子集,从而实现更好地对模型预测的理解。
-
Implicitly Explainable
基于剪枝的方法当中,也有一些经典的方法可以被划分为隐式的可解释性模型类别中。
-
- Dynamic ViT:该方法采用轻量级预测模块,根据当前的特征去估计每个token的重要性程度。然后将该轻量级的模块加入到ViT的不同层中,以分层的方式来修剪冗余的token。最重要的是,该方法通过逐步定位对分类贡献最大的关键图像部分来增强可解释性。
- Efficient Vision Transformer(EViT):该方法的核心思想是通过重组token的方式来加速EViT。通过计算注意力得分,EViT保留最相关的token,同时将不太相关的token融合到另外的token中。同时论文的作者为了评估EViT的可解释性,对多个输入图像可视化了token的识别过程。
-
Possibly Explainable
虽然这类方法最初并不是为了提高ViT的可解释性,但是这类方法为进一步研究模型的可解释性提供了很大的潜力。
-
- Patch Slimming:通过自上而下的方法来专注图像中的冗余patch来加速ViT。该算法选择性的保留了关键补丁的能力来突出重要的视觉特征,从而增强可解释性。
- Hierarchical Visual Transformer(HVT):该方法的引入用于去增强ViT的可扩展性和性能。随着模型深度的增加,序列长度逐渐减小。此外,通过将ViT块划分为多个阶段,并在每个阶段应用池化操作,显著提高了计算效率。考虑到对模型最重要组成部分的逐渐集中,有机会探索其对增强可解释性和可解释性的潜在影响。
Inherently Explainable Methods
在不同的可解释方法中,有一类方法主要是开发能够内在地解释算法模型,然而,这些模型通常难以达到与更复杂的黑盒模型相同的精度水平。因此,必须在可解释性和性能之间考虑谨慎的平衡。接下来对一些经典的工作进行简要的介绍。
- ViT-CX:该方法针对ViT模型定制的基于掩码的解释方法。这种方法依赖patch embedding以及其对模型输出的影响,而不是聚焦对它们的关注。该方法包括掩码生成和掩码聚合两个阶段,从而提供更有意义的显著性图。
- ViT-NeT:该方法是一种新的神经树解码器,通过树形结构和原型来描述决策过程。同时,该算法还可以对结果进行可视化解释。
- R-Cut:该方法是通过Relationship Weighted Out and Cut来增强ViT的可解释性。该方法包括两个模块,分别是Relationship Weighted Out和Cut模块。前者侧重于从中间层提取特定类的信息,强调相关特征。后者执行细粒度的特征分解。通过对两个模块的集成,可以生成密集的特定于类的可解释性映射。
Other Tasks
就如同在文章开头提到的,除了分类之外,基于ViT的架构对其他CV任务的解释性仍在探索中。有几种专门针对其他任务提出的可解释性方法,接下来就对相关领域的最新工作进行介绍~
- eX-ViT:该算法是一种基于弱监督语义分割的新型可解释视觉转换器。此外,为了提高可解释性,引入了属性导向损失模块,该模块包含全局级属性导向损失、局部级属性可判别性损失和属性多样性损失三种损失。前者使用注意图来创建可解释的特征,后两者则增强属性学习。
- DINO:该方法是一种简单的自监督方法,并且是一种不带标签的自蒸馏方法。最终学习到的注意图能够有效地保留图像的语义区域,从而实现可以解释的目的。
- Generic Attention-model:该方法是一种基于Transformer架构做预测的算法模型。该方法应用于三种最常用的架构,即纯自注意、自注意与共同注意相结合和编码器-解码器注意。为了检验模型的解释性,作者使用了视觉问答任务,然而,它也适用于其他CV任务,如目标检测和图像分割。
- ATMAN:这是一种模态不可知的扰动方法,利用注意机制生成输入相对于输出预测的相关性图。该方法试图通过记忆效率注意操作来理解变形预测。
- Concept-Transformer:该算法通过突出显示用户定义的高级概念的注意分数来生成模型输出的解释,从而确保可信性和可靠性。
未来展望
虽然目前基于Transformer架构的算法模型已经在各类计算机视觉任务上取得了非常出色的成绩。但是目前来看,对于如何利用可解释性方法的好处来促进模型调试和改进,以及提高模型的公平性和可靠性,特别是在ViT应用中,一直缺乏明显的研究。
所以本文以图像分类任务出发,对现有的基于Vision Transformer的可解释性算法模型进行归类整理,从而帮助人们更好的理解此类模型架构,希望可以对大家有所帮助。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。