天天看點

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

技術前瞻

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

在預訓練模型上訓練Bert,并在我們的資料上fine-tune所需要的模型!

就像學習英文一樣! 應該是通讀英文文章後再去做題,而不是先做題再讀懂文章!

Pre-train Model

Embedding

剛開始是 Word2Vertor,但是不能所有的單詞都這樣的! 太多了

要不,用字母和偏旁?

但是你這樣下去,是有詞義歧義的!

是以才有了Contextualized Word Embedding! 這裡中間的Model可以選擇是LSTM、Self-attention layers或者是Tree-based model(文法樹)! 下面的連結是關于Tree-based model的!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

BERT要不做大,要不做小! 大公司都是越來越大,但是窮人就是使得Bert越來越小!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

其中最有名的是ALBERT,它神奇的地方在于基本都和BERT一樣,不同的方法在于原來的BERT12層、24層都是不同的參數,但是ALBERT12層、24層都是一樣的參數,但是效果比BERT還要好。

究竟怎麼讓模型變小呢? 這裡有很多的方法可以自己去了解一下:

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

Network Architecture

如果我們處理更多的句子,而不是僅僅的sequence的tokens,而是segment-level的! 而是成段的,整個文章放入網絡!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

how to fine-tune

具體的NLP任務來進行fine-tune!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

NLP的任務:

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

如果輸入多個句子時:

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

輸入兩個句子,中間有【SEP】作為隔絕! 兩個句子可以是查詢和檔案的差距,也可以是前提和假設的差異!

如果是輸出時:

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

one class:

我們可以使用CLS,使得其輸出一個類!

或者我們取幾個向量的平均!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

class for each token:

每個token輸出一個類

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

copy from input:

檔案D和答案query一起作為輸入放到QA model裡,最終輸出兩個整型變量s和e,分别是在文中的答案!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

在BERT中如果操作的呢? 我們隻需要兩個vector(沒有懂怎麼獲得的,可能是預定義的),其中一個vector用來和document中的輸出vector做dot product來,根據相似度來定是不是是不是起點; 而另一個vector是作為結尾的!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

General Sequence(v1):

Bert很适合Seq2Seq中的Encoder,然後經過Decoder來得到輸出的句子! 但是問題在于,現在的Task Specific需要的labeled data不應該多,而且Decoder最好是預訓練的! 但是現實是沒有訓練,那就會受到影響!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

General Sequence(v2):

我們可以以預測下一個token的方法來訓練seq2seq!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

how to fine-tune:

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

第一種是将Pre-trained model固定住,第二種是一塊訓練! 但是結果表明,往往一塊訓練效果會更好!

Adaptor:

如果一塊訓練的話,參數實在是太多了!

那麼我們可不可以選擇其中一部分層進行訓練呢? 将這些層稱為Adaptor層!其它地方固定!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

Adaptor的方法很多,而且插入到哪裡都是需要研究的! 我們以Transformer為例,我們在Feed-forward layer後加入Adaptor; 同時在訓練之前我們不訓練Adaptor,加入具體任務之後,我們才會訓練Adaptor! 右邊的是Adaptor層的具體,確定參數不會太多!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

左側0代表的是如果我們fine-tune整個model得到的結果,下圖中藍色的線表示的是訓練倒數層,第一個點是倒數第一層,第二個點加入了倒數第二層,第三個點是加入了倒數第三層,以此類推! 而橙色的線就表示的是隻訓練其中的Adaptor!

Weighted Features:

其中 W 1 W_1 W1​和 W 2 W_2 W2​是可以被學出的! 比如我們用最終的特征放入具體的任務中,那麼這個參數就是可以被學習的!其中 W 1 W_1 W1​和 W 2 W_2 W2​對應于不同層産出的特征! 不同層産出的特征是有不同的側重點的,誰重要誰不重要是需要自己學的!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

WHY Pre-train Models?:

為什麼使用Pre-train Models? 因為這些Model真的帶給了我們不錯的效果!

Why FIne-tune?:

實作代表該模型Fine-tune過,虛線代表沒有Fine-tune過! 可以看出所有的實線loss下降的都很快!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

如何生成下面的圖像? 可以看右上角的連結!

怎麼看出這個模型是不是有泛化能力? end Point是峽谷的話泛化能力差,如果是盆地,那麼泛化能力就很好!

李宏毅機器學習(七)Bert and its family技術前瞻Pre-train Model

繼續閱讀