本文主要用于記錄發(fā)表于2018年的一篇論文。該論文首次提出了將遷移學(xué)習(xí)應(yīng)用在NLP領(lǐng)域冻记。本筆記主要為方便初學(xué)者快速入門睡毒,以及自我回顧。
論文鏈接:https://arxiv.org/pdf/1801.06146.pdf
開(kāi)源地址:http://nlp.fast.ai/ulmfit
基本目錄如下:
- 摘要
- 核心思想
- 總結(jié)
------------------第一菇 - 摘要------------------
1.1 論文摘要
遷移學(xué)習(xí)的成功已經(jīng)在計(jì)算機(jī)視覺(jué)領(lǐng)域取得了巨大的成功冗栗,但是在NLP領(lǐng)域還是不能夠很好的運(yùn)用演顾。本文作者提出了一種針對(duì)NLP領(lǐng)域的遷移學(xué)習(xí)方法,ULMFiT隅居,主要是介紹了很多在微調(diào)模型時(shí)候的小技巧钠至。作者的這種方法在六大文本分類任務(wù)上都取得了成功,并且在大部分?jǐn)?shù)據(jù)集上將誤差減少了18-24%胎源。此外棉钧,還有一個(gè)比較夸張的點(diǎn),僅僅用了100個(gè)標(biāo)注數(shù)據(jù)涕蚤,就取得了等同于用100倍數(shù)據(jù)量訓(xùn)練出來(lái)的結(jié)果宪卿。
------------------第二菇 - 核心思想------------------
2.1 論文背景介紹
其實(shí)論文本身沒(méi)有提出什么特別的模型結(jié)構(gòu),主要的重點(diǎn)就是放在介紹其實(shí)踐遷移學(xué)習(xí)的方法万栅。在開(kāi)篇介紹部分作者也解釋說(shuō)了佑钾,現(xiàn)階段的NLP的深度學(xué)習(xí)模型在有大量數(shù)據(jù)訓(xùn)練的基礎(chǔ)上,確是能取得不錯(cuò)的效果烦粒,但是大數(shù)據(jù)集常常很難獲取休溶,而現(xiàn)階段在NLP領(lǐng)域做的比較好的,也就是word embeddings那一層可以實(shí)現(xiàn)撒遣。然后作者也解釋了一下原因邮偎,他們認(rèn)為其實(shí)不能做遷移學(xué)習(xí)本身并不是語(yǔ)言模型(LM)不夠強(qiáng)大,而是我們?cè)谧鲱A(yù)訓(xùn)練的時(shí)候义黎,或者在遷移本身的訓(xùn)練上有很多的小技巧我們沒(méi)有很好的掌握,所以豁跑,作者才會(huì)提出一種全新的模式ULMFiT(Universal Language Model Fine-tuning)廉涕,來(lái)實(shí)踐NLP領(lǐng)域的遷移學(xué)習(xí)方法。
2.2 論文模型實(shí)踐方法
作者提出的實(shí)踐方法艇拍,第一個(gè)詞就是“universal”狐蜕,顯示了其通用性,作者對(duì)其的理解有如下幾個(gè)層面:
1)適用于任意的文本大小卸夕,數(shù)據(jù)類型层释,標(biāo)簽類型
2)單一的模型架構(gòu)和訓(xùn)練過(guò)程
3)不需要額外的特征過(guò)程與預(yù)訓(xùn)練
4)不需要額外領(lǐng)域?qū)R坏奈谋竞蜆?biāo)簽
看這描述是,如果能做到快集,那絕對(duì)是NLP領(lǐng)域的里程碑贡羔!接下來(lái)廉白,我們仔細(xì)看一下,作者實(shí)踐的步驟乖寒。
第一步 - 通用領(lǐng)域語(yǔ)言模型的預(yù)訓(xùn)練
類似ImageNet在CV的地位一樣猴蹂,NLP領(lǐng)域應(yīng)該也需要這樣的通用數(shù)據(jù)集,作者目前是用Wikitext-103來(lái)做預(yù)訓(xùn)練的楣嘁,這一步其實(shí)是最耗費(fèi)時(shí)間的(貴)磅轻,但是只需要做一次,就會(huì)為后續(xù)的下游NLP模型打好基礎(chǔ)逐虚。
第二步 - 目標(biāo)任務(wù)的語(yǔ)言模型微調(diào)
目標(biāo)任務(wù)的數(shù)據(jù)分布肯定是與我們的預(yù)訓(xùn)練數(shù)據(jù)分布不一樣的聋溜,因此,我們需要用目標(biāo)任務(wù)的數(shù)據(jù)來(lái)對(duì)我們的語(yǔ)言模型進(jìn)行微調(diào)訓(xùn)練叭爱。因?yàn)橛刑崆暗念A(yù)訓(xùn)練撮躁,因此這一步的微調(diào)需要一點(diǎn)小技巧,作者提出了2種設(shè)置學(xué)習(xí)率的小技巧涤伐,
1)分層學(xué)習(xí)率微調(diào)(Discriminative fine-tuning)
核心思想就是在微調(diào)的時(shí)候馒胆,作者認(rèn)為對(duì)所有的層都設(shè)置相同的學(xué)習(xí)率是不合理的,因?yàn)槊恳粚佣荚趯W(xué)習(xí)詞匯不同層面的表達(dá)特征凝果,因此在新的數(shù)據(jù)集上祝迂,每一層需要學(xué)習(xí)的程度也是不一樣的。因此作者提出的解決辦法就是為每一層都設(shè)置不同的學(xué)習(xí)率器净,因此反向傳播的公式就可以表達(dá)為型雳,
其中,就是每一層的學(xué)習(xí)率山害。作者實(shí)驗(yàn)發(fā)現(xiàn)纠俭,當(dāng)最后的一層的學(xué)習(xí)率設(shè)置為的時(shí)候,浪慌,時(shí)候效果最好冤荆。
2)斜三角學(xué)習(xí)率(Slanted triangular learning rates)
作者同時(shí)還認(rèn)為,在對(duì)任務(wù)語(yǔ)料微調(diào)訓(xùn)練的時(shí)候权纤,模型應(yīng)該在一開(kāi)始就快速收斂钓简,然后再慢慢精修。因此汹想,作者提出了一種新的學(xué)習(xí)率設(shè)置機(jī)制外邓,在一開(kāi)始訓(xùn)練的時(shí)候增加學(xué)習(xí)率,然后在線性衰減學(xué)習(xí)率古掏,公式如下损话,
其中,就是訓(xùn)練的迭代次數(shù)槽唾,就是學(xué)習(xí)率上升的迭代次數(shù)比率丧枪,就是學(xué)習(xí)率開(kāi)始衰減時(shí)候的迭代次數(shù)光涂,就是學(xué)習(xí)率的衰減比例(最小/最大)豪诲,就是某次迭代的學(xué)習(xí)率顶捷。然后作者實(shí)驗(yàn)發(fā)現(xiàn),短時(shí)間的增加學(xué)習(xí)率屎篱,長(zhǎng)時(shí)間的衰減服赎,模型的擬合能力是最棒的~
第三步 - 目標(biāo)任務(wù)的分類模型微調(diào)
我們最終還是要來(lái)微調(diào)最后產(chǎn)生結(jié)果的分類模型。首先作者為了增強(qiáng)語(yǔ)言模型的表達(dá)能力交播,額外多加了兩個(gè)線性組合層重虑。因此,最終輸出到分類器層秦士,不僅僅來(lái)自語(yǔ)言模型的最后一層輸出缺厉,還包括了最大池化層,平均池化層隧土,
在最終微調(diào)分類器的時(shí)候提针,作者又提出了一種新的訓(xùn)練技巧,逐層解凍(Gradual unfreezing)曹傀。簡(jiǎn)單來(lái)說(shuō)辐脖,就是作者任務(wù)最后一層會(huì)包括最通用的特征,因此皆愉,在訓(xùn)練時(shí)候嗜价,我們先訓(xùn)練最后一層(凍住其他層),而不是所有層一起來(lái)訓(xùn)練幕庐。然后在第二個(gè)EPOCH的時(shí)候久锥,再解凍倒數(shù)第二層來(lái)訓(xùn)練,然后以此類推异剥。
至此瑟由,整個(gè)流程已經(jīng)介紹完了,貼一張?jiān)撐牡膱D來(lái)幫大家梳理邏輯冤寿。
隨后在論文的實(shí)驗(yàn)部分错妖,作者也通過(guò)實(shí)驗(yàn)設(shè)定來(lái)證實(shí)自己提出的幾種微調(diào)模型的有效性。這里就不具體展開(kāi)疚沐,有興趣的朋友可以自己去查閱原始論文。
2.3 論文模型實(shí)踐
這里先留個(gè)坑潮模,以后有時(shí)間亮蛔,把ULMFiT的調(diào)參實(shí)踐也擺上來(lái)。
------------------第三菇 - 總結(jié)------------------
3.1 總結(jié)
到這里擎厢,整篇論文的核心思想及其創(chuàng)新點(diǎn)已經(jīng)說(shuō)清楚了究流。本論文主要集中在于闡述ULMFiT運(yùn)用于NLP遷移學(xué)習(xí)的步驟及其預(yù)訓(xùn)練和調(diào)參的思想辣吃,并且用具體的NLP實(shí)驗(yàn)證明了使用這一套架構(gòu)的原理,并證實(shí)了其可行性芬探。
簡(jiǎn)單總結(jié)一下本文就是先羅列了一下該論文的摘要神得,再具體介紹了一下ULMFiT流程和調(diào)參技巧⊥捣拢總的來(lái)說(shuō)哩簿,這篇論文提出的很多小技巧值得大家學(xué)習(xí)。希望大家讀完本文后能進(jìn)一步加深對(duì)該論文的理解酝静。有說(shuō)的不對(duì)的地方也請(qǐng)大家指出节榜,多多交流,大家一起進(jìn)步~??