PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

本文轉載自 PaddlePaddle

自然語言處理(NLP)主要是研究實現人與計算機之間用自然語言進行有效通信的各種理論和方法。基於神經網絡的深度學習技術具有強大的表達能力、端到端解決問題的能力,因而在NLP任務的應用上越來越廣泛和有效。

近日,百度PaddlePaddle開源了語義表示模型ERNIE,在多箇中文NLP任務上表現超越了谷歌的BERT,展示了百度在NLP技術的領先能力,同時也表明PaddlePaddle作為國內目前唯一功能完備的深度學習平臺,在不斷得夯實框架能力, 並引領技術進步。

實際上除了ERNIE,PaddlePaddle官方還有很多其他的NLP模型,覆蓋了包括語義表示、語義匹配、閱讀理解、機器翻譯、語言模型、情感傾向分析、詞法分析等各項NLP任務。

本文將對這些模型做一些梳理和介紹。

語義表示-ERNIE

知識增強的語義表示模型 ERNIE(Enhanced Representation through kNowledge IntEgration)通過對詞、實體等語義單元的掩碼,使得模型學習完整概念的語義表示。相較於 BERT 學習原始語言信號,ERNIE 直接對先驗語義知識單元進行建模,增強了模型語義表示能力。

ERNIE 模型本身保持基於字特徵輸入建模,使得模型在應用時不需要依賴其他信息,具備更強的通用性和可擴展性。相對詞特徵輸入模型,字特徵可建模字的組合語義,例如建模紅色,綠色,藍色等表示顏色的詞語時,通過相同字的語義組合學到詞之間的語義關係。

此外,ERNIE 的訓練語料引入了多源數據知識。除了百科類文章建模,還對新聞資訊類、論壇對話類數據進行學習,這裡重點介紹下論壇對話建模。對於對話數據的學習是語義表示的重要途徑,往往相同回覆對應的 Query 語義相似。

基於該假設,ERINE 採用 DLM(Dialogue Language Model)建模 Query-Response 對話結構,將對話 Pair 對作為輸入,引入 Dialogue Embedding 標識對話的角色,利用 Dialogue Response Loss 學習對話的隱式關係,通過該方法建模進一步提升模型語義表示能力。

ERNIE在語言推斷、語義相似度、命名實體識別、情感分析、問答匹配等自然語言處理(NLP)各類中文任務上的驗證顯示,模型效果全面超越 BERT,如下表所示。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

項目地址:

ERNIE: https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

語義匹配-DAM,AnyQ-SimNet

語義匹配是一種用來衡量文本相似度的NLP任務。很多NLP的任務可以轉化為語義匹配問題。比如搜索可以認為是查詢詞與文檔之間的語義匹配問題,對話系統、智能客服可以認為是問題和回答之間的語義匹配問題。

PaddlePaddle官方提供了兩種語義匹配相關的模型:DAM和AnyQ-SimNet。

深度注意力匹配網絡DAM(Deep Attention Matching Network)

DAM 是一個完全基於 Attention 機制的神經匹配網絡。DAM 的動機是為了在多輪對話中,捕獲不同顆粒度的對話元素中的語義依賴,從而更好地在多輪上下文語境中回覆。它可用於檢索式聊天機器人多輪對話中應答的選擇。

DAM受啟發於機器翻譯的Transformer模型。將Transformer關鍵的注意力機制從兩個方面進行拓展,並將其引入到一個統一的網絡之中。

自注意力機制(Self-Attention)

通過從詞嵌入中疊加註意力機制,逐漸捕獲不同顆粒度的語義表示。這些多粒度的語義表示有助於探索上下文和回答的語義依賴。

互注意力機制(Cross-Attention)

貫穿於上下文和回答的注意力機制,可以捕獲不同語段對的依賴關係,從而在多輪上下文的匹配回答中為文本關係提供互補信息。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

△ DAM模型網絡結構

該模型在Ubuntu和豆瓣對話兩個語料庫上測試了多輪對話任務,如下表所示,相比其他模型有最優的效果。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

△ DAM模型的效果對比

PaddlePaddle開源的DAM項目提供了數據準備、模型訓練和推理等詳細的應用步驟。該項目的地址為:

https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/deep_attention_matching_net

SimNet

SimNet 是百度自主研發的語義匹配框架,該框架在百度內有廣泛的應用,主要包括 BOW、CNN、RNN、MM-DNN 等核心網絡結構形式,同時基於該框架也集成了學術界主流的語義匹配模型。使用 SimNet 構建出的模型可以便捷的加入AnyQ系統中,增強AnyQ系統的語義匹配能力。

Paddle版本Simnet提供了BOW,CNN,LSTM及GRU四種網絡實現,可以通過配置文件的形式靈活選擇您需要的網絡,損失函數,訓練方式。

PaddlePaddle官方提供了完整的數據準備、訓練和推理的相關使用方法。

SimNet項目鏈接:

https://github.com/baidu/AnyQ/tree/master/tools/simnet/train/paddle

閱讀理解-DuReader

機器閱讀理解是指讓機器像人類一樣閱讀文本,提煉文本信息並回答相關問題。對人類而言,閱讀理解是獲取外部知識的一項基本且重要的能力。同樣,對機器而言,機器閱讀理解能力也是新一代機器人應具備的基礎能力。

DuReader 是一個解決閱讀理解問題的端到端模型,可以根據已給的文章段落來回答問題。模型通過雙向Attention 機制捕捉問題和原文之間的交互關係,生成 Query-Aware 的原文表示,最終基於 Query-Aware 的原文表示通過 Point Network 預測答案範圍。

DuReader模型在最大的中文 MRC 開放數據集——百度閱讀理解數據集上,達到了當前最好效果。該數據集聚焦於回答真實世界中開放問題,相比其他數據集,它的優點包括真實的問題、真實的文章、真實的回答、真實的場景和翔實的標註。

DuReader受啟發於三個經典的閱讀理解模型(Bi-DAF、Match-LSTM和R-NET),是一個雙向多階段模型,共有5層:

詞嵌入層——用預訓練詞嵌入模型將每一個詞映射到一個向量上

編碼層——用雙向LSTM網絡為每一個問題和段落的位置抽取上下文信息

Attention flow層——耦合問題和上下文向量,為上下文中的每一個詞生成query-aware特徵向量

Fusion層——利用雙向LSTM網絡捕獲上下文的詞之間的相互信息

解碼層——通過問題的attention池化的answer point網絡定位答案在段落中的位置。

Paddle Github鏈接:

https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/machine_reading_comprehension

機器翻譯-Transformer

Transformer 最早是谷歌提出的一種用以完成機器翻譯等 Seq2Seq 學習任務的一種全新網絡結構,它完全使用 Attention 機制來實現序列到序列的建模,相比於以往NLP模型裡使用RNN或者編碼-解碼結構,具有計算複雜度小、並行度高、容易學習長程依賴等優勢, 整體網絡結構如圖1所示。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

△ 圖1:Transfomer模型結構

Encoder 由若干相同的 layer 堆疊組成,每個 layer 主要由多頭注意力(Multi-Head Attention)和全連接的前饋(Feed-Forward)網絡這兩個 sub-layer 構成。

Multi-Head Attention,在這裡用於實現 Self-Attention,相比於簡單的 Attention 機制,其將輸入進行多路線性變換後分別計算 Attention 的結果,並將所有結果拼接後再次進行線性變換作為輸出。

參見圖2,其中 Attention 使用的是點積(Dot-Product),並在點積後進行了 scale 的處理以避免因點積結果過大進入 softmax 的飽和區域。

Feed-Forward,網絡會對序列中的每個位置進行相同的計算(Position-wise),其採用的是兩次線性變換中間加以 ReLU 激活的結構。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

△ 圖2:多頭注意力(Multi-Head Attention)

此外,每個 sub-layer 後還施以 Residual Connection 和 Layer Normalization 來促進梯度傳播和模型收斂。

PaddlePaddle官方提供了該模型的數據準備、訓練和推理等方法。

目前在未使用 model average 的情況下,英德翻譯 base model 和 big model 八卡訓練 100K 個 iteration 後測試 BLEU 值如下表所示:

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

Transformer 模型支持同步或者異步的分佈式訓練。Paddle官方提供了詳細的配置方法。

Github項目地址:

https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/machine_reading_comprehension

語言模型-LSTM,GRU

RNN、LSTM和GRU是深度學習在NLP中應用的基礎語言模型。

RNN模型在同一個單元中,每個時刻利用當前和之前輸入,產生當前時刻的輸出,能夠解決一定時序的問題,但是受到短時記憶影響,很難將信息從較早的時間傳到較晚的時間。LSTM通過引入門結構(forget,input,output三種門結構),能夠將序列的信息一直傳遞下去,能夠將較早的信息也引入到較晚的時間中來,從而客服短時記憶。

GRU與LSTM非常相似,但是隻有兩個門(update,reset),因而參數更少,結構簡單,訓練更簡單。

Paddle提供了基於Penn Tree Bank (PTB)數據集的經典循環神經網絡LSTM語言模型實現,通過學習訓練數據中的序列關係,可以預測一個句子出現的的概率。

Paddle也提供了基於Penn Tree Bank (PTB)數據集的經典循環神經網絡GRU語言模型實現,在LSTM模型基礎上做了一些簡化,保持效果基本持平的前提下,模型參數更少、速度更快。

Github鏈接:

https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/language_model/lstm

https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/language_model/gru

情感傾向分析-Senta

情感傾向分析針對帶有主觀描述的中文文本,可自動判斷該文本的情感極性類別並給出相應的置信度。情感類型分為積極、消極、 中性。情感傾向分析能夠幫助企業理解用戶消費習慣、分析熱點話題和危機輿情監控,為企業提供有力的決策支持。

Senta 模型是目前最好的中文情感分析模型,可自動判斷中文文本的情感極性類別並給出相應的置信度。它包含有以下模型:

Bow(Bag Of Words)模型— 是一個非序列模型。使用基本的全連接結構。

淺層CNN模型—是一個基礎的序列模型,能夠處理變長的序列輸入,提取一個局部區域之內的特徵。

單層GRU模型—序列模型,能夠較好地解序列文本中長距離依賴的問題。

單層LSTM模型—序列模型,能夠較好地解決序列文本中長距離依賴的問題。

雙向LSTM模型—序列模型,通過採用雙向LSTM結構,更好地捕獲句子中的語義特徵。百度AI平臺上情感傾向分析模塊採用此模型進行訓練和預測。下圖展示了這種模型的原理。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

△ 基於Bi-LSTM的情感分類模型

總體來說,基於Bi-LSTM的情感分類模型包括三層:單詞語義層,句子語義層,輸出層。

  1. 單詞語義層,主要是將輸入文本中的每個單詞轉化為連續的語義向量表示,也就是單詞的Embedding。
  2. 句子語義層,通過Bi-LSTM網絡結構,將單詞語義的序列轉化為整個句子的語義表示。
  3. 輸出層,基於句子語義計算情感傾向的概率。

在PaddlePaddle的該模型項目地址上,給出來在C-API目錄下給出了bilstm_net模型的下載腳本download.sh,可供用戶下載使用(模型可支持C-API、python兩種預測方式),該模型在百度自建數據集上的效果分類準確率為90%。

Github項目地址:

https://github.com/baidu/Senta

中文詞法分析-LAC

LAC是一個聯合的詞法分析模型,能夠整體性地完成中文分詞、詞性標註、專名識別等NLP任務。LAC既可以認為是Lexical Analysis of Chinese的首字母縮寫,也可以認為是LAC Analyzes Chinese的遞歸縮寫。

中文分詞 — 是將連續的自然語言文本,切分成具有語義合理性和完整性的詞彙序列的過程。

詞性標註(Part-of-Speech tagging 或POS tagging)— 是指為自然語言文本中的每個詞彙賦予一個詞性的過程。

命名實體識別(Named Entity Recognition 簡稱NER)— 即”專名識別”,是指識別自然語言文本中具有特定意義的實體,主要包括人名、地名、機構名、時間日期等。

LAC基於一個堆疊的雙向 GRU 結構(Bi-GRU-CRF),在長文本上準確復刻了百度AI開放平臺上的詞法分析算法。網絡結構如下圖所示。

PaddlePaddle官方九大NLP模型集結,機器翻譯、閱讀理解都有

△ 用兩個Bi-GRU 堆疊的Bi-GRU-CRF網絡

Bi-GRU是GRU網絡的一種拓展,由一個反向的GRU與一個正向的GRU耦合而成,將一個完整的句子作為。兩個GRU的輸入相同,但是訓練方向相反。兩個網絡的結果拼接以後作為輸出。堆疊多個Bi-GRU可以形成深度的網絡,從而能夠促進語義的表示能力。本模型堆疊了兩層Bi-GRU。

之後,將Bi-GRU的輸出連到一個全連接層。它將Bi-GRU 層的輸出轉為一個多維度向量,向量的維度是所有可能標籤的數量。整個網絡最上方,使用了CRF(條件隨機場)對最後的標籤做聯合解碼。

效果方面,分詞、詞性、專名識別的整體準確率95.5%;單獨評估專名識別任務,F值87.1%(準確90.3,召回85.4%),總體略優於開放平臺版本。在效果優化的基礎上,LAC的模型簡潔高效,內存開銷不到100M,而速度則比百度AI開放平臺提高了57%。

Github 鏈接:

https://github.com/baidu/lac

PaddlePaddle官方模型庫Github地址

https://github.com/PaddlePaddle/models

PaddlePaddle Github項目地址:

https://github.com/PaddlePaddle

— 完 —

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: