常用中文預訓練語言模型介面:
介面roberta中文預訓練模型:roberta for chinese:
1. 靜態masking vs 動態masking
原來bert對每乙個序列隨機選擇15%的tokens替換成[mask],為了消除與下游任務的不匹配,還對這15%的tokens進行(1)80%的時間替換成[mask];(2)10%的時間不變;(3)10%的時間替換成其他詞。但整個訓練過程,這15%的tokens一旦被選擇就不再改變,也就是說從一開始隨機選擇了這15%的tokens,之後的n個epoch裡都不再改變了。這就叫做靜態masking。
而roberta一開始把預訓練的資料複製10份,每乙份都隨機選擇15%的tokens進行masking,也就是說,同樣的一句話有10種不同的mask方式。然後每份資料都訓練n/10個epoch。這就相當於在這n個epoch的訓練中,每個序列的被mask的tokens是會變化的。這就叫做動態masking。
那麼這樣改變是否真的有效果?作者在只將靜態masking改成動態masking,其他引數不變的情況下做了實驗,動態masking確實能提高效能。
原本的bert為了捕捉句子之間的關係,使用了nsp任務進行預訓練,就是輸入一對句子a和b,判斷這兩個句子是否是連續的。在訓練的資料中,50%的b是a的下乙個句子,50%的b是隨機抽取的。
而roberta去除了nsp,而是每次輸入連續的多個句子,直到最大長度512(可以跨文章)。這種訓練方式叫做(full - sentences),而原來的bert每次只輸入兩個句子。實驗表明在mnli這種推斷句子關係的任務上roberta也能有更好效能。
3. 更大的mini-batch
原本的bertbase 的batch size是256,訓練1m個steps。roberta的batch size為8k。為什麼要用更大的batch size呢?(除了因為他們有錢玩得起外)作者借鑑了在機器翻譯中,用更大的batch size配合更大學習率能提公升模型優化速率和模型效能的現象,並且也用實驗證明了確實bert還能用更大的batch size。直接看圖吧,不細說了。
4. 更多的資料,更長時間的訓練
這一套下來,最終在glue, race, squad上都達到了sota的效能。
無炫技 純粹的Bert和Roberta
專案連線 專案概述 bert作為當代nlp的基石型模型,熟練掌握是至關重要的。筆者閱讀了很多大牛的 發現很多內容過於繁瑣,考慮的範疇與功能也非常的複雜。本著讓更多小夥伴能通過 直擊bert精髓因此自己一行行純手工敲出這個專案,盡可能做到的是純粹。因為roberta和bert極其相似,因此這裡順便給出...
Redis原理介紹
redis是乙個基於key value的快取記憶體系統,類似於memcached,但是支援更複雜的資料結構list set sortedset,並且有持久化的功能。由於近期工作很多地方都用到了它,所以花了不少時間來閱讀文章 編碼實驗,了解一下 redis 都能做些什麼,能有什麼樣的效能表現。首先遇到...
GSLB原理介紹
1.gslb gslb 是global server load balance 的縮寫,意思是全域性負載均衡 目的是實現在廣域網 包括網際網路 上不同地域的伺服器間的流量調配,保證使使用者的請求能被離使用者最近或者服務質量最好的伺服器來處理,從而確保訪問質量。能通過判斷伺服器的負載,包括 cpu占用...