base-llm 1.5.3 T5結(jié)構(gòu)及應(yīng)用

Bert是基于Encoder架構(gòu),擅長理解(如分類、實(shí)體識別),GPT基于Decoder架構(gòu),擅長生成(如續(xù)寫、對話), T5回歸了Encoder-Decoder架構(gòu),將輸入輸出形式上尋找一種通解,將所有NLP任務(wù)都視為“文本到文本”的轉(zhuǎn)換問題,以此來統(tǒng)一理解和生成任務(wù)。

一、萬物皆文本的核心概念

在BERT模式下,針對不同的任務(wù)需要設(shè)計(jì)不同的模型結(jié)構(gòu):

  • 文本任務(wù): BERT+全連接層
  • 序列標(biāo)注: BERT+CRF/分類層
  • 文本相似度: 雙塔BERT或拼接輸入+回歸層

Google提出的T5模型打破了這種模式。它提出——無論是什么任務(wù),輸入是文本,輸出也是文本。

1.1. 提示詞的先去與多任務(wù)平衡

T5引入了Task Prefix(任務(wù)前綴)的概念。例如,在翻譯是,輸入文本前加上 翻譯成英文:;在做摘要是,加上摘要:。

T5是較早地將“使用自然語言提示指令顯式定義任務(wù)”這一范式應(yīng)用到大規(guī)模訓(xùn)練與多任務(wù)設(shè)置中的模型之一。證明了通過改變輸入文本來變成模型,而不是改變模型結(jié)構(gòu)。

T5 Prefix 和GPT Prompt區(qū)別
T5 Prefix: 主要用于有監(jiān)督微調(diào)。模型訓(xùn)練時(shí)堅(jiān)果這些前綴,是多任務(wù)學(xué)習(xí)的一種標(biāo)記,告訴模型當(dāng)前要調(diào)用哪部分參數(shù)。
GPT Prompt: 主要用于零樣本/少樣本推理。模型在預(yù)訓(xùn)練時(shí)可能沒見過特定的Prompt, 依靠強(qiáng)大的泛化能力,能通過Prompt理解用戶意圖,無需更新參數(shù)。

有監(jiān)督階段,T5將多個(gè)任務(wù)統(tǒng)一為多個(gè)多任務(wù)學(xué)習(xí)框架。針對不同任務(wù)的數(shù)據(jù)量差異巨大,為了防止大任務(wù)淹沒小人物,T5采用一種帶上限的比例混合策略(對大數(shù)據(jù)集設(shè)置采樣上限、適當(dāng)提升小數(shù)據(jù)集的采樣概率),確包模型能雨露均沾地學(xué)習(xí)各種能力。

1.2 獨(dú)特的預(yù)訓(xùn)練目標(biāo) Span Corruption

Bert 采用的單字掩碼,GPT采用的單向預(yù)測。T5設(shè)計(jì)了一種全新預(yù)訓(xùn)練目標(biāo)——Span Corruption (片段破壞與重構(gòu))。

  • 破壞: 輸入文本中隨機(jī)選中一些連續(xù)的片段,并將他們替換為特殊的哨兵符, 如<extra_id_0>,<extra_id_1>.
  • 重構(gòu): 要求Decoder生成被遮蓋的片段。


    image.png

關(guān)鍵設(shè)計(jì)細(xì)節(jié):

  1. Mask 比例與長度: T5 講過大量實(shí)驗(yàn)發(fā)現(xiàn),遮蓋15%的token,且平均長度為3時(shí),模型性能最佳。這比Bert僅遮蓋單個(gè)token更有挑戰(zhàn)性,會(huì)迫使模型理解更長的上下文依賴。
  2. 哨兵符的唯一性: 輸出序列中包含的<extra_id_0>等哨兵符是唯一的,不與詞表中普通詞共享,這讓Decoder能夠?qū)s地定位它正在恢復(fù)的是哪一段內(nèi)容。


    image.png

預(yù)訓(xùn)練任務(wù)兼顧了理解與生成,配合使用的C4(Colossal Clean Crawled Corpus)超大規(guī)模清晰數(shù)據(jù)集,模型學(xué)習(xí)到了機(jī)器豐富的語言知識。

二、T5 架構(gòu)解析

T5是標(biāo)準(zhǔn)的Encoder-Decoder模型,具備Bert雙向理解能力,又具有GPT的生成能力,符合Text-to-Text的任務(wù)設(shè)定。

2.2 關(guān)鍵技術(shù)改進(jìn)

1. 相對位置編碼

BERT和GPT使用的是絕對位置編碼,但T5認(rèn)為注意力應(yīng)該乖豬詞與詞之間的相對距離,而不是他們句子中的絕對坐標(biāo)。

T5采用了基于分桶的相對位置編碼方案:

  • 近距離精確,遠(yuǎn)距離模糊:對于相鄰的詞,模型會(huì)精確區(qū)分他們的距離,對應(yīng)較遠(yuǎn)的詞,模型通過對數(shù)映射將他們歸入一個(gè)桶中。
  • 參數(shù)共享: 不是直接加在input Embedding上,而是作為Bias(偏置) 直接加載Attention Score(Q-K)矩陣上,這些編碼的參數(shù)所有層之間共享,即每一層都使用一組Bias參數(shù),大幅度減少了參數(shù)量。

2. 簡化版LayerNormalization

T5去除了加性偏置,僅對激活值進(jìn)行縮放,這種設(shè)計(jì)在保證性能的同事,減少了參數(shù)量和計(jì)算開銷。
此外,原版T5在FFN中使用仍是標(biāo)準(zhǔn)的ReLU激活函數(shù)。知道后續(xù)的T5 v1.1版本,才引入了更復(fù)雜的GEGLU門控激活單元。

3. SentencePiece 分詞器

與BERT使用WordPiece、GPT使用BPE不同, T5采用了SentencePiece分詞器。

  • 處理原始文本: BERT是現(xiàn)將原始文本進(jìn)行與分詞,T5的SentencePiece直接在原始文本上進(jìn)行訓(xùn)練,將空格視為特殊字符處理。
  • 語言無關(guān)性: 使T5能夠天然支持多語言混合訓(xùn)練,不需要針對每種語言設(shè)定分詞規(guī)則,符合其大一統(tǒng)的設(shè)計(jì)哲學(xué)。

SentencePiece 是由 Google 開源的一款無監(jiān)督文本分詞器(Tokenizer)和去分詞器(Detokenizer),專為神經(jīng)網(wǎng)絡(luò)文本生成系統(tǒng)設(shè)計(jì)。
簡單來說,它的作用是將原始文本轉(zhuǎn)換成神經(jīng)網(wǎng)絡(luò)能理解的數(shù)字序列(ID),或者將數(shù)字序列還原回文本。與傳統(tǒng)的分詞工具不同,它不依賴語言特定的預(yù)處理規(guī)則,而是將句子視為 Unicode 字符序列,直接從原始文本中學(xué)習(xí)分詞模型。

三、T5代碼實(shí)戰(zhàn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容