由于個(gè)人習(xí)慣已烤,系統(tǒng)設(shè)計(jì)及老、nlp任務(wù),會(huì)從 `五個(gè)步驟衅胀、四個(gè)組件`來分析:
系統(tǒng)設(shè)計(jì)五個(gè)步驟:
1. 數(shù)據(jù)預(yù)處理
2. 模型
3. 策略
4. 優(yōu)化(算法)
5. 正則化
NLP模型四個(gè)組件:
1. Embedding
2. Representation(encoder)
3. Decoder
4. Output
任何論文在以上五個(gè)步驟卒茬、四個(gè)組件中任何一環(huán)節(jié)有卓越設(shè)計(jì)之處船老,我都希望能有機(jī)會(huì)好好學(xué)習(xí)研讀咖熟,同大家分享。侵權(quán)必刪努隙。
Paper:?A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding球恤;
Task:?JointTextTask;
一荸镊、Paper綜述
該文章為針對(duì)SLU(Spoken Language Understanding)的意圖-槽填充聯(lián)合模型咽斧,文章的出色之處在于提供了一個(gè)同時(shí)在文本分類和文本標(biāo)記兩個(gè)nlp基本任務(wù)中都取得卓越成績的基于RNNs的聯(lián)合模型。
對(duì)于SLU(即語義理解)來說躬存,一般有兩項(xiàng)主要任務(wù):意圖識(shí)別(Intent determination张惹,即文本分類)和槽填充(slot filling,即文本標(biāo)記)岭洲。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs)宛逗,在文本分類任務(wù)中被證明可取得較好的結(jié)果。由于意圖識(shí)別和槽填充有相當(dāng)?shù)穆?lián)系盾剩,所以論文作者提出一個(gè)適合于兩種任務(wù)的聯(lián)合模型雷激。
GRU具有隨著時(shí)序?qū)W習(xí)每個(gè)詞(token)的表征的特性,通過這個(gè)特性可以預(yù)測每個(gè)插槽告私,同時(shí)屎暇,一個(gè)max-pooling層可以捕捉句子的全局特征從而實(shí)現(xiàn)意圖識(shí)別。GRU捕捉到的每個(gè)token的特征和max-pooling層捕捉的句子全局特征是被兩個(gè)任務(wù)所共享的驻粟,譬如根悼,假如一句話的意圖是找到一個(gè)航班,那么他更有可能有出發(fā)以及目的城市蜀撑,反之亦然挤巡。實(shí)驗(yàn)證明了聯(lián)合模型比分開的每個(gè)模型效果都要更好一些。文章選用了United loss function作為策略酷麦,實(shí)驗(yàn)結(jié)果證明了該篇論文在兩個(gè)任務(wù)中都取得了state-of-the-art的結(jié)果矿卑。
二、模型解釋
模型的整體框架如下圖所示沃饶,現(xiàn)在具體解釋每一層的作用粪摘。
1. `Embeddings`
文章使用了預(yù)訓(xùn)練的詞向量模型,并且加入了Mesnil et al.[2015]提出的context word window的想法绍坝,后者可以有效提高SF任務(wù)的表現(xiàn),即除了使用詞向量表征每個(gè)單詞苔悦,使用d-context word window?來作為RNNs網(wǎng)絡(luò)的時(shí)序輸入轩褐,由單詞的前d個(gè)、后d個(gè)和其本身一共2d+1個(gè)詞向量表示而成玖详,如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ?(1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
命名實(shí)體NER對(duì)SLU來說是一個(gè)非常重要的特征把介,為了使用這個(gè)特征勤讽,原文賦予每個(gè)命名實(shí)體一個(gè)置于[0, 1]的一個(gè)embedding,維度和詞向量一樣拗踢,并使之能在反向傳播時(shí)進(jìn)行訓(xùn)練脚牍,context named window如同上面定義context word window一樣。所以巢墅,最后每個(gè)時(shí)序t的輸入表示為:
? ????????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? (2)
注意诸狭,word和ner的窗口并不一定一樣。
觀察Pytext的model參數(shù)可以發(fā)現(xiàn)WordEmbedding的參數(shù)君纫,其中驯遇,Embedding(820, 100)中的820代表輸入文本單詞總種類數(shù)vocabulary_size,100代表詞向量的維數(shù)dimenstion_word2vec蓄髓。
2. `Recurrent Hidden Layers`
即`Representation`叉庐,表示層,這里不再贅述Lstm和Gru的推導(dǎo)證明過程了会喝,原文使用Gru的原因是陡叠,Gru使用了比Lstm更少的參數(shù),但是得到了相當(dāng)?shù)慕Y(jié)果肢执。
這里使用了一個(gè)雙向GRU的網(wǎng)絡(luò)枉阵,用以捕捉一個(gè)d-gram的前向和反向序列的特征編碼,前向和反向分別定義如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(4)
而t時(shí)刻的雙向隱層狀態(tài)是前向和反向隱層狀態(tài)的拼接:
? ??????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5)
觀察Pytext的model參數(shù)可以發(fā)現(xiàn)Representation的參數(shù)蔚万,可以發(fā)現(xiàn)雙向LSTM的uniLSTM的輸入和輸出維數(shù)分別是100和366岭妖,通過將兩個(gè)uniLSTM拼接起來,即可得到每個(gè)時(shí)序t的隱藏層反璃,維數(shù)為732昵慌,假設(shè)一共有n個(gè)word,那么則有n個(gè)732維的向量來作為word級(jí)的表征淮蜈。這里使用了SelfAttention而不是MaxPooling來作為網(wǎng)絡(luò)的Pooling層(本人感覺Pooling層的定義在nlp領(lǐng)域現(xiàn)在逐漸發(fā)展為一種為數(shù)據(jù)降維或者連接各個(gè)部分得到語句統(tǒng)一表示的一種方法)以捕獲句子級(jí)表征斋攀。
3. `Task Specific Layers`
雙向隱層狀態(tài)被兩個(gè)任務(wù)所共用。一方面梧田,在每個(gè)時(shí)序捕捉到的特征可以直接用來預(yù)測插槽的標(biāo)簽Label淳蔼,另一方面,我們用max-pooling層來得到整個(gè)句子的表示:
? ??????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(6)
這樣我們即可得到整句話的特征信息表示裁眯。
最后鹉梨,即是`Output` layer:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (7)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (8)
其中,和分別是SF和ID任務(wù)的轉(zhuǎn)移矩陣穿稳,和分別是偏置向量存皂。像序列標(biāo)注和文本分類的任務(wù)不需要單獨(dú)一個(gè)`Decoder` layers,或者說,解碼和輸出是同時(shí)進(jìn)行的旦袋,如Pytext調(diào)用該模型時(shí):
4. 策略
即目標(biāo)函數(shù)的定義骤菠。事實(shí)上,目標(biāo)函數(shù)的定義疤孕,作者希望能夠考慮到從一個(gè)標(biāo)簽到另一個(gè)標(biāo)簽的轉(zhuǎn)移分?jǐn)?shù)(商乎,in [Chen et al., 2015]),即從B-City到I-City的概率應(yīng)該遠(yuǎn)比B-City到B-City的概率要大祭阀,所以鹉戚,對(duì)于一個(gè)標(biāo)簽序列,一句話的分?jǐn)?shù)由下面式子給出:
? ?????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? (9)
其中柬讨,是在t時(shí)刻預(yù)測正確的概率崩瓤,即式(7)。特別注意的是踩官,在時(shí)刻却桶,標(biāo)簽為"BOS"。最后要輸出的序列是得分最高的那組序列蔗牡,即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (10)
所以要訓(xùn)練的網(wǎng)絡(luò)中參數(shù)包括:
? ??????????????????????????????? ? ? ? (11)
其中颖系,E和E'分別是單詞token和命名實(shí)體ner的詞嵌入,和分別是正向神經(jīng)網(wǎng)絡(luò)和反向神經(jīng)網(wǎng)絡(luò)的參數(shù)群辩越。
接來下定義網(wǎng)絡(luò)的損失函數(shù)嘁扼,使用S來表示輸入語句,和分別表示插槽slot和意圖intent的ground truth黔攒。意圖的損失函數(shù)是:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(12)
插槽slot的損失函數(shù)是max-margin(hinge loss):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (13)
對(duì)整個(gè)標(biāo)簽序列來說趁啸,損失函數(shù)定義如下:
? ??????????????????????????????????? ? ? ?(14)
最后的訓(xùn)練目標(biāo)是最小化一個(gè)統(tǒng)一的損失函數(shù):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?(15)
是平衡兩個(gè)任務(wù)的一個(gè)權(quán)重,D是整個(gè)數(shù)據(jù)集督惰。通過這個(gè)損失函數(shù)不傅,由GRU學(xué)到的表征可以同時(shí)考慮兩個(gè)任務(wù),并且赏胚,兩個(gè)任務(wù)的聯(lián)系使得表征可以同時(shí)被學(xué)習(xí)并且彼此提升访娶。
三、實(shí)驗(yàn)分析
3.1. 數(shù)據(jù)集
ATIS dataset
ATIS是SLU領(lǐng)域中使用最廣的數(shù)據(jù)集觉阅。
CQUD dataset
CQUD是百度知道搜集到的問題崖疤,是中文社區(qū)最受歡迎的Question Understanding Dataset.
3.2. 與之前的方法進(jìn)行對(duì)比
實(shí)驗(yàn)結(jié)果展示如下,第二列是每個(gè)方法使用的特征典勇,其中劫哼,W,N和S分別代表單詞割笙、命名實(shí)體和語義特征沦偎,在CQUD數(shù)據(jù)集中,W代表每一個(gè)中文字特征表示。
可以看到CRF的結(jié)果比SVM好豪嚎,表明CRF更加適合序列標(biāo)注任務(wù)。另外谈火,RNN打敗了CRF侈询,因?yàn)镽NN可以捕捉長依賴關(guān)系。而R-CRF模型結(jié)合了RNN和CRF模型的優(yōu)點(diǎn)糯耍,可以模擬標(biāo)簽轉(zhuǎn)移(本人以為這是指RNN加了CRF模型是可以避免一些大概率不存在的序列情況)和得到整個(gè)序列的全局的優(yōu)點(diǎn)扔字。對(duì)于填槽任務(wù)來說,sentence simplification是最好的辦法温技,它使用了依存分析來提取句中關(guān)鍵詞革为。RecNN使用dl提取的語義信息,但是他的效果比sentence simplification更差舵鳞,作者認(rèn)為可能的原因是語料的規(guī)模不夠大震檩。總的來說蜓堕,論文在ID和SF領(lǐng)域分別提升了1.59%和1.24%的準(zhǔn)確率抛虏。
3.3. 聯(lián)合模型和分開的模型的對(duì)比
Joint Model根據(jù)不同有相應(yīng)不同的表現(xiàn),如下圖所示: