Chapter7-5_Multilingual BERT
文章目錄
- 1 什么是Multilingual BERT
- 2 Zero-shot Reading Comprehension
- 3 Cross-lingual Alignment
- 4 How alignment happens
本文為李弘毅老師【Multilingual BERT】的課程筆記,課程視頻youtube地址,點這里👈(需翻墻)。
下文中用到的圖片均來自于李宏毅老師的PPT,若有侵權,必定刪除。
文章索引:
上篇 - 7-4 來自獵人暗黑大陸的模型 GPT-3
下篇 - 7-6 Text Style Transfer
總目錄
1 什么是Multilingual BERT
世界上的語言有幾千種,如果我們需要某個語言的BERT預訓練模型,就要重新train一個BERT嗎?不用。Multilingual BERT就是說拿不同國家的語言按照chapter7-3中所述的方法在同一個BERT上去做預訓練。Google訓練過一個用104個國家的語言做訓練集的BERT,有錢就是任性。
2 Zero-shot Reading Comprehension
那么,把這么多國家的語言放到同一個BERT中去訓練,有什么用嗎?可以做到每個語言train一個BERT做不到的事嗎?有and可以!
Multi-BERT可以做到zero-shot相關的任務。比如我們有一組英文的QA訓練數據(每條數據是一篇文章,一個問題和一個答案),然后用它在Multi-BERT上做fine-tune之后,可以在中文上做QA的任務!
那么它的效果如何呢?如下表所示,使用了SQuAD英文QA數據集和DRCD中文數據集。表中的第一行是QANet在沒有pre-train的情況下,直接在中文QA數據集上訓練,并在中文上測試,其F1-score是78.1;我們拿BERT在中文數據上預訓練并在中文QA數據集上fine-tune,最后在中文上測試的F1-score是89.1,可見BERT和與預訓練是是的效果大幅提升的關鍵;拿Multi-BERT在中文QA上fine-tune并在中文上測試,F1-score是88.7,這個還比只用中文預訓練要差一些,不過差距不大;接下來就是重點了,我們拿Multi-BERT在英文QA上做fine-tune并在中文上測試,F1-score是78.8,這已經比QANet高了;最后一個是拿Multi-BERT在英文和中文QA上做fine-tune并在中文上測試,F1-score是90.1,這比第三個高,可見英文的確有一些輔助作用。人類的F1-score是93.3,已經很接近人類了。
當我們的手上只有英文的QA數據,卻想做中文的QA時,Multi-BERT不失為一個比較好的選擇。當然我們也可以選擇先做一下翻譯,然后就相當于有了中文的QA數據,再去訓練。但這樣的效果李老師測下來沒有直接用Multi-BERT去fine-tune的效果好,因為翻譯的模型也是有錯誤的。不過這樣的對比涉及到的變數太多,說不好,說不好。
不過這種跨語言的學習,就很想人類的學習行為了,很令人興奮!
google還出了一個專門用來看模型跨語言學習能力的比賽,叫做xtreme,就是在一種語言上去學習某個任務,然后在其余幾十種語言上去測試。
3 Cross-lingual Alignment
Multi-Bert可以做到跨語言的零樣本學習,是什么原因呢?很大的可能就是Multi-Bert有跨語言的對齊,就是在Multi-Bert輸出的不同語言同一個意思的詞的特征向量時,這些特征向量時很接近的。比如兔和rabbit就會很接近,魚和fish就會很接近。
如何驗證這一猜想?我們可以建立一個Mean Reciprocal Rank。首先,我們會選擇一堆有對應關系的詞出來,比如對比中英文的時候,就是有一個下圖右上角所示的Bi-lingual Dictionary。然后我們會利用Multi-Bert計算每個詞的特征向量(一詞多義,取多個意思對應特征向量的平均),計算特征向量之間的余弦相似度,得到一個相似度矩陣。最后,我們會看每個英文單詞對應的正確中文單詞在所有中文單詞中與該英文單詞相似度的排名,分數就是排名的倒數,比如“year”對應"年",然后在"year"的這一行,“年"的相似度是最高的,那么排名就是1,分數就是1/1;又比如"month"對應"月”,然后在"month"這一行,"月"的相似度排第3,分數就是1/3。
我們把得到的scores取平均就得到了最終的Alignment的評價分數。
最終發現,Multi-Bert的夸語言的alignment結果的確不錯。李老師也試了一下用Globe,Word2vev等一些舊方法去訓練跨語言的表征,效果的確沒有Multi-Bert好。
4 How alignment happens
那么Multi-Bert為什么可以完成跨語言的alignment呢?有兩種經典的猜想。一種猜想是不同語言之間有一些相同的token,這些相同的token搭建了一個橋梁,讓模型可以在不同語言間對齊。另一種猜想是,有一種神奇的語言X,這個X中又有中文的token,又有英文的token,搭建了一個橋梁,只要中文和X對齊,英文也和X對齊,中文和英文就對齊了。
有一篇論文就針對這種想法做了實驗,發現這兩種猜想都不正確。他們用英語和偽造的假英語(和英語完全不同的token)來進行訓練,發現這兩者之間有比較好的alignment,可見模型在做alignment的時候,不需要相同的token作為媒介。
說到這里,有一個奇怪的地方,就是在訓練Bert的時候,輸入和輸出的句子是一樣的,如果不同語言間的embedding是不獨立的話,那輸入英文為什么不會輸出同樣意思的中文呢?可見不同語言間的embedding是獨立的,Multi-Bert是有語言信息的。
為了驗證這一點,我們做了一個非常簡單的嘗試。我們把所有英文的embedding取平均,所有中文的embedding取平均,然后得到兩者之間的差值向量,在做reconstruction之前,把這個差值給加上去,看看會發生什么。
我們發現,猜對了!如下圖中的表格所示,如果輸入一個英文句子,然后加上一倍的差值,就得到了表中α=1\alpha = 1α=1的結果,如果加上兩倍的差值,就得到了α=2\alpha = 2α=2的結果,句子越來越中文了!雖然意思有點不太對勁,但是至少證明了我們的猜想。
這個發現有什么用嗎?有!如果我們英文的任務上做downstream的finetune,然后在中文上測試時,把這個差值給加上,效果會有所提升!真有意思啊~!
總結
以上是生活随笔為你收集整理的Chapter7-5_Multilingual BERT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1861. 旋转盒子(
- 下一篇: LeetCode 2110. 股票平滑下