天天看點

[NLG] Zero-Shot Dialog Generation with Cross-Domain Latent Actions

摘要:

    簡單來說,就是實作了對話生成的zero shot(零次學習)。首先在一些source domain當中學習一些domain的基本描述,希望學到的這些基本描述能夠用于target domain的對話生成,其中source domain的領域和target domain完全不一樣。但是屬性是共同的。

主要工作:

   1.提出來一種新的抽取domain 屬性和描述的方法:seed responses as domain descriptions,就是說從source domain的對話中選一些回答的句子,這些句子要盡可能的不同且帶有該domain的特色。且這些句子需要被标注,包括dialog act(對話動作)和slot(槽值)。是以這些句子+句子對應标注稱為:SRs,也就是種子回答,作者希望在這些回答當中,蘊含中包含target domain回答的資訊。

  2.提出了一個action matching 機制,目标在于學到兩個東西:a.學到一個在source domain和target domain都适用的cross-domain的分布F。b.學到如何将target domain的SRs融合到已經學到的F中,生成新的适合于target domain的對話。

  3.做了一個适用于zero-shot dialogue的資料集,其中包含各個領域的SRs。

模型:

SRs機制其實已經比較清楚了,主要介紹一下他的核心機制:Action Matching Encoder-Decoder

上面已經介紹了,AM需要實作兩個功能,下面是這兩個功能的具體實作圖,看圖說話。

[NLG] Zero-Shot Dialog Generation with Cross-Domain Latent Actions

右圖主要是對句子級别的抽取。在這裡作者主要做了如下幾件事情。x表示目前對話句子,a表示抽出來的标注

1.首先,在每個句子和每個句子的标注之前顯示加了domain,說這樣效果會變好?(玄學)

2.然後把句子和句子标注全部encoder

3.用一個RNN+attn來生成,此外還融合了copynet機制,看圖中有一個copy的機率。這個copy機制是怎麼樣使用的呢,他主要用來從前面的context中看哪些詞可以copy,就是lstm+attn從目前詞表中有一個機率,然後對之前的對話context有一個機率,将這兩個機率加起來看最後哪一個詞的機率最大。

左圖主要是對前面對話曆史的資訊抽取,其主要操作步驟是一樣的。那作者是如何實作兩個功能的呢,主要在于他的loss函數。

[NLG] Zero-Shot Dialog Generation with Cross-Domain Latent Actions
[NLG] Zero-Shot Dialog Generation with Cross-Domain Latent Actions

前一個是句子級别抽取資訊時候的loss,後一個是對話曆史的loss。每個loss都由兩項組成。

對于第一個loss而言,第一部分,實作的是一個在給出标注情況下,求目前語句的X的機率,第二部分,是指生成一句話之後,這句話的标注和原來對話的标注之間的差别。這實際上就是實作的第二個功能(使得目前生成的話語融合target domain的标注)。

對于第二個loss而言,主要是在對話曆史的影響下求分布F,使得F變得各個領域通用。

一句話總結:

  本文主要介紹了一個SRs抽取domain資訊的機制,以及AMencoder-decoder機制來生成通用屬性以及融合domain屬性到生成當中,實作了zero-shot dialogu的極好效果,且是第一篇end-to-end的zero-shot dialogue 論文,可以說開了zero-shot  dialog generat 的先河。

論文網址:https://arxiv.org/abs/1805.04803?context=cs

繼續閱讀