1. 文章简介
这篇工作是DeepNet的一个后续工作,本质上就是deepnet解决了深层transformer的稳定性的情况下,考察其在各类任务下的泛用性。
关于DeepNet的工作,我司已经将其开源了(https://github.com/microsoft/unilm),网上也有不少关于DeepNet的文章解读,我自己也写过一篇拙作(文献阅读:DeepNet: Scaling Transformers to 1,000 Layers)。
本质上来说,DeepNet的工作就是通过优化transformer模型的参数初始化的方式增加模型参数反向传递的稳定性,从而可以达到超多层模型的训练。
模型的参数初始化方式推导其实还是挺繁琐的,不过真到实现上倒还是挺简单的,改改也化不了太多的时间,不过比较苦逼的是我在我们自己的场景下面试了一下,倒是没有看到很好的一个效果,深层的也没train起来,估摸着哪里理解还是有问题吧,不过整体的效果倒是应该没啥怀疑了,而且貌似这玩意也已经被用到了GPT4里面,应该是一个确实有效的策略,后面还是得回去检查检查自己的code……
Anyway,话扯远了,回来说这篇工作吧,除了DeepNet中介绍的参数初始化方式之外,文中还引入了Sub-LN这个简单的策略,从而给出了文中的Foundation Transformer的架构,使得其可以在各类任务的transformer架构当中都获得较好的效果,而在此之前,各类任务当中的主流模型的transformer架构是略有不同的。

下面,我们就来具体看看这篇工作的细节。
2. 模型结构
下面,我们来看一下文中对于模型结构的细节描述,如前所述,主要就是以下两方面的内容介绍:
- Sub-LN
- Initialization
下图就是文中的两个技术点的一个整体描述:

下面,我们来分别对两者进行一下考察。
1. Sub-LN
首先,我们来看一下Sub-LN的内容。
如上图所示,所谓的Sub-LN层,本质上就是对self-attention层以及FFN层的Layer Normalization方式进行一定的优化,不再是在最前侧或者最后侧使用一个Layer Normalization,而是在输入与输出的两个线性层之前均加入一个Layer Normalization。
其具体的函数表达如下:
-
Self-Attention
{ Q = W Q L N ( x ) K = W K L N ( x ) V = W V L N ( x ) y = x + W O L N ( A t t n ( Q , K , V ) ) \left\{ \begin{aligned} Q &= W^{Q}LN(x) \\ K &= W^{K}LN(x) \\ V &= W^{V}LN(x) \\ y &= x + W^{O}LN(Attn(Q,K,V)) \end{aligned} \right. ⎩ ⎨ ⎧QKVy=WQLN(x)=W

FoundationTransformer是DeepNet的延伸,通过优化参数初始化和引入Sub-LN策略,提高了深层Transformer模型的稳定性和泛用性。实验表明,这一架构在NLP任务如语言模型、MLM和翻译,以及Vision、Speech和多模态任务上都表现出色,提供了一种更健壮且效果更优的Transformer框架。
最低0.47元/天 解锁文章
1339

被折叠的 条评论
为什么被折叠?



