自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

新聞 前端
騰訊 QQ 團(tuán)隊(duì)研究員對(duì) BERT 進(jìn)行了模型壓縮,在效果損失很小的基礎(chǔ)上,LTD-BERT 模型大小 22M,相比于 BERT 模型內(nèi)存、存儲(chǔ)開銷可降低近 20 倍

騰訊 QQ 團(tuán)隊(duì)研究員對(duì) BERT 進(jìn)行了模型壓縮,在效果損失很小的基礎(chǔ)上,LTD-BERT 模型大小 22M,相比于 BERT 模型內(nèi)存、存儲(chǔ)開銷可降低近 20 倍,運(yùn)算速度方面 4 核 CPU 單機(jī)可以預(yù)測(cè)速度加速 80 余倍。相關(guān)代碼和更多結(jié)果將在近期開源。

BERT 已經(jīng)被驗(yàn)證是解決口語(yǔ)化短文本語(yǔ)義量化的極為有效的工具,對(duì)于口語(yǔ)化人機(jī)交互系統(tǒng)如 FAQ、語(yǔ)音助手等產(chǎn)品意義重大。但受限于模型的高復(fù)雜度和高計(jì)算量,其產(chǎn)業(yè)線上應(yīng)用進(jìn)展不如預(yù)期,尤其很難滿足像 QQ、QQ 空間等億級(jí)用戶量產(chǎn)品對(duì)性能的需求。

為了解決這個(gè)問題,QQ 團(tuán)隊(duì)研究人員提出了 Learning to Distill BERT (LTD-BERT) 的模型對(duì) BERT 進(jìn)行了模型壓縮,在效果損失很小的基礎(chǔ)上,LTD-BERT 模型大小 22M,相比于 BERT 模型內(nèi)存、存儲(chǔ)開銷可降低近 20 倍,運(yùn)算速度方面 4 核 CPU 單機(jī)可以預(yù)測(cè)速度加速 80 余倍。另外,LTD-BERT 也被驗(yàn)證在下游任務(wù)可以保持與 BERT 近似的效果,包括相似度計(jì)算、短文本分類、短文本聚類等,其應(yīng)用場(chǎng)景包括但不限于語(yǔ)義匹配、意圖識(shí)別、文本聚類分析等。

據(jù)機(jī)器之心了解,從 2019 年 8 月份在騰訊內(nèi)部開源至今,LTD-BERT 的效果已經(jīng)在 QQ、騰訊新聞、騰訊游戲、騰訊看點(diǎn)、騰訊健康等服務(wù)海量用戶的產(chǎn)品的實(shí)際任務(wù)中得到驗(yàn)證,確保算法擁有足夠的泛化能力和實(shí)用性。

此外,該團(tuán)隊(duì)還表示 LTD-BERT 相關(guān)代碼和更多結(jié)果將在近期開源。 簡(jiǎn)介 2018 年底 Google 提出并開源了 BERT(Bidirectional Encoder Representation from Transformers),對(duì) NLP 的影響已經(jīng)綿延至今,非常多的 NLP 公開任務(wù)都被基于預(yù)訓(xùn)練 BERT 的工作刷榜,在工業(yè)界大家也逐漸的直接或通過 finetuning 將 BERT 運(yùn)用到實(shí)際業(yè)務(wù)當(dāng)中。

但是在這個(gè)過程中讓大家非常頭疼的事情就是因?yàn)槌蟮膮?shù)量,BERT 的運(yùn)算速度和資源開銷是很難權(quán)衡的問題。GPU 上線速度較快,但是成本很高;CPU 上線的話運(yùn)算速度較慢,需要做大量的底層優(yōu)化工作。 為了解決這個(gè)問題,QQ 研究團(tuán)隊(duì)提出了一種基于知識(shí)蒸餾的方法,在盡可能保證預(yù)訓(xùn)練 BERT 具備的文本理解能力不丟失的前提下,可以大大降低模型規(guī)模,提高預(yù)測(cè)速度。QQ 研究團(tuán)隊(duì)主要針對(duì)的是基于從 BERT 得到的 sentence embedding 去完成更上層任務(wù)的需求,這也能滿足當(dāng)前對(duì)于 BERT 的大部分的需求,囊括了文本分類、文本聚類、相似度計(jì)算等等。當(dāng)然,word-level 的壓縮也可以以近似的方法去實(shí)現(xiàn)。

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

圖 1. BERT 的輸入和嵌入(取自 [1]) Bert 中帶權(quán)重的句嵌入 既然要基于 BERT 的 sentence embedding 去做擬合,那第一步要確定如何獲得 BERT 的 sentence embedding。如上圖所示,BERT 對(duì)一個(gè)完整的句子會(huì)加入 [CLS] 用于針對(duì)句子層面的上層任務(wù)和 [SEP] 作為句子分隔符,通常的做法是用 [CLS] 所在位置的 vector 作為 sentence embedding。因?yàn)?[CLS] 參與到了句子層面「句對(duì)二元關(guān)系預(yù)測(cè)-是否是下一句」的預(yù)訓(xùn)練任務(wù)中,所以 [CLS] 位置是能一定程度反映句子的語(yǔ)義的,至少可以反應(yīng)語(yǔ)句整體的 topic。另一種常用的方法是 averaging 每個(gè)字(中文)在 context 下的 embedding 來(lái)代表句子,這是在 word embedding 層面經(jīng)常使用的方法。 但是其實(shí)通常來(lái)講,尤其是針對(duì)句子層面的任務(wù)而言,一個(gè)句子的信息更多是依靠 keywords 來(lái)提供的,因此 QQ 研究人員提出了利用 IDF 值給句子中字的權(quán)重進(jìn)行加權(quán)的方式來(lái)獲取 BERT 的句向量,在試驗(yàn)中也取得了更好的效果。 具體做法是:

首先,在大量文本上,用某個(gè)分詞工具分詞,計(jì)算得到詞語(yǔ)粒度的 IDF,即:

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源


然后,對(duì)任意一個(gè)句子分詞后,可得到其每個(gè)詞語(yǔ)的 weight(即這個(gè)詞語(yǔ)的 IDF)。不過,鑒于 BERT 得到的是字向量,在此用該詞語(yǔ)的權(quán)重除以詞語(yǔ)長(zhǎng)度得到字的權(quán)重。最后,每個(gè)字的權(quán)重加上平滑項(xiàng),再用每個(gè)字的權(quán)重除以整個(gè)句子所有權(quán)重和,得到每個(gè)字最終的權(quán)重。 在計(jì)算得到句子中每個(gè)字的權(quán)重后,然后對(duì)字的 BERT 向量加權(quán)求和,得到加權(quán)句向量,即

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

 

為什么不直接對(duì)字進(jìn)行權(quán)重計(jì)算主要是考慮字的語(yǔ)義通常不夠明確,且在依賴上下文的同時(shí)還依賴組詞,那么對(duì)于詞的 IDF 值更具有實(shí)際意義。另外,加權(quán)的方式另一種考量是對(duì)于具體的任務(wù)擁有足夠的適配能力,可以通過權(quán)重的調(diào)整來(lái)關(guān)注到具體任務(wù)更關(guān)心的詞語(yǔ)。 LTD-BERT 知識(shí)蒸餾是一種模型壓縮的常見方法,是 14 年 Hinton 提出的 [2]。其在 Teacher-Student 框架中,將一些復(fù)雜、學(xué)習(xí)能力強(qiáng)的網(wǎng)絡(luò)學(xué)到的特征表示「知識(shí)」蒸餾出來(lái),傳遞給參數(shù)量小、學(xué)習(xí)能力弱的網(wǎng)絡(luò)。常見的蒸餾一般把 Teacher 和 Student 作用在同樣的問題上,可以提供 Student 在 one-shot label 上學(xué)不到的 soft label 信息,這些里面包含了類別間信息,以及 Student 小網(wǎng)絡(luò)學(xué)不到而 Teacher 網(wǎng)絡(luò)可以學(xué)到的特征表示『知識(shí)』,所以一般可以提高 Student 網(wǎng)絡(luò)的精度 [3]。 之前已經(jīng)提出的一些蒸餾方法 [5,6,7,8],多數(shù)是針對(duì)文本分類、語(yǔ)義匹配、序列標(biāo)注等任務(wù)上,把 BERT 作為 Teacher,直接將標(biāo)準(zhǔn)的蒸餾過程實(shí)施起來(lái),或在此基礎(chǔ)上改進(jìn) Student 的學(xué)習(xí)目標(biāo)。

如下圖 2 中所示的 BERT 訓(xùn)練流程,這部分工作更關(guān)注在右側(cè) Supervised 部分。而 BERT 的突破很大程度上依賴與圖中左邊弱監(jiān)督過程中從大量文本數(shù)據(jù)學(xué)習(xí)到的語(yǔ)義建模能力,因此這里 LTD-BERT 的初衷是希望 Student 模型能夠?qū)⑦@部分能力蒸餾過來(lái),所以不對(duì) Student 網(wǎng)絡(luò)建立目標(biāo)任務(wù),Student 的目標(biāo)僅為擬合 Teacher 網(wǎng)絡(luò)的 sentence vector,不再去關(guān)注 Teacher 網(wǎng)絡(luò)的預(yù)訓(xùn)練任務(wù)。通過合適的 loss function 設(shè)計(jì),實(shí)驗(yàn)驗(yàn)證簡(jiǎn)單的 Student 網(wǎng)絡(luò)可以較好的擬合 BERT 產(chǎn)生的句向量,并運(yùn)用于各類 Task。

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

圖 2. BERT 適用在 NLP 任務(wù)上的流程.(取自 [4]) Distilling 流程及架構(gòu) 整個(gè) BERT 壓縮的過程分成幾個(gè)部分,首先對(duì)輸入的句子做一定的清洗(BERT 本身也有一定的清洗過程),然后如前文提到字層面的 weight 計(jì)算需要分詞、計(jì)算/獲取 weight、均攤到 character(如下圖中 preprocessing 所示)。經(jīng)歷完預(yù)處理后,得到了單字列表和每個(gè)字對(duì)應(yīng)的權(quán)重,也就是 Learning to Distilling 過程的輸入。 訓(xùn)練過程一方面用預(yù)訓(xùn)練的 BERT(Google 開源的中文預(yù)訓(xùn)練模型)給句子建模,并通過加權(quán)平均得到 BERT vector(如圖中 training 階段中的右側(cè)部分所示);另一方面,使用簡(jiǎn)易的序列模型(本文介紹結(jié)果是以 LSTM 為例)同樣的方式給句子建模,得到每個(gè)字在 context 下的語(yǔ)義,并使用同樣的 weight 得到 sentence embedding,進(jìn)而使用基于向量距離的 loss function 進(jìn)行訓(xùn)練。通過百萬(wàn)級(jí)數(shù)據(jù)上的向量擬合訓(xùn)練,得到了一個(gè)規(guī)模只有 BERT 1/20 大小的 LTD-BERT 模型來(lái)為句子構(gòu)建句向量。該句向量可以直接用于語(yǔ)句相似度計(jì)算、基于語(yǔ)義的文本聚類,另外 LTD-BERT 也可以像 BERT 一樣在實(shí)際任務(wù)上 finetune 來(lái)獲得更好的目標(biāo)數(shù)據(jù)上的適應(yīng)性。 這里 QQ 團(tuán)隊(duì)提出的方法只優(yōu)化了最后句子的向量,因?yàn)槭褂玫氖切蛄心P蛠?lái)作為 LTD-BERT 的基準(zhǔn)模型,原理上是可以直接用這個(gè)流程擬合 BERT 給每個(gè)漢字的建模結(jié)果。但是沒有這樣做一方面是直接擬合已經(jīng)可以獲得效果不錯(cuò)的 sentence embedding;另一方面是擬合的過程是使用的預(yù)生成的 BERT based sentence embedding,如果存下每個(gè)詞的向量存儲(chǔ)開銷是巨大的,如果不進(jìn)行預(yù)生成那訓(xùn)練速度會(huì)被 BERT 的 inference 速度 block。

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

圖 3. LTD-BERT 訓(xùn)練過程

LTD Student 模型結(jié)構(gòu)

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

圖 4. LTD-BERT 的 Student 模型 這里詳細(xì)介紹一下當(dāng)前使用的 Student 模型(即 LTD-BERT)的模型結(jié)構(gòu),這里基本是一個(gè) standard 的雙向 LSTM,在字 embedding 之上構(gòu)建正向和逆向的 LSTM 獲取上文語(yǔ)義和下文語(yǔ)義下一個(gè)漢字的語(yǔ)義,然后使用與 BERT 同樣的 weights(圖中 w)做 weighted sum,得到一個(gè)與 BERT dimension 一樣的 vector。這里需要使用雙向 LSTM 是因?yàn)?BERT 預(yù)訓(xùn)練任務(wù)對(duì)于每個(gè)詞構(gòu)建上下文感知的表示,保持建模過程的一致性才能保證更好的擬合效果,因此這里 LTD-BERT 基礎(chǔ)模型的唯一限制是需要在為每個(gè)漢字建模的時(shí)候提供上下文語(yǔ)義的建模,QQ 研究團(tuán)隊(duì)也試驗(yàn)了不滿足這個(gè)假設(shè)的基礎(chǔ)模型,效果會(huì)大打折扣。 效果

從 2019 年 8 月份在騰訊內(nèi)部開源至今,LTD-BERT 的效果已經(jīng)在如下業(yè)務(wù):QQ、騰訊新聞、騰訊游戲、騰訊看點(diǎn)、騰訊健康等海量用戶產(chǎn)品線的上得到驗(yàn)證,包括文本分類、語(yǔ)義匹配、文本聚類等任務(wù),確保算法擁有足夠的泛化能力和實(shí)用性。具體的任務(wù)上,本文選取了一些有代表性的對(duì)比數(shù)據(jù)說(shuō)明模型的效果,因?yàn)樯婕熬唧w,這里主要用「類別個(gè)數(shù)+數(shù)據(jù)量+數(shù)據(jù)類型+評(píng)測(cè)標(biāo)準(zhǔn)」來(lái)區(qū)分?jǐn)?shù)據(jù)的特點(diǎn)。 文本分類

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

語(yǔ)義匹配

內(nèi)存用量1/20,速度加快80倍,QQ提全新BERT蒸餾框架,未來(lái)將開源

 

總結(jié)來(lái)說(shuō),在任意句子層面的任務(wù)上,該方法的方法可以提供一個(gè)規(guī)模很小的 LSTM 模型來(lái)替代 BERT,無(wú)差別的進(jìn)行使用。并且實(shí)驗(yàn)發(fā)現(xiàn)當(dāng)數(shù)據(jù)量相對(duì)較少,尤其是業(yè)務(wù)數(shù)據(jù)常見的幾 k~幾十 k 規(guī)模上,LTD-BERT 要明顯優(yōu)于 LSTM 以及前文提到的蒸餾算法,并且效果也更加接近 BERT,通常配合上一些其他的邏輯或者簡(jiǎn)單方法可以與 BERT 持平,甚至更優(yōu)于單獨(dú) BERT 的效果。尤其對(duì)于資源有限或者業(yè)務(wù)量較大的業(yè)務(wù)來(lái)講可以有效解決已經(jīng)嘗到 BERT 很香卻只能線下看看的問題。

另外,QQ 團(tuán)隊(duì)也做了一些公開任務(wù)上的測(cè)試,以更好對(duì)比,后續(xù)會(huì)將代碼開源,并在開源項(xiàng)目中陸續(xù)放出更多實(shí)驗(yàn)結(jié)果。另外,現(xiàn)在 NLP 飛速發(fā)展的時(shí)代,也會(huì)有很多相關(guān)的工作思路在一個(gè)階段發(fā)展起來(lái)。在內(nèi)部使用 LTD-BERT 的同時(shí),也看到了 DistillBERT[9] 和 Tiny-BERT[10] 陸續(xù)推出,這兩個(gè)工作跟 LTD-BERT 的出發(fā)點(diǎn)有一致之處,都是關(guān)注在圖 2 的左邊部分,大層面的不同之處主要有兩點(diǎn):

1. LTD-BERT 關(guān)注在預(yù)訓(xùn)練的模型上,DistillBERT 和 Tiny-BERT 關(guān)注在預(yù)訓(xùn)練過程中引入蒸餾;

2,LTD-BERT 關(guān)注不依賴 Transformer 或者 BERT 結(jié)構(gòu)的蒸餾過程,探索更小算量的可能性。

【編輯推薦】

2019年非常適合C/C++開發(fā)人員的IDE

Github標(biāo)星5300+,專門為程序員開發(fā)文檔開源管理系統(tǒng),我粉了

上線不到1年:微軟宣布取消95/5%開發(fā)者分成計(jì)劃

JetBrains推出編程字體Mono:更適合程序開發(fā)人員

性能提升最高120倍!滴滴實(shí)習(xí)生提出自動(dòng)結(jié)構(gòu)化減枝壓縮算法框架

【責(zé)任編輯:張燕妮 TEL:(010)68476606】

 

 

責(zé)任編輯:張燕妮 來(lái)源: 機(jī)器之心
相關(guān)推薦

2020-02-28 09:26:54

PythonGo語(yǔ)言C語(yǔ)言

2024-11-01 20:25:28

2009-05-06 16:36:00

Zend FramewZend框架PHP

2011-09-11 02:58:12

Windows 8build微軟

2021-06-23 15:45:55

神經(jīng)網(wǎng)絡(luò)AI算法

2014-12-01 15:32:28

開源社區(qū)云服務(wù)大數(shù)據(jù)架構(gòu)

2021-06-23 18:48:05

AI

2013-01-29 10:00:55

硬盤密度硬盤硬盤存儲(chǔ)

2013-11-06 09:39:30

JavaScriptMVC框架

2022-04-26 15:24:03

開源框架

2023-07-23 17:30:36

論文模型

2024-11-02 10:28:03

2017-05-11 11:30:43

MySQL查詢速度

2025-04-14 10:58:53

Agno多模態(tài)智能體LangGraph

2015-06-11 14:00:58

騰訊

2009-07-01 15:02:56

JSP程序JSP操作

2022-03-07 09:38:51

計(jì)算開源阿里巴巴

2011-05-06 10:49:13

網(wǎng)頁(yè)設(shè)計(jì)

2024-09-10 13:30:00

2025-04-26 09:25:00

模型推理AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)