paper: 《IRGAN: A Minimax Game for Unifying Generative and Discriminative Information Retrieval Models》dom
看了有一陣子發現有些忘記了,仍是記在這裏。函數
瞭解IRGAN首先要了解GAN:Generative Adverserial Net。原來的模型通常分爲生成模型和判別模型。性能
生成模型:學習聯合機率密度分佈P(X,Y),生成模型能夠學習X,Y的聯合分佈,也能夠經過貝葉斯公式推導出P(Y|X)。學習
生成模型求解思路:聯合分佈->求解類別先驗機率和類別條件機率優化
常見的生成模型像樸素貝葉斯,HMM,LDAspa
判別模型:直接學習決策函數或者條件機率分佈P(Y|X)的模型稱之爲判別模型,判別模型不關心總體的分佈只關心各組X之間Y的差別。.net
判別模型求解思路:條件分佈->模型參數後驗機率最大->(似然函數參數先驗)最大->最大似然orm
常見的判別模型像決策樹,SVM,CRFblog
參考博客:https://blog.csdn.net/zouxy09/article/details/8195017遊戲
GAN巧妙的同時使用了這兩種模型,生成模型用來刻畫數據的分佈,判別模型用來判別一個sample是生成模型生成的仍是來自原數據。生成模型的目標函數是最大話判別模型犯錯的機率,而判別模型的目標函數是最大化判別模型的正確率。就像一場警察和小偷的遊戲。最終判別模型的結果會無限接近於1/2.
G(z; θ):假設z是噪聲變量,生成模型須要一個先驗機率P(z). G是由θ參數的可微函數。訓練目標是最小化log(1-D(G(z)))
D(x; θ): x是真實數據,D表明x是真實數據的機率。咱們訓練D來最大化正確label的機率
總的公式是:
固然每次G迭代後D都迭代性能開銷不行。因此k步優化D而後再一步優化G。固然假如G變化比較慢的話每一次D都能達到較優解。
論文上有一個小例子解釋訓練的過程:
其中綠色實線是生成模型生成數據分佈,藍色虛線是判別的決策面,黑色虛線是真實數據的分佈。最下面的橫線是z抽樣的domain,中間的橫線是部分真實數據的domain。黑色向上的箭頭表示z的抽樣到真實數據的投射,而生成模型會根據這個這個投射學習到x的分佈。圖(a)中考慮到生成分佈的影響,D的決策面部分是不許的。圖(b)判別模型學習到了二者分佈之間的diff(收斂到了D*(x)=pdata(x)/(pdata(x)+pg(x)))圖(c)更新過G後,繼續作判別。圖(d) 最終G的分佈和真實分佈重合,而後判別的最後結果是1/2.
論文後有對收斂結果的論證。這邊就不贅述了。
GAN的結果是做用在圖片上的。IRGAN借用了GAN的思想。
生成模型:負責從候選池中選擇相關的文檔