DIET:Dual Intent and Entity Transformer
標(biāo)題:《DIET: Lightweight Language Understanding for Dialogue Systems》
中文:用于對(duì)話系統(tǒng)的輕量語言理解方法
時(shí)間:2020年5月
作者:RASA
簡(jiǎn)介:這個(gè)是RASA團(tuán)隊(duì)針對(duì)對(duì)話系統(tǒng)中NLU任務(wù),設(shè)計(jì)的一種新框架,名叫Dual Intent and Entity Transformer (DIET,雙重意圖與實(shí)體Transformer ) 。成果是,DIET在不利用pre-trained embeddings.的情況下,達(dá)到了可比的性能,即large pre-trained models對(duì)NLU任務(wù)似乎沒有什么優(yōu)勢(shì)。我們的方法比微調(diào)的BERT還好。
代碼:https://github.com/RasaHQ/DIET-paper
學(xué)習(xí)資料:
1. Introduction
本文,我們提出DIET——一個(gè)用于意圖分類和實(shí)體識(shí)別(intent classification and entity recognition)的多任務(wù)框架??紤]兩方面的embeddings,一是pre-trained word embeddings from language
models,二是sparse word and character level n-gram features。我們的特點(diǎn)是有能力將兩種特征以plug-and-play方式結(jié)合起來。實(shí)驗(yàn)顯示,盡管不使用pre-trained embeddings, 僅使用sparse
word and character level n-gram features, DIET依然能超越SOTA的NLU性能。而在增加pre-trained embeddings和sentence embedding的情況下,性能可以進(jìn)一步提升。我們的最好性能優(yōu)于微調(diào)BERT,且速度是后者6倍。
DIET代表Dual Intent and Entity Transformer,是一種多任務(wù)transformer?架構(gòu),可以同時(shí)執(zhí)行意圖分類和實(shí)體識(shí)別。它由多個(gè)組件組成,這使我們可以靈活地交換不同的組件。例如,我們可以嘗試使用不同的word embeddings,例如BERT和GloVe。
許多預(yù)訓(xùn)練語言模型非常笨拙,因?yàn)樗枰獜?qiáng)大的計(jì)算能力,并且推理時(shí)間很長(zhǎng),因此盡管它們具有出色的性能,但它們并不是為對(duì)話式AI應(yīng)用程序設(shè)計(jì)的。因此,大規(guī)模的預(yù)訓(xùn)練語言模型對(duì)于構(gòu)建對(duì)話式AI應(yīng)用程序的開發(fā)人員而言并不理想。
DIET之所以與眾不同,是因?yàn)?#xff1a;
- 它是一種模塊化體系結(jié)構(gòu),適合典型的軟件開發(fā)工作流程;
- 在準(zhǔn)確性和性能方面,能達(dá)到大規(guī)模的預(yù)訓(xùn)練語言模型的效果;
- 改進(jìn)了現(xiàn)有技術(shù),勝過目前的SOTA,并且訓(xùn)練速度提高了6倍。
2. Related Work
2.1 transfer learning
2.2 Joint Intent Classification and Named Entity Recognition
以多任務(wù)學(xué)習(xí)的方式,聯(lián)合實(shí)現(xiàn)意圖分類與NER,這個(gè)思路已經(jīng)有很多論文研究過。本文中,我們利用一個(gè) similar transformer-based的多任務(wù)設(shè)置用于DIET。并通過消融實(shí)驗(yàn)與單任務(wù)設(shè)置下進(jìn)行對(duì)比。
3. DIET architecture
? ? ? ? ? ? ? ? ? ? ? ? ???
問題:
數(shù)據(jù)集要求:the input text、label(s) of intent(s) 、label(s) of entities.
FFNN Characteristics
關(guān)于架構(gòu)中所有FFNN的兩個(gè)特別說明:
- 首先,它們沒有完全連接。從一開始,FFNN的dropout?率約為80%。這使得FFNN更輕巧。
- 其次,所有FFNN具有相同的權(quán)重。All the FFNN post sparse features share weights (W1) and all the FFNN post merging the output of the two paths share another set of weights (W2).
Featurization
在每一個(gè)句子結(jié)尾加一個(gè)__CLS__的special token。每個(gè)token都有它的嵌入,可以是sparse的,可以是dense的。通過線性層統(tǒng)一維度。
Transformer
自己實(shí)現(xiàn)一個(gè)小型的(2層)的Transformer來編碼context。
NER
用Transformer輸出向量,接一個(gè)CRF層進(jìn)行NER。
Intent Classification
over all possible intent labels,將label嵌入與CLS對(duì)應(yīng)的隱藏向量計(jì)算dot-product similarity。
- 訓(xùn)練階段:最大化正標(biāo)簽的相似度,最小化負(fù)標(biāo)簽的相似度
- inference階段:dot-product similarity在所有inten label上的rank
Masking
受masked language modelling task的啟發(fā),我們額外增加一個(gè)MASK損失函數(shù)來預(yù)測(cè)randomly masked input tokens。在序列中隨機(jī)選擇輸入詞符的 15%, 對(duì)于選定的詞符,在70%的情況下我們將輸入替換為特殊屏蔽詞符 __MASK__ 對(duì)應(yīng)的向量,在 10% 情況下我們用隨機(jī)詞符的向量替換輸入,并在其余的 20% 情況下保留原始輸入。
我們假設(shè)添加一個(gè)以重建MASK輸入的訓(xùn)練目標(biāo),應(yīng)該可以作為一個(gè)正則化器,幫助模型從文本中學(xué)習(xí)到更多一般的特征,而不僅要從分類中獲得區(qū)分性。
Total loss
? ? ? ? ? ? ? ? ? ? ? ?
Total loss:
注:這個(gè)結(jié)構(gòu)可以配置,可以隨時(shí)關(guān)閉上述總和中的任何一種損失。該體系結(jié)構(gòu)的設(shè)計(jì)方式使我們可以打開或關(guān)閉多個(gè)組件,旨在處理意圖和實(shí)體分類,但是如果我們只希望模型進(jìn)行intent classification,則可以關(guān)閉Entity loss和Mask loss,而只專注于優(yōu)化訓(xùn)練期間的Intent loss。
Batching
使用balanced batching策略來減輕類別不平衡,因?yàn)槟承┮鈭D可能比其它意圖更為頻繁。 另外,還在整個(gè)訓(xùn)練期間增加批次大小,作為正則化的另一個(gè)來源。
4. 實(shí)驗(yàn)評(píng)估
在本節(jié)中,我們首先描述實(shí)驗(yàn)中使用的數(shù)據(jù)集,然后描述實(shí)驗(yàn)設(shè)置,然后進(jìn)行消融研究以了解體系結(jié)構(gòu)每個(gè)組件的有效性。
4.1 數(shù)據(jù)集
我們使用三個(gè)數(shù)據(jù)集進(jìn)行評(píng)估:NLU-Benchmark、ATIS 和 SNIPS。 我們的實(shí)驗(yàn)重點(diǎn)是 NLU-Benchmark 數(shù)據(jù)集,因?yàn)樗沁@三個(gè)中最具挑戰(zhàn)性的。 ATIS 和 SNIPS 測(cè)試集精度的最先進(jìn)水平已經(jīng)接近 100%,請(qǐng)參見表5。
NLU-Benchmark 數(shù)據(jù)集:?NLU-Benchmark 數(shù)據(jù)集(Liu 等人,2019b),帶有場(chǎng)景、動(dòng)作和實(shí)體的標(biāo)注。 例如,“schedule a call with Lisa on Monday morning” 標(biāo)注為場(chǎng)景 calendar、動(dòng)作 set_event、實(shí)體 [event_name:?a call with Lisa] 和 [date:?Monday morning]。 將場(chǎng)景和動(dòng)作標(biāo)簽進(jìn)行連接得到意圖標(biāo)簽(例如 calendar_set_event)。 該數(shù)據(jù)集有 25,716 個(gè)語句,涵蓋多個(gè)家庭助理任務(wù),例如播放音樂或日歷查詢、聊天、以及向機(jī)器人發(fā)出的命令。 我們將數(shù)據(jù)分為 10 fold。 每一份都有自己的訓(xùn)練集和測(cè)試集,分別有 9960 和 1076 個(gè)個(gè)語句。3?總共存在 64 個(gè)意圖和 54 種實(shí)體類型。
ATIS:?ATIS(Hemphill 等人,1990)是 NLU 領(lǐng)域中經(jīng)過充分研究的數(shù)據(jù)集。 它由預(yù)訂機(jī)票的人的錄音經(jīng)過標(biāo)注轉(zhuǎn)錄。 我們使用與?Chen 等人?(2019)一樣分劃分,最初由?Goo 等人?(2018)提出。 訓(xùn)練、開發(fā)和測(cè)試集分別包含 4,478、500 和 893 個(gè)語句。 訓(xùn)練數(shù)據(jù)集包含 21 個(gè)意圖和 79 個(gè)實(shí)體。
SNIPS:?此數(shù)據(jù)集是從 Snips 個(gè)人語音助手收集的(Coucke 等人,2018)。 它包含 13,784 個(gè)訓(xùn)練和 700 個(gè)測(cè)試樣本。 為了公平比較,我們使用與?Chen 等人?(2019)和?Goo 等人?(2018)一樣的數(shù)據(jù)劃分,數(shù)據(jù)集鏈接。 訓(xùn)練集中分 700 個(gè)樣本用作開發(fā)集。 數(shù)據(jù)可以在線訪問?4。 SNIPS 數(shù)據(jù)集包含 7 個(gè)意圖和 39 個(gè)實(shí)體。
4.2 實(shí)驗(yàn)設(shè)置
我們的模型用 Tensorflow 實(shí)現(xiàn):
- 使用 NLU-Benchmark 數(shù)據(jù)集的第一個(gè)fold來選擇超參數(shù)。 為此,我們從訓(xùn)練集中隨機(jī)抽取 250 個(gè)語句作為驗(yàn)證集。
- 訓(xùn)練 200 多個(gè)epochs的模型(在一臺(tái)具有 4 個(gè) CPU,15 GB 內(nèi)存和一臺(tái) NVIDIA Tesla K80 的計(jì)算機(jī)上)。
- 使用 Adam(Kingma 和 Ba,2014)進(jìn)行優(yōu)化,初始學(xué)習(xí)率為 0.001。
- batch size大小從 64 增加到 128(Smith 等人,2017)。
在 NLU-Benchmark 數(shù)據(jù)集的第一個(gè)小份上訓(xùn)練我們的模型大約需要一個(gè)小時(shí)。 在推斷的時(shí)候,我們需要大約 80 毫秒來處理一條語句。
4.3 在 NLU-Benchmark 數(shù)據(jù)集上的實(shí)驗(yàn)
為了獲得該模型在該數(shù)據(jù)集上的整體性能,我們采用?Vanzo 等人?(2019)的方法:分別訓(xùn)練 10 個(gè)模型,每個(gè)小份一次,將平均值作為最終得分。
Micro-averaged precision、召回率和 F1 得分用作指標(biāo)
意圖標(biāo)簽的 True positives、false positives 和 false negatives 的計(jì)算方式與其它任何多類分類任務(wù)一樣。 如果預(yù)測(cè)范圍和正確范圍之間重疊,并且其標(biāo)簽匹配,則該實(shí)體被視為 true positive。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
表1顯示我們?cè)?NLU-Benchmark 數(shù)據(jù)集上表現(xiàn)最好的模型的結(jié)果。 我們性能最好的模型使用稀疏特征,即詞符級(jí)別的 one-hot 編碼和字符 n-gram 的 multi-hot 編碼(n ≤ 5)。 這些稀疏特征與 ConveRT 的密集嵌入相結(jié)合(Henderson 等人,2019b)。
性能最好的模型沒有使用MASK損失
?我們?cè)谝鈭D方面的表現(xiàn)優(yōu)于 HERMIT,絕對(duì)值超過 2%。 我們的實(shí)體 F1 微觀平均得分(86.04%)也高于 HERMIT(84.74%)。 HERMIT 報(bào)告的實(shí)體精度值相似,但是,我們的召回率要高得多(86.13% 相比 82.04%)。
4.4 NLU-Benchmark 數(shù)據(jù)集上的消融研究
我們使用 NLU-Benchmark 數(shù)據(jù)集來評(píng)估模型體系結(jié)構(gòu)的不同組成部分,因?yàn)樗w多個(gè)領(lǐng)域并且在三個(gè)數(shù)據(jù)集中擁有最多的意圖和實(shí)體。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Joint training的重要性:為了評(píng)估意圖分類和命名實(shí)體識(shí)別這兩個(gè)任務(wù)是否受益于joint優(yōu)化,我們針對(duì)每個(gè)任務(wù)分別訓(xùn)練了模型。 表2列出使用 DIET 僅訓(xùn)練單個(gè)任務(wù)的結(jié)果。 結(jié)果表明,與實(shí)體識(shí)別一起訓(xùn)練時(shí),意圖分類的性能略有下降(90.90% vs 90.18%)。 應(yīng)該注意的是,意圖分類單任務(wù)訓(xùn)練的最佳性能配置對(duì)應(yīng)于使用沒有 transformer 層5?的 ConveRT 嵌入。 但是,當(dāng)單獨(dú)訓(xùn)練實(shí)體時(shí),實(shí)體的 micro-averaged F1 分?jǐn)?shù)從 86.04 %下降到 82.57%。 檢查 NLU-Benchmark 數(shù)據(jù)集,這可能是由于特定意圖與特定實(shí)體的存在之間的強(qiáng)相關(guān)性。 例如,幾乎所有屬于 play_game 意圖的語句都有一個(gè)名為 game_name 的實(shí)體。 同樣,實(shí)體 game_name 僅與意圖 play_game 一起出現(xiàn)。 我們認(rèn)為,這一結(jié)果進(jìn)一步表明擁有像 DIET 這樣的模塊化和可配置架構(gòu)的重要性,以便處理這兩項(xiàng)任務(wù)之間的性能折衷。
不同特征組件和MASK的重要性:如第3節(jié)所述,不同預(yù)訓(xùn)練語言模型的嵌入都可以用作dense特征。 我們訓(xùn)練多種變體來研究每種變體的有效性:僅sparse特征,即word級(jí)別的 one-hot 編碼和character n-gram 的 multi-hot 編碼(n ≤ 5),以及與 ConveRT、BERT 或 GloVe一起使用的組合。 此外,我們?cè)谟泻蜎]有MASK損失的情況下訓(xùn)練每種組合。 表3中顯示的結(jié)果顯示意圖分類和實(shí)體識(shí)別的 F1 分?jǐn)?shù),并表明多種觀察結(jié)果:
- 當(dāng)使用sparse特征和mask損失,而沒有任何預(yù)訓(xùn)練的embeddings時(shí),DIET 的性能具有競(jìng)爭(zhēng)力。 在目標(biāo)和實(shí)體上增加mask損失都會(huì)使性能提高絕對(duì)值約 1%。
- 具有 GloVe 嵌入的 DIET 也具有同等的競(jìng)爭(zhēng)力,并且在與sparse特征和mask損失結(jié)合使用時(shí),在意圖和實(shí)體上都將得到進(jìn)一步增強(qiáng)。
- 有趣的是,使用上下文 BERT 嵌入作為dense特征的效果要比 GloVe 差。 我們假設(shè)這是因?yàn)?BERT 主要是在各種文本上預(yù)訓(xùn)練的,因此在轉(zhuǎn)移到對(duì)話任務(wù)之前需要微調(diào)。 由于 ConveRT 專門針對(duì)會(huì)話數(shù)據(jù)進(jìn)行微調(diào),因此使用 ConveRT 嵌入的 DIET 的性能支持了這種假設(shè)。
- sparse特征 和 ConveRT 嵌入的結(jié)合在意圖分類上獲得了最佳的 F1 得分,并且在意圖分類和實(shí)體識(shí)別方面都比現(xiàn)有最好結(jié)果高出 3% 左右。
- 與 BERT 和 ConveRT 一起用作dense特征時(shí),增加mask損失似乎會(huì)稍微影響性能。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
與微調(diào) BERT 比較:我們?cè)u(píng)估將 BERT 應(yīng)用到 DIET 的特征流水線中并對(duì)整個(gè)模型進(jìn)行微調(diào)的有效性。 表4顯示使用凍結(jié) ConveRT 嵌入的 DIET 作為dense特征和單詞、字符級(jí)稀疏特征在實(shí)體識(shí)別上表現(xiàn)優(yōu)于微調(diào)的 BERT,而在意圖分類方面表現(xiàn)持平。 此結(jié)果尤為重要,因?yàn)樵谒?10 個(gè) NLU-Benchmark 數(shù)據(jù)集上微調(diào)的 DIET 中的 BERT 需要 60 個(gè)小時(shí),而使用 ConveRT 嵌入和稀疏特征的 DIET 則需要 10 個(gè)小時(shí)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
4.5 ATIS 和 SNIPS 上的實(shí)驗(yàn)
為了將我們的結(jié)果與?Chen 等人?(2019)比較,我們使用與以下相同的評(píng)估方法?Chen 等人?(2019)和?Goo 等人?(2018)。 他們報(bào)告意圖分類的準(zhǔn)確性和實(shí)體識(shí)別的 micro-averaged F1 分?jǐn)?shù)。 同樣,可以像在其它任何多類分類任務(wù)中一樣獲得意圖標(biāo)簽的 true positives、false positives 和 false negatives。 但是,只有當(dāng)預(yù)測(cè)范圍與正確范圍完全匹配并且其標(biāo)簽匹配正確時(shí),實(shí)體才算為 true positive,定義比?Vanzo 等人?(2019)更嚴(yán)格。 所有實(shí)驗(yàn)在 ATIS 和 SNIPS 上均進(jìn)行 5 次。 我們將這些運(yùn)行結(jié)果的平均值作為最終數(shù)字。
為了解 DIET 超參數(shù)的可移植性,我們采用在 NLU-Benchmark 數(shù)據(jù)集上性能最佳的 DIET 模型配置,并在 ATIS 和 SNIPS 上對(duì)其進(jìn)行評(píng)估。 表5中列出 ATIS 和 SNIPS 數(shù)據(jù)集上的意圖分類準(zhǔn)確性和命名實(shí)體識(shí)別 F1 得分。
由于采用了更嚴(yán)格的評(píng)估方法,因此我們使用 BILOU 標(biāo)記模式對(duì)數(shù)據(jù)進(jìn)行標(biāo)記(Ramshaw 和 Marcus,1995)。 表5中的 ? 指示使用 BILOU 標(biāo)記模式。
值得注意的是,DIET 僅使用稀疏特征而沒有任何預(yù)訓(xùn)練的嵌入,即使這樣其性能僅比 Joint BERT 模型低 1-2%之內(nèi)。 利用 NLU-Benchmark 數(shù)據(jù)集上性能最佳模型的超參數(shù),DIET 在 ATIS 和 SNIPS 上均獲得與 Joint BERT 競(jìng)爭(zhēng)的結(jié)果。
參考:https://natural-language-understanding.fandom.com/wiki/Named_entity_recognition#BILOU
Similar but more detailed than BIO, BILOU encode the Beginning, the Inside and Last token of multi-token chunks while differentiate them from Unit-length chunks. The same sentence is annotated differently in BILOU:
B - 'beginning' I - 'inside' L - 'last' O - 'outside' U - 'unit'如:?
| Minjun | U-Person |
| is | O |
| from | O |
| South | B-Location |
| Korea | L-Location |
| . | O |
?
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的DIET:Dual Intent and Entity Transformer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 句法分析:依存分析(Dependency
- 下一篇: 参数初始化