1. 程式人生 > >論文筆記:IRGAN:A Minimax Game for Unifying Generative and Discriminative Information

論文筆記:IRGAN:A Minimax Game for Unifying Generative and Discriminative Information

2017 SIGIR

簡單介紹

IRGAN將GAN用在資訊檢索(Information Retrieval)領域,通過GAN的思想將生成檢索模型和判別檢索模型統一起來,對於生成器採用了基於策略梯度的強化學習來訓練,在三種典型的IR任務上(四個資料集)得到了更顯著的效果。

生成式和判別式的檢索模型

生成式檢索模型(query -> document)認為query和document之間存在潛在的生成過程,其缺點在於很難利用其它相關的資訊,比如連結數,點選數等document和document之間的相關資料。 判別式檢索模型(query+document -> relevance)同時考慮query和document作為特徵,預測它們的相關性,其缺點在於缺乏獲取有用特徵的方法。

GAN

GAN裡面的生成器和判別器通過相互博弈來完成工作,舉例來說,我們要生成動漫人物頭像,如下兩個圖所示。

  1. 訓練判別器:初代的生成器Generator0會生成很模糊的動漫頭像,這個時候我們把Generator0產生的頭像作為0標籤,真實的頭像作為1標籤丟入到初代的判別器Discriminator0中訓練,得到新一代判別器Discriminator1,這個判別器能夠辨認真實頭像和Generator0產生的假頭像,如果輸入是一個真實頭像,Discriminator1會輸出1,如果輸入是一個Generator0生成的頭像,Discriminator1會輸出0。
  2. 訓練生成器:然後,我們訓練Generator0,目標是使得Discriminator1判斷生成器生成的頭像為真實頭像(輸出標籤為1),以這個為目標訓練得到的Generator1能夠成功騙過Discriminator1。對於Discriminator1,如果輸入是一個Generator1生成的頭像,它會輸出1。
  3. 迭代博弈:上面兩個步驟就完成了一次博弈,接著會不斷迭代這個博弈,Discriminator1會進化成Discriminator2能夠成功分辨Generator1產生的是假頭像(輸出0標籤),然後Generator1為了騙過Discriminator2又會進化成Generator2。不斷迭代這個過程,最後就能生成一些逼真的動漫人物頭像。

IRGAN

  1. 可以利用GAN的思想,把兩種檢索模型結合起來,克服它們的缺點。如下圖所示。
  2. 以生成式檢索模型作為生成器,輸入query,我們選取相關的document,構成資料對,作為生成資料。
  3. 以判別式檢索模型作為判別器,用一個打分score來表示判別器的判別能力,判別器越能區分生成資料和真實資料(即輸入生成資料時輸出0,輸入真實資料時輸出1),則判別能力越強。
  4. 根據生成器生成的固定資料和真實資料,訓練判別器。然後固定判別器,訓練生成器使得判別器的判別能力最小化(即輸入生成資料時也輸出1)。這樣完成一次博弈,迭代多次博弈不斷訓練。

從極大似然法(MLE)到GAN再到IRGAN

  1. 傳統的生成問題:給定一個數據集D,我們構建一個模型,模型產生的資料分佈q(x)可以擬合真實的資料分佈p(x),我們希望真實的資料在我們學到的模型上有一個很高的概率密度。
  2. 最小化KL散度:如下式所示,其實這個過程就是在最小化交叉熵。因為真實資料分佈不變,資訊熵不變,可以看作是在最小化相對熵(KL散度)。這幾個熵我在另一篇博文資訊熵,交叉熵和相對熵中有介紹。

\[\max_{q} \frac {1}{|D|} \sum_{x \in D} log \ q(x) \approx \max_{q} E_{x \sim q(x)} [log \ q(x)] = \min_q \int_{x} p(x) \ log \frac {1}{q(x)}\]

  1. 不對稱問題:這樣一個廣為使用方法有個不對稱的問題,對於KL散度,當p(x)>0而q(x)趨近於0時會產生一個高損失,這沒有問題,但是當q(x)>0而p(x)趨近於0時候,損失卻趨近於0,這與我們的目的不相符。

\[\underbrace{\int_{x} p(x) \ log \frac {1}{q(x)}}_{\text{交叉熵}} - \underbrace{\int_{x} p(x) \ log \frac {1}{p(x)}}_{\text{資訊熵}} = \underbrace{\int_{x} p(x) \ log \frac {p(x)}{q(x)})}_{相對熵KL(p||q)}\]

  1. 不一致問題:還有一個缺點就是,我們實際做的事情和我們希望的事情並不一致,我們實際做的是讓真實的資料在我們學習的模型上有一個很高的概率密度,也就是\(\max_q E_{x \sim p(x)}[log \ q(x)]\)(實際的訓練評估中我們通過\(\max_{q} \frac {1}{|D|} \sum_{x \in D} log \ q(x)\) 來approximate這個式子)。但是我們希望做的事情是讓生成的資料接近真實資料,也就是生成的資料在真實的分佈上有一個很高的概率密度,也就是\(\max_q E_{x \sim q(x)}[log \ p(x)]\),但是這件事情我們是做不到的,因為我們並不知道真實資料的分佈,我們沒法計算p(x),如果知道真實資料的分佈我們就不用做這件事了。當然,q(x)等於p(x)時這兩個式子就是一樣的。
  2. GAN:上面提到的一個難點是我們沒有辦法計算p(x),不知道真實資料的分佈長什麼樣,但是在GAN裡面可以構建一個判別器來判別一個數據是真實的還是生成的。同時GAN最小化的不是KL散度,而是JS散度,這就解決了不對稱的問題。
  3. 從MLE到GAN:MLE就是模型已定,引數未知,找出一組引數使得模型產生出觀測資料的概率最大。用GAN裡面的Generator(可以不侷限於特定模型比如高斯分佈)可以得到一個general的模型。利用GAN裡面的Discriminator可以調整模型使得觀測資料的概率最大。
  4. 從GAN到IRGAN:IRGAN就是把GAN的技術用到資訊檢索中,IRGAN和GAN的不同點在於IRGAN生成器是輸入query然後從已有的document中選取,而GAN是用隨機噪音進行生成的。因為IRGAN生成的資料是離散的(需要對documents進行取樣),所以需要使用基於策略梯度的強化學習來訓練生成器。

公式

  1. 最小化最大化:前面提到,整個訓練就是生成器和判別器博弈的過程,如下圖中的式子,先進行一個最大化訓練一個判別能力強的判別器,然後做一個最小化來訓練一個能騙過判別器的生成器。不斷迭代這個過程。
  2. JS散度:對式子進行最大化後(訓練判別器)得到的這個式子其實是一個JS散度,衡量生成資料和真實資料的分佈。然後對JS散度進行最小化(訓練生成器)就可以使生成資料逼近真實資料。
  3. 訓練判別器:最大化這個式子,使用sample的方法,發現其實就是一個邏輯迴歸的二分類問題。
  4. 訓練生成器:因為IRGAN裡面最後是從document池中進行取樣,可能softmax概率改變一點點,取樣的結果並不會產生變化,這樣難以進行梯度的傳遞更新,所以使用基於策略梯度的強化學習來訓練。
  5. 目標函式的改進:訓練生成器的時候,考慮到目標函式在一開始下降地比較慢,做了一下修改。於是最後得到的策略梯度也發生了變化,獎賞項變成了判別器輸出的log,這也很直觀,強化學習要讓獎賞越來越大,這裡剛好就是讓判別器的輸出越大越好(接近1,讓判別器以為生成的資料是真實的)。後面考慮到log使得訓練不穩定,於是把log也去掉了。最後為了讓獎賞有正有負,做了一個乘2減1的修正。

實驗

如下幾個圖所示,其中s(x)表示生成器和判別器的公式。