最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

69 BERT預(yù)訓(xùn)練【動手學(xué)深度學(xué)習(xí)v2】

2022-12-13 11:23 作者:如果我是泡橘子  | 我要投稿

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


NLP 里的遷移學(xué)習(xí)

  • 在計算機視覺中比較流行,將 ImageNet 或者更大的數(shù)據(jù)集上預(yù)訓(xùn)練好的模型應(yīng)用到其他任務(wù)中,比如小數(shù)據(jù)的預(yù)測、圖片分類或者是目標檢測

1、使用預(yù)訓(xùn)練好的模型(例如 word2vec 或語言模型)來抽取詞、句子的特征

2、做遷移學(xué)習(xí)的時候,一般不更新預(yù)訓(xùn)練好的模型

3、在更換任務(wù)之后,還是需要構(gòu)建新的網(wǎng)絡(luò)來抓取新任務(wù)需要的信息

  • 使用預(yù)訓(xùn)練好的模型來抽取特征的時候,一般得到的是一些比較底層的特征,很多時候只是當成一個 embedding 層來使用,還是需要設(shè)計一個比較復(fù)雜的模型
  • word2vec 忽略了時序信息
  • 語言模型只看一個方向,而且訓(xùn)練的模型不是很大(RNN 處理不了很長的序列,因為它只能看到很短的一部分)



BERT

1、BERT 是芝麻街中一個人物的名字,芝麻街是美國一個針對小朋友啟蒙的節(jié)目

2、BERT 結(jié)合了 ELMo 對上下文進行雙向編碼以及 GPT 任務(wù)無關(guān)這兩方面的優(yōu)點,對上下文進行雙向編碼,并且對于大多數(shù)的自然語言處理任務(wù)只需要最少的架構(gòu)改變

  • 通過將整個序列作為輸入,ELMo 是為輸入序列中的每一個單詞分配一個表示的函數(shù)(ELMo 將來自預(yù)訓(xùn)練的雙向長短期記憶網(wǎng)絡(luò)的所有中間層表示組合為輸出表示,ELMo 的表示將作為附加特征添加到下游任務(wù)的現(xiàn)有監(jiān)督模型中)
  • 在加入 ELMo 表示之后,凍結(jié)了預(yù)訓(xùn)練的雙向 LSTM 模型中的所有權(quán)重;現(xiàn)有的監(jiān)督模型是專門為給定的任務(wù)定制的(為每一個自然語言處理任務(wù)設(shè)計一個特定的架構(gòu)實際上并不是一件容易的事情),利用不同任務(wù)的不同最佳模型,添加 ELMo 改進了六種自然語言處理任務(wù)的技術(shù)水平:情感分析、自然語言推斷語義角色標注、共指消解、命名實體識別回答
  • GPT (Generative Pre Training ,生成式預(yù)訓(xùn)練)模型為上下文的敏感表示設(shè)計了通用的任務(wù)無關(guān)模型,它在 Transformer 解碼器的基礎(chǔ)上,預(yù)訓(xùn)練了一個用于表示文本序列的語言模型,當將 GPT 應(yīng)用于下游任務(wù)時,語言模型的輸出被送到一個附加的線性輸出層,以預(yù)測任務(wù)的標簽
  • 與 ELMo 凍結(jié)預(yù)訓(xùn)練模型的參數(shù)不同,GPT 在下游任務(wù)的監(jiān)督學(xué)習(xí)過程中對預(yù)訓(xùn)練 Transformer 解碼器中的所有參數(shù)進行微調(diào),GPT 在自然語言推斷、問答句子相似性分類等12項任務(wù)上進行了評估,并在對模型架構(gòu)進行最小更改的情況下改善了其中9項任務(wù)的最新水平
  • ELMo 對上下文進行雙向編碼,但使用特定于任務(wù)的架構(gòu);GPT 是任務(wù)無關(guān)的,但是從左到右編碼上下文(由于語言模型的自回歸特性,GPT 只能向前看(從左到右))
  • 在下游任務(wù)的監(jiān)督學(xué)習(xí)過程中,BERT 在兩方面與GPT相似:BERT 表示將被輸入到一個添加的輸出層中,根據(jù)任務(wù)的性質(zhì)對模型架構(gòu)進行最小的更改(例如預(yù)測每個詞元與預(yù)測整個序列);BERT 對預(yù)訓(xùn)練 Transformer 編碼器的所有參數(shù)進行微調(diào),而額外的輸出層將從頭開始訓(xùn)練
  • BERT 進一步改進了 11 種自然語言處理任務(wù)的技術(shù)水平,這些任務(wù)分為以下幾個大類:單一文本分類(如情感分析)、文本對分類(如自然語言推斷)、問答文本標記(如命名實體識別)

3、原始的 BERT 有兩個版本,其中基本模型有 1.1 億個參數(shù),大模型有 3.4 億個參數(shù)

4、最初的 BERT 模型是在兩個龐大的圖書館語料庫英語維基百科的合集上預(yù)訓(xùn)練的

5、現(xiàn)成的預(yù)訓(xùn)練 BERT 模型可能不適合醫(yī)學(xué)等特定領(lǐng)域的應(yīng)用

6、在預(yù)訓(xùn)練 BERT 之后,可以用它來表示單個文本、文本對其中的任何詞元

7、BERT 表示是上下文敏感的,同一個詞元在不同的上下文中具有不同的 BERT 表示

  • 上下文敏感:同一個詞可以根據(jù)上下文被賦予不同的表示(詞的表征取決于它們的上下文)



BERT 的動機

1、基于微調(diào)的 NLP 模型

2、預(yù)訓(xùn)練的模型抽取了足夠多的信息

3、新的任務(wù)只需要增加一個簡單的輸出層

  • 做微調(diào)的時候,特征抽取的層是可以復(fù)用的(也可以應(yīng)用到別的任務(wù)上面去),只需要修改分類器就可以了
  • 預(yù)訓(xùn)練的模型抽取了足夠多的信息,使得 feature 已經(jīng)足夠好能夠抓住很多的信息,所以在做新的任務(wù)的時候,只需要增加一個輸出層就可以了



BERT 架構(gòu)

1、只有編碼器的 Transformer

2、BERT 在原始的論文中提供了兩個原始的版本(原始 BERT 模型中,輸入序列最大長度是 512)

  • Base:#blocks=12,hidden size=768,#heads=12,#parameters=110M
  • Large:#blocks=24,hidden size=1024,#heads=16,#parameters=340M

3、在大規(guī)模數(shù)據(jù)上訓(xùn)練 > 3B 詞



對輸入的修改

1、每個樣本是一個句子對

  • 從源句子到目標句子
  • 翻譯的時候,源句子進的是編碼器,目標句子進的是解碼器,而現(xiàn)在只有一個編碼器。因為 NLP 中很多情況下都是兩個句子,比如說 Q&A 都是兩個句子,一個句子進去,一個句子出來。在 BERT 中,將兩個句子拼接起來,然后放進編碼器,因此每個樣本就是一個句子對

2、加入額外的片段嵌入

上圖中的“this movie is great”和“i like it”兩個句子是如何放進去的

  • 首先在句首加了一個特殊的分類標簽<cls>(class),作為句子對的開頭( BERT 輸入序列明確地表示單個文本和文本對)
  • 然后在兩個句子至今之間使用了一個特殊的分隔符<sep>(separate),將兩個句子分開(第二個句子末尾也使用了一個分隔符)
  • 也可以做得更長,將更多的句子連接起來,但是一般沒有這種情況的使用場景,所以一般使用兩個句子就夠了

因為有兩個句子,而且僅僅使用標簽的話,對于 transformer 來講并不是很好區(qū)分兩個句子的先后順序,所以額外地添加了一個 Segment Embedding 來進行區(qū)分

  • 對于第一個句子中的所有詞元添加 Segment Embedding 為 0 (包括句首的分類標簽以及兩個句子之間的分隔符)
  • 對于第爾個句子中的所有詞元添加 Segment Embedding 為 1(包括句末的分隔符)

3、位置編碼可學(xué)習(xí)

  • 在 Transformer 編碼器中常見的是,位置嵌入被加入到輸入序列的每個位置,而 BERT 中使用的是可學(xué)習(xí)的位置嵌入( BERT 輸入序列的嵌入是詞元嵌入、片段嵌入和位置嵌入的和)
  • 不再使用 sin 和 cos 函數(shù)



預(yù)訓(xùn)練任務(wù)

BERT 是做一個通用的任務(wù),因為他是一個預(yù)訓(xùn)練模型,做很常見的通用的任務(wù),使得用這個任務(wù)訓(xùn)練出來的數(shù)據(jù)足夠好,以至于做別的任務(wù)的時候都能做

在文本中,最通用的任務(wù)就是語言模型了,給定一個詞,然后預(yù)測下一個詞

  • 但是 BERT 不能直接這么做,因為他里面的編碼器是可以看到后面的東西的
  • Transformer 中的編碼器是雙向的,既看前面又看后面,解碼器才是單向的
  • BERT 中的 B 是 bi-directional ,是雙向的意思,所以它是看雙向的信息,然后抽取比較好的特征,但是如果用來訓(xùn)練語言模型的話就會有問題

因此在 BERT 中做了一個修改,叫做帶掩碼的語言模型

  • 給定一個句子,把中間的一些詞遮起來,然后預(yù)測這些詞,有點類似于完型填空



預(yù)訓(xùn)練任務(wù) 1:掩蔽語言模型(Masked Language Modeling)

1、Transformer 的編碼器是雙向的,標準語言模型要求單向

  • 語言模型使用左側(cè)的上下文預(yù)測詞元
  • 為了雙向編碼上下文以表示每個詞元,BERT 隨機掩蔽詞元并使用來自雙向上下文的詞元以自監(jiān)督的方式預(yù)測掩蔽詞元

2、帶掩碼的語言模型每次隨機(15%概率)將一些詞元(作為預(yù)測的掩蔽詞元)替換成 <mask>

  • 任務(wù)就變成了預(yù)測被遮起來的那些詞,模型就不是預(yù)測未來,而是變成了完型填空,因此看雙向的信息是沒有任何問題的
  • 在每個預(yù)測位置,輸入可以由特殊的“掩碼”詞元或隨機詞元替代,或者保持不變

3、雖然 BERT 在訓(xùn)練的時候加了很多的 <mask> ,但是在微調(diào)任務(wù)中不出現(xiàn) <mask> 這種人造特殊詞元,為了避免預(yù)訓(xùn)練和微調(diào)之間的這種不匹配,解決的辦法是模型不要總是對 <mask> 遮掉的部分進行預(yù)測輸出

  • 80% 概率下,將選中的詞元變成 <mask>
  • 10% 概率下?lián)Q成一個隨機詞元(這種偶然的噪聲鼓勵 BERT 在其雙向上下文編碼中不那么偏向于掩蔽詞元,尤其是當標簽詞元保持不變時)
  • 10% 概率下保持原有的詞元

4、帶掩碼的語言雖然能夠編碼雙向上下文來表示單詞,但是它并不能顯式地建模文本對之間的邏輯關(guān)系



預(yù)訓(xùn)練任務(wù) 2:下一句子預(yù)測(Next Sentence Prediction)

1、給定一個句子對,預(yù)測這個句子對中兩個句子在原始的句子中是不是相鄰,從而幫助理解兩個文本序列之間的關(guān)系

2、在構(gòu)造樣本的時候,訓(xùn)練樣本中:

  • 50% 概率選擇相鄰句子對(在采樣一個句子的時候,將該句子后面的一個句子也采樣進去):<cls> this movie is great <sep> i like it <sep>
  • 50% 概率選擇隨機句子對(在采樣一個句子的時候,在其他地方再隨機挑選一個句子采樣進去):<cls> this movie is great <sep> hello world <sep>

3、將 <cls> 對應(yīng)的輸出放到一個全連接層來預(yù)測,判斷兩個句子是不是相鄰的



總結(jié)

1、BERT 是針對 NLP 的微調(diào)設(shè)計,在大的文本上訓(xùn)練一個比較大的模型,在做別的任務(wù)的時候?qū)⑤敵鰧舆M行修改,最后的效果會比直接訓(xùn)練好一點( BERT 讓微調(diào)在 NLP 中變成了主流)

2、BERT 其實就是一個基于 Transformer 的編碼器,但是做了一點修改

  • 模型更大,訓(xùn)練數(shù)據(jù)更多(一般是至少十億個詞,文本不像圖片,文本不需要進行標記,所以文本可以無限大)
  • 輸入句子對,片段嵌入,可學(xué)習(xí)的位置編碼
  • 訓(xùn)練時使用兩個任務(wù):帶掩碼的語言模型下一個句子預(yù)測

3、word2vec 和 GloVe 等詞嵌入模型與上下文無關(guān),它們將相同的預(yù)訓(xùn)練向量賦給同一個詞,而不考慮詞的上下文(如果有的話),因此很難處理好自然語言中的一詞多義或復(fù)雜語義

4、對于上下文敏感的詞表示,如 ELMo 和 GPT ,詞的表示依賴于它們的上下文

  • ELMo 對上下文進行雙向編碼,但使用特定于任務(wù)的架構(gòu)(為每個自然語言處理任務(wù)設(shè)計一個特定的體系架構(gòu)實際上并不容易)
  • GPT 是任務(wù)無關(guān)的,但是從左到右編碼上下文

5、BERT 結(jié)合了這兩個方面的優(yōu)點:對上下文進行雙向編碼,并且需要對大量自然語言處理任務(wù)進行最小的架構(gòu)更改

6、BERT輸入序列的嵌入是詞元嵌入、片段嵌入和位置嵌入的和

7、BERT 預(yù)訓(xùn)練包括兩個任務(wù):掩蔽語言模型和下一句預(yù)測

  • 掩蔽語言模型能夠編碼雙向上下文來表示單詞
  • 下一句預(yù)測能夠顯式地建模文本對之間的邏輯關(guān)系





Q&A

  • 1、老師能否再解釋一下什么是 embedding?
  • ?
    QA P5 - 00:00
    ?
  • 2、embedding 層是轉(zhuǎn)換單詞的向量表示嗎,比如一個詞原來的向量表示是 v ,經(jīng)過 embedding 層轉(zhuǎn)換為 u 。如果是這樣,那原來的向量表示 v 是怎么來的呢?
  • ?
    QA P5 - 00:15
    ?
  • 3、在做掩碼的時候,10% 的概率保持原來的詞元,那不是什么都沒做嗎,與15% 的概率做 mask 不是矛盾了嗎?
  • ?
    QA P5 - 00:39
    ?
  • 4、老師, bert 需要大量訓(xùn)練數(shù)據(jù),是不是很少用在 CV 上或者基本不用在 CV 上呢?
  • ?
    QA P5 - 02:03
    ?
  • 5、請問老師可以展示下 100w batch 的訓(xùn)練結(jié)果嗎?
  • ?
    QA P5 - 03:16
    ?
  • 6、老師,想用 bert large 作為預(yù)訓(xùn)練模型,但是 bert large 太大了,顯存不足訓(xùn)練不了,想問用沒有好的模型壓縮方式能夠來適應(yīng)訓(xùn)練?
  • ?
    QA P5 - 03:46
    ?
  • 7、bert 的預(yù)訓(xùn)練任務(wù)有什么改進嗎?
  • ?
    QA P5 - 05:01
    ?
  • 8、請問老師,不同數(shù)量級別的數(shù)據(jù)用 bert 做預(yù)訓(xùn)練訓(xùn)練大概多久?怎么評估?
  • ?
    QA P5 - 05:26
    ?





----end----

其他參考

1、《動手學(xué)深度學(xué)習(xí)》,課程 PPT ,https://courses.d2l.ai/zh-v2/assets/pdfs/part-4_6.pdf

2、《動手學(xué)深度學(xué)習(xí)》,教程,https://zh-v2.d2l.ai/chapter_natural-language-processing-pretraining/bert.html

3、《動手學(xué)深度學(xué)習(xí)》,教程,https://zh-v2.d2l.ai/chapter_natural-language-processing-pretraining/bert-dataset.html

4、《動手學(xué)深度學(xué)習(xí)》教程,https://zh-v2.d2l.ai/chapter_natural-language-processing-pretraining/bert-pretraining.html

69 BERT預(yù)訓(xùn)練【動手學(xué)深度學(xué)習(xí)v2】的評論 (共 條)

分享到微博請遵守國家法律
曲阜市| 莆田市| 通海县| 姜堰市| 辽阳市| 南平市| 清水县| 沁源县| 阳谷县| 商南县| 盐边县| 林周县| 易门县| 塘沽区| 东阿县| 郓城县| 苍南县| 永城市| 平泉县| 顺昌县| 乐亭县| 丰宁| 来凤县| 四子王旗| 靖西县| 句容市| 芜湖市| 襄城县| 石楼县| 永嘉县| 井研县| 永川市| 连城县| 玉环县| 铅山县| 章丘市| 淄博市| 马山县| 临泽县| 桃江县| 牟定县|