1. 程式人生 > >【論文閱讀】Deep Adversarial Subspace Clustering

【論文閱讀】Deep Adversarial Subspace Clustering

導讀:

  本文為CVPR2018論文《Deep Adversarial Subspace Clustering》的閱讀總結。目的是做聚類,方法是DASC=DSC(Deep Subspace Clustering)+GAN(Generative Adversarial Networks)。本文從以下四個方面來對論文做個簡要整理:

  背景:簡要介紹與本文密切相關的基礎原理,DSC,GAN。

  方法:介紹論文使用的方法和細節。

  實驗:實驗結果和簡要分析。

  總結:論文主要特色和個人體會。

一、背景

  論文方法DASC(深度對抗聚類)是基於DSC(深度子空間聚類)和GAN(生成對抗網路)的,所以,在介紹論文方法之前,對DSC和GAN做個簡要介紹。

  1.DSC

  1)原理(LRR)

  首先要明確的是,整個論文的大方向是做聚類。做聚類以往已經有非常多的方法,最近幾年比較流行也即DSC所採用的理論基石是低秩表示(LRR)。

  LRR理論基本思想是,對於一個數據(如影象或影象特徵等)可以表示為乾淨資料部分和噪聲部分,其中乾淨資料部分又可以採用字典和係數表示的形式,此時要求乾淨資料的係數表示部分是低秩的,噪聲部分是稀疏的。此時,如果用資料本身作為字典,那麼其係數部分就可以描述原始資料間的相似度。用數學公式表示如下:

  

  其中,X=[x1,x2,...xn]∈Rd*n表示原始輸入資料(一般是影象的特徵),Z∈Rn*n表示係數部分,E∈Rd*n

表示噪聲。

  那麼這個式子與聚類有什麼關係呢?關係是,假設待聚類的資料分佈於多個線性子空間,那麼通過求解上述式子的最小化問題,我們可以得到資料X間的相似度矩陣Z,有了相似度矩陣我們就可以對輸入資料X=[x1,x2,...xn]進行聚類。

  因此,實現對多個d維資料xi的聚類,LRR方法採用的方法是,將xi按列組合成X,然後通過優化上述式子,得到Z,最後將Z輸入到譜聚類演算法中,就可以得到最終的聚類結果。

  2)方法(網路)

  一般來說,對於影象做聚類,我們採用的方法是,對影象提取特徵,然後得到特徵表示,組成X,然後採用LRR原理進行聚類。但是這種先提取特徵再進行聚類的缺點是一個兩階段的過程,兩者不能互相促進。

  因此DSC將特徵提取和相似度矩陣的學習融入到一個網路中進行統一學習。重新定義符號表示,用X表示輸入資料,Z表示特徵,θ表示待學習的引數相似度矩陣,那麼DSC的學習是最優化下面的式子:

  min ||Z-Zθ||F+λ||θ||F,以求得引數Z和θ。

  網路整體結構如下:

  

  上圖所示,輸入影象X,經過兩層編碼器進行編碼(即特徵轉換),得到特徵表示Z,然後將Z reshape成一個列向量,然後與後面變數Zθ進行全連線,再將Zθ重新reshape成與前面相對應的大小,再經過兩個解碼層,得到恢復出的影象。即,原圖->編碼得特徵->解碼得原圖。

  3)設計

  DSC重點主要是Loss的設計,Loss由重建損失、引數正則損失、自表示損失幾部分組成:

  

  2.GAN

  1)原理

  

  GAN由一個生成器和一個判別器組成。其中,生成器負責生成資料,從真實的資料中生成假的資料,期望假的資料越逼真越好。判別器負責判斷接收到的資料是真實的還是產生的,即一個二分類器,期望效果比較好,也就是說真實的資料判別為真的概率更大,假的資料判別為真的概率更小。所以,在生成器期望生成的資料逼真到能夠欺騙判別器而判別器期望判別能力強的情況下,通過兩者的博弈,來達到生成資料能夠模擬真實資料的效果。

  2)設計

  實現GAN主要是通過Loss的設計,D的輸出為資料被判定為真實資料的概率,整體Loss如下:

  

  優化D:

  優化G:

  對於上述Loss的解釋是,優化判別器D時,希望D判別能力強,那麼就希望真實資料被判定為真的概率大,所以應該比較大,應該比較小,所以是最大化V(D,G)。優化產生器時,期望偽造資料比較真,那麼就希望Z為偽造品時,D(G(Z))比較大,也即比較小。

  更多關於GAN的解釋可見其他部落格,這裡不做更詳細的解釋。

  3)作用

  使得偽造的資料足夠逼真,比如從噪聲資料,逐步學習,得到人臉資料等。

  3.DASC

  上面介紹完了DAC和GAN,我們知道DSC已經可以做聚類了,而且聚類算比較好的了,那麼還能不能再提高呢?答案是可以。

  我們知道,DSC是一步一步訓練得到Z來做聚類,其中有個問題是,我們並不確定迭代到多少次效果比較好,也不能確定下次迭代就比上次得到的Z好,那麼有沒有什麼方法能夠指導無監督網路DSC的學習,讓網路的訓練每次都朝著效果更好的方向訓練呢?

  這就是DASC所做的工作了,基礎思想是,用GAN來指導DSC的學習,使其每次都朝著效果更好的方向發展。

二、方法

  本章介紹DASC的方法,從原理、生成器、判別器、訓練這四個部分分別進行探討。

  1)原理

  用GAN指導DSC的學習,就需要明確下面兩個問題。

  一是,把處於同一子空間的資料,進行線性組合得到新的資料,那麼新的資料依然處於該子空間。反之,處於不同子空間的資料,進行線性組合得到的資料跟原始資料處在不同子空間。(可以從下圖看出)

  

  二是,處在同一子空間的資料,判別器(即分類器)分辨不出是真實資料還是偽造的資料,即輸出概率為0.5。

  通過一二知,聚類效果比較好->新資料依然處於該子空間->判別器無法判別真假。即,判別器越無法判斷真假資料,說明聚類效果越好。

  所以,我們要做的任務就是,通過生成器得到正(真實資料)次(線性組合得到的偽造資料)品,輸入到判別器中,經過對抗學習,得到更好的相似度矩陣θ和特徵表達Z,從而來得到最終的聚類結果。

  

  其中,生成器G包括DSC和正次品取樣層。下面的DSC得到中間聚類結果後,將Z輸入給取樣層,取樣層得到正次品輸入給判別器D。

  2)生成器

  生成器的操作步驟是:

  11)聚類得到Ci和特徵表示zi

  22)計算類Ci中zi到相對應的子空間Si的投影殘差Lr。其中Si是由投影矩陣Ui來表示的,Ui(或者說Si)是判別器學習得到的,與生成器的學習無關。

  

  33)選擇投影殘差Lr最小的80%~90%的Ci中的資料作為正品。(因為經過DSC大部分的資料已經是正確的。這裡還可以起到去噪的作用)

  44)隨機線性組合計算得到與正品同樣數量的次品。其中α來於[0-1]中的隨機數。

  

  55)將正次品輸給判別器D。

  

  3)判別器

  11)學習的引數

  學習的引數為子投影矩陣Ui(代表子空間Si),用子空間來判別是正品還是次品。原則是,投影殘差Lr越小,說明是正品(文章中說能量越小)的概率越大,對判別器來說Loss的輸出也應該越小。反之Loss就越大。所以投影殘差Lr即與Loss成反比。

  

  22)優化

  經過上述分析,直接給出Loss優化如下。

      

              

  

  33)細節

  投影矩陣Ui和類簇Ci並不是一一對應的關係,因為每次更新都需要找一下是否子空間投影矩陣是否有變化,所以需要Ci進行競爭Ui。競爭的方式是,對每個類簇計算平均投影殘差,然後選擇具有最小平均殘差的Ui作為自己的投影矩陣。如果該Ui具有更小平均投影殘差的類簇,那麼原類簇則採用對Z進行QR分解來得到自己的Ui

  判別器採用兩層全連線感知機。

  4)訓練

  11)DSC預訓練初始化DASC網路。

  22)用Zi的QR分解初始化Ui

  33)聯合交替更新DASC中的D和G,其中D更新五次,G更新一次。

三、實驗

  直接貼結果吧。

  

  

  

  

四、總結

  1.該文章採用了DSC+GAN的方式,是GAN在無監督聚類上的首次成功運用。

  2.文章對無監督的聚類進行了定性的評估:線性組合在同一子空間(不能被判別器正確識別)說明聚類效果好。

  3.文章對無監督聚類進行了定量的評估:據子空間的投影殘差越小說明屬於真實資料的概率越大。

  4.在寫作方面,文章採用比較新穎刁鑽的方式。比如,把投影距離稱為能量大小,把線性組合稱為新子空間取樣。換湯不換藥,還顯得很好喝,就比較騷了。