日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

半监督学习笔记(四):熵最小化、代理变量

發布時間:2023/12/14 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 半监督学习笔记(四):熵最小化、代理变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

半監督學習筆記(四)

昨天的更新中,我們學習了幾種基于對抗方法的一致性正則化的策略,接下來讓我們做一個簡單的復習:

1、 Fast-SWA:采用了退火算法的思想,逼近多個最小值點后求平均。

2、 Virtual Adversarial Training:通過找到網絡的薄弱點,選擇性的挑取噪聲進行訓練。

3、 Adversarial Dropout:采用對抗性的方法找到最弱的隨機丟棄層,其中運用了元素級丟棄和通道級丟棄的方法。

4、 Interpolation Consitency training:插值一致性訓練,體現了奧卡姆剃刀準則。

5、 Unsuperviesd Data Augmentation:從數據本身的角度對數據進行增強。

之前更新的兩篇文章已經結束了對一致性正則化方法的闡述,我們可以從中找到核心思路:主要利用了集成學習和對抗訓練的思想,使得模型更加平滑。接下來我們來學習一些新的半監督學習的知識。

三、Entropy Minimization(熵最小化)

由于半監督學習的樣本過少,所以一種比較好的思路就是再本次訓練中將網絡在上一次產生的,自信程度比較高的預測(我們就當他是預測對了的)加入到本次的訓練中,這樣反復的迭代,就從中體現了聚類的思想,使得決策邊界能更加趨于真實。因此,在訓練的時候我們需要讓網絡的預測更加自信,而不是比較猶豫。而熵最小化這套理論則是希望讓網絡的預測更加自信,也就是進行低熵預測。

所以,我們基于絕大部分數據點都遠離決策邊界的假設下,我們需要阻止網絡的決策邊界在數據點附近。這個方法我們可以通過增加一個對于預測的損失項來實現:

L=?∑k=1cfθ(x)klogfθ(x)kL=-\sum_{k=1}^cf_{\theta}(x)_{k}logf_{\theta}(x)_{k} L=?k=1c?fθ?(x)k?logfθ?(x)k?
對于分類問題,網絡最后必然是通過一個softmax來輸出,而softmax是所有的類別經過歸一化之后自信程度。假設網絡對每一個類的自信程度都相近,那么整體的熵值就會越大,反之則越小。通過添加這一項正則化項就能實現讓網絡的預測更加自信。當然,這也有不好的情況:倘若網絡預測錯了,那人家對自己的錯誤答案也會十分自信。

四、Proxy-label Methods(代理變量方法)

代理變量方法的定義之前已經說過,我們來復習一下:通過給沒有標簽的數據提供標簽的方法利用無標簽數據,從而優化網絡的訓練。代理變量的方法可以分為兩類。

1、 自訓練(self-training):每一個數據的標簽由網絡自己提供。

2、 多視角學習(Multi-view learning):代理變量由對數據的不同觀測訓練出的模型提供。

首先,我們先介紹自訓練。

4.1 self-training

整體概念開頭已經提過了,算法表述如下:給定數據集,利用有標記的數據訓練網絡,再讓網絡對未標記的數據進行預測,取自信程度最大的數據和預測,和原本有標記的數據整合作為新的訓練集,再訓練網絡,如此循環。自訓練也可以和熵最小化的方法結合,畢竟從目標上來說,都是希望網絡不管預測的結果是對是錯,都能讓網絡的判斷更加自信。

#### 代理標簽

Shi 提出了一種“自適應傳輸半監督學習”的方法,通過將未標記的樣本的標簽作為變量,并且通過迭代訓練過程層最小化損失函數,嘗試確定其標簽和最好的模型參數。對于生成的代理標簽的處理方法如下:將所有的標簽視作“硬標簽”。對所有的沒有標記的樣本,對其引入不確定性權重,這包括類間不確定性權重和類內一致性權重。以及具有不同擾動的樣本之間的一致性項。

Iscen等人在偽標簽中集成了標簽傳播算法,該方法交替使用了標記示例和偽標簽訓練網絡,然后利用學習到的表示構建最近鄰圖,在該圖中應用標簽傳播來優化偽標簽。他們還引入了兩個不確定性分數,一個是基于輸出概率熵的每個樣本的不確定性分數,以克服預測中的不平等置信度;另一個是基于類的頻率都類間分數,來處理類間的不平衡。

這段話的重點是標簽傳播算法,從概念上來理解,這十分的簡單:A和B有一定的相似度,B和C有一定的相似度。此時我們確定了C是什么,那么B和A在類別上和C就可能會一致。標簽傳播算法的應用也可以使得網絡學到更好的表示。

Arazo表明了,一個未經充分訓練的偽標記算法,通常會因為確認性偏差(Confirmation bias)會產生過擬合,以至于沒有良好的性能。另外也證明了MixUp和設定每一個采樣的minibatch數量中的樣本最少數是一個減小確認性偏差(Confirmation bias)的好方法。

這段話該怎么理解呢?有兩個重點,一個是確認性偏差,另一個是MixUp。首先我們先解釋確認性偏差:

Overfitting to incorrect pseudo-labels Predicted by the network is known as confirmation bias(摘自Arazo原文)

這表明,對錯誤代理標簽的過擬合就是確認性偏差。簡單的來說,就是老師教了你一個錯的東西,你還把他學過來了。


MixUp是什么呢?簡單的說,就是把兩個訓練樣本做一個插值,應用公式如下:

x~=λxi+(1?λ)xj\tilde{x}=\lambda x_{i}+(1-\lambda)x_{j}x~=λxi?+(1?λ)xj?, where xix_{i}xi?,xjx_{j}xj? are raw input vectors.

y~=λyi+(1?λ)yj\tilde{y}=\lambda y_{i}+(1-\lambda)y_{j}y~?=λyi?+(1?λ)yj?, where yiy_{i}yi?,yjy_jyj? are one-hot label encodings.

因此,MixUP就是對兩個數據做一個插值,假設對一個二元分類問題而言,如果兩個數據的labelyyy相同,那么他們數據的中間值應該也會接近。對于獨熱編碼的標簽yyy而言,這也引入了軟標簽的概念。

To sum up,代理標簽的關鍵詞如下:自適應傳輸半監督學習、標簽傳播算法、確認性偏差與校正。

Meta Pseudo Labels(元代理標簽,MPL)

這里首先要解釋一個概念:元學習(Meta learning)

元學習,簡單的來說,就是“讓機器學習去學習”。我們可以去想,假設讓機器去擬合一個函數,我們需要自己設定學習率,超參數,甚至網絡的架構(幾層隱藏層)等。但是元學習就是訓練一個函數,讓這個函數觀察了所要求解的問題之后,自己生成一個函數的架構,來最好的適應這個學習任務。

簡單的來說,就是套娃。

好了,那么Meta Pseudo label是什么意思呢?

首先還是一個teacher和一個student。teacher生成代理標簽給student學習,然后teacher根據student學習的反饋更新自己的參數,然后在下一次生成一批新的標簽(按理說是更好的標簽)給student繼續學習。這是不是有點強化學習的味道?

一個MPL的步驟包括下面兩步:

  • phase1:student從teacher這邊學習,首先給定一個樣本集x∈Dlx\in{D_{l}}xDl?,teacherfθ′f_{\theta '}fθ? 生成目標的類別分布區訓練學生,每一個樣本(xi,fθ′(x))(x_i,f_{\theta'}(x))(xi?,fθ?(x))作為一個訓練數據,然后通過正常的機器學習算法來學習。

  • phase2:teacher收集到學生的測試損失(通俗的來說,就是答卷)來更新自己的參數,得到θ′(t+1)\theta ' (t+1)θ(t+1),從上述過程可以得知,θ′(t+1)\theta '(t+1)θ(t+1)都是從學生訓練得到的參數中得出來的,因此也可以用梯度下降來求解。

    也就是說,老師可以通過學生的表現進行調整,就是師生相互學習,共同進步。

4.2 Multi-view training(多視角訓練,MVL)

多視角訓練利用了在現實中非常常見的多視角數據,這是什么意思呢?比如針對一個實踐,我們要寫調研,我們需要圖片數據、文本數據等多元的數據。當同一個問題能收集到的數據形式多種多樣,且每一種數據形式的樣本數量都十分的有限時,MVL就希望學得一個函數集,函數集中的函數能對對這些真實數據xxx對應的視角數據vi(x)v_i(x)vi?(x)進行建模,并且同時優化這些函數,以讓最后的性能更好。當然,我們也希望這些函數集中的函數能夠相互影響,互相學習,用來提高整體和彼此的預測性能。

4.2.1 Co-training(聯合訓練)

聯合訓練就是每一個數據xxx有兩個視角v1(x)v_1(x)v1?(x)v2(x)v_2(x)v2?(x),并且每一個視角收集到的數據都足夠多,能來訓練一個函數。在兩個預測函數fθ1f_{\theta _1}fθ1??fθ2f_{\theta _2}fθ2??訓練成功之后,接下來進入循環:如果模型A對一個數據點有足夠自信的預測(超過某個閾值),那么這個數據點就被用來作為另一個模型的訓練集對模型B進行訓練。簡單的來說,就是一個模型能給另外一個模型提供該模型不確定的數據。

但是多數情況下,xxx只有一個視角v(x)v(x)v(x),那么我們就可以使用不同的學習算法,或者不同的參數設定來訓練兩個分類器,然后執行相同的迭代過程。我們還可以對視角v(x)v(x)v(x)加入噪聲或者通過不同的增強方法來生成不同的視角。

Democratic Co-training

這就是把2個模型變成多個模型來替換對輸入數據的不同視圖,不過說來,這不就是集成學習的思想嘛?

4.2.2 Tri-Training (三重訓練)

首先,有標記的數據集DlD_lDl?被用來訓練三個模型:fθ1f_{\theta_1}fθ1??fθ2f_{\theta_2}fθ2??fθ3f_{\theta_{3}}fθ3??.對于一個給定的未標記數據x∈Dux\in{D_{u}}xDu?,如果有兩個模型對他們的分類都是一致的,那么這個數據就加入用來訓練另一個函數的監督學習數據集。直到沒有數據被放入任何模型的監督學習訓練集中,訓練結束。三重訓練集不需要多視角,也不需要獨特的學習算法,因此這樣的訓練方法更加普遍。但是這樣的問題在于:訓練的開銷太大了。每一次對一個樣本進行預測,都需要三個模型來共同執行前向傳播。

Multi-task tri-training(多任務三重訓練)

當然,對于分類問題,我們可以通過讓三個分類器都共享一個特征提取層來減少訓練時間和采樣的復雜性。比如對于圖像,我們都可以用VGG16的骨架。在這種方法中,每一個模型在訓練時,都需要增加一個正則化損失項來保證自己和另外兩個模型是正交的。以防止模型出現相似性,最后以至于走向了自訓練的路。Tri-Net就采取了上述方法,但是還額外加了一個輸出涂抹去初始化這些模塊。在代理標簽迭代完成后,最后還增加了一個微調步驟,以用來消除可疑的偽標簽。

Cross-View Training(交叉視角訓練)

在自訓練中,模型起了雙重作用:自己又當老師又當學生,在交叉視角訓練中,也有一種更好的解決方法:根據一個數據的不同視角,不同的模型被訓練去嘗試生成一致性的預測。首先,所有的模型共享編碼層,然后增加一些輔助預測模塊,用來將編碼的表示轉移成預測。這些模塊被分成學生預測模塊和主要的教室模塊。每一個學生的預測都是模型的一部分。參考LSTM/雙向LSTM層。這樣所有的學生就會相互影響。主要教室模型只會被有標記的數據訓練,并且教室模型需要根據所有的無標簽輸入的視角生成為標簽。學生被按照跟教師產生一致性預測的方式被訓練。

其中,給定一個編碼器eee,一個教師模塊tttKKK個學生模塊sis_{i}si?i∈[0,K]i\in{[0,K]}i[0,K],每一個學生都收到了一個輸入的有限視角。損失函數如下:
L=Lu+Ls=1∣Du∣∑x∈Du∑i=1KdMSE(t(e(x)),si(e(x)))+1∣Dl∣∑x,y∈DlH(t(e(x)),y)L=L_u+L_s=\frac{1}{|D_u|}\sum_{x\in{D_{u}}}\sum_{i=1}^K d_{MSE}(t(e(x)),s_i(e(x)))+\frac{1}{|D_l|}\sum_{x,y\in{D_l}}H(t(e(x)),y) L=Lu?+Ls?=Du?1?xDu??i=1K?dMSE?(t(e(x)),si?(e(x)))+Dl?1?x,yDl??H(t(e(x)),y)
其中LuL_uLu?是無監督學習損失,LsL_sLs?是有監督學習損失。

交叉視圖訓練通過改進編碼器的表示學習來利用未標記的數據。學生預測模塊可以從教師模塊的預測中學習,因為該主要模塊對輸入有更好的、不受限制的視圖。當學生模塊學習在輸入視圖受限的情況下做出準確預測時,他們提高了編碼器生成的表示的質量,這反過來又改進了使用相同共享表示的完整模型。

總結

以上是生活随笔為你收集整理的半监督学习笔记(四):熵最小化、代理变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。