Pay Attention to MLPs

Pay Attention to MLPs

Ref: https://arxiv.org/pdf/2105.08050.pdf
code:https://github.com/lucidrains/g-mlp-pytorch/blob/54209f0fb2a52557a1c64409f26df9ebd8d5c257/g_mlp_pytorch/g_mlp_pytorch.py

背景

Transformers 自橫空出世以來,在NLP領(lǐng)域,大規(guī)模了取代了LSTM-RNN模型,在CV上,ConvNets也不再是唯一選擇。它有2個(gè)重要特性:

  1. recurrent-free結(jié)構(gòu),可以并行化計(jì)算每個(gè)token的表達(dá);
  2. multi-head self-attention blocks, 可以聚合token之間的空間信息。

其中的attention mechanism一直被認(rèn)為transformers取得優(yōu)秀成績的重要因素。和MLP相比,attention可以根據(jù)模型輸入,調(diào)整參數(shù),而MLP的參數(shù)是固定的。那么問題來了,transformers效果那么好,是self-attention起的決定性作用嗎,self-attention是必要的嗎

本文提出了gMLPs,一種attention-free, 以MLP為基礎(chǔ)的由channel projections, spatial projections 和gating組成的網(wǎng)絡(luò)結(jié)構(gòu)。

實(shí)驗(yàn)顯示:

  1. 在CV上,可以達(dá)到和vision transformers差不多的準(zhǔn)確率;和MLP-Mixer相比,參數(shù)減少66%,準(zhǔn)確率還提升了3%;
  2. 在NLP上,將gMLPs應(yīng)用到BERT的MLM,和transformers一樣,在預(yù)訓(xùn)練實(shí)時(shí)能最小化perplexity。同時(shí),實(shí)驗(yàn)也顯示,perplexity和模型規(guī)模有關(guān),而對(duì)attention不敏感;
    2.1 隨著模型的capacity上升,gMLPs的預(yù)訓(xùn)練和finetuning指標(biāo)會(huì)快速接近Transformers,這意味著,只要擴(kuò)大模型規(guī)模,那么無需self-attention,gMLPs和Transformers的差距會(huì)不斷縮小;
    2.2 batch-size為256,進(jìn)過1Mstep,gMLPs相比Bert,在MNLI達(dá)到了86.4%的準(zhǔn)確率,在SQuAD達(dá)到了89.5%的F1;
    2.3 在finetuning階段,模型規(guī)模和perplexity接近的情況下, Transformers在cross-sentence alignment任務(wù)上比gMLPs效果好[MNLI任務(wù)高1.8%]。但是,當(dāng)gMLPs的參數(shù)量是transformers的3倍時(shí),模型效果就很接近;
    2.4 同時(shí),文中提出一個(gè)trick,在gMLPs后接一個(gè)single-head 128d 的attention,在NLP的各項(xiàng)任務(wù)上,就超過了transformers。

因此,本文覺得,提高數(shù)據(jù)量和算力,無需self-attention,gMLPs,就可以和transformers媲美。

Model

輸入:序列長度為n,embedding維度為d:
X\in R^{n\times d}

使用L個(gè)block,每個(gè)block進(jìn)行如下操作:

Z = \sigma (XU) = GeLU(XU)
\tilde Z = s(Z)
Y = \tilde ZV

其中:
U,V為沿著channel[可理解為hidden維度]的線性投影,同Transformers的FFN;
s(\cdot)為空間上的交互,用于獲取tokens之間的關(guān)系。本文認(rèn)為s(\cdot)可以學(xué)習(xí)到位置信息,因此,沒有使用positional embedding。

gMLPs

Spatial Gating Unit

為了實(shí)現(xiàn)token之間的交互,在s(\cdot)層,就要包含一個(gè)空間維度的交叉操作。

文中主要介紹了2種SGU:

  1. 比較直觀的,就是使用線性投影:
    f_{W,b} (Z) = WZ + b

其中:
W\in R^{n\times n}, n為序列長度;b可以是一個(gè)矩陣,也可以是一個(gè)常量。
空間交互通過element-wise實(shí)現(xiàn):
s(Z) = Z \odot f_{W,b} (Z)

為確保訓(xùn)練的穩(wěn)定性,W初始化值接近于0, b為1。這相當(dāng)于初始化的FFN,開始每個(gè)token相互獨(dú)立,隨著訓(xùn)練逐漸考慮token之間的交互信息。

  1. 除了線性投影的gatef_{W,b} (\cdot), 文中還將Z沿著channel分解成(Z_1,Z_2),借鑒GLUs的思路:
    s(Z) = Z_1 \odot f_{W,b} (Z_2)

源代碼分析

class SpatialGatingUnit(nn.Module):
    def __init__(self, dim, dim_seq, causal = False, act = nn.Identity(), init_eps = 1e-3):
        """dim: embedding size 
            dim_seq: sequence length """
        super().__init__()
        dim_out = dim // 2
        self.causal = causal

        self.norm = nn.LayerNorm(dim_out)
        self.proj = nn.Conv1d(dim_seq, dim_seq, 1) 
        # 常規(guī)卷積,卷積的是詞向量的維度。本文是空間上的信息交互,因此輸入/輸出通道是序列長度,卷積核尺寸為1。

        self.act = act

        init_eps /= dim_seq
        nn.init.uniform_(self.proj.weight, -init_eps, init_eps)
        nn.init.constant_(self.proj.bias, 1.)

    def forward(self, x, gate_res = None):
        device, n = x.device, x.shape[1]

        res, gate = x.chunk(2, dim = -1) #沿著詞向量維度,分成2個(gè)矩陣。
        gate = self.norm(gate)

        weight, bias = self.proj.weight, self.proj.bias
        if self.causal:
            weight, bias = weight[:n, :n], bias[:n]
            mask = torch.ones(weight.shape[:2], device = device).triu_(1).bool()
            weight = weight.masked_fill(mask[..., None], 0.)

        gate = F.conv1d(gate, weight, bias)

        if exists(gate_res):
            gate = gate + gate_res

        return self.act(gate) * res

GLUs(Gated linear units)補(bǔ)充:

由Language model with gated convolutional network提出,使用CNN學(xué)習(xí)長文本,為緩解梯度消散,并保留非線性能力,使用門控機(jī)制。即:
沒有經(jīng)過非線性轉(zhuǎn)換的卷積層輸出*經(jīng)過非線性轉(zhuǎn)換的卷積層輸出
h(x) = (X*W+b)\odot \sigma(X*V + b)

其中:
\odot:element-wise product
X\in R^{N \times m}
W,V \in R^{k \times m \times n}

注意,GLUs是沿著channel維度[per token]的處理,而SGU是沿著空間維度[cross-token]的處理。

Image Classification

在圖片分類ImageNet數(shù)據(jù)集上,無需添加外部數(shù)據(jù),訓(xùn)練gMLPs。
模型配置如下,輸入和輸出沿用的ViT(Vision Transformer)格式,模型的深度和寬度配置也和ViT/DeiT模型相似。
結(jié)果:和Transformer一樣,gMLPs在訓(xùn)練集上過擬合,因此采用了DeiT的正則化處理(mixup, cutmix);同時(shí),對(duì)模型的維度做了調(diào)整。


CV gMLPs
ImageNet模型結(jié)果
圖片分類準(zhǔn)確率和模型規(guī)模關(guān)系

Masked Language Modeling with BERT

DepthWise convolution補(bǔ)充

一個(gè)卷積核負(fù)責(zé)一個(gè)通道,卷積核數(shù)量要和圖片通道數(shù)相同。
f_{W,b}( \cdot)好比一個(gè)寬的depthwise convolution,接收整個(gè)句子的信息。但是depthwise convolution面向的是通道的filter,而gMLPs只使用一個(gè)W共享交叉通道。

在NLP上,gMLPs進(jìn)行了多個(gè)ablation實(shí)驗(yàn)。

1. Ablation:the importance of gating in gMLP for BERT's Pretraining

  1. 使用Bert的absolute position embeddings;
  2. Bert框架 + T5-stype的relative position biases;
  3. 同1,2,但只保留relative positional biases,去掉content-dependent terms inside the softmax。

困惑度:交叉熵的指數(shù)形式。語言模型越好,句子概率越大,熵越小,困惑度越低。

各種模型的perplexity比較

使用SGU可以讓gMLPs得到與Bert差不多的perplexity。

2. Case Study: The Behavior of gMLPs as Model Size Increases

模型規(guī)模和finetuing結(jié)果比較

Transformer中的6+6:self-attention使用6層,F(xiàn)FN使用6層。
finetuning任務(wù)用GLUE表示模型效果。
結(jié)果顯示:

  1. gMLPs越深,pretraining perplexity越小,和transformer的模型效果越逼近;
  2. pretraining的perplexity越小,不意味著finetuning結(jié)果越好,比如gMLPs的perplexity比transformer小的時(shí)候,在SST-2的模型結(jié)果更好,但是MNLI-m的模型結(jié)果更差;

3. Ablation: The Usefulness of Tiny Attention in BERT's Finetuning

文中還做了個(gè)測試,在一些下游任務(wù)上,主要是設(shè)計(jì)到句子對(duì)的任務(wù)上,gMLPs表現(xiàn)比Transformers差。 那就再加一個(gè)tiny attention,來加強(qiáng)模型對(duì)cross-sentence alignment的學(xué)習(xí)。

Hybrid

這種混個(gè)gMLPs和attention的模型,稱為aMLPs。結(jié)果顯示,aMLPs的效果比gMLPs和transformer都要好。


模型比較

4.Main Results for MLM in the BERT Setup

模型效果總結(jié)
  1. 以SQuADv2.0任務(wù)為例,base模型,Bert模型的f1達(dá)到了78.6,gMLPs只有70.1, 差距8.5%;到了large模型,差距只有81.0-78.3=2.7;
  2. aMLPs使用128d的attention size,在SQuADv2.0任務(wù),比Bert還要高4.4%的F1.

前面做的幾個(gè)實(shí)驗(yàn)的總結(jié):

  1. 在finetuning階段,gMLPs不如transformer,但是,隨著模型變大,和transformer的差距會(huì)不斷縮小;
  2. aMLPs 不同的attention size(64,128),足夠使得模型效果優(yōu)于其他2個(gè)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,708評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,409評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,774評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,976評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,650評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,958評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容