李宏毅机器学习(七)Bert and its family
技術前瞻
在預訓練模型上訓練Bert,并在我們的數據上fine-tune所需要的模型!
就像學習英文一樣! 應該是通讀英文文章后再去做題,而不是先做題再讀懂文章!
Pre-train Model
Embedding
剛開始是 Word2Vertor,但是不能所有的單詞都這樣的! 太多了
要不,用字母和偏旁?
但是你這樣下去,是有詞義歧義的!
所以才有了Contextualized Word Embedding! 這里中間的Model可以選擇是LSTM、Self-attention layers或者是Tree-based model(語法樹)! 下面的鏈接是關于Tree-based model的!
BERT要不做大,要不做小! 大公司都是越來越大,但是窮人就是使得Bert越來越小!
其中最有名的是ALBERT,它神奇的地方在于基本都和BERT一樣,不同的方法在于原來的BERT12層、24層都是不同的參數,但是ALBERT12層、24層都是一樣的參數,但是效果比BERT還要好。
究竟怎么讓模型變小呢? 這里有很多的方法可以自己去了解一下:
Network Architecture
如果我們處理更多的句子,而不是僅僅的sequence的tokens,而是segment-level的! 而是成段的,整個文章放入網絡!
how to fine-tune
具體的NLP任務來進行fine-tune!
NLP的任務:
如果輸入多個句子時:
輸入兩個句子,中間有【SEP】作為隔絕! 兩個句子可以是查詢和文件的差距,也可以是前提和假設的差異!
如果是輸出時:
one class:
我們可以使用CLS,使得其輸出一個類!
或者我們取幾個向量的平均!
class for each token:
每個token輸出一個類
copy from input:
文件D和答案query一起作為輸入放到QA model里,最終輸出兩個整型變量s和e,分別是在文中的答案!
在BERT中如果操作的呢? 我們只需要兩個vector(沒有懂怎么獲得的,可能是預定義的),其中一個vector用來和document中的輸出vector做dot product來,根據相似度來定是不是是不是起點; 而另一個vector是作為結尾的!
General Sequence(v1):
Bert很適合Seq2Seq中的Encoder,然后經過Decoder來得到輸出的句子! 但是問題在于,現在的Task Specific需要的labeled data不應該多,而且Decoder最好是預訓練的! 但是現實是沒有訓練,那就會受到影響!
General Sequence(v2):
我們可以以預測下一個token的方法來訓練seq2seq!
how to fine-tune:
第一種是將Pre-trained model固定住,第二種是一塊訓練! 但是結果表明,往往一塊訓練效果會更好!
Adaptor:
如果一塊訓練的話,參數實在是太多了!
那么我們可不可以選擇其中一部分層進行訓練呢? 將這些層稱為Adaptor層!其它地方固定!
Adaptor的方法很多,而且插入到哪里都是需要研究的! 我們以Transformer為例,我們在Feed-forward layer后加入Adaptor; 同時在訓練之前我們不訓練Adaptor,加入具體任務之后,我們才會訓練Adaptor! 右邊的是Adaptor層的具體,確保參數不會太多!
左側0代表的是如果我們fine-tune整個model得到的結果,下圖中藍色的線表示的是訓練倒數層,第一個點是倒數第一層,第二個點加入了倒數第二層,第三個點是加入了倒數第三層,以此類推! 而橙色的線就表示的是只訓練其中的Adaptor!
Weighted Features:
其中W1W_1W1?和W2W_2W2?是可以被學出的! 比如我們用最終的特征放入具體的任務中,那么這個參數就是可以被學習的!其中W1W_1W1?和W2W_2W2?對應于不同層產出的特征! 不同層產出的特征是有不同的側重點的,誰重要誰不重要是需要自己學的!
WHY Pre-train Models?:
為什么使用Pre-train Models? 因為這些Model真的帶給了我們不錯的效果!
Why FIne-tune?:
實現代表該模型Fine-tune過,虛線代表沒有Fine-tune過! 可以看出所有的實線loss下降的都很快!
如何生成下面的圖像? 可以看右上角的鏈接!
怎么看出這個模型是不是有泛化能力? end Point是峽谷的話泛化能力差,如果是盆地,那么泛化能力就很好!
總結
以上是生活随笔為你收集整理的李宏毅机器学习(七)Bert and its family的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css scale 元素不放大,列元素上
- 下一篇: python模块time_Python模