博客專欄

        EEPW首頁(yè) > 博客 > 谷歌&HuggingFace | 零樣本能力最強(qiáng)的語(yǔ)言模型結(jié)構(gòu)

        谷歌&HuggingFace | 零樣本能力最強(qiáng)的語(yǔ)言模型結(jié)構(gòu)

        發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2022-07-23 來(lái)源:工程師 發(fā)布文章
        從 GPT3 到 Prompt,越來(lái)越多人發(fā)現(xiàn)大模型在零樣本學(xué)習(xí)(zero-shot)的設(shè)定下有非常好的表現(xiàn)。這都讓大家對(duì) AGI 的到來(lái)越來(lái)越期待。


        但有一件事讓人非常疑惑:19 年 T5 通過(guò)“調(diào)參”發(fā)現(xiàn),設(shè)計(jì)預(yù)訓(xùn)練模型時(shí),Encoder-Decoder 的模型結(jié)構(gòu) + MLM 任務(wù),在下游任務(wù) finetune 效果是最好的。可是在 2202 年的當(dāng)下,主流的大模型用的都是僅 decoder 的模型結(jié)構(gòu)設(shè)計(jì),比如 OpenAI 的 GPT 系列、Google 的 PaLM [1]、Deepmind 的 Chinchilla [2] 等等。這是為什么?難道這些大模型設(shè)計(jì)都有問(wèn)題?
        今天帶來(lái)一篇 Hugging Face 和 Google 的文章。這篇文章與 T5 在實(shí)驗(yàn)上的思路相似,通過(guò)大量對(duì)比設(shè)計(jì),得到一個(gè)重磅結(jié)論:要是為了模型的 zero-shot 泛化能力,decoder 結(jié)構(gòu) + 語(yǔ)言模型任務(wù)最好;要是再 multitask finetuning,encoder-decoder 結(jié)構(gòu) + MLM 任務(wù)最好。
        除了找到最好的訓(xùn)練方式,作者通過(guò)大量的實(shí)驗(yàn),還找到了最好的同時(shí)還能最節(jié)省成本的訓(xùn)練方式。訓(xùn)練計(jì)算量只需要九分之一!

        論文題目:
        What Language Model Architecture and Pretraining Objective Work Best for Zero-Shot Generalization?

        論文鏈接:
        https://arxiv.org/abs/2204.05832


        模型設(shè)計(jì)
        圖片
        模型設(shè)計(jì)可以分成圖中的四個(gè)方面,即選什么結(jié)構(gòu)?什么訓(xùn)練目標(biāo)?要不要搞 adaptation?multitask finetuning?文章還在兩個(gè) benchmark 進(jìn)行了評(píng)測(cè)。

        模型結(jié)構(gòu) Architecture


        模型結(jié)構(gòu)都基于 transformer,有三個(gè)選項(xiàng),如圖所示:
        圖片

        1. Causal decoder-only (CD):直接只用 transformer decoder。這類模型大多使用語(yǔ)言模型的訓(xùn)練目標(biāo),即通過(guò)上文預(yù)測(cè)當(dāng)前 token。代表作有 GPT 系列。
        2. Non-causal decoder-only (ND):為了能在給定條件下生成或基于輸入生成,訓(xùn)練時(shí)可以讓前面一部分 token 可見(jiàn)。
        3. Encoder-decoder (ED):這就是原始 transformer 的結(jié)構(gòu),輸入一個(gè)序列,encoder 輸出同樣長(zhǎng)度的向量表示序列,decoder 基于 encoder 的輸出做有條件的自回歸生成。


        小結(jié)一下,CD 是只用 decoder,ND 是給提示的 decoder,ED 是 encoder-decoder。后面將用縮寫(xiě)表示。

        訓(xùn)練目標(biāo) Objective


        與模型結(jié)構(gòu)對(duì)應(yīng),訓(xùn)練目標(biāo)也有三種:
        圖片

        1. Full language modeling (FLM):CD 類的模型架構(gòu)常用 FLM,通過(guò)上文預(yù)測(cè)當(dāng)前 token。在訓(xùn)練時(shí),每個(gè) token 可以并行計(jì)算出 loss,預(yù)測(cè)時(shí)要迭代預(yù)測(cè)。
        2. Prefix language modeling (PLM):ND 類和 ED 類的模型架構(gòu)可以用 PLM。首先在 attention 矩陣中定義一段 prefix,訓(xùn)練時(shí)要求模型生成 prefix 后面的 tokens。
        3. Masked language modeling (MLM):只用 Encoder 的模型常用 MLM 目標(biāo)。后來(lái)在 T5 這個(gè) seq2seq 模型里,也使用了整段 mask 的 MLM 任務(wù)。


        小結(jié)一下,F(xiàn)LM 就是語(yǔ)言模型目標(biāo),PLM 是帶提示的語(yǔ)言模型目標(biāo),MLM 是掩碼目標(biāo)。后面也會(huì)用縮寫(xiě)表示。

        適應(yīng)任務(wù) Adaptation


        適應(yīng)任務(wù)是預(yù)訓(xùn)練之后,換一個(gè)新的訓(xùn)練目標(biāo),繼續(xù)訓(xùn)練。與 finetune 不同的是,適應(yīng)的過(guò)程并沒(méi)有使用新的下游任務(wù)的數(shù)據(jù),只是繼續(xù)使用預(yù)訓(xùn)練的數(shù)據(jù)。適應(yīng)任務(wù)也可以分成兩類。

        1. Language modeling adaptation (LM-A):預(yù)訓(xùn)練用 MLM,后面再用 PLM 或 FLM 繼續(xù)訓(xùn)練。MLM + FLM 就是 T5 采用的方式,而 MLM + PLM,就是之前非常火的連續(xù)化 prompt-tuning 的方法,比如 prefix-tuning 等等。
        2. Non-causal MLM adaptation (NC-A) :預(yù)訓(xùn)練用的是 PLM,后面再用 FLM 繼續(xù)訓(xùn)練。這個(gè)方法是本文首次提出的,給 decoder 前面一部分 prefix 固定住,用 PLM 目標(biāo)訓(xùn)練,相當(dāng)于給 GPT 做 prefix-tuning。

        多任務(wù)微調(diào) Multitask finetuning


        圖片
        多任務(wù)微調(diào) multitask finetuning (MT-F) 是 Hugging Face 去年年底的工作 [3],即拿到預(yù)訓(xùn)練模型,給他在 171 個(gè)任務(wù)上用 prompt 的方式同時(shí) finetune。這種方式可以極大地增加預(yù)訓(xùn)練模型的 zero-shot 能力。
        實(shí)驗(yàn)和結(jié)論

        評(píng)測(cè)任務(wù)


        這篇文章用了兩個(gè) benchmark:

        1. EleutherAI LM Evaluation Harness (EAI-Eval):這個(gè)任務(wù)是用來(lái)評(píng)測(cè)語(yǔ)言模型(也就是本文中使用 FLM 訓(xùn)練目標(biāo)的模型)的 zero-shot 能力。
        2. T0 的測(cè)試集 (T0-Eval):就是 Hugging Face 之前 multitask finetuning 工作使用的測(cè)試集。


        這兩個(gè)測(cè)試集都是用 prompt 的方式進(jìn)行測(cè)試,即直接構(gòu)建 prompt 輸入給預(yù)訓(xùn)練模型,讓模型生成預(yù)測(cè)結(jié)果。兩個(gè)測(cè)試集不同的地方在于,EAI-Eval 的每個(gè)任務(wù)只給了一個(gè) prompt,因此評(píng)測(cè)受 prompt 波動(dòng)影響比較大,因此在本文的測(cè)試?yán)铮髡邆優(yōu)槊總€(gè)任務(wù)多設(shè)計(jì)了一些 prompts,來(lái)消除隨機(jī)性。

        結(jié)論


        實(shí)驗(yàn)得到如下結(jié)論:

        1. 只無(wú)監(jiān)督預(yù)訓(xùn)練時(shí):

        CD 的模型結(jié)構(gòu) + FLM 訓(xùn)練目標(biāo) = zero shot 最好的模型。
        圖片
        這里就跟現(xiàn)在的大模型對(duì)上了。大模型都用的是這個(gè)組合,有最好的零樣本泛化能力。

        1. 預(yù)訓(xùn)練之后再加上多任務(wù)微調(diào)時(shí):


        ED 的模型結(jié)構(gòu) + MLM 訓(xùn)練目標(biāo) = zero shot 最好的模型。
        圖片
        這張圖左右表示兩個(gè)評(píng)測(cè)集。每張圖上都有九個(gè)點(diǎn),代表九個(gè)模型架構(gòu)和訓(xùn)練目標(biāo)的組合。左邊 T0-Eval 上結(jié)果非常明顯:可以將九個(gè)組合分成三組,左邊是幾個(gè) baseline,中間是三種模型結(jié)構(gòu) + 語(yǔ)言模型訓(xùn)練目標(biāo),右邊是三種模型結(jié)構(gòu) + MLM 訓(xùn)練目標(biāo)。可以明顯看到,MLM 訓(xùn)練目標(biāo)明顯更好,MLM + ED 最好。

        1. 適應(yīng)任務(wù)的作用:


        圖片
        預(yù)訓(xùn)練之后,換一個(gè)新的訓(xùn)練目標(biāo),繼續(xù)訓(xùn)練,這帶來(lái)的主要是訓(xùn)練成本的降低。比如左圖,本身我們想要一個(gè) CD + FLM 的結(jié)合,那就先訓(xùn)一個(gè) ND + MLM,然后改成 CD + FLM 再做適應(yīng)任務(wù),這樣可以總體提速 1.6 倍。
        經(jīng)過(guò)一系列實(shí)驗(yàn),作者最后總結(jié)出一個(gè)結(jié)論:如果想最低成本的構(gòu)建效果好的大模型,那就用 CD + FLM 預(yù)訓(xùn)練,然后再改用 ND + MLM 做適應(yīng)任務(wù),最后再使用多任務(wù)微調(diào)。這樣的訓(xùn)練方式要比直接訓(xùn)練提速 9.1 倍,同時(shí)效果最好。
        總結(jié)
        這篇文章跟 T5 非常像,也是用調(diào)參的感覺(jué)在設(shè)計(jì)實(shí)驗(yàn),最終找到最好的模型設(shè)計(jì)和訓(xùn)練方式。這樣的論文讀下來(lái)也感覺(jué)邏輯清晰嚴(yán)謹(jǐn)。
        但是從另外一個(gè)角度想,這樣的文章似乎也有些無(wú)聊:現(xiàn)在大模型的使用,變成了找 prompt 的特征工程。這篇文章的訓(xùn)練和設(shè)計(jì)也變成了調(diào)參,而失去了創(chuàng)新的靈機(jī)一動(dòng)。這可能代表了大模型領(lǐng)域的內(nèi)卷吧。
        參考文獻(xiàn):

        [1] Aakanksha Chowdhery, et. el., "Palm: Scaling language modeling with pathways.", https://arxiv.org/abs/2204.02311

        [2]Jordan Hoffmann, et. al., "Training Compute-Optimal Large Language Models.", https://arxiv.org/abs/2203.15556[3]Victor Sanh, et. al., "Multitask Prompted Training Enables Zero-Shot Task Generalization", https://arxiv.org/abs/2110.08207

        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: AI

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 奉化市| 元氏县| 自治县| 太原市| 托克逊县| 汶川县| 望奎县| 萨嘎县| 高安市| 两当县| 牙克石市| 四平市| 沭阳县| 浦城县| 淮滨县| 安阳市| 嘉祥县| 武鸣县| 佛山市| 益阳市| 三明市| 黎城县| 台北市| 肃宁县| 固原市| 固始县| 鲜城| 理塘县| 天台县| 玉树县| 武陟县| 油尖旺区| 虹口区| 贵港市| 体育| 龙门县| 阿勒泰市| 龙江县| 余干县| 孝昌县| 张家界市|