虛擬對抗訓練(VAT):一種用於監督學習和半監督學習的正則化方法


正則化

  虛擬對抗訓練是一種正則化方法,正則化在深度學習中是防止過擬合的一種方法。通常訓練樣本是有限的,而對於深度學習來說,搭設的深度網絡是可以最大限度地擬合訓練樣本的分布的,從而導致模型與訓練樣本分布過分接近,還把訓練樣本中的一些噪聲也擬合進去了,甚至於最極端的,訓練出來的模型只能判斷訓練樣本,而測試樣本變成了隨機判斷。所以為了讓模型泛化地更好,正則化是很有必要的。

  最常見的正則化是直接對模型的參數的大小進行限制,比如將參數(整合為向量$\theta$)的$L_2$范數:

$\displaystyle J(\theta)=\frac{1}{n}\sum\limits_i^n\theta_i^2$

  作為正則項加入損失函數中,得到總的損失函數:

$\displaystyle L(\theta)=\frac{1}{N}\sum\limits_{i=1}^NL(y_i, x_i,\theta)  + \lambda J(\theta)$

  從而約束參數不會很大而過於復雜,使模型符合奧卡姆剃刀原理:所有合適的模型中應該選擇最簡單的那個。

  然而,這種正則化僅僅符合了奧卡姆剃刀而已,而且它的定義是很模糊的。因為你不知道什么模型才是“簡單”的,而且僅僅用范數來限制也不一定就會產生“簡單”的模型,甚至於,“簡單”的模型也未必就是泛化能力強的模型。 

對抗訓練

  相較於范數類型的正則項,論文中引用了另一篇論文,這篇論文從另一個角度來看待正則化,基於這樣一個假設$A$:對於輸入樣本的微小變動,模型對它的預測輸出也應該不會有很大的改變。這個對於連續函數來說是理所當然的(排除一些梯度特別大的連續函數),但是對於一些神經網絡模型來說,它們內部層與層之間的交互是有閾值的,超過這個閾值才能把信息傳到下一層,導致函數不連續,從而輸入的微小改變就會對后面的輸出產生巨大的影響(論文中指出,僅僅使用$L_p$范數做正則項就容易產生這樣的問題)。它的正則項定義如下:

 $\displaystyle J(\theta) = \frac{1}{N}\sum\limits_{i=1}^NL_{adv}(x_i,\theta)$

${\rm where}\,L_{adv}(x_i,\theta) = D[q(y|x_i),p(y|x_i+r_{adv_i},\theta)]$

${\rm where}\,r_{adv_i}= \mathop{\arg\max}\limits_{r;||r||_2\leq\epsilon}  D[q(y|x_i),p(y|x_i+r,\theta)]$

  這個公式假設模型是生成模型,因為判別模型可以轉化為生成模型,所以不另外添加公式了。其中,$D[q,p]$表示分布$q$和$p$的差異,用交叉熵、相對熵(KL散度)等表達;$q(y|x_i)$表示訓練樣本$x_i$的標簽真實分布;$p(y|x_i,\theta)$表示模型參數為$\theta$時對$x_i$的標簽預測分布;$r_{adv_i}$表示能使$x_i$預測偏差最大化的擾動向量(范數很小)。

  因此,這個正則項的定義就是:在每一個訓練樣本點的周圍(固定范圍$\epsilon$),找一個預測分布和這個樣本點標簽的真實分布相差最大的樣本點($x_i+r_{adv_i}$),然后優化模型參數$\theta$來減小這個偏差。在每一次迭代優化$\theta$減小損失函數$L(\theta)$之前,都要先計算一次$r_{adv_i}$,即獲取當前$\theta$下使每個$x_i$偏差最大的擾動向量,進而獲取當前擾動的最大偏差作為正則項。如此看來好像是在對抗損失函數的減小,因此叫對抗訓練,而 $r_{adv_i}$則叫對抗方向

  因為實際上樣本點的真實連續分布並不能獲得,所以使用離散的概率來作為分布,論文中使用one hot vector $h(y=y_{real})$來表達。這個向量是一串0-1編碼,真實標簽對應的向量元素為1,其它向量元素都為0,比如標簽有:貓、狗、汽車,則$h(y = 狗)=[0,1,0]$,使用one hot vector的好處之一就是切斷了不同標簽之間在連續數值上的聯系。

  於是我們很容易能想到,對抗方向應該在$L_{adv}(x_i,\theta) $對$x_i$求梯度時能取到近似(因為在梯度方向函數變化率最大),即:

$\displaystyle r_{adv_i}\approx\epsilon\frac{g_i}{||g_i||_2},\,{\rm where}\,g_i=\nabla_{x}D[h(y=y_{x_i}),p(y|x,\theta)]|_{x=x_i}$ 

  因為需要訓練樣本的真實標簽分布,所以對抗訓練只適用於監督學習

  論文指出,使用對抗方向來進行擾動的表現是比隨機擾動要好的。隨機擾動就是在$x_i$周圍$\epsilon$內隨機找一個較小的擾動$r_{rad_i}$代替$r_{adv_i}$。盡管隨機擾動的目標也是假設A,但是最終的訓練結果是比對抗擾動差很多的。

虛擬對抗訓練

  虛擬對抗訓練(VAT Visual adversarial training)是基於對抗訓練改進的正則化算法。它主要對對抗訓練進行了兩個地方的改進:

局部平滑度

  在$L_{adv}(x_i,\theta)$定義中的標簽真實分布$q(y|x_i)$被換成了當前迭代下的標簽預測分布$p(y|x_i,\hat{\theta})$($\hat{\theta}$表示當前梯度下降下的$\theta$的具體值,而$\theta$則是在損失函數中用來求梯度進行梯度下降的自變量)。另外還給$L_{adv}(x_i,\theta)$換了個名字——LDS(Local distributional smoothness 局部分布平滑度),定義如下:

${\rm LDS}(x_i,\theta) = D[p(y|x_i,\hat{\theta}),p(y|x_i+r_{vadv_i},\theta)]$

$\,{\rm where}\,r_{vadv_i}=\mathop{\arg\max}\limits_{r;||r||_2\leq\epsilon}  D[p(y|x_i,\hat{\theta}),p(y|x_i+r,\hat{\theta})]$

  我們可能會疑惑,為什么計算$r_{vadv}$用$\hat{\theta}$,而不用$\theta$,明顯用$\theta$更精確。論文中也沒有給出明確的說明,可能它忘了說明這一點。不過這個細節也的確不容易察覺,在后面我會說一下我的理解。

  可以發現,${\rm LDS}(x_i,\theta)$並不需要$x_i$的標簽真實分布,所以即使$x_i$是沒有真實標記的樣本點,同樣可以加入訓練,因此VAT不但適用於監督學習,還適用於半監督學習。以下是使用VAT的簡化的損失函數($\mathcal{D_l,D_{ul}}$分別為有標記樣本和無標記樣本集):

$\displaystyle L(\theta)=\sum\limits_{(x,y)\in\mathcal{D_l}}L(y, x,\theta) +\lambda \frac{1}{N_l+N_{ul}}\sum\limits_{x\in\mathcal{D_l,D_{ul}}}{\rm LDS}(x,\theta)$

快速計算rvadv

  對於計算$r_{vadv}$,論文並不直接使用關於$x_i$的梯度。因為顯然$D[p(y|x_i,\hat{\theta}),p(y|x_i+r,\hat{\theta})]$在$r=0$處時,兩個分布完全相同,兩個分布的差異已達到最小,此時$r$就處於極小值點上,梯度為0。要求$D(r,x_i,\hat{\theta})$(簡化寫法)最大化,不一定只能從梯度的角度考慮,論文換了一個思考角度,將它關於$r$在0處進行泰勒展開后,因為一階導數(梯度)為0,發現有如下近似:

$\displaystyle D(r,x_i,\hat{\theta})\approx\frac{1}{2}r^THr+O(r^2)$

  其中$O(r^2)$是$r^2$的高階無窮小,$H=\nabla\nabla_rD(r,x_i,\hat{\theta})|_{r=0}$是Hessian矩陣。由Hessian矩陣的定義可知,該矩陣是實對稱矩陣,一定有對應維數個相互線性無關的特征向量。由特征值和特征向量的定義得,對於范數大小固定的$r$,當$r$是最大特征值對應的特征向量時,能取得$r^THr$最大,又因為$r$的范數很小,后面的高階無窮小可以忽略不計,相應地,$D(r,x_i,\hat{\theta})$也取得最大。所以:

$r_{vadv}\approx\mathop{\arg\max}\limits_{r;||r||_2\leq\epsilon}r^THr=\epsilon\overline{u}$

  其中$\overline{u}$表示$H$的最大特征值對應的單位特征向量。但是,計算高維的Hessian矩陣是很困難的,更不用說再計算它的特征值和特征向量了。所以,論文使用冪法(冪迭代法,具體算法看此鏈接)來計算矩陣最大特征值對應的特征向量。即隨機取一個同維度的向量$d$(假設用特征向量表達$d$時,$u$的系數不為0),進行以下迭代:

$d=\overline{Hd}$

  迭代到后期,$d$會無限接近於$\overline{u}$。然后,論文又用所謂的有限差分法,來避免計算 Hessian矩陣。有限差分法就是用所謂的差商代替微商來近似計算導數,差商就是用比較小的因變量除以對應的自變量,微商就是用因變量的極限(無限小)除以對應自變量的極限。於是,0處的“二階導數”$H$乘上一個較小的自變量$\xi d$,就可以近似0到$\xi d$處的一階導數(梯度)的變化量:

$\xi Hd\approx\nabla_rD(r,x_i,\hat{\theta})|_{r=\xi d}-\nabla_rD(r,x_i,\hat{\theta})|_{r=0}$

  由於$r=0$處的梯度為0:

$\displaystyle Hd\approx\frac{\nabla_rD(r,x_i,\hat{\theta})|_{r=\xi d}}{\xi}$

  所以迭代式變為:

$d=\overline{\nabla_rD(r,x_i,\hat{\theta})|_{r=\xi d}}$

  上式表示,不斷用位置所在的梯度方向取代原本的位置方向,位置會不斷趨向於最大梯度方向(我自己的理解,感覺這是一個好技巧)。如下圖所示(綠虛線是當前所在位置的梯度方向,黃線表示下一次迭代位置的方向,長度顯示梯度的大小):

  論文實驗中,迭代一次就能獲取很好的近似$u$的效果。即:

$\displaystyle r_{vadv}\approx\epsilon\frac{g}{||g||_2}$

${\rm where}\,g=\nabla_rD[p(y|x_i,\hat{\theta}),p(y|x_i+r,\hat{\theta})]|_{r=\xi d}$

  我覺得迭代一次的原因應該是:相較迭代獲取精度更高的虛擬對抗方向,計算力省下來用於梯度下降,更快地收斂整個模型更好。或者梯度下降前期迭代近似$r_{vadv}$次數少一些,后期再逐漸增加迭代次數增加收尾時的精度。

  說一下我對為什么要用$\hat{\theta}$,而不用$\theta$的理解。因為需要計算$r=\xi d$處的梯度並進行迭代,如果使用不能當具體數值參與計算的參數$\theta$,就只能把整個迭代寫成一次性計算的算式形式了,而且不能動態改變迭代的次數。並且隨着迭代次數增多,參數$\theta$的數量會指數式上升。當然,如果和上面一樣只迭代一次,我覺得是可以使用$\theta$的。不過論文第6頁左上角好像說明了這點,當時沒看懂,說的應該就是這個意思:

額外正則項

  另外,在實驗中,論文除了LDS正則項外,還添加了條件熵作為額外的正則項。定義如下:

$\displaystyle\mathcal{H}(Y|X)=-\frac{1}{N_l+N_{ul}}\sum\limits_{x\in \mathcal{D_l,D_{ul}}}\sum\limits_{y}p(y|x,\theta)\log p(y|x,\theta)$

  表示除了相似輸入應該有相似輸出外(減小LDS),輸出標簽的概率分布還應該越集中越好(減小$\mathcal{H}(Y|X)$)。因為在$X$條件下$Y$的混亂度(熵)代表了輸出概率分布的不集中度的平均值,所以優化條件熵越小,輸出概率分布越集中、越確定。而預測地越明確越好自然是我們想要的。

VAT效果

  下圖展示了使用VAT進行半監督訓練的過程:

  圖中方形圖標是有標簽訓練樣本,圓形圖標是無標簽訓練樣本。分成上下兩部分,分別展示了在訓練之前、訓練更新(梯度下降)10次、100次、1000次時,模型對無標簽訓練樣本的預測情況$({\rm I})$,和無標簽訓練樣本的LDS$({\rm II})$。樣本的輸入為二維,分別用橫縱坐標表示。模型預測輸出為一維,從綠到灰,再到紫,用連續的顏色過渡來表示預測標簽為某個類別的概率(紫色概率為1,綠色概率為0,灰色為0.5),如$({\rm I})$所示。$({\rm II})$用灰色到紫色表示無標簽樣本的LDS大小,越紫說明該樣本點在當前模型下的LDS越大,說明對這個樣本點進行小擾動會使當前模型的預測出現大偏差。

  $({\rm I})$可以看出,隨着不斷的更新,無標簽樣本的預測從有標簽樣本“傳染”出去(因為遵循相近的樣本預測相同的理念),直到停在無標簽樣本稀疏的地方(因為沒有樣本再進行減小LDS的“傳染”,而稀疏的地方也正好就是兩個類別的分界線),最終形成了兩個鑲嵌着的半圓環。這個“傳染”的效果是我之前沒想到的,我以為減小LDS的效果僅僅局限在有標簽樣本的周圍。但是加了大量的無標簽樣本后,這些樣本對模型進行了總體的“把控”,而少量的有標簽樣本則對這個總體進行了“固定”,二者聯動,使得VAT半監督學習的學習效果很好。

  $({\rm II})$顯示LDS隨着模型的更新,越來越小,最后LDS較大大的樣本點都分布在兩個標簽的分界線處。

論文信息

  Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM