Transformer可视化概念理解

本文介绍Transformer网络中间层可视化的两种常用方法:AttentionRollout和AttentionFlow。这两种方法通过对每一层的token attentions递归计算,考虑残差连接及注意力权重的影响,帮助理解信息流。文章还讨论了如何计算从输入层到高层的嵌入方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近需要对Transformer网络的中间层进行可视化,便于分析网络,在此记录一些常用到的概念。

 

常用到的方法主要是Attention Rollout和Attention Flow^{[1]},这两种方法都对网络中每一层的token attentions进行递归计算,主要的不同在于假设低层的attention weights如何影响到高层的信息流,以及是否计算token attentions之间的相关性。

 

 为了计算信息从输入层传播到高层的嵌入方式,关键是考虑模型中残差连接以及attention权重。在一个Transformer块中,self-attention和前向网络都被残差连接包裹,也就是将这些模块的输入添加到输出中。当仅使用attention weights来近似Transformers中的信息流时,就忽略了残差连接。但是残差连接连接了不同层的对应位置,所以在计算attention rollout和attention flow时,用额外的权重来表示残差连接。给定一个有残差连接的attention模块,将层l+1的值计算为V_{l+1}=V_{l}+W_{att}V_{l},其中W_{att}是attention矩阵,因此有V_{l+1}=(W_{att}+I)V_{l}。所以,为了解释残差连接,给attention矩阵增加一个单位矩阵,并且对新矩阵的权重重新规范化。最后生成由残差连接更新的原始矩阵A=0.5W_{att}+0.5I

 

此外,分析单个attention head需要考虑输入在通过Transformer块中位置级的前向网络后,各个heads之间混合的信息。使用Attention Rollout和Attention Flow能够单独分析每个attention head中的信息,但是为了简便,一般在所有的attention heads上平均每一层的attention来进行分析。

 

Attention rollout 

给定一个L层的Transformer,希望计算从l_{i}层所有位置到l_{j}层(其中j<i)所有位置的attention。在attention图中,从l_{i}层位置k的结点v到l_{j}层中位置m的结点u的路径是一系列连接这两个结点的边。如果将每条边的权重视为两个节点之间传输信息的比例,那么可以将路径中所有边的权重相乘来计算结点v中有多少信息通过该路径传播到了结点u。为了计算从l_{i}层到l_{j}层的attentions,在下面所有层中递归地乘以attention矩阵。

\widetilde{A}(l_{i}) = \left\{\begin{matrix} A(l_{i})\widetilde{A}(l_{i-1}) & if i>j & \\ A(l_{i})& if i=j \end{matrix}\right.

在计算公式中\widetilde{A}是attention rollout,A是原始的attention,相乘操作是矩阵乘法。在该公式下,设置j=0来计算输入的attention值。

 

 

 

 

 

参考:

[1] Quantifying Attention Flow in Transformers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值