1. 程式人生 > 其它 >[論文理解] 半監督論文總結(一)

[論文理解] 半監督論文總結(一)

Semi-supervised Papers Review

CatGAN

arxiv:https://arxiv.org/pdf/1511.06390.pdf

主要貢獻:

修改原始GAN的目標函式為

1)對於有標籤樣本,訓練判別器時直接交叉熵

2)對於無標籤樣本和生成樣本,訓練判別器時最小化無標籤樣本的條件熵,最大化生成樣本的條件熵,其中還要保證判別器對生成樣本所在的整個資料分佈的預測在各個類別之間是均勻的,這個可以用邊緣熵來計算,由於我們認為生成的分佈和當前真實資料的分佈是一致的,因此可以直接用真實資料集的邊緣熵最大來實現(之所以用邊緣熵是希望標籤y是均勻取樣的)。

3)對於無標籤樣本和生成樣本,訓練生成器時對於無標籤樣本需要最小化生成樣本的條件熵。同樣也需要邊緣熵最大化。

生成器角度的需求:

i)確定樣本的類別分配,(ii)不確定生成的樣本的分配,以及(iii)平等地使用所有類別(平均分佈)。

判別器角度的需求:

i)生成具有高度確定類別分配的樣本,(ii)在所有K類中平均分配樣本。

CCGAN

paper:https://arxiv.org/abs/1611.06430v1

主要貢獻:

1)主要認為給影象提供邊界之後讓生成器生成中間部分會使得判別器真正理解生成影象的語義,從而可以利用來做半監督。(可能人臉比較適合?)

2)判別器和分類器並不共用,倒數第二層共用,最後一層單獨header連線任務。

Improved GAN

arxiv:https://arxiv.org/abs/1606.03498

  1. 把判別器改為K+1分類,前K類區分id的類別,最後一類分真假樣本。
  2. feature matching

BadGAN

生成低密度區域的資料。懲罰高密度點。寫過部落格了BadGAN

Localized GAN

Global versus Localized Generative Adversarial Nets !important

arxiv:https://arxiv.org/pdf/1711.06020

這篇文章主要觀點是,傳統的GAN的latent space z是從一個座標系取樣並控制影象的生成的,這導致了想要通過影象反向得到latent space的座標z並不容易,雖然也是可以得到的,但是其實並沒有辦法保證每張圖片在latent space裡都存在一個座標z。

文章覺得每個樣本應該都有一個區域性的座標系,並且以樣本自身為原點,在latent space中對應的區域性座標系的座標應該為0,這樣就保證了任意樣本在latent space中都有座標對應(以自身為原點的相對座標系)。

兩個正則化要求:

  1. locality: \(G(x, 0) = x\), 區域性座標系原點必須是該樣本本身
  2. orthonormality: \(J^Tx Jx = I_N\),N維座標對應的切空間向量之間必須正交

為啥切向量必須正交?

因為如果不正交,那麼就意味著該座標系可以被更低維表示,這樣會存在區域性改變切空間座標值而結果不變的模式崩塌。

用在半監督裡:

判別器損失

\[\begin{aligned}&\max _{P} \mathbb{E}_{\left(\mathbf{x}_{l}, y_{l}\right) \sim P_{\mathcal{L}}} \log P\left(y_{l} \mid \mathbf{x}_{l}\right)+\mathbb{E}_{\mathbf{x}_{u} \sim P_{\mathcal{X}}} \log P\left(y_{u} \leq K \mid \mathbf{x}_{u}\right) \\& +\mathbb{E}_{\mathbf{x} \sim P_{\mathcal{X}}, \mathbf{z} \sim P_{\mathcal{Z}}} \log P(y=K+1 \mid G(\mathbf{x}, \mathbf{z})) \\& -\sum_{k=1}^{K} \mathbb{E}_{\mathbf{x} \sim P_{\mathcal{X}}}\left\|\nabla_{\mathbf{x}}^{G} \log P(y=k \mid \mathbf{x})\right\|^{2}\end{aligned} \]

注意

最後一項滿足locality正則化要求。懲罰z的改變對結果的影響,也即區域性perturb不改變模型輸出,一致性正則。

生成器損失

\[\min _{G} \mathcal{K}_{G}+\mathcal{L}_{G}+\mathbb{E}_{\mathbf{x} \sim P_{\mathcal{X}}} \Omega_{G}(\mathbf{x}) \]\[\mathcal{K}_{G}=-\mathbb{E}_{\left(\mathbf{x}_{l}, y_{l}\right) \sim P_{\mathcal{L}}, \mathbf{z} \sim P_{\mathcal{Z}}} \log P\left(y_{l} \mid G\left(\mathbf{x}_{l}, \mathbf{z}\right)\right) \]

對有標籤樣本,生成器生成的樣本要保證類別不變,沒有標籤的樣本和原始樣本之間做feature matching loss, 最後一項是上面提到的兩個正則項。

文章這樣用生成的樣本,生成器能夠保證生成的樣本滿足兩個正則項、而且用了feature matching。

他的目標其實和badgan不太一樣,他要的是生成流形附近的樣本,並且在判別器裡相當於對生成的樣本和原始樣本做一致性正則,懲罰的是z變化最大的樣本,讓結果更bound。

感覺這個其實是一篇很啟發性的文章,但從他生成影象的效果來看其實並不好,說不定可以在這個文章基礎上繼續做一些工作會很有幫助。

文章表示通過直接對生成圖片的每個類別進行梯度懲罰,可以得到一個相對魯棒的分類器:

\[|D(G(x, z+\sigma z))-D(G(x, z))|^{2} \approx\left\|\nabla_{x}^{G} D(x)\right\|^{2} \sigma z \]

具體的可以實現為:

\[\sum_{k=1}^{K} \mathbb{E}_{x \sim p_{x}}\left\|\nabla_{x}^{G} \log p(y=k \mid x)\right\|^{2} \]

CTGAN

arxiv:https://arxiv.org/pdf/1803.01541.pdf

  1. 判別器K+1分類
  2. 判別器損失新增一致性正則,一致性方式為:(1)給輸入加隨機噪聲 (2) 給hidden layer 加隨機噪聲
  3. 在WGAN的基礎上進行的工作,WGAN本身是要達到L1連續性,L1連續

論文結果:

Mnist Test Error:0.89 ± 0.13 4,000 labels

CIFAR-10: 9.98 ± 0.21 4,000 labeles

Bidirectional Generative Adversarial Networks

arxiv:https://arxiv.org/pdf/1605.09782v7.pdf

ADVERSARIAL FEATURE LEARNING

是一篇偏理論的文章。

主要貢獻:

  1. 感覺主要貢獻是提出瞭如圖所示的訓練結構,引入一個新的encoder E,將原圖映射回latent space,判別器判斷(x, E(x))元組和(G(z),z)組。
  2. 剩下的很多理論證明,主要結論是這樣訓練的GAN會使得E和G成為互逆變換。

從直覺上來理解一下而非公式,為什麼E能夠學習到與G相反的變換呢?

假設生成器G生成的分佈就是真實分佈x,那麼如果E(x)和z不是對應的分佈,此時判別器D可以根據此以及配對情況分辨開他倆,而生成器我們認為是固定的,此時只有通過優化E使得E(x)和z對應才能再次欺騙判別器,因此最終E可以學習到與G相逆的變換。

主要評估的是無監督效能。

Adversarially Learned Inference

arxiv:https://arxiv.org/pdf/1606.00704.pdf

把BiGAN(上面這篇文章)改成了K+1-class。

Augmented BiGAN

Semi-supervised Learning with GANs: Manifold Invariance with Improved Inference

arxiv: https://arxiv.org/pdf/1705.08850.pdf

看起來是一篇比較偏理論的文章,4月8日研究一下

簡單思想

  1. 相對BiGAN加了FM損失
  2. 新增loss term防止生成的樣本類別改變
\[\mathbb{E}_{x \sim p(x)}\left[\log \left(1-D\left(E(x), G_{x}(E(x))\right)\right)\right] \]

TripleGAN

Triple Generative Adversarial Networks

arxiv: https://arxiv.org/pdf/1912.09784.pdf

3-player-game:

三個player分別是

  1. classifier C 負責給定真實樣本x,得到\(p_C(y|x)\)
  2. generator G condition on 標籤y,得到\(p_G(x|y)\)
  3. discriminator D 負責區分樣本對\((x, y)\),這樣的樣本對其實是\(p(x,y)\)聯合概率,對於真實樣本,\(p(x,y) = p(y|x)p(x)\),而對於生成對樣本,則\(p(x,y) = p(x|y)p(y)\)

本文的基本假設是\(p(x)和p(y)\)均可以很容易獲得,x的分佈可以由訓練集取樣得到,y的分佈假設是均勻分佈可以取樣得到。

這樣的一個基本過程對應的損失為:

\[\begin{gathered}\min _{C, G} \max _{D} \mathbb{E}_{p(x, y)}[\log D(x, y)]+\alpha \mathbb{E}_{p_{c}(x, y)}[\log (1-D(x, y))] \\+(1-\alpha) \mathbb{E}_{p_{g}(x, y)}[\log (1-D(G(y, z), y))]\end{gathered} \]

第一項對應真實樣本真實標籤,第二項對應真實樣本偽標籤,第三項對應真實標籤生成的樣本。

因此很好理解,C是為了給真實樣本產生偽標籤,G是為了給真實存在的標籤產生對應的樣本。

然而有個問題,就是\(p(x)p_C(y|x)\)\(p(x,y)\)\(p_G(x|y)p(y)\)不能保證三者是相等的,問題就是公式(11)並沒有確保這三者相等的約束,而我們的假設又是基於這三者相等,為了滿足這一條件,文章加了兩個KL散度的正則使得訓練結果是三者相等的。

最終的損失對應為:

\[\begin{gathered}\min _{C, G} \max _{D} \mathbb{E}_{p(x, y)}[\log D(x, y)]+\alpha \mathbb{E}_{p_{c}(x, y)}[\log (1-D(x, y))] \\+(1-\alpha) \mathbb{E}_{p_{g}(x, y)}[\log (1-D(G(y, z), y))]+\mathcal{R}_{\mathcal{C}}+\alpha_{\mathcal{P}} \mathcal{R}_{\mathcal{P}},\end{gathered} \]

理論上講應該是加三個KL散度的正則項,但是\(p(x,y)\)\(p_G(x|y)p(y)\)之間的KL散度起不到優化作用,前者的概率可以認為是均勻分佈的概率(整個資料集認為是均勻分佈,樣本之間相互獨立,因此sample一個小batch內的樣本也是均勻分佈的),後者是一均勻分佈和。這樣需要計算KL散度的是\(KL(p(x,y)||p_C(y|x)p(x))\),由於\(p(x)\)在batch內是均勻取樣的,分類器得到的直接是條件概率,所以可計算。還有就是要求\(p_C(y|x)p(x)\)\(p_G(x|y)p(y)\)的KL散度,文章在appendix中推匯出了這個式子和優化下式等價:

\[\mathcal{R}_{\mathcal{P}}=\mathbb{E}_{p_{g}(x, y)}\left[-\log p_{c}(y \mid x)\right] \]

這裡是將生成器生成的樣本和標籤對通過分類器正確分類,希望分類器也能正常分類生成的樣本和對應的標籤。

Enhanced TGAN

Enhancing TripleGAN for Semi-Supervised Conditional Instance Synthesis and Classification

CVPR:https://openaccess.thecvf.com/content_CVPR_2019/papers/Wu_Enhancing_TripleGAN_for_Semi-Supervised_Conditional_Instance_Synthesis_and_Classification_CVPR_2019_paper.pdf

Margin GAN

MarginGAN: Adversarial Training in Semi-Supervised Learning

NIPS:https://papers.nips.cc/paper/2019/file/517f24c02e620d5a4dac1db388664a63-Paper.pdf

在半監督領域,一般是用偽標籤手段來實現margin最大化,對於無標籤樣本,我們根據其輸出給其分配一偽標籤,計算偽標籤和輸出值的交叉熵損失來優化結果,使得網路對自己的輸出更加確定,從而實現最大化margin的效果。

本文提出的Margin GAN受到最大化分類間隔和Bad GAN的影響,主要方法為:

  1. 對於判別器,需要其區分真實樣本和生成的樣本,損失為
\[\operatorname{Loss}(D)=-\left\{E_{x \sim p^{[l]}(x)}[\log (D(x))]+E_{\widetilde{x} \sim p^{[u]}(\widetilde{x})}[\log (D(\widetilde{x}))]+E_{z \sim p(z)}[\log (1-D(G(z)))]\right\} \]
  1. 對於分類器,有標籤樣本即正常分類,無標籤樣本偽標籤分類(最大化margin),對生成的樣本用ICE損失(ICE損失具體過程為為生成樣本分配偽標籤,增大偽標籤的交叉熵損失而非減小)。ICE損失會讓margin減小,也就是讓結果趨於不確定化(最優解為均勻分佈),而margin減小會使得分類面穿過生成的樣本,而生成的樣本是低密度的“Bad”樣本,從而可以保證分類面不穿過流形而經過低密度區域。

  2. 對於生成器,需要同時欺騙判別器和分類器,對於欺騙判別器很簡單,而需要欺騙分類器是由於分類器會減小生成樣本的margin,所以生成器需要生成使得margin儘可能大的樣本,因此損失為:

\[\operatorname{Loss}(G)=-E_{z \sim p(z)}[\log (D(G(z)))]+E_{z \sim p(z)}\left[\operatorname{Loss}_{C E}\left(\widetilde{y}^{[g]}, C(G(z))\right)\right] \]

最後生成結果影象是和badgan類似的效果,也就是說這麼的損失最後能得到低密度的bad樣本,分類器將其margin減小確實符合預期,但是為什麼這樣的3-player game可以保證生成低密度樣本呢?

文章沒有給出數學證明,但可以簡單分析一下。

生成器最後生成的樣本對應判別器肯定是沒法分辨的,那就可以認為可以生成id的樣本,而對應分類器得到的是margin為0的樣本,而margin為0則表示該類樣本就在分類面上,因此可以認為,最終生成的樣本應該是類別之間的分類面上的樣本。無標籤資料的利用使得分類面很難落穿過真實流形,而我認為生成網路的作用是鼓勵分類面往遠離流形的方向走,如果生成的樣本過真,則需要margin既大又小,可能並沒有優化效果,如果生成的樣本欠真,則分類面肯定會往欠真的樣本方向移動,此時鼓勵的分類面的移動,從而具有優化效果。

從結果上看遠超badgan,一方面可能badgan那種用pixelcnn來估算樣本密度的方式並不可靠,而通過margin懲罰的方式相對更能達到這種效果,另一方面也確實說明了低密度樣本對半監督的有效作用。

Triangle GAN

Triangle Generative Adversarial Networks

arxiv:https://arxiv.org/pdf/1709.06548.pdf

Structured GAN

arxiv:https://arxiv.org/pdf/1711.00889.pdf

Mean Teacher = EMA 的 proposal model

perturb的large margin有很大的關係,會促進學習large margin,取決於perturb的步長

Ladder Network

arxiv:https://arxiv.org/pdf/1507.02672.pdf

將加噪聲、去噪聲的任務用於半監督學習,其中不僅最後輸出層加噪聲去噪聲,中間層也需要完成加噪聲去噪聲的任務。

本身加噪聲去噪聲的任務是為了讓網路學習到內在不變資訊,並不一定是分類資訊,自編碼器希望保留大多數資訊以便重構,而分類器希望只學習到與任務相關的、具有不變性的資訊,那麼其他的資訊,對於分類器就相當於某種噪聲,換句話說,分類器學習的過程,也可以解釋為是一種降噪的過程。

降噪自編碼器,在編碼時進行去噪,在解碼時進行重構。因此降噪自編碼器的編碼過程,很好地符合了分類器希望去噪(去掉與任務無關的資訊)的目的。因為降噪自編碼器的訓練學習,強化了分類器的降噪能力,而且因為是無監督降噪,這種降噪是一種通用降噪,可以提升分類器的泛化能力。