获取更多面试真题的集合,请移看参考链接3
总结上网上看到的一些分析,毕竟当时Transformer提出来的时候,可能也没考虑到会被研究的这么细。
- 模型结构本身
[ Attention is Not All You Need: Pure Attention Loses Rank Doubly Exponentially with Depth] 论文中做了实验,对于单纯的self-attentation而不考虑实验残差和MLP的话,我们堆叠了n层,整个模型的秩会很快坍缩,也即所有表征趋于一个vector,而加上了MLP和残差的话会好很多,因此MLP这个东西是必要的。 - 增加表达能力
升维之后的线性变换通常伴随着一个非线性激活函数。非线性激活函数的引入打破了线性模型的限制,使得模型可以对数据进行更复杂的变换。降维操作将升维后的结果映射回原始维度,从而将这些非线性特征组合到最终的输出中。这种操作增强了模型的表达能力,使其能够表示更加复杂的函数关系。 - 存储知识
使用了激活函数,如门控类的函数的话,就可以从key-value的角度来看待FFN了,FFN本身占据了Transformer的很大的参数量,对于FFN来说,第一层线性变换是 Key Memory,第二层线性变换是 Value Memory。可以参考论文[Transformer Feed-Forward Layers Are Key-Value Memories]和[End-To-End Memory Networks].
总结:FFN的作用是增加表达能力、模型结构上去掉FFN会导致秩坍缩更快、存储知识
参考:
[1] https://www.zhihu.com/question/622085869/answer/3518358912
[2] https://www.zhihu.com/question/665731716
[3] https://pica.zhimg.com/80/v2-7fd6e77f69aa02c34ca8c334870b3bcd_720w.webp?source=d16d100b