Google 的 BERT 模型一經(jīng)發(fā)布便點燃了 NLP 各界的歡騰,Google Brain 的資深研究科學(xué)家 Thang Luong 曾給出其“開啟了 NLP 新時代”的高度定義,國內(nèi)外許多公司及開發(fā)者對其進行了研究及應(yīng)用,本文作者及其團隊對 BERT 進行了應(yīng)用探索。
隨著 Google 推出的 BERT 模型在多種 NLP 任務(wù)上取得 SOTA,NLP 技術(shù)真正進入了大規(guī)模應(yīng)用階段,環(huán)信一直致力于幫助企業(yè)應(yīng)用先進的AI技術(shù)提高生產(chǎn)效率,對于 BERT 的探索我們一直走在了行業(yè)前列。
訓(xùn)練模型
訓(xùn)練數(shù)據(jù)
訓(xùn)練其他模型時我們已經(jīng)標注了大量的訓(xùn)練數(shù)據(jù),主要把相似句對分為三類來標注:
不相似(0)、相關(guān)(0.5)、相似(1)
所以,訓(xùn)練 BERT 模型時就可以“拿來主義”了。
模型修改
我們的主要應(yīng)用點是相似度計算,期望模型返回的結(jié)果是一個概率(分值)而不是每個類別的概率。當然如果模型給的結(jié)果是每一個類別的概率,依然可以通過加權(quán)求和輸出一個分值,但這樣是不是又復(fù)雜了。
所以我們在官方代碼上做了點小的修改(將最后的 softmax 改為了 sigmoid)使得模型輸出是一個分值,這個分值也就是我們要的相似度了。
模型訓(xùn)練
我們使用之前標注的數(shù)據(jù)集在 GeForce GTX 1070 上訓(xùn)練(Fine-Tune),大概訓(xùn)練了 8 個小時左右。
模型導(dǎo)出
模型訓(xùn)練完會產(chǎn)生幾個 Checkpoint,這些 Checkpoint 是不能直接在工程中使用的,需要導(dǎo)出成 PB 文件,可以使用 Estimator 的 export_savedmodel 方法導(dǎo)出。
模型使用
通過調(diào)研,主要有兩種方式:
Java JNI:基于我們的 GPU 編譯[1]一個合適的 libtensorflow 和libtensorflow_jni_gpu(如果你的配置和官方一致就不需要自己編譯 了,自己編譯太多坑,這里有一份經(jīng)過驗證的編譯環(huán)境配置[2])打成 jar 包并加入到工程依賴,使用 TensorFlow 提供的 Java API 加載 BERT 模型,在你的 Java 工程中使用[3]。
Docker + Nvidia-docker + Tensorflow Serving:需要一個合適的 Tensorlfow Serving 的 image,這里有一份官方做好的 image 列表[4],當然你也可以自己做一個。
這兩種方式各有優(yōu)缺點,我們主要考慮以下幾個方面:
性能:我們對兩種方案做了實驗,Tensorflow Serving 是 C++ 寫成的服務(wù),對于 batch 做過優(yōu)化[6],性能優(yōu)于 Java JNI。
多模型支持能力:方案 2 是支持多模型的,也就是多個模型共用一個 GPU,方案 1 不支持。
簡單好部署:兩種方案都不復(fù)雜。
與現(xiàn)有服務(wù)開發(fā)和運維體系兼容性:方案 1 更有優(yōu)勢。
另外,方案 2 不僅支持多模型還支持多版本、模型的冷啟動和熱加載。綜合考慮下,我們使用了方案 2 進行模型部署。
效果對比
我們用一些典型客戶的數(shù)據(jù)構(gòu)建了測試環(huán)境,抽取這些客戶的真實訪客數(shù)據(jù),對現(xiàn)有模型和 BERT 模型做了對比實驗,BERT 模型的效果相比于對照模型提高了超過 10%。
調(diào)用圖
這是我們的調(diào)用時序圖:
FAQ服務(wù)->相似度計算服務(wù):句子1和句子2相似度是多少?
相似度計算服務(wù)->TensorflowServing:句子1和句子2相似度是多少?
NoterightofTensorflowServing:bert模型預(yù)測
TensorflowServing->相似度計算服務(wù):句子1和句子2相似度是xx
相似度計算服務(wù)->FAQ服務(wù):句子1和句子2相似度是xx
這里抽象出一個相似度計算服務(wù),是因為我們集成了多種相似度計算方法。
優(yōu)化
后處理
這種模型的一個主要問題是:模型并不能完美解決所有問題,時不時總會有 bad case 出現(xiàn)。一旦模型上線,如果有問題我們無法及時解決(訓(xùn)練模型和上線都會消耗大量時間)。為此我們增加了后處理,以便于我們的訓(xùn)練師能夠及時干預(yù),解決問題。
預(yù)訓(xùn)練
BERT 預(yù)訓(xùn)練的模型使用的數(shù)據(jù)來源于維基百科,與我們的主要應(yīng)用場景不一致。我們可以猜想如果在 BERT 原有 Pre-Training 模型的基礎(chǔ)上,使用客服里的數(shù)據(jù)再次進行 Pre-Training 應(yīng)該會更好,事實上我們也的確這樣做了。結(jié)論是影響不大,可能是數(shù)據(jù)不夠多,新的訓(xùn)練實驗還在進行中。
數(shù)據(jù)標注
GPT 2.0 的出現(xiàn)再次證明了要想得到好的模型,不僅要有數(shù)據(jù)量,還要提高數(shù)據(jù)的品質(zhì)。我們新的標注也在進行中,相信會對模型效果有所提高。
其他應(yīng)用
我們在產(chǎn)品中還提供了意圖識別的服務(wù),意圖識別服務(wù)要求必須能夠在線訓(xùn)練。如果直接使用 BERT 來做意圖識別,很難滿足在線訓(xùn)練的要求(BERT 訓(xùn)練太慢了)。為此我們使用了簡單的模型來支持在線訓(xùn)練,并把 Fine-tune 模型的倒數(shù)第二層作為特征,增強意圖識別的效果。
BERT 的近鄰
最近 Google 又攜 XLnet 屠榜了,從實驗效果看對比 BERT 確實有比較大的提升,我們也在關(guān)注中,實驗的小手已經(jīng)蠢蠢欲動了。如果在我們的場景實驗效果好的話,相信我們環(huán)信的客戶很快便會體驗到。
作者簡介:董文濤,環(huán)信人工智能研發(fā)中心算法工程師,負責(zé)環(huán)信中文語義分析開放平臺和環(huán)信智能機器人的設(shè)計與研發(fā)。
- 為什么年輕人不愛換手機了
- 柔宇科技未履行金額近億元被曝已6個月發(fā)不出工資
- 柔宇科技被曝已6個月發(fā)不出工資 公司回應(yīng)欠薪有補償方案
- 第六座“綠動未來”環(huán)保公益圖書館落地貴州山區(qū)小學(xué)
- 窺見“新紀元”,2021元宇宙產(chǎn)業(yè)發(fā)展高峰論壇“廣州啟幕”
- 以人為本,景悅科技解讀智慧城市發(fā)展新理念
- 紐迪瑞科技/NDT賦能黑鯊4 Pro游戲手機打造全新一代屏幕壓感
- 清潔家電新老玩家市場定位清晰,攜手共進,核心技術(shù)決定未來
- 新思科技與芯耀輝在IP產(chǎn)品領(lǐng)域達成戰(zhàn)略合作伙伴關(guān)系
- 芯耀輝加速全球化部署,任命原Intel高管出任全球總裁
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。