最近大佬們接連放出大招。。mt-dnn還沒看,gpt2就出來了,爭取這兩天讀完把細節寫一下,一直堅持追蹤nlp預訓練模型的進展,自己工作中也用上了bert,希望nlp的發展越來越好。
不了解bert的請戳這裡。
正文分割線
1.mt-dnn模型
1.1 模型結構
了解bert的朋友們一看這個圖估計就懂了,bert的fine-tune是針對不同的任務在編碼層後面加上task-layer,而mt-dnn就是把所有任務fine-tune的步驟都拼到了一起。這裡根據輸出的不同將任務分成了四種。
其實這點相信大部分用了bert但又缺少標註資料的朋友都可以想到,比如我這幾天就在做這樣的工作,因為標註資料只有幾百條,所以除了各種資料增強就只能上多工學習了。
多工學習的優點主要有兩個:在標註資料較少的情況下,可以利用到其他相似任務的標註資料
減少針對特定任務的過擬合,起到正則化的作用
但問題來了:拿bert的哪個編碼表示?(cls、sep還是都拼起來?)
帶著上面兩個問題,仔細讀了下**。
1.2 task specific layerssingle sentence classification:採用[cls]作為句子編碼表示,softmax損失函式
pairwise text similarity:採用[cls]作為句子編碼表示,sigmoid損失函式
pairwise ranking:採用[cls]作為句子編碼表示,sigmoid損失函式
1.3 模型訓練
聯合訓練:作者將所有task的batch訓練資料混合成資料集d,每次從d中拿出乙個任務的batch進行訓練。
相比於交替訓練(先訓練任務a再訓練任務b),這樣做的好處是避免偏向某個任務。
2.結論
2.1 多工學習可以提公升模型表現
bert證明了在大規模無監督語料上進行預訓練可以提公升nlp任務的表現,mt-dnn則證明了在一定規模的有監督語料上,用多工學習+預訓練模型會帶來更好的表現。可以說比bert更進一步地解決了業界標註資料稀缺的情況。
2.2 多工學習具有更好的泛化效能
作者又在其他資料集上進行了實驗,以驗證mt-dnn模型在新任務中的表現,還是優於精挑bert。因此mt-dnn具備更好的泛化效能。
其實總的來說,mt-dnn並沒有多少創新,不過也在bert的基礎上更進一步,提公升了nlp的水準。希望nlp越來越好~去看gpt2了
Vuex原理解讀
註冊vuex vue.usee vuex 建立store例項並匯出 export default newvuex.store getters mutations actions modules import store from store newvue mount vuex有乙個store建構函式...
編輯欄原理解讀
行內編輯欄的位置是在列表中顯示的,本身元素所在的標籤是th.那麼它的上一級標籤是tr,所以找到上一級的標籤,tr,然後改為行所對應的data citrid。找到citable標記的table,如果 不存在不能繼續操作。接下來定位cieditor編輯器的位置,如果citable沒有指定編輯器的位置,那...
MySQL原理解讀 事務
資料庫事務有4個屬性,我們叫它們acid,分別為原子性 一致性 隔離性和永續性 1.1 原子性 atomicity 乙個事務內的操作是不可分割的,要麼都成功,要麼都失敗 事務把資料從乙個正確的狀態遷移到另乙個正確的狀態 併發事務相互隔離 多個事務之間的操作過程不可見 資料是持久化儲存的 比如存到磁碟...