日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

读论文:BERT Pre-training of Deep Bidirectional Transformers for Language Understanding

發布時間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读论文:BERT Pre-training of Deep Bidirectional Transformers for Language Understanding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 0.Abstract
  • 1.Introduction
  • 2.Related Work
  • 3.Bert模型
    • 3.1 預訓練Bert
    • 3.2 微調Bert


Bert之前預訓練大多用于cv,Bert的出現讓預訓練在nlp領域大顯身手,淺談一下讀這篇論文的理解


0.Abstract

首先來看標題,Pre-training預訓練,深度雙向的transformer,針對一般的語言理解任務來做預訓練。


1.Introduction

預訓練的語言模型可以提升許多自然語言任務的效果,這些自然語言任務包括兩類:
1.句子層次的任務
2.詞語層面的任務,比如命名實體的識別
所以預訓練這個想法已經存在很長時間了,bert之前是存在預訓練的,只不過之前更多的用于cv領域,bert引領之后的nlp任務使用預訓練的方法。
bert采用了這兩個任務進行預訓練,以便適應目前大多數的nlp任務。


2.Related Work

作者簡單地回顧了一下會在本文中使用的預訓練的工作
1.基于特征的無監督方法
2.基于微調的無監督方法
3.在有標記的數據上做遷移學習
總之就是簡單總結了一下之前的一些預訓練的方法,還有將預訓練的學習結果遷移到下游的任務中。


3.Bert模型

Bert有兩個步驟:Pre-train(預訓練)和Fine-tune(微調)。

Pre-train(預訓練):
預訓練也就是訓練bert,引用一下李宏毅老師的話,就是制造胚胎干細胞的過程,這時候讓bert學兩個任務:
1.masked language model(Masked LM):輸入一個句子并蓋住一個單詞,讓模型預測出這個單詞
2.Next sentence prediction(NSP):輸入兩個句子,讓model學習這兩個句子是否是連續的,但其實這個步驟并不能學到很多東西。

Fine-tune(微調):
胚胎干細胞分化的過程,學完之后可以去做下游任務(downstream tasks),bert分化成各種任務這件事情叫做fine-tune(微調) ,采用有標號的數據訓練,同樣使用bert模型,只不過參數不是隨機初始化的,而是采用預訓練過程得到的參數進行初始化。

總之,先用無標號的數據,采用上述的MLM和NSP任務預訓練一個bert模型,對所有的下游任務,創建一個同樣的bert模型,參數來自于預訓練得到的參數,然后采用有標號的數據對下游任務的模型繼續訓練。

然后是模型的架構:
bert模型由多層trasformer的encoder組成,而且是雙向的,直接基于原始的transformer論文的代碼。
作者調了3個參數:L(transformer block的個數),H(隱藏層大小),A(self-attention中multi-head的head個數),這里有兩個模型:
BERT(BASE) (L=12, H=768, A=12, Total Parameters=110M)
BERT(LARGE) (L=24, H=1024,A=16, Total Parameters=340M).

然后是模型的輸入輸出:
為了滿足下游任務的需求,輸入需要可以是一個句子或者是兩個句子,bert只有一個編碼器,只能輸入一個句子,那就把多個句子拼成一個句子去輸入(和transformer不太相同,那里的encoder和decoder分別輸入一個句子)

接著具體看一下句子(下面稱為序列吧)是怎么拼出來的:
分詞采用WordPiece的方法,如果按照空格分詞,一個詞是一個token,由于文本數量太大,token就會太多。WordPiece是如果一個詞的詞頻不大,那就給它切開成多個子序列,保留詞頻大的子序列,這樣可以用一個比較小的詞典來表示文本。

序列的第一個詞只能是[CLS],表示整個序列的信息。當學習兩個句子的時候,中間加一個[SEP],表示分隔兩個句子,或者學習一層embedding,代表token屬于哪個句子。
然后就進入一堆encoder再輸出結果。

對于每個token,它進入Bert時的向量表示由三部分組成:token本身的embedding,token在哪個句子的embedding,token在句中位置的embbeding。

看完架構,再看看bert是如何訓練的

3.1 預訓練Bert

MLM:對于WordPiece生成的token,有15%的概率會被替換成[MASK],這些token中,80%的概率確實替換為[MASK],10%的概率替換成隨機的token,還有10%概率什么也不做。

NSP:對于輸入訓練的序列對,50%的樣本是兩個句子相連,50%的樣本兩句話不相連。

預訓練的數據:作者用了BooksCorpus (800M words) 和English Wikipedia (2,500M words)兩個數據集

3.2 微調Bert

根據下游任務,設計任務的輸入輸出,比如要做分類問題,只要第一個句子就行了,輸出的話總之就是拿到bert輸出的token,比如拿到[CLS]的輸出做分類,不管怎樣就是加一個輸出層,用softmax得到結果。


后面就是作者的實驗,影響和總結啦,這里就不多寫了。

總結

以上是生活随笔為你收集整理的读论文:BERT Pre-training of Deep Bidirectional Transformers for Language Understanding的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。