domain-slot-value文章学习

主要针对mutlimoz2.0数据集进行学习.
这五个模型还需要仔细对比,看实验部分,ablation study。
流行方法:建模context成sequential形式,单个domain-slot同时作为输入----->生成或者检索。
生成式:trade、comer、som-dst
检索式:submt、
生成检索结合:ds-dst
效果:

数据集2.1对state纠错。不喜欢NADST和ML-BST的模型,一个是深度建模,一个使用fertirzer对于每个value确定长度。但是相比trade和comer还是有显著提升的。
前三个使用decoder的都没有使用candidate list,都是通过context和vocab共同作用。
主要都是domain-slot结合,外加domain判断;也有domain单独生成的。
对于 B t − 1 B_{t-1} Bt1的使用,comer进行与ut同等对待的编码参与attn。som-dst是显式提取出生成的时候并不使用因为独立判断出update,检索式不用。
判断是否update很多时候并没有用到。只有som-dst和DSTReader用到。
观察其他论文的实验结果是怎么分类的。

trade:

slot-gate是指,是否需要b的generator, c j 0 c_{j0} cj0是context和domain-slot共同结合的结果。

G j = Softmax ⁡ ( W g ⋅ ( c j 0 ) ⊤ ) ∈ R 3 G_{j}=\operatorname{Softmax}\left(W_{g} \cdot\left(c_{j 0}\right)^{\top}\right) \in \mathbb{R}^{3} Gj=Softmax(Wg(cj0))R3
P j k final  = p j k gen  × P j k vocab  + ( 1 − p j k gen  ) × P j k history  ∈ R ∣ V ∣ \begin{aligned} P_{j k}^{\text {final }} &=p_{j k}^{\text {gen }} \times P_{j k}^{\text {vocab }} \\ &+\left(1-p_{j k}^{\text {gen }}\right) \times P_{j k}^{\text {history }} \in \mathbb{R}^{|V|} \end{aligned} Pjkfinal =pjkgen ×Pjkvocab +(1pjkgen )×Pjkhistory RV
P j k vocab  = Softmax ⁡ ( E ⋅ ( h j k d e c ) ⊤ ) ∈ R ∣ V ∣ P j k history  = Softmax ⁡ ( H t ⋅ ( h j k d e c ) ⊤ ) ∈ R ∣ X t ∣ \begin{array}{c}{P_{j k}^{\text {vocab }}=\operatorname{Softmax}\left(E \cdot\left(h_{j k}^{\mathrm{dec}}\right)^{\top}\right) \in \mathbb{R}^{|V|}} \\ {P_{j k}^{\text {history }}=\operatorname{Softmax}\left(H_{t} \cdot\left(h_{j k}^{\mathrm{dec}}\right)^{\top}\right) \in \mathbb{R}^{\left|X_{t}\right|}}\end{array} Pjkvocab =Softmax(E(hjkdec))RVPjkhistory =Softmax(Ht(hjkdec))RXt

p j k g e n = Sigmoid ⁡ ( W 1 ⋅ [ h j k d e c ; w j k ; c j k ] ) ∈ R 1 c j k = P j k h i s t o r y ⋅ H t ∈ R d h d d \begin{aligned} p_{j k}^{\mathrm{gen}}=& \operatorname{Sigmoid}\left(W_{1} \cdot\left[h_{j k}^{\mathrm{dec}} ; w_{j k} ; c_{j k}\right]\right) \in \mathbb{R}^{1} \\ & c_{j k}=P_{j k}^{\mathrm{history}} \cdot H_{t} \in \mathbb{R}^{d_{h d d}} \end{aligned} pjkgen=Sigmoid(W1[hjkdec;wjk;cjk])R1cjk=PjkhistoryHtRdhdd
抽象点来说,都是先生成hidden state然后分别作用到context和vocab,context是为了实现copy机制,而vocab本来就是decode的正常模式。至于两者平衡的参数,是简单的线性模型(输入是lstm单元输入集上一个生成的词、lstm的h,带有生成h影响的context)决定的,
分别作用到context和vocab为了判断value是语句中已有还是要从数据库中提取,

comer
“Scalable and Accurate Dialogue State Tracking via Hierarchical Sequence Generation”
逐步生成.building DST modules capable of generating structured sequences,
这一篇只依靠context,encoder-decoder结构。具体生成是:
这个也是在decoder加东西,加残差和memory。
分别生成domain、slot、value的三个decoder共享参数。所以模型应该是conditional sequence generation问题。
decoder的输入输出 s , h s = CMRD ⁡ ( e x , c , H B , H a , H u ) \mathbf{s}, \mathbf{h}_{s}=\operatorname{CMRD}\left(\mathbf{e}_{x}, \mathbf{c}, H_{B}, H_{a}, H_{u}\right) s,hs=CMRD(ex,c,HB,Ha,Hu)

  1. LSTM先输出一个 h 0 h_0 h0
    h 0 = LSTM ⁡ ( e x t , q t − 1 ) \mathbf{h}_{0}=\operatorname{LSTM}\left(\mathbf{e}_{x_{t}}, \mathbf{q}_{t-1}\right) h0=LSTM(ext,qt1)
  2. Attn的几个前后 h i h_i hi最后concat成一个 r r r
    h 1 = h 0 + c h 2 = h 1 +  Attn belief  ( h 1 , H e ) h 3 = h 2 + Att ⁡ n s y s ( h 2 , H a ) h 4 = h 3 + At ⁡ n u s r ( h 3 , H u ) r = h 1 ⊕ h 2 ⊕ h 3 ⊕ h 4 ∈ R 4 d m \begin{array}{l}{\mathbf{h}_{1}=\mathbf{h}_{0}+\mathbf{c}} \\ {\mathbf{h}_{2}=\mathbf{h}_{1}+\text { Attn belief }\left(\mathbf{h}_{1}, H_{e}\right)} \\ {\mathbf{h}_{3}=\mathbf{h}_{2}+\operatorname{Att} n_{\mathrm{sys}}\left(\mathbf{h}_{2}, H_{a}\right)} \\ {\mathbf{h}_{4}=\mathbf{h}_{3}+\operatorname{At} n_{\mathrm{usr}}\left(\mathbf{h}_{3}, H_{u}\right)} \\ {\mathbf{r}=\mathbf{h}_{1} \oplus \mathbf{h}_{2} \oplus \mathbf{h}_{3} \oplus \mathbf{h}_{4} \in R^{4 d_{m}}}\end{array} h1=h0+ch2=h1+ Attn belief (h1,He)h3=h2+Attnsys(h2,Ha)h4=h3+Atnusr(h3,Hu)r=h1h2h3h4R4dm
  3. Attn模块
    a = W 1 T h + b 1 ∈ R d m c = softmax ⁡ ( H T a ) ∈ R l h = H c ∈ R d m h a = W 2 T h + b 2 ∈ R d m \begin{aligned} \mathbf{a} &=W_{1}^{T} \mathbf{h}+\mathbf{b}_{1} & & \in R^{d_{m}} \\ \mathbf{c} &=\operatorname{softmax}\left(H^{T} a\right) & & \in R^{l} \\ \mathbf{h} &=H \mathbf{c} & & \in R^{d_{m}} \\ \mathbf{h}_{a} &=W_{2}^{T} \mathbf{h}+\mathbf{b}_{2} & & \in R^{d_{m}} \end{aligned} achha=W1Th+b1=softmax(HTa)=Hc=W2Th+b2RdmRlRdmRdm
    4) r r r经过复杂的MLP模块
    r 1 = σ ( W 1 T r 0 + b 1 ) r 2 = σ ( W 2 T r 1 + b 2 ) r 3 = σ ( W 3 T r 2 + b 3 ) h k = σ ( W 4 T r 3 + b 4 ) \begin{aligned} \mathbf{r}_{1} &=\sigma\left(W_{1}^{T} \mathbf{r}_{0}+\mathbf{b}_{1}\right) \\ \mathbf{r}_{2} &=\sigma\left(W_{2}^{T} \mathbf{r}_{1}+\mathbf{b}_{2}\right) \\ \mathbf{r}_{3} &=\sigma\left(W_{3}^{T} \mathbf{r}_{2}+\mathbf{b}_{3}\right) \\ \mathbf{h}_{k} &=\sigma\left(W_{4}^{T} \mathbf{r}_{3}+\mathbf{b}_{4}\right) \end{aligned} r1r2r3hk=σ(W1Tr0+b1)=σ(W2Tr1+b2)=σ(W3Tr2+b3)=σ(W4Tr3+b4)
    5)经过dropout、softmax输出结果
    h s = dropout ⁡ ( h k ) ∈ R d m h o = W k T h s + b s ∈ R d e p s = softmax ⁡ ( E T h o ) ∈ R d v s = argmax ⁡ ( p s ) ∈ R \begin{aligned} \mathbf{h}_{s} &=\operatorname{dropout}\left(\mathbf{h}_{k}\right) & & \in R^{d_{m}} \\ \mathbf{h}_{o} &=W_{k}^{T} \mathbf{h}_{s}+\mathbf{b}_{s} & & \in R^{d_{e}} \\ \mathbf{p}_{s} &=\operatorname{softmax}\left(E^{T} \mathbf{h}_{o}\right) & & \in R^{d_{v}} \\ s &=\operatorname{argmax}\left(\mathbf{p}_{s}\right) & & \in R \end{aligned} hshopss=dropout(hk)=WkThs+bs=softmax(ETho)=argmax(ps)RdmRdeRdvR

    我认为多层MLP有很大影响。Attn模块的基本算法非常简单,多层总是可以得到很好的效果。对于文本的挖掘体现在Att模块中。
    采用监督学习应该效果是很好的。可能存在过拟合情况。

som-dst:
为了克服从ontology中找的问题,previous either directly generates or extracts the value from the dialogue context for every slot, allowing open vocabulary-based DST。即对比源从candidate set变成到vocabulary-based。
依然存在的问题:
while scalable and robust to handling unseen slot values,
do not efficiently perform DST since they predict the dialogue state from scratch at every dialogue turn.
是维护一个domain-slot表格,每次判断是否需要更新,更新产生结果值。
更新算法是:
predictor采用预训练bert, 每个slot是一个分类器,判断师傅需要更新, h [ C L S ] h^{[CLS]} h[CLS]是domain label判断当前轮是处于哪个domain;
generator采用trade类似模式,copy机制,通过context和vocab共同决定。 g t j , k = GRU ⁡ ( g t j , k − 1 , e t j , k ) g_{t}^{j, k}=\operatorname{GRU}\left(g_{t}^{j, k-1}, e_{t}^{j, k}\right) gtj,k=GRU(gtj,k1,etj,k),起始输入是 g t j , 0 = h t X = tanh ⁡ ( W pool h t [ C L S ] )  and  e t j , 0 = h t [ S L 0 T ] j g_{t}^{j, 0}=h_{t}^{\mathrm{X}} = \tanh \left(W_{\text {pool}} h_{t}^{[\mathrm{CLS}]}\right) \text { and } e_{t}^{j, 0}=h_{t}^{[S L 0 T]^{j}} gtj,0=htX=tanh(Wpoolht[CLS]) and etj,0=ht[SL0T]j(生成的时候没有用到上一轮的value信息,因为update)

结果分析:
(带着疑问,结果是会发生变化)
为什么是四种状态。 DELETE DONTCARE UPDATE CARRYOVER 前三个替代传统的update,因为delete和dontcare一般是隐式变化,更需要建模?
ablation表明,**slot状态预测很重要。**在decode过程中,每次输入是真值影响不算大,但是有提升。说明GRU本身预测能力还很差。

submt:

匹配模式:
使用bert建模context,匹配所有的candidate。
另外,以前的文章domain和slot分开,现在统一。

ds-dst:
直接把slot进行分类,划分成picklist-based 和 span-based,对于两种slot分别做处理。
每个slot都要做一次与context联合的建模。
slot-gate判断是否更新,对bert第一个输出采用mlp操作。(t表示turn,j表示domain-slot顺序)
P t j g a t e = softmax ⁡ ( W g a t e ⋅ ( r t j C L S ) ⊤ + b g a t e ) P_{t j}^{g a t e}=\operatorname{softmax}\left(W_{g a t e} \cdot\left(r_{t j}^{\mathrm{CLS}}\right)^{\top}+b_{g a t e}\right) Ptjgate=softmax(Wgate(rtjCLS)+bgate)
对于span-based直接使用context进行mlp操作产生起止坐标
[ α t j s t a r t , α t j e n d ] = W s p a n ⋅ ( [ r t j 1 , … , r t j K ] ) ⊤ + b s p a n \left[\alpha_{t j}^{s t a r t}, \alpha_{t j}^{e n d}\right]=W_{s p a n} \cdot\left(\left[r_{t j}^{1}, \ldots, r_{t j}^{K}\right]\right)^{\top}+b_{s p a n} [αtjstart,αtjend]=Wspan([rtj1,,rtjK])+bspan
对于picklist-based:
bert输入candidate list的表示, Y j = BERT ⁡ ( [ C L S ] ⊕ V j ⊕ [ S E P ] ) Y_{j}=\operatorname{BERT}\left([\mathrm{CLS}] \oplus V_{j} \oplus[\mathrm{SEP}]\right) Yj=BERT([CLS]Vj[SEP]),再进行余弦相似度比较 cos ⁡ ( r t j C L S , y l C L S ) \cos \left(r_{t j}^{\mathrm{CLS}}, y_{l}^{\mathrm{CLS}}\right) cos(rtjCLS,ylCLS)

NON-AUTOREGRESSIVE DIALOG STATE TRACKING
值得学习的是NON-AUTOREGRESSIVE这个概念,让所有的value一起产生,不过确实不太现实。因为分数不同领域,bert的话还是产生影响。结构性的数据还是不要线性产生为好。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值