Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于EA实现的2个问题,线性层和normalization #11

Closed
YouJiacheng opened this issue May 14, 2021 · 3 comments
Closed

关于EA实现的2个问题,线性层和normalization #11

YouJiacheng opened this issue May 14, 2021 · 3 comments

Comments

@YouJiacheng
Copy link

先reshape(view)再Conv1d和直接11 Conv2d有什么区别,为什么不直接用11 Conv2d呢?

而且这么看的话,EA和ResNet的bottleneck非常相似,都是沙漏状11 Conv2d中间夹一个模块,只不过ResNet夹的是BN-ReLU-33 Conv2d-BN-ReLU,而EA夹的是double normalization

另外,我把normalization从先在N=H*W维度上softmax再在k=S维度上L1 norm改成只在k=S维度上softmax,在简单的任务上性能没有显著差异,不知道作者有没有做相关的消融实验?(论文中没有提及)

@YouJiacheng YouJiacheng changed the title 关于EA实现的2个问题 关于EA实现的2个问题,线性层和normalization May 14, 2021
@MenghaoGuo
Copy link
Owner

  1. 没有区别,Conv1d / Conv2d / Linear 都可以用来实现。
  2. 有区别,后续会放出一些 ablation,差异不太大,在我的某些实验里是有 0.1 - 0.3 的差异的。

@MenghaoGuo
Copy link
Owner

关于和 bottleneck 的相似的地方,我觉得这是一个非常有启发的地方,我们也正在做相关的实验。可以思考这么一件事情,如果 softmax 能实现全局交互的话,那么它就可以弥补 Conv 局部性的不足,可以弥补这种不足的话,是不是可以做一种这样的结构 ? 用 Conv 做 local 语义信息的提取,用 softmax (normalization) 做 global 交互的网络结构,同时具备具有 CNN 和 Transformer 的优点。

@YouJiacheng
Copy link
Author

关于和 bottleneck 的相似的地方,我觉得这是一个非常有启发的地方,我们也正在做相关的实验。可以思考这么一件事情,如果 softmax 能实现全局交互的话,那么它就可以弥补 Conv 局部性的不足,可以弥补这种不足的话,是不是可以做一种这样的结构 ? 用 Conv 做 local 语义信息的提取,用 softmax (normalization) 做 global 交互的网络结构,同时具备具有 CNN 和 Transformer 的优点。

@MenghaoGuo

我也有类似的observation,就是softmax能做全局交互,而且在极端情况下很明显:考虑到Key矩阵每一行的模长没有显著,可以提出模长λ作为之后每一个Key的通道在对N=H*W求softmax时的强度,当各行的λ都趋于+∞时,softmax之后就是k=S个one hot向量,如果直接过第二个线性层后加到identity上,那效果就是在对key响应最大的位置加上value,相当于把dataset global级别的信息加到了根据example global context求出的位置上,这就很有意思了。

但加一层k=S维度的l1 norm之后,情况就变得有些扑朔迷离了,首先如果各行的λ都很大,那么l1 norm之后的结果可能就不是numerical stable的(S远小于N使得大部分位置softmax之后对所有key的权重都趋于0)(有eps=1e-9在分母上,实际的数值稳定性还是有保证的,但仍然相当于放大了噪声),这会导致softmax的滤波、降噪效果大打折扣——本来全局信息加入的位置是稀疏而且特异性强的(只加1个key对应的value),现在变成几乎所有位置都要加入全局信息,而且加入的组合系数还不太稳定。

当然,learnable key可以自己解决这个问题,比如让有一个key=0,这样那些对正常key的softmax响应非常接近0的位置(pixel/patch),对这个null key的sotfmax响应是1/N,在L1 norm之后就变成null key的响应接近1,对其他key的响应接近0了,对于这些位置就相当于没有做L1 norm。不过,对同一个位置对多个key都有很高响应的情况下,这个l1 norm可以避免这个位置的输出的模爆炸。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants