久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

「課代表來(lái)了」跟李沐讀論文之——BERT

 520jefferson 2021-12-25

墻裂推薦沐神在B站上開(kāi)的一系列公開(kāi)課,,尤其是最近出的“論文精讀”系列,真的講得太好了,??赡芎芏嘟?jīng)典論文咱們之前也讀過(guò),但是聽(tīng)李沐老師再講一遍,,我們又可以收獲很多新知識(shí),,尤其是李沐老師結(jié)合自己豐富的經(jīng)驗(yàn)做出的很多精彩評(píng)論。

上次我分享了沐神講解Transformer的相關(guān)筆記:
「課代表來(lái)了」跟李沐讀論文之——Transformer
本期我們繼續(xù)讀基于Transformer的大作——BERT.

  • B站視頻地址:https:///XbDJENb

標(biāo)題/作者

圖片

BERT:Pre-trainingof Deep Bidirectional Transformers for Language Understanding

Comments by Li Mu: 作者是Google AI Language團(tuán)隊(duì)的幾位小哥,,據(jù)說(shuō)是一作當(dāng)時(shí)突然有了一個(gè)idea,,然后花了幾星期去寫(xiě)代碼、跑實(shí)驗(yàn),,發(fā)現(xiàn)效果特別好,,最后就成了這篇文章??赡軓膇dea到成型就幾個(gè)月,。

摘要

BERT這個(gè)名字是從 Bidirectional Encoder Representations from Transformers得來(lái)的,猜測(cè)是為了湊出Bert這個(gè)詞,,因?yàn)榍懊娴闹ぷ鱁LMo就是美國(guó)家喻戶曉的動(dòng)畫(huà)片芝麻街中的主角之一,。在BERT出來(lái)之后,后面的研究者就開(kāi)始想方設(shè)法地把芝麻街中的重要人物都用了個(gè)遍,。

主要對(duì)比對(duì)象是ELMo和GPT,。最大的作用就是我們可以只是使用預(yù)訓(xùn)練好的BERT模型,,添加一個(gè)任務(wù)相關(guān)的輸出層,就可以在下游任務(wù)上達(dá)到SOTA水平,,極大地降低了NLP任務(wù)的門(mén)檻,。而前面的ELMo則需要對(duì)模型進(jìn)行修改。

最后講了BERT的效果非常好,,即列出了在benchmark上的絕對(duì)精度,,還列出了相對(duì)精度,在11個(gè)NLP任務(wù)上都達(dá)到了SOTA,。

Comments by Li Mu: 在摘要中直接進(jìn)行跟前人工作的對(duì)比,,這種寫(xiě)法是很有意思的(在你的模型很大程度上基于或者對(duì)比前人工作的話,是可以且應(yīng)該直接在最開(kāi)始進(jìn)行介紹的),。在說(shuō)明模型效果的時(shí)候,,絕對(duì)精度和相對(duì)精度都是需要的,前者讓我們知道在公共數(shù)據(jù)集上的絕對(duì)實(shí)力(尤其對(duì)于小同行),,后者則給讀者(尤其是更廣泛的讀者甚至外行)一個(gè)關(guān)于模型效果的直觀的感受,。

Intro

BERT不是第一個(gè)做NLP預(yù)訓(xùn)練的,而是第一次讓這個(gè)方法出圈了,。

從intro部分我們可以知道,,language model pre-training其實(shí)之前多年前就有了。

使用預(yù)訓(xùn)練模型來(lái)幫助下游任務(wù)的時(shí)候,,現(xiàn)有的做法有兩種:

  • feature-based方式,例如ELMo,,就是把預(yù)訓(xùn)練的表示作為額外的特征,,加入到特定任務(wù)的模型中;
  • fine-tuning方式,,例如GPT,,盡可能少的引入任務(wù)相關(guān)的參數(shù),而主要是在預(yù)訓(xùn)練好的參數(shù)上面進(jìn)行微調(diào),;

前面的ELMo和GPT的方法,,都是使用單向的語(yǔ)言模型來(lái)學(xué)習(xí)通用的語(yǔ)言表示。例如在GPT中,,作者設(shè)計(jì)了一種從左到右的架構(gòu),,在Transformer的self-attention中每個(gè)token只能attend到前面的token。在更早的ELMo中,,由于使用的是RNN的架構(gòu),,更加是單向的語(yǔ)言模型。這一點(diǎn)嚴(yán)重限制了作為預(yù)訓(xùn)練使用的語(yǔ)言表示能力,。比如在做NER的時(shí)候,,我們都是可以看到上下文的,。

BERT主要就是為了解決這種單向的限制,設(shè)計(jì)了一種'mask language modeling'(MLM)的方式,,來(lái)進(jìn)行雙向的語(yǔ)言模型預(yù)訓(xùn)練,。這一點(diǎn)是借鑒了完形填空(cloze)任務(wù)。另外,,作者還設(shè)計(jì)了一個(gè)叫'next sentence prediction'(NSP)的任務(wù)來(lái)預(yù)訓(xùn)練,,即判斷兩個(gè)句子是否是相鄰的,還是隨機(jī)的,,這樣可以學(xué)習(xí)句子層面的信息,。

下圖展示了BERT跟前面工作的結(jié)構(gòu)上的對(duì)比(在最新版的論文中,這個(gè)圖是在附錄部分,,在最初的版本中這則是文章第一個(gè)圖):圖片

貢獻(xiàn):

  • 展現(xiàn)了雙向語(yǔ)言模型的作用,;
  • 展示了預(yù)訓(xùn)練表示對(duì)于降低下游任務(wù)工作量的巨大作用,并且是首個(gè)在一大把NLP任務(wù)上都取得SOTA的預(yù)訓(xùn)練-微調(diào)模式的表示模型,;
  • 代碼和預(yù)訓(xùn)練模型都公開(kāi)了,。

結(jié)論

使用非監(jiān)督的預(yù)訓(xùn)練是非常好的,對(duì)于低資源場(chǎng)景的任務(wù)尤其有益,。主要貢獻(xiàn)來(lái)自于使用了雙向的語(yǔ)言模型,。

相關(guān)工作

  1. 無(wú)監(jiān)督的feature-based pre-training,代表作ELMo
  2. 無(wú)監(jiān)督的fine-tuning pre-training,,代表作GPT
  3. 有監(jiān)督的transfer learning,,代表作就是CV中那些進(jìn)行Imagenet進(jìn)行transfer learning,這在NLP中卻用的不是很多,。主要是由于高質(zhì)量的通用的有標(biāo)簽文本數(shù)據(jù)相對(duì)較少,。

BERT模型設(shè)計(jì)

兩個(gè)步驟:pre-training 和 fine-tuning

在pre-training階段使用無(wú)標(biāo)簽的數(shù)據(jù),在fine-tuning階段,,BERT模型使用前面預(yù)訓(xùn)練的權(quán)重來(lái)初始化,,然后使用下游任務(wù)有標(biāo)簽的數(shù)據(jù)進(jìn)行微調(diào)。

圖片
兩階段

模型結(jié)構(gòu)和參數(shù)

模型結(jié)構(gòu)是直接使用原始的Transformer,。使用了兩種不同架構(gòu):(L=12, H=768, A=12,,總參數(shù)量110M)和(L=24, H=1024, A=16,總參數(shù)量340M),,其中L是Transformer的層數(shù)/block數(shù),,H是hidden size,A是頭數(shù),。

后面沐神也講解了參數(shù)量是咋算的(這部分真是太棒了):

圖片
參數(shù)量的計(jì)算

參數(shù)的來(lái)源主要是Transformer中的embedding層,、multi-head attention的投影矩陣、MLP層:

  • embedding層:詞匯量為V,,詞向量維度為H,,所以這部分參數(shù)里為 ,;
  • multi-head:分別是使用了A個(gè)小投影矩陣來(lái)講原本的H維向量給降維成多個(gè)低維向量,但向量維度之和還是H,,所以多個(gè)小投影矩陣合并起來(lái)就是一個(gè) 矩陣,,然后因?yàn)閟elf-attention會(huì)分成QKV,所以這里有3個(gè),;除此之外,,在經(jīng)過(guò)multi-head分開(kāi)后又會(huì)合并成一個(gè)H的向量,會(huì)再經(jīng)過(guò)一個(gè)投影矩陣,,也是,,所以這部分總共有;
  • MLP層:Transformer中使用的是一個(gè)由兩個(gè)全連接層構(gòu)成的FNN,,第一個(gè)全連接層會(huì)將維度放大4倍,,第二個(gè)則降維到原始的H,因此,,這里的參數(shù)量為.
  • 上面的multi-head和MLP,,都屬于一個(gè)Transformer block,而我們會(huì)使用L個(gè)blocks,。

因此,,總體參數(shù)量=.

這么算下來(lái),差不多參數(shù)量是108M,,是330M,。(跟原文說(shuō)的接近的,但相差的部分在哪兒呢,?)

輸入的表示

為了適應(yīng)不同的下游任務(wù),,BERT的輸入既可以是單個(gè)句子,也可以是一個(gè)句子對(duì)(例如<Question, Answer>),。

在輸入token方面,,使用WordPiece的embedding方式,,也是sub-word tokenization的方式的一種,,我們看到的那些前前面帶有'##'的詞就代表這是被wordpiese給切開(kāi)的子詞。這樣可以減少詞匯量,,最終詞匯量是30000,。

每個(gè)序列的開(kāi)頭的token,都是一個(gè)特殊的分類(lèi)token——[CLS],,這個(gè)token對(duì)應(yīng)的最后一次的hidden state會(huì)被用來(lái)作為分類(lèi)任務(wù)中的整個(gè)序列的表示,。對(duì)于非分類(lèi)任務(wù),這個(gè)向量是被忽略的,。

處理句子對(duì)時(shí),,對(duì)模型來(lái)說(shuō)還是一個(gè)序列,,只不過(guò)兩個(gè)句子中間用一個(gè)特殊的[SEP] token進(jìn)行了連接。兩個(gè)句子分別還配有可學(xué)習(xí)的segment embedding,;而對(duì)于僅有一個(gè)句子的輸入,,我們就只使用一個(gè)segment embedding.

圖片
輸入的embedding

BERT的預(yù)訓(xùn)練

Masked LM

隨機(jī)地把原文中的15%的token給遮蓋住,即用一個(gè) [MASK] token來(lái)替換原來(lái)的詞,。然后把mask之后的文本輸入到模型中,,讓模型去預(yù)測(cè)這些被mask掉的詞。這樣就實(shí)現(xiàn)了雙向的語(yǔ)言模型,。

但這樣做會(huì)導(dǎo)致預(yù)訓(xùn)練和微調(diào)階段的不一致性:預(yù)訓(xùn)練的時(shí)候輸入都是帶有 [MASK] token的,,而這個(gè)token在微調(diào)階段是看不到的,這樣自然會(huì)影響微調(diào)時(shí)的效果,。為了緩解這個(gè)問(wèn)題,,作者使用了如下的操作:

  • 當(dāng)挑到某個(gè)詞去mask的時(shí)候,80%的概率會(huì)真的被替換成[MASK],,10%的概率會(huì)被替換成一個(gè)隨機(jī)的真實(shí)token,,還有10%的概率不進(jìn)行任何操作。

這種做法,,說(shuō)實(shí)話還是挺費(fèi)解的,,讓人感覺(jué)也不一定有多大效果,但作者說(shuō)這樣可以緩解一點(diǎn)就緩解一點(diǎn)吧,。(實(shí)際上現(xiàn)在也有很多研究在解決這個(gè)問(wèn)題,,這部分后面補(bǔ)充...)

另外一個(gè)問(wèn)題在于MLM在這里只使用了15%的mask比例,這會(huì)讓模型需要訓(xùn)練更久才能收斂,。但好在最終的效果非常好,,所以也值了。(不知道如果使用更大的比例會(huì)怎么樣,?)

Next Sentence Prediction

很多的下游任務(wù),,比如QA(問(wèn)答)和NLI(自然語(yǔ)言推理)任務(wù),都需要模型能夠理解句子之間的關(guān)系,,而這種關(guān)系難以被MLM所學(xué)習(xí)到,。因此作者設(shè)計(jì)了一個(gè)輸入句子對(duì)的二分類(lèi)的NSP任務(wù):

  • 50%的樣本中,句子A和句子B是在真實(shí)文本中連續(xù)的句子,,標(biāo)簽是 IsNext,;
  • 50%的樣本中,B跟A不是連續(xù)的,,而是隨機(jī)挑選的句子,,標(biāo)簽是 NotNext.

雖然這個(gè)任務(wù)看起來(lái)非常簡(jiǎn)單,而且作者說(shuō)在預(yù)訓(xùn)練時(shí)這個(gè)任務(wù)可以達(dá)到97%以上的準(zhǔn)確率,,但后面的實(shí)驗(yàn)證明確實(shí)對(duì)QA和NLI任務(wù)有很大的幫助,。

注意到pre-training的那個(gè)圖,,在NSP任務(wù)中,我們使用的是[CLS] token對(duì)應(yīng)的hidden state來(lái)訓(xùn)練的,,即我們使用這個(gè)[CLS]來(lái)代表我整個(gè)句子對(duì)的表示,,用它來(lái)進(jìn)行二分類(lèi)任務(wù)。

BERT的微調(diào)

對(duì)于sequence-level的任務(wù),,我們可以直接使用CLS的向量作為sequence的表示,,然后后面加一個(gè)簡(jiǎn)單的softmax層來(lái)進(jìn)行訓(xùn)練;對(duì)于span-level或者token-level的任務(wù),,也只用稍微修改一下跟任務(wù)相關(guān)的輸出層即可,。

另外,微調(diào)跟預(yù)訓(xùn)練時(shí)的差別還在BERT模型訓(xùn)練的一些超參數(shù)上,,比如learning rate,,batch size等等。例如在pre-training階段batch size=256,,而在fine-tuning階段作者推薦使用16或者32.

具體如何針對(duì)下游任務(wù)進(jìn)行微調(diào)

GLUE

GLUE數(shù)據(jù)集一般都是sequence-level的任務(wù),,主要都是分類(lèi),既有單句子的,,也有句子對(duì)的任務(wù),。這種就是直接用CLS配合一個(gè)softmax來(lái)跑即可。

圖片
GLUE

SQuAD (問(wèn)答)

給定一個(gè)問(wèn)題,,從一段話中找出答案所在的片段,。所以問(wèn)題轉(zhuǎn)化為對(duì)每個(gè)token判斷是否是答案的開(kāi)頭或結(jié)尾。具體細(xì)節(jié)由于我不做問(wèn)答,,所以詳情見(jiàn)論文吧,。

SWAG

這是另外一個(gè)句子對(duì)推理任務(wù),其實(shí)跟NSP任務(wù)比較像,,所以這里也不多介紹了,。

以上的任務(wù),作者也花了幾個(gè)示意圖告訴我們?nèi)绾巫鋈蝿?wù)相關(guān)的模型調(diào)整:

對(duì)于分類(lèi)任務(wù):

圖片
sequence classification

對(duì)于token標(biāo)注:

圖片
token classification

所以總體上看,,我們只需要做微小的調(diào)整,,就可以應(yīng)對(duì)各種下游任務(wù)。

消融實(shí)驗(yàn)

作者繼續(xù)做了一些消融實(shí)驗(yàn),,來(lái)看看NSP,、雙向語(yǔ)言模型等的作用,。

圖片
ablation study

從上圖可看到,,對(duì)于各種任務(wù)來(lái)說(shuō),NSP預(yù)訓(xùn)練還是有幫助的,,把NSP去掉的話,,在很多任務(wù)上效果都會(huì)降低(但好像也沒(méi)有那么明顯哈),;然后如果只使用Left-to-right(LTR)的語(yǔ)言模型的話,效果會(huì)進(jìn)一步降低,,這個(gè)降低就比較明顯了,。

總之,這個(gè)實(shí)驗(yàn)論證了BERT的幾個(gè)關(guān)鍵點(diǎn)都是重要的,。

預(yù)訓(xùn)練模型的大小

BERT這個(gè)論文,,證明了使用一個(gè)很大的預(yù)訓(xùn)練模型,可以極大地提高下游任務(wù)的表現(xiàn),。

從現(xiàn)在的眼光看,,BERT也不算大了,例如GPT3的大小就是BERT的1000倍(千億),,現(xiàn)在甚至萬(wàn)億級(jí)別的模型都在不斷出現(xiàn),。

只使用BERT作為特征抽取器的效果

作者還探究了一下用feature-based的方式來(lái)利用BERT預(yù)訓(xùn)練的表示的效果,下表是在一個(gè)NER任務(wù)上的結(jié)果:

圖片
使用bert作為靜態(tài)特征提取器

總體結(jié)論是,,如果使用BERT的話,,還是盡量用fine-tuning的方式效果會(huì)更好。但是從圖中看,,將最后幾層的hidden states拼接起來(lái)作為特征,,效果在NER上也不錯(cuò)。

總結(jié)

作者對(duì)這個(gè)工作最大的貢獻(xiàn)總結(jié)為BERT的雙向性,,然而雙向語(yǔ)言模型和單向模型,,其實(shí)只是不同的策略,使用雙向的方式進(jìn)行預(yù)訓(xùn)練,,那自然在某些任務(wù)上會(huì)有些損失,,比如在機(jī)器翻譯、摘要生成等任務(wù),,可能BERT就沒(méi)有GPT那么優(yōu)秀,。這其實(shí)就是有得必有失。

Comments by Li Mu: 對(duì)于寫(xiě)文章,,我們最好是重點(diǎn)突出一個(gè)賣(mài)點(diǎn),,不要太多了。例如這篇文章就是突出”雙向語(yǔ)言模型“,。

最后,,沐神提出了一個(gè)靈魂拷問(wèn):其實(shí)BERT從整個(gè)流程上,跟GPT的工作是很類(lèi)似,,都是先預(yù)訓(xùn)練,,在進(jìn)行下游任務(wù)微調(diào)。為什么BERT更晚,卻更出圈,,現(xiàn)在名氣和影響力是遠(yuǎn)遠(yuǎn)大于GPT的,?

這個(gè)問(wèn)題,在B站評(píng)論區(qū)大家也在討論,,大家的一個(gè)觀點(diǎn)是:因?yàn)锽ERT做了更好的開(kāi)源,,把代碼、預(yù)訓(xùn)練模型都直接公開(kāi)出來(lái)了,。這讓廣大的研究者可以直接拿來(lái)使用,,體驗(yàn)預(yù)訓(xùn)練的威力,因此很快就可以傳播開(kāi),。

這一點(diǎn)告訴我們,,開(kāi)源、可復(fù)現(xiàn),、方便后續(xù)研究者使用,,對(duì)一個(gè)研究工作有很大的推動(dòng)作用。現(xiàn)在很多的論文,,發(fā)表在頂會(huì)頂刊上,,卻不公開(kāi)代碼,或者代碼公開(kāi)了卻寫(xiě)的稀爛,,沒(méi)有任何的文檔來(lái)幫助人們復(fù)現(xiàn),,這必然極大影響論文最終的影響力,甚至影響作者的聲譽(yù),。

“做真正有影響力,、有價(jià)值的研究,而不是為了水水文章,、增加自己的publications,。”這句最簡(jiǎn)單,、最樸素的科研工作者都應(yīng)該有的價(jià)值觀,,在當(dāng)下的環(huán)境下,尤其是國(guó)內(nèi)這種長(zhǎng)期以來(lái)的追求論文數(shù)量的價(jià)值觀,、高校不合理的考核機(jī)制,、各大技術(shù)廠商的極端內(nèi)卷等影響下,顯得無(wú)比珍貴,。

其他原創(chuàng)好文


Huggingface??NLP筆記8:使用PyTorch來(lái)微調(diào)模型「初級(jí)教程完結(jié)撒花ヽ(°▽°)ノ」
何時(shí)能懂你的心——圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)
【DL筆記6】從此明白了卷積神經(jīng)網(wǎng)絡(luò)(CNN)
Hello NLP(2)——關(guān)于word2vec你想知道的一切
整理了12個(gè)小時(shí),,只為讓你可以20分鐘搞懂seq2seq
博一結(jié)束后的一些反思

SimpleAI
追求用簡(jiǎn)單、有趣的方式來(lái)分享AI知識(shí),。
78篇原創(chuàng)內(nèi)容
公眾號(hào)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多