目錄
前言
傳統的K-means聚類算法,對於維度高、數量級大的數據集不能很好地執行聚類,甚至無法得到有效的聚類效果,在實際場景中難以應用。針對上述問題,2016年Deep Embedding Clustering (DEC)[1]深度聚類算法被提出,從而引領了深度聚類算法研究的熱潮。
DEC本質上可以看作是一個自動編碼器預訓練獲取低維的特征表示+無監督學習微調的一個過程。其中,預訓練模型的設計和選擇對下游聚類任務的性能影響很大(PS:關於DEC的細節,以及前期的相關研究動態,建議參考:深度聚類算法淺談)。針對該問題,近兩年的研究采用了自監督的學習策略,即采用聚類得到的偽標簽來指導深度學習網絡學習一個更加具有判別性的特征表示,從而擺脫模型對預訓練模型的過度依賴。此外,樓主通過已有的論文閱讀,發現在深度聚類算法的研究領域,其發展趨勢由時間段可以簡單地划分為以下三點:
1) 以DEC[1]為代表的預訓練+微調的模型
2) 以聚類算法得到偽代碼指導深度神經網絡進行學習的自監督學習[2] (ECCV, 2018, Deep Cluster)的模型
3) 借助預訓練表示聚類獲取偽代碼,采用設計的交叉熵損失執行自監督聚類選取確定性標簽,最后依據確定性標簽指導自監督分類器執行半自監督學習[3][4]的模型
此外,在圖像領域的深度聚類算法,深度神經網絡的模型選擇,數據增強策略的選取,都會對下游的聚類任務性能產生較大的影響[5]。如果簡單地將深度聚類算法遷移到一般化的數據集上執行聚類,需要結合具體問題做具體的策略優化,否則其聚類性能並不能勝任K-means。
本文主要記錄自己最近閱讀的五篇有關深度聚類文章,每篇文章都有提供源碼,如有同學感興趣, 可以自行去下載相關源碼分析。
1 基於自標簽的協同聚類和表示學習(ICLR, 2020)
文章審稿打分:3分(Weak Reject),8分(Accept),8分(Accept)
1.1 動機
基於深度神經網絡的聚類和表示學習是當前的主流方法。然而,簡單地聯合聚類和表示學習會導致最終產生退化的結果。
本文研究的基礎主要是2018年發表在ECCV上的Deep Cluster模型[2]。該模型最小化分類交叉熵並結合K-means算法提供的偽標簽進行聯合表示和聚類,然而該過程由於K-means提供的偽標簽存在較多錯誤標簽的問題,會導致模型最終產生一個退化的解決方案,並且很多數據點容易被划分到同一個簇中。
1.2 貢獻
為了解決簡單地采用聯合聚類和表示學習導致下游任務性能退化的問題,本文提出了最大化標簽和輸入數據指引之間信息的方法(下面給給出論文的理論證明和說明)。該方法的主要貢獻:
1) 證明了將最大化標簽和輸入數據指引之間信息引入到標准交叉熵最小化問題中,可以被視為一個最優運輸問題,並且能夠在百萬級圖像數據中高效地運行;
2) 與ECCV2018文章中單獨最小化交叉熵相比,本文通過最大化標簽和輸入數據指引之間信息,能夠避免下游任務產生退化解;
3) 相比ECCV2018同時執行無監督分類和K-means聚類, 導致沒有一個明確定義的優化目標,本文方法通過同時優化自標簽和交叉熵損失為下游任務服務,能夠保證模型收斂到(局部)最優解。
該方法本質是采用最優運輸來實現偽標簽的提取(PS:而ECCV2018則是采用K-means對學習的表示執行聚類獲取偽標簽),並結合標准的交叉熵損失函數指導深度神經網絡實現對原始圖像數據的表示學習。
關於最優運輸理論的介紹建議參考:最優運輸(Optimal Transfort):從理論到填補的應用
自監督學習的標簽概率,以及其最小化的交叉熵損失函數定義如下:
然而,在完全無監督的情況下,采用公式(1)容易導致退化的解決方案,其容易將所有數據點分配給單個或者任意的標簽進行最小化處理。為了解決該問題,本條提出對偽標簽采用一個后驗分布q設定,並且為了避免在優化q的過程中出現退化的解決方案,對偽標簽進行了依據簇個數和樣本總數進行平均初始化的約束處理,具體公式和定義如下:
交叉熵損失結合偽標簽的后驗分布q執行優化時,很難進行算法的優化處理。然而,該問題可以被視為一個最優運輸問題,並且能夠被高效地解決。擬定的標簽偽分布Q,和模型執行無監督分類得到的預測結果P,我們的目標是使之無限接近,那么在這樣的情形下可以將其視為一個最優運輸問題(PS:這里的思想,有點類似DEC微調中的P和Q的分布處理)。本文通過最優運輸理論,對兩個分布P和Q的定義與推導,將上述公式3可以轉為以下公式5和6,從而變為一個純粹的最優運輸問題:
對於公式(5)的推導,細節可以看下圖的轉換:
最優運輸問題的解可以視為一個線性規划問題,也可以在多項式時間內被解決。然而,本文的實驗對象達到了百萬計的圖像數據集。針對該問題,本文參考NIPS2013年提出的熵正則化思想,采用了一種快速的Sinkhorn-Knopp算法,從而來求取合理的后驗偽標簽分布Q。結合最優運輸求取Q的問題定義如下:
通過以上的公式推導,本文通過把定義的后驗分布Q和backbone學習的交叉熵中的預測分布P聯合一起的策略,從而達到表示學習和自標簽優化的同步過程。具體步驟如下:
對上述的公式進行進一步的推導,可以得出以下結論:最大化標簽和輸入數據指引之間信息。
與單獨最小化熵相比,最大化信息避免了退化解,因為后者在標簽y和索引i之間沒有互信息。
另外,本文的主要目標是使用聚類來學習良好的數據表示Φ,所以本文還考慮一個多任務設置,其中相同的表示在幾個不同的聚類任務之間共享,這可能會捕獲不同的和互補的聚類軸。
1.3 實驗分析
本文模型的主要目的是采用聚類的手段學習一個更好的數據表示,但是其最終的下游任務並不一定是用於做聚類。由於本篇博客探討和分析聚類問題,所以此處只放出文章中做聚類的無監督分類結果,具體實驗結果如下:
由上述的實驗結果,本文提出采用最優運輸實現對定義的偽標簽分布Q和交叉熵損失中P進行優化,其在聚類性能上葯明顯優於K-means。
1.4 我的想法
本文最大的亮點在於把擬定的偽標簽分布Q和最小化無監督分類交叉熵結合了起來,並證明其為一個基本的最優運輸問題,這為深度聚類方向提供一個新的思考方向。另外,通過本文的處理,能夠有效解決簡單地采用K-means算法提供的偽標簽指導深度神經網絡執行自監督分類容易導致下游任務出現退化解的問題。
2 無標簽的圖像分類學習 (ECCV, 2020)
2.1 動機
在有監督分類任務中,通過真實標簽能夠指導CNN等backbone學習到更加具有判別性的表示。然而,在現實場景中存在大量無標記的數據。那么,我們能否在沒有真實標簽的情況下,依據圖像的語義信息進行自動分組呢?
同時,當前已有的基於端到端的深度聚類算法,通常采用預訓練+微調的思想。然而,這些方法難以避免在微調過程中受到低質量特征的影響,容易出現不平衡的簇,導致最終出現次優的聚類結果。
2.2 貢獻
為了解決當前端到端深度聚類算法容易出現次優結果的問題,本文提出了一種兩步法的無監督圖像分類算法。該方法利用了表示方法和端到端學習方法的優點,同時也解決了它們的缺點:
1) 采用一個自監督的pretext任務來獲取一個有意義的語義特征,並基於特征相似性挖掘每幅圖像的最近鄰,使得提取的語義特征更加適合語義聚類。相比之下,表征學習方法要求在學習特征表示后進行K-means聚類,這被認為會導致聚類退化。
2) 采用質量高的特征來指導聚類的學習,通過這樣處理,能夠使得聚類過程中避免基於低質量特征來只需聚類,而這樣的問題是在end-to-end方法中常見的問題。
3) 另外,本文定義一種基於軟標簽分配的交叉熵損失函數,本文將其稱為SCAN-loss,能夠有效地對每幅圖像及其鄰居數據進行分類,從而使得網絡能夠產生一致或者具有辨別性的預測結果。
SCAN-loss的定義如下:
其中X表示數據集中的樣本,k表示該樣本的最近鄰集合中的樣本。上述公式第二項的目的是為了避免Φη將所有樣本分配給單個集群。如果概率分布在集群C中是提前知道的,該項就可以被KL-divergence所替代。關於最近鄰的示例如下圖所示:
本文的算法主要分為三個步驟:
1) 采用一個pretext任務,尋找對於數據的最近鄰
2) 依據最近鄰,結合SCAN-loss執行聚類
3) 采用聚類獲取的偽標簽,選取確定性或者可信度較高的標簽執行自監督學習,從而進一步提高最終的聚類效果
具體算法的偽代碼如下:
2.3 實驗分析
采用K-means對原始的預訓練表示執行聚類,會出現簇中心不穩定的情況,表1的實驗結果可以反映出該假設:聚類的ACC標准差最大,並且為5.7。
另外,可以發現,通過采用SimCLR數據增強手段並結合SCAN-Loss能夠有效提高聚類效果。此外,雖然SCAN-Loss在某些方面和K-means有較大關聯,比如都是采用預訓練后得到的特征執行聚類。但是,本文提出的SCAN-Loss能夠避免聚類退化,即聚類可能會很不穩定的問題,如果采用K-means的簇中心進行初始化就會導致該問題。另外,本文還探討了在訓練過程中,采用不同的增強策略執行聚類的效果,實驗結果表明,采用RA執行樣本增強,能夠有效提高聚類的效果,最高可以達到87.6的ACC。另外,通過偽標簽來對聚類結果進行微調,能夠有效地進一步提高最終的聚類效果。此外,本文通過圖6表明,偽標簽指導的自訓練過程對設定的閾值參數不敏感,圖7可以最近鄰K設定為5即可達到較穩定的准確率。
此外,本文將簇的個數設定為20而不是10的時候,本文的聚類准確率仍然較高,體現出了本文聚類算法模型的穩定性。即證明了一點:本文的聚類算法模型並不需要以來原始聚類簇個數的真實信息。本文算法在CIFAR100-20采用過於聚類的簇個數,其性能提高的一個原因在於高的類內方差。(關於超類的聚類性能評價,是一個多對一的映射,其計算的細節,本文有單獨考慮和處理)
本文采用兩部法:預訓練+聚類+偽標簽執行自監督訓練,的兩階段方法,與當前的SOTA的端到端方法不一樣。
上表的結果表明,采用SCAN-loss執行聚類,其在圖像上面的聚類效果要明顯優於采用K-means執行聚類的結果。此外,通過Self-label的自監督學習能夠進一步提高最終的聚類效果。
2.4 我的想法
本文最大的亮點在於沒有一味地追求端到端的深度聚類模型,並指出了當前的端到端深度聚類模型存在無法擺脫低質量特征依賴導致最終容易出現次優結果的問題。針對上述問題,本文通過最近鄰的思想提出了SCAN-loss執行聚類,能夠有效避免直接采用K-means執行聚類導致最終出現退化解的問題。此外,通過添加Self-Labeling的自監督學習步驟,對聚類步驟中的自監督分類器執行進一步的學習優化,能夠有效提高最終的聚類效果。
3 基於語義偽標簽的圖像聚類 (arXiv, 2021)
3.1 動機
上述SCAN聚類算法中采用樣本的最近鄰來計算SCAN-loss存在以下問題:在實際的樣本空間中,並不是所有樣本的最近鄰都具有相同的語義,比如當樣本位於不同簇的邊界時,這樣的問題會變得更加嚴重,從而導致最終的聚類結果產生誤差累積。具體的局部樣本空間的語義不一致可以參考下圖:
此外,SCAN算法的性能隨着交替的運行,導致邊界的最近鄰樣本在聚類的交替過程中產生誤差累積的問題,並且其在大型數據的在線聚類過程中會受到性能的限制。
3.2 貢獻
針對SCAN算法容易出現語義不一致的最近鄰樣本,導致聚類結果產生誤差累積的問題,本文提出了一種基於圖像語義偽標簽的圖像聚類框架(SPICE)。該框架的主要貢獻如下:
1) 設計了一種級聯softmax交叉熵損失函數,能夠有效增強模型選取偽標簽的可信度,從而提高模型的聚類性能;
2) 結合圖像的弱增強和強增強處理,結合分類交叉熵損失函數來訓練分類網絡,並通過偽標簽來協調樣本語義在聚類過程中的差異以及實例樣本之間的相似性;
3) 設計了一種偽標簽獲取方法,在網絡模型的訓練過程中能夠利用語義相似度度量來減少樣本在邊界附近的語義不一致性;
4) 設計的局部一致性原則通過將原聚類問題轉化為半監督學習范式,能夠有效減少語義的不一致性,從而提高最終的聚類性能。
擬議的SPICE框架包括三個培訓階段。
首先,訓練了一個無監督的表征學習模型,該模型是在SCAN中使用的;
然后,凍結預訓練模型的CNN主干,分別進行SPICE-Self和SPICE-Semi兩個階段提取嵌入特征,如上圖所示。
SPICE-Self有三個分支:第一個分支以原始圖像為輸入輸出嵌入特征,第二個分支以弱變換圖像為輸入輸出語義標簽,第三個分支以強變換圖像為輸入預測聚類標簽。給定前兩個分支的結果,基於語義相似度的偽標記算法生成偽標記來監督第三個分支。在實踐中,SPICE-Self只需要訓練第三分支的輕量級分類頭。
SPICE-Semi首先判斷一組可靠的基於本地語義一致性偽標簽,比如SPICE-Self得到的聚類結果, 然后采用半監督學習重新訓練分類模型cls Model。
最后,訓練后的分類模型能夠預測含標簽圖像和不含標簽圖像樣本的聚類標簽。
相比SCAN簡單地選取每個樣本的最近鄰語義樣本處理方法,本文提出在一個batchsize里面選取其中大於給定閾值的最自信的前i個樣本作為偽標簽。其處理原理如下:
注意,在不同的集群之間可能存在重疊的樣本(PS:具體可以見上圖的c中的toy example),所以有兩種方法來處理這些標簽:
1) 一個是重疊分配,一個樣本可能有一個以上的類標簽,如圖中黃色和紅色的圓圈所示。
2) 另一種是非重疊分配,即所有樣本只有一個簇標簽,如盤子紅色圓圈所示。
本文實驗表明,如第4.5.2小節所分析,發現重疊賦值更好。
本文提出的級聯softmax交叉熵損失函數其出發點是鼓勵模型輸出有信心的預測,從而有助於對未標記的數據學習,具體定義如下:
這個級聯softmax交叉熵損失函數的定義和第一篇ICLR中定義的后驗分布P結合交叉熵損失函數的公式很像,具體區別待探究(PS:本文並沒有應用和分析第一篇ICLR2020文章)。
此外,本文通過選取局部中部分可靠的偽標簽樣本的最近鄰,來緩解局部樣本語義不一致的問題。其中局部一致性的定義如下:
在半自監督的學習模型中,采用SPICE-self步驟中獲取的可信度高的偽標簽,結合未提供偽標簽的數據進行半監督學習,並結合數據增強和分類交叉熵損失函數,實現對clshead的學習。其中采用的半監督交叉熵損失函數定義如下:
3.3 實驗分析
通過上述的實驗結果可以發現,本文結合確定性高的最近鄰樣本選取策略以及半自監督學習策略,可以有效提高模型的聚類效果,能夠比SCAN聚類方法高大約20%,比最新的AAAI2021文章的CC模型高10%。
3.4 我的想法
本文是arXiv上發布的最新論文,目前應該還沒有被相關會議或者期刊接收。本文主要是解決SCAN算法中最近鄰樣本容易出現不一致語義的問題,並且在實驗效果上要比SCAN算法強很多。然而,本文的寫作不是很清晰,特別是摘要的寫作感覺有點長,關鍵的問題分析有點模糊不清,特別是創新點的表述不清晰。此外,本文的模型看上去好復雜,具體的可移植性待探究。
最后,本文的確定性標簽的選擇思路可以參考和借鑒,另外其級聯softmax交叉熵損失函數可以借鑒和學習。
4 對比聚類 (AAAI, 2021)
4.1 動機
Deep Cluster (ECCV, 2018)采用K-means對每次epoch結束后的表述執行聚類,然后利用聚類得到的偽標簽來指導深度神經網絡的參數更新。這種交替學習方法會在表示學習和聚類之間的交替過程中積累誤差,導致聚類性能次優。此外,上述方法只能處理離線任務,即聚類是基於整個數據集的,這限制了它們在大規模在線學習場景中的應用。
4.2 貢獻
針對Deep Cluster模型交替優化導致聚類性能次優的問題,本文提出了名為對比聚類(CC)的單階段在線聚類方法,它明確地執行實例級和集群級的對比學習。具體地說,對於給定的數據集,通過數據擴充來構造正實例對和負實例對,然后投影到特征空間中。通過同時優化實例級和集群級的對比損失,該模型以端到端方式聯合學習表示和集群分配。本文的具體貢獻可以分為以下三點:
1) 我們為當前的深度聚類研究提供了一種新的見解,即實例表示和聚類類別預測分別對應於可學習特征矩陣的行和列。因此,深度聚類可以優雅地統一到表示學習的框架中;
2) 據我們所知,這可能是聚類特定對比學習的第一個工作。與現有的對比學習研究不同,本文提出的方法不僅在實例層次上進行對比學習,而且在聚類層次上進行對比學習。實驗證明,這種雙重對比學習框架可以產生聚類偏好表征;
3) 該模型采用單階段、端到端方式,只需要批量優化,可應用於大規模在線場景。
本文的模型的對比思想如下圖1所示:
本文模型的整體架構圖如下:
實例級的對比損失計算原理如下:
聚類層次的對比損失計算方式和實例級差不多,區別在於把行數據換成了列數據,並添加了熵偏項策略,具體細節可以參考原文。
個人思考:本文最大參考價值在於說明了在深度聚類研究領域,圖像的數據增強和獲取表示的backbone對下游的聚類任務性能會有很大的影響。此外,對比學習首次應用到深度聚類領域,也說明了對比學習思想在積極交替優化聚類模型中能夠有效緩解誤差累積的問題。
5 通過分區最大化信度的深度語義聚類 (CVPR, 2020)
5.1 動機
現有的深度聚類方法通常依賴於基於樣本間關系或自估計偽標記的局部學習約束方法,
這不可避免地受到的分布在鄰域的誤差影響,並在訓練過程中產生誤差傳播的累積問題。雖然使用可學習表示進行聚類分析可能有利於對無標記數據進行聚類,但如何提高這些聚類的語義合理性仍然是一個挑戰(PS:此處的動機和第三篇arXiv2021的動機類似,但是本文是2020年發表,另外發現arXiv2021文章引用了該篇文章,並且在實驗中重點對比了該文提出的模型)。具體的領域誤差問題如下圖:
如上圖所示,DEC這些方法面臨着訓練過程中由於鄰域估計不一致而導致的更嚴重的誤差傳播累積問題。此外,由於訓練監督和聚類目標之間的模糊聯系,當缺乏全局解決方案級指導時,這類方法往往產生語義上不太可信的聚類解決方案。
5.2 貢獻
為了避免領域不確定性導致聚類的誤差累積問題,引入了一種新的深度聚類方法,稱為分區置信度最大化(PICA),通過從所有可能的簇分離方案中學習最可靠的聚類方案來解決這個問題。本文的貢獻主要分為以下三點:
1) 提出了通過最大分割置信來學習語義上最合理的聚類解的思想,將經典的最大邊際聚類思想擴展到深度學習范式。該方法對局部樣本間關系和聚類簇結果作為標記沒有很強的假設,這通常會導致誤差傳播和次優的聚類解。
2) 引入了一種新的深度聚類方法,稱為分區置信度最大化(PICA)。PICA是建立在一個新引入的划分不確定性指標的基礎上,該指標設計得很優雅,可以量化聚類解決方案的全局置信度。
3)引入分割不確定性指數的隨機近似,將其與目標圖像的整個集合解耦,從而可以方便地采用標准的小批量模型訓練。
本文的模型如下圖:
理想情況下,集群的所有樣本將共享相同的目標類標簽。也就是說,本文模型的目標是直接從原始數據樣本中發現潛在的語義類決策邊界(PS:即簇中心)。
另外,在聚類中,通常出現將大部分樣本分配到少數的聚類中。為了避免這種情況,本文引入了一個額外的約束,使簇大小分布的負熵最小化。該策略本人在好幾篇文章中都有看到這樣的處理機制,應該可以作為聚類優化挑戰的一個策略。具體的負熵最小化的策略如下:
個人思考:本文采用余弦相似度計算ASV和PUI的代碼和思想,以及其在聚類過程中的應用可以借鑒和學習。另外,可以嘗試采用本文的思想,結合采用余弦相似度來衡量和計算的思路,去思考如何選取確定性較大的標簽。另外,本文的寫作真的是有點費解,並且摘要寫的太過專業具體化,很難讓讀者看懂。
參考文獻
[1] J. Xie, R. Girshick, and A. Farhadi, “Unsupervised Deep Embedding for Clustering Analysis,” arXiv:1511.06335 [cs], May 2016, Accessed: May 18, 2021. [Online]. Available: http://arxiv.org/abs/1511.06335
[2] M. Caron, P. Bojanowski, A. Joulin, and M. Douze, “Deep Clustering for Unsupervised Learning of Visual Features,” arXiv:1807.05520 [cs], Mar. 2019, Accessed: May 18, 2021. [Online]. Available: http://arxiv.org/abs/1807.05520
[3] W. Van Gansbeke, S. Vandenhende, S. Georgoulis, M. Proesmans, and L. Van Gool, “SCAN: Learning to Classify Images without Labels,” arXiv:2005.12320 [cs], Jul. 2020, Accessed: May 16, 2021. [Online]. Available: http://arxiv.org/abs/2005.12320
[4] C. Niu and G. Wang, “SPICE: Semantic Pseudo-labeling for Image Clustering,” arXiv:2103.09382 [cs], Mar. 2021, Accessed: May 16, 2021. [Online]. Available: http://arxiv.org/abs/2103.09382
[5] Y. Li, P. Hu, Z. Liu, D. Peng, J. T. Zhou, and X. Peng, “Contrastive Clustering,” arXiv:2009.09687 [cs, stat], Sep. 2020, Accessed: May 16, 2021. [Online]. Available: http://arxiv.org/abs/2009.09687