知乎全站热榜 03月27日 09:37
为什么transformer的FFN需要先升维再降维?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了前馈神经网络(FFN)中W_2矩阵的低秩特性。作者指出,由于W_2矩阵的秩最高为d,存在大量行可以被其他行线性表出,这使得FFN的输出可以被简化为对W_2的n个线性无关行(n≤d)的加权求和。理论上,这表明FFN可以减少维度,只学习如何生成新的h'。然而,作者质疑为什么在实践中降低FFN矩阵维度往往会导致效果变差,引发了对FFN设计更深层次的思考。

🧠 W_2矩阵的低秩特性:W_2矩阵通常为4d×d,其秩最高为d,这意味着至少有3d行可以被其他行线性表出。

💡 FFN的输出可以被看作是W_2矩阵行的加权求和:输入x经过W_1和激活函数后的隐藏状态h,与W_2相乘的结果可以看作是对W_2的4d行进行加权求和。

🔄 简化后的加权求和:由于W_2的低秩特性,总可以在W_2中找到n个线性无关的行,使得W_2的任意行都可以由这n行线性表出。因此,加权求和可以被改写为对这n行的加权求和。

🤔 实践中降维效果变差的疑问:理论上,FFN只需要学习如何通过W_1和激活函数得到新的h',从而避免先升维再降维的操作。然而,降低FFN矩阵维度在实践中往往效果变差,引发了作者的疑问。

W_2矩阵一般是4d\times d的,那么它的rank最高为d,也就是说至少有3d行可以被其他行线性表出,假设某个inputx\in R^{1\times d}在经过W_1以及激活函数后的hidden state为h\in R^{1\times 4d}那么FFN的outputh\cdot W_2可以看作是对W_2的4d行进行一个加权求和\sum_{i=1}^{4d}{h_i}W_{2,i},其中h_i代表h的第i个分量,W_{2,i}代表W_2的第i行。由于W_2的低秩特性,我总可以在W_2找到n(n\leq d)个线性无关的行(假设就是前n行),从而对于任意1\leq i\leq 4d,W_{2,i}都可以由这n行线性表出W_{2,i}=\sum_{j=1}^{n}{c_j}W_{2,j},所以上述加权求和总可以进行改写:\sum_{i=1}^{4d}{h_i}W_{2,i}=\sum_{i=1}^{n}{k_i}W_{2,i},那么W_2矩阵只需要这n行即可,模型只需要学习到如何通过W_1和激活函数来得到“新的”h'\in R^{1\times n}=\{k_1, k_2,...,k_n\},那么这么看完全不需要现在的FFN中先升维再降维的操作,所以为什么降低FFN中矩阵的维度实践中往往效果会变差呢?

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

FFN 低秩 神经网络 模型维度
相关文章