任务型对话(二)—— DST(对话状态追踪)
1,概述
關(guān)于任務(wù)型對(duì)話的簡(jiǎn)介看任務(wù)型對(duì)話(一)—— NLU(意識(shí)識(shí)別和槽值填充)。
首先我們來(lái)看下對(duì)話狀態(tài)和DST的定義。
對(duì)話狀態(tài):在$t$時(shí)刻,結(jié)合當(dāng)前的對(duì)話歷史和當(dāng)前的用戶輸入來(lái)給出當(dāng)前每個(gè)slot的取值的概率分布情況,作為DPL的輸入,此時(shí)的對(duì)話狀態(tài)表示為$S_t$。
DST(對(duì)話狀態(tài)追蹤):就是根據(jù)所有對(duì)話歷史信息推斷當(dāng)前對(duì)話狀態(tài)$S_t$和用戶目標(biāo)。
由于在ASR和NLU這兩個(gè)環(huán)節(jié)會(huì)存在誤差,因此輸入到DST中的內(nèi)容是N-best列表(對(duì)于ASR,不是輸入一條句子,而是N條句子,每條句子都帶一個(gè)置信度。對(duì)于SLU,不是輸入一條意圖(槽值對(duì)),而是N個(gè)意圖(槽值對(duì)),每個(gè)意圖(槽值對(duì))都帶一個(gè)置信度)。所以DST往往也是輸出各個(gè)狀態(tài)的概率分布,這樣的表示也方便在多輪對(duì)話中對(duì)狀態(tài)進(jìn)行修改。具體的情況如下圖所示:
2,DST的常用方法
DST的常用方法主要有三種:基于規(guī)則的方法,生成式模型,判別式模型,目前來(lái)看判別式模型的表現(xiàn)最好,也是當(dāng)前研究的最多的方向。
1)基于規(guī)則的方法
基于規(guī)則的方法一般是用1-best的結(jié)果作為輸入,而且輸出的狀態(tài)也是確定型,基于規(guī)則的方法需要大量的人工和專家知識(shí),因此在較復(fù)雜的場(chǎng)景適用性不強(qiáng)。當(dāng)然基于規(guī)則的方法也有它的優(yōu)點(diǎn),基于規(guī)則的方法不依賴于對(duì)話數(shù)據(jù),因此在沒(méi)有對(duì)話數(shù)據(jù)的情況下很適合冷啟動(dòng)。基于規(guī)則的方法用N-best的結(jié)果作為輸入也有研究,但總的來(lái)說(shuō)實(shí)現(xiàn)起來(lái)很復(fù)雜。
2)生成式模型
生成式模型主要是利用貝葉斯網(wǎng)絡(luò)推斷來(lái)學(xué)得整個(gè)狀態(tài)的概率分布,其通用表達(dá)式如下:
上面式子中$b(s)$代表上一時(shí)刻狀態(tài)的概率分布,$b'(s')$代表當(dāng)前時(shí)刻的狀態(tài)分布,$u'$代表當(dāng)前時(shí)刻的用戶輸入,$ ilde{u}'$代表當(dāng)前用戶輸入的觀測(cè)輸出,$s'$代表當(dāng)前時(shí)刻的狀態(tài),$s$代表上一時(shí)刻的狀態(tài),$a$代表上一時(shí)刻的動(dòng)作,$eta$是一個(gè)常數(shù)。
可以看出上面的公式還是比較復(fù)雜的,因此實(shí)現(xiàn)起來(lái)也比較復(fù)雜,傳統(tǒng)的生成式方法還要列出所有可能的狀態(tài),以及狀態(tài)概率轉(zhuǎn)移矩陣等。
3)判別式模型
判別模型用一個(gè)最簡(jiǎn)單的公式建模,可以表示成:
$b'(s') = P(s' | f')$
其中$b'(s')$表示當(dāng)前狀態(tài)的概率分布,而$f'$表示對(duì)ASR/NLU的輸入的特征表示,早期的判別模型會(huì)利用SVM,最大熵模型,CRF等來(lái)建模。隨著神經(jīng)網(wǎng)絡(luò)的興起,DNN,RNN等模型也越來(lái)越多的占領(lǐng)了這個(gè)領(lǐng)域。
3,DSTC數(shù)據(jù)集
DSTC全稱為Dialogu State Tracing Challenge(對(duì)話狀態(tài)最終挑戰(zhàn))。在閱讀接下來(lái)的論文的時(shí)候需要對(duì)這些數(shù)據(jù)集有所了解,以DSTC2為例,一個(gè)餐館預(yù)定的數(shù)據(jù)集,數(shù)據(jù)集中提供了N-best ASR的結(jié)果,N-best SLU的結(jié)果。還提供了槽以及對(duì)應(yīng)的值的信息。具體的可以去這里下載。
4,判別式模型在DST上的相關(guān)工作
接下來(lái)我們將按照,DNN,RNN,NBT,遷移學(xué)習(xí)等模型的順序來(lái)介紹一些相關(guān)的論文。
論文一:Deep Neural Network Approach for theDialog State Tracking Challenge
在判別模型中是把DST當(dāng)作一個(gè)分類問(wèn)題,并且對(duì)ASR/NLU提取相關(guān)的特征作為模型的輸入,這篇論文提出了一種特征工程來(lái)提取N-best NLU的一系列特征,然后用一個(gè)前向的DNN來(lái)作為分類器,具體的模型結(jié)構(gòu)如下:
接下來(lái)看下整個(gè)輸入輸出流程:
在$t$論對(duì)話中給定一個(gè)槽$s$,$S_{t, s}$表示在這$t$論對(duì)話中每一輪NLU的N-best列表中關(guān)于槽$s$所對(duì)應(yīng)的值$v$,為了應(yīng)對(duì)未知的值,還額外給定了一個(gè)Unknow來(lái)表示未知的值,我們將這$|S_{t, s}| + 1$個(gè)值作為模型的輸入,那么問(wèn)題來(lái)了我們?cè)撛趺慈ヌ崛∵@些槽值的特征呢?如上圖所示,$f_1, f_2, ......, f_M$就是表示不同的特征,論文中給出了12中特征,為了保證閱讀感(主要翻譯的不到位),就直接截圖了:
但是論文的輸入并不是對(duì)前$t$輪同樣的方式處理,而是有區(qū)分的處理,從$t$往前數(shù)前$T$輪直接用上面12中特征來(lái)表示,但是對(duì)于$t-T$輪之前的全部相加作為一個(gè)整體。那么問(wèn)題來(lái)了,如果$t < T$怎么辦,對(duì)于$t - T < 0$的情況下,$f_i(t', v) = 0$。
對(duì)一個(gè)slot的不同的值,模型的參數(shù)是共享的,而對(duì)于不同的slot之間參數(shù)是不共享的,也就是說(shuō)每個(gè)slot都有一個(gè)屬于它自己的分類器。
最后的輸出結(jié)果如下:
上面的式子其實(shí)類似于softmax,唯一不同的是對(duì)于不屬于$s$的槽統(tǒng)一用一個(gè)參數(shù)$B$來(lái)處理,而對(duì)于屬于槽$s$中的值$v$輸出是$E(t, v)$。
論文二:Word-Based Dialog State Trackingwith Recurrent Neural Networks
上面的論文是用NLU的結(jié)果作為輸入,但從這篇文章開(kāi)始的后幾篇文章都直接用ASR(語(yǔ)音識(shí)別)的結(jié)果作為輸入,那這樣做的結(jié)果有什么好處呢?主要有兩個(gè)優(yōu)點(diǎn):
1)NLU單獨(dú)作為一個(gè)子模塊的時(shí)候,也會(huì)產(chǎn)生誤差,這樣ASR+NLU的誤差傳遞會(huì)導(dǎo)致在進(jìn)入到DST的時(shí)候就已經(jīng)存在較大誤差了,因此合并NLU和DST可以減少這種誤差傳遞的影響。
2)在對(duì)任務(wù)型對(duì)話系統(tǒng)做評(píng)測(cè)時(shí),無(wú)法判斷真?zhèn)€系統(tǒng)產(chǎn)生的錯(cuò)誤時(shí)來(lái)源于哪個(gè)子模塊的,也就無(wú)法有效的定位錯(cuò)誤的來(lái)源,因此減少子模塊可以提高錯(cuò)誤定位的準(zhǔn)確率。
這篇論文時(shí)基于詞級(jí)的對(duì)話狀態(tài)追蹤,因?yàn)樗妮斎霑r(shí)N-best ASR的結(jié)果,使用RNN模型來(lái)序列建模,采用n-grams來(lái)提取ASR的特征。同樣本篇論文也是對(duì)每個(gè)slot單獨(dú)建模,每個(gè)模型都是一個(gè)多分類器,類別的個(gè)數(shù)和該slot下對(duì)應(yīng)的value的個(gè)數(shù)相等。
1)特征表示
首先來(lái)看下是如何利用n-grams來(lái)表征輸入的,具體的見(jiàn)下圖所示:
模型的輸入除了當(dāng)前輪的ASR,還有上一輪的對(duì)話動(dòng)作(對(duì)話動(dòng)作表示為act-type (slot = value)),對(duì)這兩者分別取1-gram,2-gram,3-gram。
從上圖可以看出,主要包含$f,f_s,f_v$這三種特征,$f$是直接對(duì)ASR的結(jié)果和對(duì)話動(dòng)作取n-grams的結(jié)果,$f_s$和$f_v$都是對(duì)$f$中的詞進(jìn)行$tag$(對(duì)slot用<slot>替換,對(duì)value用<value>)替換得到的模板泛化特征,其中$f_s$是對(duì)槽提取的特征,適用于該槽下對(duì)應(yīng)的所有的值,而$f_v$對(duì)每個(gè)value都進(jìn)行提取,屬于每個(gè)值的特有特征,這樣做有助于模型泛化。
然后$f,f_s,f_v$都是有ASR和對(duì)話動(dòng)作兩部分連接而成。ASR是N-best列表,分別提取分別取1-gram,2-gram,3-gram,然后對(duì)于重合的n-gram就按照置信度相加;對(duì)話動(dòng)作也是同樣,不過(guò)概率置1;具體可以參考上圖,其實(shí)本質(zhì)上就是對(duì)ASR和對(duì)話動(dòng)作提取n-gram,進(jìn)行各種組合,目的是通過(guò)這種低階的多維組合,可以在高層重構(gòu)出各種特征組合的可能性,來(lái)模擬甚至超越人工提取的各種特征。那么每個(gè)n-gram怎么用向量表示的呢,我猜應(yīng)該是類似于one-hot,以$f$為例,將整個(gè)訓(xùn)練集提取相應(yīng)的n-grams,然后將$f$組成一個(gè)大的n-gram詞匯表$M$,先初始化一個(gè)長(zhǎng)度為$|M|$的0向量,然后對(duì)于當(dāng)前的輸入提去n-gram,再用相應(yīng)的n-gram的分?jǐn)?shù)去填充那個(gè)0向量(以上一段個(gè)人猜測(cè),主要是論文中沒(méi)有提到,不過(guò)論文中提到了$f$的維度是高維,達(dá)到3500,再加上在計(jì)算的過(guò)程中一系列的向量拼接操作,所以這也符合這種情況)。
2)模型結(jié)構(gòu)
輸入的表征確定好之后就要看看模型的結(jié)構(gòu)了,模型的結(jié)構(gòu)如下圖所示:
上圖中的$m$是一個(gè)記憶向量,$p$是某個(gè)slot下對(duì)應(yīng)的value的概率分布,用一個(gè)$h$向量來(lái)表示特征$f$的低維表示$f, p, m$中的操作符是拼接的意思。
然后為了利用$f_s, f_v$的特征,提出了下面的表達(dá)式:
$g$向量保證了模型的泛化性能,更新$m, p$。
論文三:Neural Belief Tracker: Data-Driven Dialogue State Tracking
這篇論文提出了NBT這個(gè)模型,本論文也是合并了NLU和DST,直接用ASR的結(jié)果作為輸入,并且引入了詞向量來(lái)進(jìn)行表征,整體上理解較上面兩篇論文要簡(jiǎn)單。
話不多說(shuō),先上一張模型結(jié)構(gòu)圖:
上圖中的最上一層是輸入,可以看到總共有三個(gè)輸入,分別是當(dāng)前用戶的輸入$r$,當(dāng)前的槽值對(duì)候選集$c$,上一時(shí)刻系統(tǒng)的對(duì)話動(dòng)作$t$。首先我們來(lái)看下用戶的輸入怎么表征:
1)用戶的輸入表征
本文對(duì)用戶的輸入$r$分別提出了兩種表征方法:NBT-DNN,NBT-CNN。
NBT-DNN的結(jié)構(gòu)圖如下:
具體的表達(dá)式如下:
上面式子中$u_i$表示句子中第$i$個(gè)詞的詞向量,$V_i^n$表示從第$i$個(gè)位置開(kāi)始取的n個(gè)詞的向量拼接的結(jié)果。其實(shí)就是n-gram的方式取詞。
這里取了1-gram,2-gram,3-gram的結(jié)果,最后相加得到用戶輸入的向量表示$r$。
NBT-CNN的模型結(jié)構(gòu)圖:
其表達(dá)式如下:
其實(shí)這里用卷積替代了n-gram,上面式子中的$n$表示卷積核的大小,$n = 1, 2, 3$,然后用最大赤化獲得最終的向量表示:
這樣就得到了最終的用戶輸入的向量表示。
2)語(yǔ)義解碼
從第一幅圖可以看到,用戶的輸入$r$和候選的槽值對(duì)是有相互作用的,這個(gè)相互作用該怎么表示呢?
上面$c_s$是槽$s$的詞向量,$c_v$是對(duì)應(yīng)的值的詞向量,$r$ 和$c$之間是element-wise相乘的。
3)上下文建模
也是第一幅圖中描述的,用戶的輸入$r$和系統(tǒng)對(duì)話動(dòng)作$t$之間的關(guān)系。
作者在這里定義了兩種系統(tǒng)的動(dòng)作:一是系統(tǒng)請(qǐng)求用戶告知某個(gè)槽的值,如“what proce range would you like”,這種請(qǐng)款系統(tǒng)會(huì)提到一個(gè)槽的信息,用$t_q$表示;二是系統(tǒng)向用戶確認(rèn)槽值對(duì)是否正確,如“how aboutTurkish food”,在這種請(qǐng)款下用戶會(huì)提到一對(duì)槽值的信息,其中槽用$t_s$表示,值用$t_v$表示。
在上面如$(c_s . t_q)$是計(jì)算點(diǎn)積得到一個(gè)相似度可以作為門(mén)控機(jī)制用來(lái)控制對(duì)$r$的選擇,這種做法在系統(tǒng)問(wèn)“how aboutTurkish food”,用戶回答“yes”的時(shí)候特別有用,因?yàn)榇藭r(shí)用戶并沒(méi)有傳遞任何槽值的信息進(jìn)來(lái)。這樣就可以利用上一個(gè)系統(tǒng)對(duì)話動(dòng)作的信息。
因?yàn)楹蜻x槽值對(duì)每次只選一個(gè),因此最后做一個(gè)二分類的決策:
其中$phi_dim = sigma(Wx + b)$, $dim$表示輸出的維度。
4)信念狀態(tài)更新機(jī)制
上面只是對(duì)某個(gè)槽值對(duì)做了二分類,那該怎么更新整個(gè)狀態(tài)概率呢?本文定義了一個(gè)基于規(guī)則的信念狀態(tài)更新機(jī)制。
在$t$輪對(duì)話時(shí),用$h^t$表示ASR的N-best集合,$h^n_i$表示第$i$條句子,$p^n_i$表示第$i$個(gè)句子的置信度,$sys^{t-1}$表示系統(tǒng)在上一時(shí)刻的動(dòng)作。則對(duì)于槽$s$更新其所有的值的概率分布:
結(jié)合之前所有的對(duì)話歷史,可以表示為:
之后取概率大于0.5的槽值對(duì)出來(lái)更新當(dāng)前的狀態(tài)值,沒(méi)有的話就依然保留上一時(shí)刻的值。這句話怎么理解呢?也就是下面的式子成立了才執(zhí)行上面的式子,否則就不對(duì)上一時(shí)刻的信念狀態(tài)做修改。
論文:Fully Statistical Neural Belief Tracking
這篇論文是在上一篇論文的基礎(chǔ)上做了改進(jìn)的,在上篇論文中提出了一個(gè)基于規(guī)則的信念狀態(tài)更新機(jī)制,對(duì)于這種基于規(guī)則定義的機(jī)制遷移到新的任務(wù)時(shí)需要大量的修改,因此本文提出了新的信念狀態(tài)更新機(jī)制。
同樣先上模型結(jié)構(gòu)圖:
首先定義一下問(wèn)題:在一個(gè)給定的$s in V_s$,讓$b_s^{t -1 }$ 表示$t-1$時(shí)刻的信念狀態(tài)(一個(gè)長(zhǎng)度為$|V_s| + 2$的向量,這里的2是指還包含兩個(gè)值:None和“dont care”)。在上一篇文章中更新信念狀態(tài)的機(jī)制如下:
作者認(rèn)為這種機(jī)制并沒(méi)有學(xué)到$b_{s, v}^{t-1}$的內(nèi)容,只是簡(jiǎn)答的相加而已,而且還要在$b_{s,v}^t ≥ 0.5$的時(shí)候才執(zhí)行更新。因此這種方法并不好。作者也就提出了兩種新的方法:
1)One-Step Markovian Update
其表達(dá)式如下,直接用softmax生成概率分布:
上面式子中給出的兩個(gè)矩陣的每一行都是對(duì)一個(gè)槽值對(duì)的操作。因此這種方式有一個(gè)問(wèn)題,訓(xùn)練樣本的稀疏性,每個(gè)對(duì)話中可能只包含一個(gè)槽值對(duì),在訓(xùn)練的時(shí)候無(wú)法更新$W_{curr}$和$W_{past}$,因此作者提出了第二種方法。
2)Constrained Markovian Update
在這里作者構(gòu)造了一種不同的矩陣,其表達(dá)式如下:
讓對(duì)角線的元素相同,其余的元素相同,這樣就可以起到訓(xùn)練的時(shí)候能更新到所有的參數(shù)。結(jié)果也表明這種方法的性能更好。
論文:INCREMENTAL LSTM-BASED DIALOG STATE TRACKER
這篇文章提出了一個(gè)簡(jiǎn)單的方法,直接用LSTM來(lái)表示ASR的1-best的輸入,然后對(duì)每個(gè)slot做多分類,整體來(lái)說(shuō)效果也還行。
模型結(jié)構(gòu)圖如下:
其表達(dá)式如下:
上面式子中$a$為ASR的輸出,$r$為對(duì)應(yīng)的置信度。利用一個(gè)網(wǎng)絡(luò)來(lái)進(jìn)行表征,然后倒入到LSTM中,并softmax多分類。
最終在DSTC2上的結(jié)果對(duì)比:
在做了一些小處理之后的結(jié)果還行,不過(guò)這篇文章是15年的,但是實(shí)現(xiàn)起來(lái)簡(jiǎn)單。
參考文獻(xiàn):
MACHINE LEARNING FOR DIALOG STATE TRACKING:A REVIEW
The Dialog State Tracking Challenge Series: A Review
總結(jié)
以上是生活随笔為你收集整理的任务型对话(二)—— DST(对话状态追踪)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PSFTP使用简单教程
- 下一篇: 海军工程学院文职类人员具体做些什么?