资讯动态

Diffusion Transformer知识定位:概念记忆藏在哪一层?

发布时间:2026/10/20 14:02:16 来源:尧图企业网站定制
大概从扩散模型全面转向DiT架构之后做生成模型的人明显分成两拨一拨忙着堆参数量、卷采样质量另一拨——包括我自己——更关心这堆参数里到底装了什么。扩散Transformer和之前的U-Net完全是两套逻辑输入要切成patch、时间步要通过自适应归一化嵌进去、全局自注意力替代了局部卷积。架构升级带来了一个非常实际的问题模型记得一个概念比如“银色跑车”“某位画家的风格”这个记忆到底藏在哪NeurIPS 2025上发表的这篇Localizing Knowledge in Diffusion Transformers做的就是这个事。它把大语言模型里已经比较成熟的知识定位方法移植到扩散Transformer上系统性地回答了“概念知识在网络里的什么位置”这个问题并且证明了这些位置可以被定向干预。这篇文章适合两类人一类是做可控生成、模型编辑、安全对齐的研究者另一类是跑过DiT推理、遇到过“某个概念怎么都改不掉”这类问题的工程师。1. 先搞清楚一个前提DiT里的“知识”到底是什么1.1 为什么这项研究要选DiT开刀很多人对“知识定位”的第一反应是这不就是LLM那边玩剩下的东西吗思路确实源自LLM但直接搬过来是不行的原因在DiT的生成机制上。LLM是自回归的生成每个token时信息流是前向逐层传递的你可以在某一层打断、替换、观察输出变化因果链很清楚。扩散模型不一样它迭代去噪几十步每一步都是一个完整的forward pass每一层输出的不单单是“下一个token的分布”而是一份对噪声预测的中间表征。这就意味着我们要找的知识坐标不只有“第几层”这一个维度还多了“第几步去噪”这个时间维度。换句话说这是一个二维搜索问题架构深度×去噪时间。更麻烦的是DiT里的时间步不是简单的“第几步”标签。模型通过adaLN-Zero把时间步嵌入到每个block的scale和shift参数里也就是说同一个权重在不同时间去噪时计算的其实是略不同的函数。知识在早期去噪步骤里可能表现为“整体布局和语义”在后期可能表现为“纹理和高频细节”。这是U-Net时代没被认真对待过的结构特性也是这篇工作选择DiT开刀的重要原因——它在架构上就是为“知识沿时间展开”这个问题量身定制的实验场。1.2 “定位”和“编辑”是一体两面我刚开始接触这个方向时有个误区以为知识定位只是做“解释”搞清楚模型内部怎么运转就完了。实际上定位的最大价值在于“可干预”你一旦知道概念X存储在某一层MLP的输出子空间里就可以针对这一层做修改而不是粗暴地全量微调或者用提示词硬绕。这篇工作的核心主张就是这条线定位不是终点定位是为了让编辑变得“外科手术式”的精准。想象一下以前想让模型不再画某个东西常规做法是收集一批负样本、做对抗训练或者加文本引导这些方法有效但副作用大——动不动就影响整体画风或者产生概念迁移。而如果定位准确你只需要动那一小部分权重效果可控、副作用可量化。所以理解这篇论文要抓住一条主线因果定位是手段定向编辑是目的二者共享同一套“干预—观察”范式。后面所有的方法细节本质上都是在回答两个问题怎么找到那个位置改了那个位置会发生什么2. 核心方法拆解三步找出知识藏在哪2.1 第一步因果追踪——断掉某条路径看反应知识定位最经典的手段是因果追踪causal tracing。LLM那边通常的做法是先让模型生成一个包含目标实体的事实陈述在某个中间层把表征替换成“没有该实体”时的表征观察预测概率怎么变。如果某层的替换让结果立刻崩掉说明这层是这个知识的关键通路。放到DiT上这套逻辑要改造。具体做法是准备一对提示词一个包含目标概念比如“戴着红色帽子的猫”一个不包含比如“一只猫”。用同一个种子和同一个采样器分别生成两组图像过程中把中间激活全部存下来。然后做一个“交叉替换”在去噪的某个时间步t、某一层L把无概念生成的激活换成有概念生成的激活其余时间步和层保持原样继续完成生成。如果替换之后输出图像里出现了目标概念说明这层这步确实在传递这个概念的信息如果替换前后没有变化说明这里不是关键通路。把所有L和t的组合都试一遍就得到一张“因果效应热力图”。这里的细节在于替换的位置。DiT的block里既有自注意力也有MLP还有adaLN-Zero产生的scale/shift。论文里一般会分别对这几条路径做替换因为“注意力和MLP储存的知识类型完全不同”——注意力更多负责信息路由也就是“把猫这个概念和帽子这个概念绑到一起”MLP更偏向具体的语义记忆也就是“猫长什么样”。2.2 第二步时间步×层级的二维扫描做完单点替换接下来要回答一个LLM里不存在的问题时间步重要吗扩散模型去噪的前几步基本决定了图像构图的骨架后几步在填充细节。所以一个合理的假设是概念知识的“语义核心”集中在早期和中期时间步后期时间步更多在打磨纹理。这篇工作对这种直觉做了一套系统的量化验证把去噪过程按时间步切成若干个区间比较不同区间的因果效应强度。实操中这一步的计算量相当大。假设模型有28层、采样50步每个点都要重新跑一遍完整的反向去噪那就是1400次生成。虽然可以用DDIM这类确定性采样器保证可复现但成本还是压不住。于是常见的做法是先粗扫再精扫先隔4步、每隔3层扫一遍找到效应最强的区域再在附近做细粒度扫描。这和我们做超参搜索时“先粗后细”的思路一模一样。为了压缩方差每个扫描点往往要做多次。扩散模型是随机采样过程单次生成的偶然性很大所以要在多个随机种子上重复最后取平均。我在自己复现类似流程时发现种子数少于10个热力图上的噪声就大得没法看加到20到30个种子轮廓才会稳定下来。2.3 第三步把定位结果变成可用的编辑热力图只能告诉你“哪里重要”还不能直接告诉你“怎么改”。从定位到编辑这篇工作的路径是把关键位置的激活模式提取出来变成一个可迁移的“概念方向”。有一个直觉可以帮你理解这一步如果一个概念确实集中在某一层MLP的某个子空间里那这个子空间应该存在一个“方向”沿着这个方向调整激活就能控制这个概念的出现与消失。做法是取“有概念”和“无概念”两组生成在关键层的激活差异做主成分分析取最大的几个主成分作为概念方向。之后生成时在关键层把激活沿着这个方向做缩放就能定向增强或抑制概念。这个思路在创业圈常被叫作“steering”在扩散模型上它有一个额外的好处因为方向是从激活差异里提的天然保留了对其他概念的中立性比直接调权重更安全。论文后续的编辑实验基本就是在这个“方向控制”框架下验证的抑制方向则概念消失增强方向则概念更突出而无关的图像内容保持稳定。3. 关键发现与结果解读3.1 知识的分布画像不是散装的是扎堆的第一个值得关注的结论是Diffusion Transformer里的概念知识呈现出明显的“局部聚集”特征而不是均匀散布在所有层里。效应最强的区域集中在模型中间偏后的若干层开头几层和最后几层的作用更多是“通道路由”和“输出渲染”概念语义的真正载体在中段。这和LLM那边观察到的现象高度一致。LLM的知识同样聚集在中间层前后层负责把语义编码成具体输出。跨领域的这种相似性说明Transformer堆叠结构的“知识分布规律”可能是一种普遍特性不因训练目标和模态差异而改变。但DiT也有自己的特点。注意力头和MLP的分工更清晰定位结果表明概念绑定类的信息比如“帽子和猫在同一个画面里”这种关系高度依赖特定注意力头而实体外观类的信息比如“猫的毛色”或“帽子的形状”更集中在MLP。这个分工对编辑方向的取舍很有参考价值——想改关系就用注意力头想改外观就动MLP。3.2 时间步是DiT独有的定位维度第二个发现围绕时间步展开这也是这篇工作区别于所有LLM知识定位研究的关键增量。结果表明去噪过程中确实存在一个“语义形成窗口”概念知识的因果效应在早期时间步很弱在中前期迅速增强并达到峰值随后在后期逐步衰减。这个发现解释了为什么很多“提示词攻击”对扩散模型无效你在文本端改了词模型在早期时间步已经把语义“锁定”了后期再改文本已经影响不到已经成型的表征。反过来如果你想做安全治理早期时间步才是真正的干预窗口。在我接触过的实际案例里这个窗口的宽度大概占整个去噪过程的20%到40%区间。过早干预模型还没开始组织语义过晚干预空间结构已经固化改不动。这篇论文给出的定位结果本质上就是把每一个概念都标上了自己的“生效时间段”这对工程实践是一个相当有用的先验。3.3 评测指标设计怎么证明定位是准的做知识定位最容易陷入的陷阱是“自证”——你说你找到了位置怎么证明不是巧合这篇工作采用了一套比较严谨的三段式评测一是因果效应的可重复性。同一概念用不同风格的提示词去触发定位结果应该保持稳定。如果换个说法定位点就飘了那说明定位到的是“文本表面形式”而不是“概念本身”。二是编辑的精准性。抑制某个概念后目标概念的出现率要显著下降同时无关属性的保持率要尽量高。这个指标用生成图像和目标概念之间的相似度来衡量同时还要算编辑前后的结构一致性——简单说就是“只改该改的别动不该动的”。三是行为一致性。修改之后模型在其他相关概念上的行为不能崩。典型测试是把“红色帽子”从模型里删掉之后模型仍然要能画“红色围巾”不能因为改了一个概念把整个“红色”相关的能力都带崩。我特别看重第三点因为很多粗放式编辑方法能过前两项但第三项一测就露馅。概念之间是纠缠的真正高质量的定位必须能把“这个概念的独特性”从纠缠网络里干净地剥离出来。4. 实操落地把定位方法用到你的模型上4.1 前置准备模型、数据集、计算资源先给想复现的朋友一张“配置清单”项目建议配置说明基础模型开源DiT架构权重参数量700M到3B区间均可结构越规整越好便于按层索引采样器DDIM或DPM系列确定性采样器保证同种子下结果可复现采样步数30到50步步数太低时早期时间步窗口太窄量化不充分硬件单张24GB显存以上GPU推荐多卡并行扫描阶段是计算密集型的种子数至少20个用于降低随机性对热力图的影响概念数据集每个概念准备至少30到50条包含提示词和对应负例覆盖不同句式、不同风格这里要强调一下负例的设计。很多新手直接把概念词从提示词里删掉当负例这是不够的。正确的做法是保留提示词的语义骨架只改变目标概念。比如定位“红色帽子”正例是“一只戴着红色帽子的猫”负例最好是“一只戴着蓝色帽子的猫”而不是“一只猫”。这样提取出来的概念方向才干净不会被“猫”本身的主体信息污染。4.2 最小可复现流程我把整个流程压缩成四步照着跑就能得到一份基础版定位结果。第一步准备激活缓存。对每一对正负提示词用固定种子跑一遍确定性采样按“层×时间步”索引存下所有中间激活。这一步的内存开销很大建议分批存不要一次性把全部激活放进显存。第二步单点替换扫描。写一个循环对每个候选层L和时间步t在生成时把该点激活替换成负例的对应激活其余不变继续生成完记录输出图像是否还包含目标概念。这一步的逻辑用伪代码表示很简单for L in layers: for t in timesteps: output denoise(activations, replace_at(L, t, fromnegative)) score[L, t] concept_score(output)第三步画热力图并定阈值。把替换后的概念得分和原始得分做差得到每个点的因果效应强度。筛掉低于阈值的点剩下的就是候选关键区。阈值怎么定我建议用效应强度的平均值加一倍标准差低于这个线的点基本可以认定为噪声。第四步关键区验证。在候选区域上提取概念方向分别做增强和抑制测试。如果两个方向都能按预期改变概念出现率而对无关内容影响很小说明定位成功如果抑制后模型连普通猫都画不出来说明你定位到的不是“红色帽子”而是更底层的“猫的头部结构”需要回去调整负例。4.3 计算成本控制与提速技巧全量扫描一个3B模型、50步采样、每隔一层一步大概要跑几百次生成。单卡上这能跑大半天多卡并行可以压到一两个小时。舍不得算力的朋友可以用两个技巧大幅削成本。一是分层粗扫。先每隔6层、每隔8个时间步扫一遍锁定候选区后只在候选区附近做细扫。粗扫阶段一次生成能给你一个大方向通常已经能排除80%的区域。二是激活共享。同一对正负提示词在不同扫描点上共享同一份基础生成轨迹只改动目标点。这意味着基础激活缓存只需要生成一次后面都是查表替换节省的不只是时间还有显存。实测下来粗扫加细扫的组合效果和全量扫描相当成本大概能降到原来的四分之一。这对资源有限又想做预研验证的团队特别友好。5. 应用场景与扩展价值5.1 概念级“外科手术”删除与替换这项技术最直接的应用是安全治理和版权管理。常规做法是在文本端加黑名单词或者训练一个审查分类器但这两者都能被绕过而且对生成质量影响不可控。基于定位的编辑思路完全不同直接在概念所在的权重子空间上做减法。删掉“某艺术家的风格”这个方向之后模型对同风格提示词的响应就会减弱但画风景、画人物照的能力完全不受影响。这比在提示词层面“劝”模型不要那么画要可靠得多。我见过一个很有意思的尝试对“某知名IP角色”做定向删除后再用大量不同句式的提示词去测试这个角色始终没有重新出现但模型仍然能画相似但不侵权的外观元素。这说明定位删除比文本过滤更像“选择性遗忘”而不是“假装没看见”。5.2 诊断模型“为什么会画错”知识定位还能当诊断工具用。开发过程中最头疼的“模型老是把A画成B”这类问题本质上是某个概念在中间层发生了表征纠缠。用定位方法把A和B的因果热力图叠在一起比较你会发现它们在特定层和时间步上的激活模式高度重叠——这就是纠缠发生的位置。知道位置之后处理方式就很直接了在这个重叠区上把两个概念的特征方向做正交化A方向的成分从B方向里剔除。我在实际项目里试过一次类似的操作效果比换训练数据要快得多而且不会影响其他概念。5.3 与LoRA等微调手段的组合思路很多人问我有LoRA就够了为什么还要做知识定位我的看法是LoRA和定位解决的是两类问题。LoRA能把新概念“加”进去但加在哪、改了多少、为什么这些新概念之间会互相干扰LoRA是说不清的。组合使用就能兼顾效率和可控性先用定位分析现有模型的知识分布找到新概念最合适的注入层——通常和同类概念的存储层高度重合然后只在LoRA的低秩矩阵上约束这些层的更新幅度其余层放开。这样训练出来的LoRA参数量不变但概念注入更准、可迁移性更好。听起来有点超前但这正是知识定位走向工程化的正确方向。6. 踩坑记录与排查心得6.1 因果热力图不稳定怎么办这是我复现时踩的第一个坑。同一套正负提示词换不同的随机种子第一次扫描热力图峰值在第12层第二次就跑到第16层。问题出在哪扩散模型前几步的随机噪声会放大后续表征的扰动单次生成的结果信噪比很低。解决办法刚才提过多种子平均。但这里有个细节——平均不是对“是否包含概念”的二值结果做平均而是对概念得分这个连续量做平均然后再画热力图。二值平均会丢掉很多中间信息。另一个技巧是选择概念得分差异最大的正负提示词组合如果正例和负例本身生成的图像就很模糊比如两者都像猫但都不太像“戴红帽子的猫”那定位结果基本是白噪声。6.2 编辑后生成质量崩坏定位准了编辑也做了结果生成质量崩了头痛。最常见的原因是编辑时把“阈下”点也一起改了。很多点的因果效应强度只比噪声高一点点单独看可以忽略但几十个点叠加起来就是一个巨大的扰动直接把模型推离流形。我的做法是“宁少勿多”先按高强度阈值选出核心区编辑只做核心区跑一轮评测如果概念抑制效果不够再逐步扩大范围。这比一次性全改要慢但每一步的副作用都可量化出问题能定位到具体是哪一轮改动引起的。除阈值外还要留意编辑方向的正交化。如果概念方向是从主成分分析里取的务必检查前几个主成分是否只属于目标概念。我遇到过主成分里混着“图像光照”信息的情况抑制概念的时候把整体亮度也压下去了画面发暗。6.3 多概念纠缠与泛化边界最后一个高频问题概念改完测试时发现它对“近亲概念”也有影响。比如删“红色帽子”结果“针织帽”也画不出来了。这不是实现bug而是概念本身的分布边界就是模糊的。解决思路是引入对比负例做约束。提取概念方向时不只用“无目标概念”的负例还加入“相似但不同概念”的负例比如“蓝色帽子”“皮革帽子”把这些近邻概念的方向从目标方向里显式剔除。这样得到的特征方向就带有“排除性”系统性解决纠缠问题。至于泛化边界我的结论是定位编辑擅长处理“明确可观测”的概念物体、风格、实体对抽象属性“温馨感”“未来感”的定位效果会差很多。这类抽象属性往往分散在大量层的协同计算里很难被压缩到单一方向。遇到这种情况不要死磕定位编辑老老实实回去用微调方案更现实。最后再分享一个我个人的体会知识定位这项工作真正吸引我的不是“找到知识在哪”这个结果本身而是它提供了一套可证伪的干预办法。以前我们调模型全靠试错——调权重、换数据、改prompt改完不知道是哪儿起了作用。有了定位方法之后每一步操作都能对应到具体的网络位置和具体的效果变化这本质上是在把“调模型”从一门玄学变成一门工程。对刚入门的朋友我的建议是从小模型、单概念开始复现先把正负例设计、种子平均、阈值选取这几个基本功练熟再上大模型。这套方法的上限取决于你对“概念”的定义有多精确。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑