AAAI2020 A pre-training based personalized dialogue generation model with persona-sparse data

A pre-training based personalized dialogue generation model with persona-sparse data

基於預訓練和個性化稀疏數據的個性化對話生成模型

論文背景

AAAI2020 解讀
部分內容引用 https://blog.csdn.net/LZJ209/article/details/104303844
原文鏈接:https://arxiv.org/abs/1911.04700

1.爲了讓對話模型生成出更加human-like的回覆,給模型以特定的性格背景等作爲參考信息是必要的。
2.大型預訓練模型比如GPT2和BERT由於使用了大量的語句做訓練,它們的語言能力非常的強大,生成出的語句非常的流暢。雖然大型預訓練模型並沒有針對某一個領域進行訓練,但是人們通過在預訓練的基礎上再在目標數據集上進行二次訓練,得到的結果大多好過只用目標數據集訓練的結果。
3.數據集PERSONA-CHAT是一個爲了應對該任務而提出的一個數據集,數據集採用人工收集,在構造數據集時人們被要求按照給定的性格信息來進行模擬對話,由此造成參與者在短短的幾句對話中包含了相當多的個人信息,論文稱這種現象爲"persona-dense"。 [複製]

論文想要解決的問題

1.真實的對話中,只有很少的對話會涉及到個人信息,我們稱現實生活中的對話是“persona-sparse”的,上述persona-dense的數據集並不符合真實情況。
2.如果直接用大型預訓練模型在PERSONA-CHAT類似的數據集上進行訓練,那麼模型很有可能過分的注重個人信息,從而造成句句都離不開個人信息,這在上述數據集上可能會得到很好的結果,但是卻並不真實。
3.由於真實的對話中,涉及到個人信息的語句非常的少,所以直接在persona-sparse的數據集上訓練很有可能模型更注重那些不包含個人信息的語句,個人信息在訓練的過程中成了噪音。
(總結:用persona-dense數據集不行,用普通數據集也不行)

論文貢獻

提出了一個可以在persona-sparse的數據集上訓練的預訓練模型。
提出了一種通過模型自動計算persona比重的方法。

模型

變量解釋

目標:根據 dialogue context C和responder的target persona T,生成流暢的response Y
Y=argmaxYP(YC,T)Y = \mathop{\arg\max}_{Y'}P(Y'|C,T)
其中,persona T 視爲一些屬性的集合(例如 性別、地點、個人興趣)T={t1,t2,...,tN}T=\{t_1, t_2, ..., t_N \},且每個屬性可以用鍵值對ti=<ki,vi>t_i=<k_i,v_i>表示。
dialogue context C={(U1,T1),...,(UM,TM)}C=\{ (U_1,T_1),...,(U_M,T_M)\}包含了對話中的多輪(turns)【也就是話語UiU_i】和 persona TiT_i

框架

在這裏插入圖片描述
個性化對話生成模型框架:編碼器和解碼器共享同一組參數。dialogue context和target persona使用編碼器獨立編碼,並且它們的編碼進入每個解碼器塊中的注意路由模塊。訓練一個動態權重預測器來衡量每條路線的貢獻。

Encoding

Encoding with Personas
在這裏插入圖片描述

Attention

Attention Routing:
target persona ETE_T , the dialogue context ECE_C , previously decoded tokens EprevE_{prev}
EprevE_{prev}作爲query。ETE_TECE_CEprevE_{prev}採用3個multi-head attention 分別作爲key與value。
OT=MultiHead(Eprev,ET,ET)O_T = MultiHead(E_{prev},E_T,E_T)
OC=MultiHead(Eprev,EC,EC)O_C = MultiHead(E_{prev},E_C,E_C)
Oprev=MultiHead(Eprev,Eprev,Eprev)O_{prev} = MultiHead(E_{prev},E_{prev},E_{prev})
前兩個公式採用unmasked 雙向 self-attention 來獲取更多有效的交互信息。最後一個公式採用masked self-attention來避免看到“golden truth” token.

然後進行融合,persona 權重α[0,1]\alpha \in [0,1] :
Omerge=αOT+(1α)OC+OC+OprevO_{merge} = \alpha O_T +(1-\alpha)O_C +O_C+ O_{prev}
α\alpha越大,包含的個性化信息越多。

自動計算persona比重

α\alpha怎麼得到:
設計一個二分類器Pθ(rEC)P_{\theta}(r|E_C)。輸入dialogue context ECE_C ,判斷這個training dialogue是否爲persona related ,相關則r=1,不相關r=0。
那麼這個二分類器的confidence就可以當作權重:
α=Pθ(r=1EC)\alpha = P_{\theta}(r=1|E_C)
我們可以通過一個heuristic script產生標籤,該腳本通過一些規則(如單詞匹配)來判斷是否persona related。
二分類器的目標函數:
LW(θ)=irilogPθ(riEC)+(1ri)log[1Pθ(riEC)]L_W(\theta) = -\sum_{i}r_i log P_{\theta}(r_i|E_C) + (1-r_i) log [1-P_{\theta}(r_i|E_C)]

language model

Pre-training and Fine-tuning
原始的LM,和gpt2相同
LLM(ϕ)=ilogPϕ(uiuik,...,ui1)L_{LM}(\phi) = -\sum_{i} log P_{\phi} (u_i |u_{i-k}, ..., u_{i-1})
考慮到dialogue context encoding ECE_C和target persona encoding ETE_T的:
LD(ϕ)=ilogPϕ(uiuik,...,ui1,EC,ET)L_{D}(\phi) = -\sum_{i} log P_{\phi} (u_i |u_{i-k}, ..., u_{i-1}, E_C, E_T)

最終的目標函數

L(ϕ,θ)=LD(ϕ)+λ1LLM(ϕ)+λ2LW(θ)L(\phi,\theta) = L_D(\phi) + \lambda_1 L_{LM}(\phi) + \lambda_2 L_W(\theta)

END
(公式還是挺難敲的。。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章