嫩bbb槡bbbb搡bbbb-亚洲av无码国产精品色-艳妇交换俱乐部-av天堂永久资源网

浙江省永康市錦尚庭門業(yè)

基于PaddlePaddle的官方NLP模型總覽

瀏覽: 作者: 來源: 時間:2024-05-15 分類:
引言 自然語言處理(NLP)主要是研究實現(xiàn)人與計算機之間用自然語言進行有效通信的各種理論和方法?;谏窠?jīng)網(wǎng)絡的深度學習技術具有強大的表達能力、端到端

引言

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

近日,百度PaddlePaddle開源了語義表示模型ERNIE,在多個中文NLP任務上表現(xiàn)超越了谷歌的BERT(請參考鏈接),展示了百度在NLP技術的領先能力,同時也表明PaddlePaddle作為國內(nèi)目前唯一功能完備的深度學習平臺,在不斷得夯實框架能力, 并引領技術進步。實際上除了ERNIE,PaddlePaddle官方還有很多其他的NLP模型,覆蓋了包括語義表示、語義匹配、閱讀理解、機器翻譯、語言模型、情感傾向分析、詞法分析等各項NLP任務。本文將對這些模型做一些梳理和介紹。

語義表示-ERNIE

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

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

此外,ERNIE 的訓練語料引入了多源數(shù)據(jù)知識。除了百科類文章建模,還對新聞資訊類、論壇對話類數(shù)據(jù)進行學習,這里重點介紹下論壇對話建模。對于對話數(shù)據(jù)的學習是語義表示的重要途徑,往往相同回復對應的 Query 語義相似。基于該假設,ERINE 采用 DLM(Dialogue Language Model)建模 Query-Response 對話結構,將對話 Pair 對作為輸入,引入 Dialogue Embedding 標識對話的角色,利用 Dialogue Response Loss 學習對話的隱式關系,通過該方法建模進一步提升模型語義表示能力。

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

項目地址:

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

語義匹配-DAM,AnyQ-SimNet

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

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

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

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

DAM受啟發(fā)于機器翻譯的Transformer模型。將Transformer關鍵的注意力機制從兩個方面進行拓展,并將其引入到一個統(tǒng)一的網(wǎng)絡之中。

Ÿ 自注意力機制(Self-Attention)

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

Ÿ 互注意力機制(Cross-Attention)

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

DAM模型網(wǎng)絡結構

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

DAM模型的效果對比

PaddlePaddle開源的DAM項目提供了數(shù)據(jù)準備、模型訓練和推理等詳細的應用步驟。該項目的地址為:https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/deep_attention_matching_net

n SimNet

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

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

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

SimNet項目鏈接:

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

閱讀理解-DuReader

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

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

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

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

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

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

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

Ÿ Fusion層——利用雙向LSTM網(wǎng)絡捕獲上下文的詞之間的相互信息

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

Paddle Github鏈接:

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

機器翻譯-Transformer

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

圖1:Transfomer模型結構

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

  • Multi-Head Attention 在這里用于實現(xiàn) Self-Attention,相比于簡單的 Attention 機制,其將輸入進行多路線性變換后分別計算 Attention 的結果,并將所有結果拼接后再次進行線性變換作為輸出。參見圖2,其中 Attention 使用的是點積(Dot-Product),并在點積后進行了 scale 的處理以避免因點積結果過大進入 softmax 的飽和區(qū)域。

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

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

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

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

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

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

Github項目地址:

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

語言模型-LSTM,GRU

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

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

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

Paddle提供了基于Penn Tree Bank (PTB)數(shù)據(jù)集的經(jīng)典循環(huán)神經(jīng)網(wǎng)絡LSTM語言模型實現(xiàn),通過學習訓練數(shù)據(jù)中的序列關系,可以預測一個句子出現(xiàn)的的概率。

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

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

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

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

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

Ÿ 淺層CNN模型--是一個基礎的序列模型,能夠處理變長的序列輸入,提取一個局部區(qū)域之內(nèi)的特征。

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

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

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

基于Bi-LSTM的情感分類模型

總體來說,基于Bi-LSTM的情感分類模型包括三層:單詞語義層,句子語義層,輸出層。1.單詞語義層,主要是將輸入文本中的每個單詞轉化為連續(xù)的語義矢量表示,也就是單詞的Embedding。2.句子語義層,通過Bi-LSTM網(wǎng)絡結構,將單詞語義的序列轉化為整個句子的語義表示。3.輸出層,基于句子語義計算情感傾向的概率。

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

Github項目地址:

https://github.com/baidu/Senta

中文詞法分析-LAC

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

Ÿ 中文分詞 -- 是將連續(xù)的自然語言文本,切分成具有語義合理性和完整性的詞匯序列的過程

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

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

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

用兩個Bi-GRU 堆疊的Bi-GRU-CRF網(wǎng)絡

Bi-GRU是GRU網(wǎng)絡的一種拓展,由一個反向的GRU與一個正向的GRU耦合而成,將一個完整的句子作為。兩個GRU的輸入相同,但是訓練方向相反。兩個網(wǎng)絡的結果拼接以后作為輸出。堆疊多個Bi-GRU可以形成深度的網(wǎng)絡,從而能夠促進語義的表示能力。本模型堆疊了兩層Bi-GRU。之后,將Bi-GRU的輸出連到一個全連接層。它將Bi-GRU 層的輸出轉為一個多維度矢量,矢量的維度是所有可能標簽的數(shù)量。整個網(wǎng)絡最上方,使用了CRF(條件隨機場)對最后的標簽做聯(lián)合解碼。

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

Github 鏈接:

https://github.com/baidu/lac

PaddlePaddle官方模型庫Github地址

https://github.com/PaddlePaddle/models

PaddlePaddle Github項目地址:

https://github.com/PaddlePaddle