引言
主要講解三篇論文,主要思想是把自然語言理解、對(duì)話管理和自然語言生成三部分整合到一起。
先導(dǎo)知識(shí)
數(shù)據(jù)集
- CamRest676
- MultiWOZ
都是用的自回歸語言模型
- causal
- GPT-2、Transformer Decoder
一個(gè)概念:delexicalization
- 通過相應(yīng)的占位符替換特定的槽值
- 占位符作為特定的token,不關(guān)心具體的取值
- 學(xué)習(xí)取值無關(guān)的參數(shù)
首先來看第一篇論文
SimpleTOD
來自論文A Simple Language Model for Task-Oriented Dialogue。
主要做的工作是:
- 采用causal 語言模型(GPT-2)
- 把整個(gè)TOD轉(zhuǎn)換成序列預(yù)測問題
- 損失函數(shù)為最大似然
- 把整個(gè)TOD分為幾個(gè)子任務(wù),建模子任務(wù)之間的依賴
TOD指任務(wù)導(dǎo)向型的對(duì)話系統(tǒng)。
模型的輸入是所有的對(duì)話歷史:
C
t
=
[
U
0
,
S
0
,
?
?
,
U
t
]
C_t=[U_0,S_0,\cdots, U_t]
Ct?=[U0?,S0?,?,Ut?]
其中
U
0
U_0
U0?是用戶輸入的第一句話;
S
0
S_0
S0?是系統(tǒng)回復(fù)的第一句話;
然后把這個(gè)上下文輸入給SimpleTOD模型:
B
t
=
SimpleTOD
(
C
t
)
B_t =\text{SimpleTOD}(C_t)
Bt?=SimpleTOD(Ct?)
會(huì)輸出一個(gè)belief state,包含domain,slot_name和value。相當(dāng)于做了NLU+DST的工作。
接下來要做對(duì)話動(dòng)作生成,此時(shí)把
C
t
,
B
t
C_t,B_t
Ct?,Bt?和查詢結(jié)果
D
t
D_t
Dt?拼接起來,再輸入給SimpleTOD模型:
A
t
=
SimpleTOD
(
[
C
t
,
B
t
,
D
t
]
)
A_t =\text{SimpleTOD}([C_t, B_t, D_t])
At?=SimpleTOD([Ct?,Bt?,Dt?])
生成動(dòng)作
A
t
A_t
At?。
最后生成響應(yīng)時(shí)把上面所有結(jié)果拼接,輸入給SimpleDOT模型:
S
t
=
SimpleTOD
(
[
C
t
,
B
t
,
D
t
,
A
t
]
)
S_t =\text{SimpleTOD}([C_t, B_t, D_t,A_t])
St?=SimpleTOD([Ct?,Bt?,Dt?,At?])
來生成回復(fù)。這里會(huì)涉及到delexicalization,比如上圖中的[value count]
,這里表示這個(gè)值是從數(shù)據(jù)庫中查詢的結(jié)果,不關(guān)心具體的值。
訓(xùn)練過程如上圖所示,a)訓(xùn)練就是把用戶的輸入、系統(tǒng)的回復(fù)、belif state、DB查詢結(jié)果、生成的動(dòng)作等基于語言模型的要求作為一個(gè)token序列喂給SimpleTOD。
其中
x
=
(
x
1
,
?
?
,
x
n
)
x=(x_1,\cdots,x_n)
x=(x1?,?,xn?);
x
t
=
[
C
t
;
B
t
;
D
t
;
A
t
;
S
t
]
x^t=[C_t;B_t;D_t;A_t;S_t]
xt=[Ct?;Bt?;Dt?;At?;St?]。
b)推理也是先把 C t C_t Ct?拼接起來,送給模型,然后會(huì)得到一個(gè)belief state,然后再把預(yù)測的 B t B_t Bt?(和查詢到的 D t D_t Dt?)也拼起來繼續(xù)喂給模型得到 A t A_t At?,基于這些來生成回復(fù)。
SOLOIST
來自論文SOLOIST: Building Task Bots at Scale with Transfer Learning and Machine Teaching。
采用預(yù)訓(xùn)練-微調(diào)范式
- 自回歸語言模型
- 使用更大的對(duì)話語料庫預(yù)訓(xùn)練
- 使用一些任務(wù)相關(guān)的對(duì)話微調(diào)
使用的模型是Unified Language Model。
我們來看下它的輸入和輸出。
輸入:
- 歷史對(duì)話
- belief state
- DB state(DB查詢結(jié)果)
- delexicalized response
可以用 x = ( s , b , c , r ) x=(s,b,c,r) x=(s,b,c,r)來表示。
預(yù)訓(xùn)練時(shí)使用task-grouded的預(yù)訓(xùn)練,包含
- 多任務(wù)目標(biāo)
- 自監(jiān)督
在微調(diào)時(shí)用了machine teaching的方法。
模型的訓(xùn)練目標(biāo),也是分為說那個(gè)任務(wù):Belief State Prediction(DST+NLU)、Grounded Response Generation(NLG)和Contrastive Objective(自監(jiān)督)。
它輸入中的歷史對(duì)話和SimpleTOD有一些區(qū)別,這里只有用戶說的話,沒有系統(tǒng)的回復(fù)。
通過以下方式建模:
其中主要有兩個(gè)任務(wù):
最后使用對(duì)比損失,將輸入中的詞以50%的概率隨機(jī)替換:
上面說的machine teacher實(shí)際是指通過人工更正模型輸出的結(jié)果:
UBAR
來自論文UBAR: Towards Fully End-to-End Task-Oriented Dialog System with GPT-2
作者嘗試把完整的對(duì)話歷史喂給模型,還是基于GPT-2模型,基于用戶的輸入,需要預(yù)測blief state、system action和system response。
架構(gòu)類似SimpleTOD和SOLOIST的結(jié)合體,任務(wù)類似SOLOIST的。
從上圖可以看到,其中最上面表示模型的輸入,是完整的對(duì)話歷史。U代表用戶的輸入;B是需要預(yù)測的Blief State,A是Action,R是Response,D是數(shù)據(jù)庫查詢。文章來源:http://www.zghlxwxcb.cn/news/detail-579261.html
上面是一個(gè)輸入的范例。
在belief state中對(duì)domain和slot value進(jìn)行解耦;同時(shí)在system act中也對(duì)domain和action進(jìn)行解耦。文章來源地址http://www.zghlxwxcb.cn/news/detail-579261.html
參考
- 貪心學(xué)院課程
- A Simple Language Model for Task-Oriented Dialogue
- SOLOIST: Building Task Bots at Scale with Transfer Learning and Machine Teaching
- UBAR: Towards Fully End-to-End Task-Oriented Dialog System with GPT-2
到了這里,關(guān)于深入淺出對(duì)話系統(tǒng)——基于預(yù)訓(xùn)練語言模型的對(duì)話管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!