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

关于代码V.cumsum(dim=-2)累加的问题,我认为缺少累加后的平均操作,因此导致特征图分布差异很大,可能是训练不稳定和结果不好的原因。 #633

Open
PowerFour4 opened this issue Jun 26, 2024 · 0 comments

Comments

@PowerFour4
Copy link

关于attn.py下ProbAttention._get_initial_context方法下V.cumsum累加的问题,我认为这里缺少一步累加后的平均操作,因此导致结果特征图分布差异很大。
具体原因如下:
decoder中,对于每一个Q都考虑其自身和以前的时间步的信息来满足因果关系和防止信息泄露,因此需要mask,而论文中提到的ProbSparceAtten认为有些Q是Lazy的也就是接近均匀分布,基于这个假设mask后的lazy的Q应当是以前所有时间步的V的平均而不应该是累加。
我也debug看了特征图的确会出现lazy的Q对应的特征行注意力计算后达到几十的数量级,而active的Q的结果只在零点几的数量级。这样导致特征图分布极不平衡,我认为会损害训练稳定性和性能。

因此, 对于该行代码
contex = V.cumsum(dim=-2)
应该修改为
contex = V.cumsum(dim=-2)
row_sum = torch.arange(1, V.shape[-2]+1)[None, None, :, None].to(V.device) # (1, 1, L_V, 1)
contex = contex/row_sum
来保证初始化的contex分布一致,不会随着行数的增加数值尺度变大。
作者您好,如果您看到此issue,希望尽快回复,谢谢。

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

1 participant