模型壓縮經典解讀:解決訓練資料問題,無需資料的神經網路壓縮技術(四)

語言: CN / TW / HK

↑ 點選 藍字  關注極市平臺

作者丨科技猛獸

編輯丨極市平臺

極市導讀

目前很少有工作關注在無資料情況下的網路壓縮,然而,這些方法得到的壓縮後的網路準確率下降很多,這是因為這些方法沒有利用待壓縮網路的資訊。本系列繼續介紹2種無需訓練資料的網路壓縮方法,分別是面向更加魯棒和多樣化的的無訓練資料模型壓縮以及一種新的無需原始訓練資料的對抗蒸餾方式。   >> 加入極市CV技術交流群,走在計算機視覺的最前沿

目錄

1 更加魯棒和多樣化的無訓練資料模型壓縮技術 (ICASSP 2021)

(來自東北大學)

1.1 RDSKD 原理分析

1.1.1 DAFL 方法回顧:通過 GAN 生成無標註的訓練圖片

1.1.2 更加魯棒和多樣化的 DAFL 方法

1.1.3 實驗結果

2 無需原始訓練資料的對抗蒸餾技術 (CVPR 2020)

(來自浙江大學,阿里巴巴)

2.1 DFAD 原理分析

2.1.1 Data-Free 模型壓縮的方法分類

2.1.2 DFAD 對抗蒸餾方法

2.1.3 實驗結果

上篇:

模型壓縮經典解讀:解決訓練資料問題,無需資料的神經網路壓縮技術

模型壓縮經典解讀:解決訓練資料問題,無需資料的神經網路壓縮技術...(二)

模型壓縮經典解讀:解決訓練資料問題,無需資料的神經網路壓縮技術(三)

隨著深度學習技術的發展,深度神經網路 (CNN) 已經被成功的應用於許多實際任務中 (例如,圖片分類、物體檢測、語音識別等)。由於CNN需要巨大的計算資源,為了將它直接應用到手機、攝像頭等小型移動裝置上,許多神經網路的壓縮和加速演算法被提出。現在的問題是這些神經網路的壓縮和加速演算法都有一個基本的假設,那就是:訓練資料是可獲得的。

但是實際情況是:在現實中的應用上,由於隱私因素的制約或者傳輸條件的限制,我們無法獲得訓練資料。比如:在醫學影象場景中,使用者不想讓自己的照片 (資料) 被洩露;訓練資料太多沒辦法傳到雲端,甚至是儲存這些巨大量的資料集對於小型企業都是個難題;所以,使用常規的模型壓縮辦法在這些限制下無法被使用。

甚至,預訓練網路的基本架構和引數都是未知的,就像一個黑盒,只能通過輸入來獲取輸出資訊。所以剪枝,量化等等常用的模型壓縮方法就更無從下手了。

這個系列考慮的問題是:我們在做這些模型壓縮、加速、搜尋的時候,如何去保護使用者的隱私。學術界可能不是很關心這個問題,因為很多訓好的神經網路都是採用了一些公開的資料集。但在實際應用中,涉及到隱私的端側 App 就會非常多,包括人臉解鎖、語音助手、指紋識別、一些娛樂 APP 的應用,基本上都需要使用者實時的採集一些自己的隱私資料去完成訓練。如果我們想要獲取這些隱私資料,使用者很可能會感到焦慮。比如之前比較火的一鍵換臉的軟體,面臨的隱私問題也受到很大的關注度。

但是如果使用者在本地訓出的模型,比如人臉識別解鎖,體驗不好、或者人臉解鎖比較慢,想讓我們把他的AI模型做一個速度優化的時候,但他不想給我們人臉,只想把他自己的訓好的AI應用給我們,這種情況下怎麼去做一些模型壓縮和加速?

目前很少有工作關注在無資料情況下的網路壓縮,然而,這些方法得到的壓縮後的網路準確率下降很多,這是因為這些方法沒有利用待壓縮網路的資訊。為了解決這一問題,本文繼續介紹2種無需訓練資料的網路壓縮方法,分別是 面向更加魯棒和多樣化的的無訓練資料模型壓縮 以及 一種新的無需原始訓練資料的對抗蒸餾方式

1 更加魯棒和多樣化的無訓練資料模型壓縮技術 (ICASSP 2021)

論文名稱:Robustness and Diversity Seeking Data-Free Knowledge Distillation

論文地址:

https://arxiv.org/pdf/2011.03749.pdf

1.1 RDSKD 原理分析:

這篇 RDSKD 來自東南大學,所基於的 baseline 是華為諾亞方舟實驗室於 ICCV 2019 提出了在無資料情況下的網路蒸餾方法 DAFL,是 DAFL 演算法的改進版本。

它的特點是:

  • 待壓縮網路看作一個固定的判別器。

  • 用生成器輸出的生成圖片代替訓練資料集進行訓練。

  • 設計了一系列的損失函式來訓練生成器和學生網路,目的是生成更加真實,類別多樣性和樣本間多樣性更高的訓練資料。

  • 使用生成資料結合蒸餾演算法得到壓縮後的網路。

1.1.1 DAFL 方法回顧:通過 GAN 生成無標註的訓練圖片

知識蒸餾方法獲得學生網路

蒸餾演算法最早由Hinton提出,待壓縮網路 (教師網路) 為一個具有高準確率但引數很多的神經網路,初始化一個引數較少的學生網路,通過讓學生網路的輸出和教師網路相同,學生網路的準確率在教師的指導下得到提高。

從結構和引數的角度看,如上文所述,待壓縮的大網路的結構和引數都是未知的,這就使得我們無法通過剪枝或者量化等經典的神經網路壓縮方法進行模型壓縮,我們唯一已知的就是待壓縮的大網路的輸入和輸出介面。

從訓練資料的角度看,DAFL 的訓練樣本是由生成器生成的,是沒有標籤的,所以沒法通過有監督的方式學習學生網路,基於這兩點,作者引入了教師學生網路學習正規化,利用蒸餾演算法實現利用未標註生成樣本對黑盒網路的壓縮。

令和 分別代表教師和學生網路的輸出,作者使用 KL 距離來使得學生網路的輸出符合教師網路的輸出,具體的損失函式為:

式中,和 分別代表教師和學生網路的輸出。通過引入教師學生演算法,作者解決了生成圖片沒有標籤的問題,並且可以在待壓縮網路結構未知的情況下對其進行壓縮。

通過 GAN 生成無標註的訓練圖片

從訓練資料的角度看,在整個網路壓縮的過程中,我們都沒有任何給定的訓練資料,在此情況下,神經網路的壓縮變得十分困難。所以作者通過 GAN 來輸出一些無標註的訓練圖片,以便於神經網路的壓縮。生成對抗網路 (GAN) 是一種可以生成資料的方法,包含生成網路與判別網路 ,生成網路希望輸出和真實資料類似的圖片來騙過判別器,判別網路通過判別生成圖片和真實圖片的真偽來幫助生成網路訓練。

具體而言,給定一個任意的噪聲向量 (noise vector),生成器 會把它對映成虛假的圖片 ,即 。另一方面,判別器 要區分來的一張圖片是真實的 還是生成器偽造的 ,所以,對於 GAN 而言,它的目標函式可以寫成:

這個目標函式的優化方法是。就是每輪優化分為2步,第1步是通過 gradient ascent 優化 的引數,第2步是通過 gradient descent 優化 的引數。然而,我們會發現傳統的 GAN 需要基於真實資料 來訓練判別器,這對於我們來說是無法進行的。所以基於傳統的 GAN 訓練方法 2 式是不行的。

許多研究表明,訓練好的判別器具有提取影象特徵的能力,提取到的特徵可以直接用於分類任務,所以,由於待壓縮網路使用真實圖片進行訓練,也同樣具有提取特徵的能力,從而具有一定的分辨影象真假的能力。而且這個待壓縮網路我們是已有的。於是,我們把待壓縮網路作為一個固定的判別器 ,以此來訓練我們的生成網路 。

首先,待壓縮網路作為一個固定的判別器,我們就認為它是已經訓練好引數的判別器 ,我們利用它來訓練生成器的基本思想是下式:

式中,就是已經訓練好引數的判別器,生成器 的引數經過3式持續優化使得 逐漸上升,代表著生成器的輸出越來越能夠騙過判別器。

但是,在傳統GAN中,傳統的判別器的輸出是判定圖片是否真假 (Real or Fake?) ,只要讓生成網路生成在判別器中分類為真的圖片即可訓練,但是,我們的待壓縮網路為分類網路,其輸出是分類結果 (1-num_classes) ,所以 待壓縮網路無法直接作為一個固定的判別器 。因此需要重新設計生成網路的目標。通過觀察真實圖片在分類網路的響應,作者提出了以下損失函式。

1) 偽標籤交叉熵損失

在影象分類任務中,神經網路的訓練採用的是交叉熵損失函式,在訓練完成後,真實圖片在網路中的輸出將會是一個one-hot的向量,即分類類別對應的輸出為1,其他的輸出為0。於是,我們希望生成圖片也具有類似的性質。給定一組任意的噪聲向量,它們通過生成器 之後得到的生成圖片是 ,這裡 。

現在把這些生成圖片輸入給待壓縮的網路,通過 得到輸出 ,預測標籤就是通過 計算得到 。定義偽標籤交叉熵損失為:

其中就是標準的交叉熵函式,由於生成圖片並沒有一個真實的標籤,我們直接將其輸出最大值對應的標籤設定為它的偽標籤。偽標籤交叉熵損失的意思就是對於一張生成的圖片,它的標籤就按照教師網路的輸出來決定,這是訓練生成器 的第1個損失。

2) 資訊熵損失函式

為了讓神經網路更好的訓練,真實的訓練資料對於每個類別的樣本數目通常都保持一致,例如MNIST每個類別都含有 6000 張圖片。於是,為了讓生成網路產生各個類別樣本的概率基本相同,作者引入資訊熵,資訊熵是針對一個概率分佈而言的。假設現在有概率分佈,概率分佈 的資訊熵的計算方法就是:

概率分佈越均勻,資訊熵 就越大。極限情況當 時,資訊熵 取極大值 。所以資訊熵損失函式定義為:

其中為標準的資訊熵,資訊熵的值越大,對於生成的一組樣本經過待壓縮教師網路的輸出特徵 來講,每個類別的數目就越平均,從而保證了生成樣本的類別平均。

1.1.2 更加魯棒和多樣化的 DAFL 方法

DAFL 方法的問題是對超引數的選擇很敏感,幾個損失函式, , 和蒸餾的損失函式 的超引數需要仔細調節才能夠訓練出有效的 GAN 模型。雖然在特定環境下有效,但 DAFL 對超引數選擇很敏感,甚至可能無法收斂。

根據上文描述可知,DAFL 的損失函式One-hot Loss設計的目的是提高生成的樣本真實性,資訊熵損失 的目的是提高不同類別樣本的多樣性。One-hot Loss會使得教師模型的輸出比較 "sharp",也就是接近獨熱編碼。資訊熵損失 會使得教師模型的輸出比較 "smooth",也就是遠離獨熱編碼。 這些相互衝突的目標導致訓練損失的高度波動,導致DAFL的訓練不穩定

本文作者通過精心設計一些損失函式以解決這個問題。根據本文作者的經驗觀察,DAFL 生成的樣本在每個類中都太相似了。這類似於 GAN 中的模式坍塌問題。可以類似於 GAN 模型增加一個 mode seeking regularizer[1] 來解決。受此啟發,作者提出一個新的 loss 來增加類內生成樣本的豐富度。

3) 多樣性導向的正則化損失函式

提高生成樣本的多樣性對於學生模型的訓練至關重要。為了防止生成的樣本彼此過於相似,類似於 GAN 模型增加一個 mode seeking regularizer[1] 來解決:

所以資訊熵損失函式定義為:

其中為教師模型。

對於兩個 latent code和 ,希望在和 生成的圖片教師模型輸出相似的同時,儘量拉開 和 的距離。

損失函式部分對應程式碼 (來自作者官方 github):

for epoch in range(args.n_epochs):
    for i in range(120):
        generator.train()  # have effect
        z1 = Variable(torch.randn(int(args.batch_size/2), args.latent_dim)).to(device)
        z2 = Variable(torch.randn(int(args.batch_size/2), args.latent_dim)).to(device)
        z = torch.cat((z1, z2), 0)
        optimizer_G.zero_grad()
        gen_imgs, state_G = generator(z)
        gen_imgs1, gen_imgs2 = torch.split(gen_imgs, z1.size(0), dim=0)
        outputs_T1, features_T1, *activations_T1 = teacher(gen_imgs1, out_feature=True, out_activation=True)
        outputs_T2, features_T2, *activations_T2 = teacher(gen_imgs2, out_feature=True, out_activation=True)

        outputs_T = torch.cat((outputs_T1, outputs_T2))

        #  one-hot loss
        pred = outputs_T.data.max(1)[1]
        loss_one_hot = criterion(outputs_T, pred)

        # information entropy loss
        mean_softmax_T = torch.nn.functional.softmax(outputs_T, dim=1).mean(dim=0)
        loss_information_entropy = (mean_softmax_T * torch.log(mean_softmax_T)).sum()

        softmax_o_T1 = torch.nn.functional.softmax(outputs_T1, dim=1)
        softmax_o_T2 = torch.nn.functional.softmax(outputs_T2, dim=1)
        lz = torch.norm(gen_imgs2 - gen_imgs1) / torch.norm(softmax_o_T2 - softmax_o_T1)
        loss_diversity_seeking = 1 / (lz + 1 * 1e-20)
        loss = torch.exp(loss_one_hot - loss_oh_prev) + torch.exp(loss_information_entropy - loss_ie_pre) + loss_diversity_seeking

        loss.backward()
        optimizer_G.step()

        if i == 1:
            loss_oh_prev = loss_one_hot.detach()
            loss_ie_pre = loss_information_entropy.detach()
            print("[Epoch %d/%d] [loss_kd: %f] " % (epoch, args.n_epochs, loss.item()))
        with open(args.output_file, 'a') as f:
            f.write(str(epoch) + ',' + str(i) + ',' + str(loss_one_hot.item()) + ',' + str(loss_information_entropy.item()) + ','
                    + str(loss_diversity_seeking.item()) + ',' + str(loss.item()) + '\n')
            f.close()

最後,我們將這三個損失函式 (4,6,7式) 組合起來,就可以得到我們生成器總的損失函式:

式中,和 是上一個 epoch 的 和 值,使用這樣的指數形式的目的是降低超引數的敏感性,使得對超引數的選擇更加魯棒。根據指數函式的性質,當 和 的值顯著增加時,會得到很大的懲罰值,而當 和 的值減小時,指數損失函式又接近線性。通過優化以上的損失函式,我們可以持續地減小 和 。

對應程式碼:

loss = torch.exp(loss_one_hot - loss_oh_prev) + torch.exp(loss_information_entropy - loss_ie_pre) + loss_diversity_seeking

通過優化以上的損失函式,訓練得到的生成器可以和真實的樣本在待壓縮網路具有類似的響應,從而更接近真實樣本,且提高了生成資料的多樣性。

1.1.3 實驗結果

作者在MNIST、SVHN、CIFAR10三個資料集上分別進行了實驗。

GAN 的 Generator 的架構和 DAFL 保持一致,每個 epoch 固定為 120 個 iteration,不同資料集的實驗設定如下圖1所示。

圖1:RDSKD不同資料集的實驗設定

MNIST 實驗

MNIST 資料集:10類,60000 training+10000 testing。

教師模型使用 LeNet-5 ,通道數目減半作為學生模型 ( LeNet-5-HALF )。

SVHN 實驗

SVHN 資料集:10類,73257 training+26032 testing。

作者還在 SVHN 資料集上進行了實驗,使用的教師和學生模型分別為 WResNet-40-2WResNet-16-1

CIFAR 實驗

CIFAR-10 資料集:10類,50000 training+10000 testing。

作者還在 CIFAR-10 資料集上進行了實驗,使用的教師和學生模型分別為 Resnet-34Resnet-18

以上3個數據集的實驗結果如下圖2所示。顯然,RDSKD 和 DAFL 在測試準確性以及生成影象的質量和多樣性方面都比 Deep Inversion 和 ZSKD 表現得更好。一般而言,生成圖片的 IS/FID/LPIPS 分數越好,學生模型的精度越高。但是最好的 IS/FID/LPIPS 分數並不總是保證最好的學生網路。這是因為知識蒸餾需要的輸入資料不僅要求它們的真實性,還要求它們的輸出通過 KD 的可傳遞性。在 RDSKD 中,生成的樣本足夠真實,但略有失真 ,如下圖3中的 RDSKD 和 DAFL 生成的 MNIST 訓練資料。這種失真在提高 KD 效能方面起著關鍵作用。

另外,儘管 RDSKD 的學生模型最佳精度與 DAFL 相同(例如,當時,MNIST 為 0.976),但在不同的生成器學習率 下,RDSKD 比 DAFL 更穩定,這表明 RDSKD 的學習率比 DAFL 更容易調整,SVHN 資料集和 CIFAR-10 上也是如此。

圖2:3個數據集的實驗結果
圖3:RDSKD 和 DAFL 方法生成的 MNIST 訓練資料

作者同時可視化了不同方法的的值,如下圖4所示。發現當 方差較大時,測試精度較高,而 均值對學生網路的精度沒有顯著影響。本文所提出的 多樣性導向的正則化損失函式 允許生成器生成更多樣的影象,這些影象跟隨真實影象的分佈,防止過擬合,並且有助於更高的測試精度。

圖4:不同方法的蒸餾損失的值

對比實驗:

下圖4是不同 Epochs 數訓練生成器時,學生模型的精度和生成影象的 LPIPS 分數。生成器訓練不是越長越好的, 此外由於生成的影象更加多樣化,與真實資料分佈更加匹配,因此 RDSKD 在不同 Epochs 數的表現比 DAFL 表現得更好、更穩定。

圖4:不同 Epochs 數訓練生成器時,學生模型的精度和生成影象的 LPIPS 分數

下圖5描述了 RDSKD 和 DAFL 在 MNIST 上不同蒸餾溫度和生成器學習率 的比較,作者對比了 以及 這6種情況。顯然,RDSKD 對溫度的變化和學習率的變化都表現得更魯棒。

圖5:RDSKD 和 DAFL 在 MNIST 上不同蒸餾溫度和生成器學習率的比較

2 無需原始訓練資料的對抗蒸餾技術 (CVPR 2020)

論文名稱:Data-Free Adversarial Distillation

論文地址:

https://arxiv.org/pdf/1912.11006.pdf

開源地址:

https://github.com/VainF/Data-Free-Adversarial-Distillation

2.1 DFAD 原理分析:

2.1.1 Data-Free 模型壓縮的方法分類

Data-Free 模型壓縮的方法主要可以歸結為3類[2]:

  1. 噪聲優化 (Noise optimization)

  2. 資料重建 (Generative reconstruction)

  3. 對抗探索 (Adversarial exploration)

噪聲優化 (Noise optimization)方法的特點是分為2步:第一步是優化噪聲資料,使之優化成為可以拿來訓練的樣本。第二步是知識蒸餾。這種方法的典型代表是 Deep Inversion,Deep Dream,解讀如下:

模型壓縮經典解讀:解決訓練資料問題,無需資料的神經網路壓縮技術

資料重建 (Generative reconstruction)方法的特點是通過 GAN 的生成器輸入隨機噪聲,並生成訓練樣本。期間通過若干精心設計的損失函式,以教師模型為判別器來指導生成器的訓練。得到的訓練樣本同時用於知識蒸餾。這種方法的代表是 DAFL 和上一節的 RDSKD,解讀如下:

模型壓縮經典解讀:解決訓練資料問題,無需資料的神經網路壓縮技術...(下)

對抗探索 (Adversarial exploration)方法的代表就是本文 DFAD。資料重建 (Generative reconstruction) 類的 DAFL 方法的假設是 "合適的樣本通常會使教師模型的輸出可信度很高 (輸出接近獨熱編碼)"。本文作者認為這個假設不十分合理。此外,這些現有的無資料模型壓縮方法只考慮了固定的教師模型,忽略了來自學生網路的資訊。

圖6:使用者通常無法獲得預訓練模型的原始訓練資料。在這種情況下,替代資料或合成數據用於模型壓縮

2.1.2 DFAD 對抗蒸餾方法

本文提出了一種對抗蒸餾的方法,框圖如下圖7所示。

圖7:無資料對抗蒸餾

定義預訓練好的教師模型為,待優化的學生模型為 。定義一個數據生成器 用於產生訓練資料。作者把訓練資料分為2種:hard sample 和 easy sample,如上圖7所示。hard sample 就是 teacher 和 student 模型輸出的類別明顯不同的樣本,easy sample 就是 teacher 和 student 模型輸出的類別相同,但是概率分佈不同的樣本。作者通過下式來衡量 teacher 和 student 模型的 差異 (Discrepancy)

式中,是輸出的類別數,比如 CIFAR-10 就是10。我們發現作者通過教師和學生模型輸出分佈的 範數來衡量二者的差異。很明顯,hard sample 的 teacher 和 student 模型的差異更大,即有:

式中,指的是全部資料空間的均勻分佈,上式的意思是 hard sample 的 teacher 和 student 模型的差異高於平均。

接下來對抗蒸餾的想法是:

  • 學生模型通過不斷學習,使得一些 hard sample 漸漸轉變成為了 easy sample。

  • 生成器需要不斷產生一些新的 head sample。

  • 這兩個過程不斷迭代,以同時訓練生成器和學生模型。

對抗訓練過程的兩個階段: 模仿階段 (the imitation stage)生成階段 (the generation stage) ,這個過程類似於 GAN,只是 Teacher 和 Student 模型一起作為 Discriminator。

模仿階段 (the imitation stage)

the imitation stage 固定住生成器的引數,只更新 Student 模型的引數。更新的方法是儘量降低學生模型和教師模型之間的差異。那麼這種差異衡量的方式有很多種,比如早期的 KD 方法採用的是 KL Divergence 或者 MSE Loss 來衡量教師和學生模型的差異。MSE Loss 對於有資料的知識蒸餾情況是非常有效的,但是在資料是生成的的情況下,這兩種 loss 會產生 衰減的梯度,使生成器的學習失效 。因此,本文作者採用 Mean Absolute Error (MAE Loss):

採用這種 loss 之後,設學生模型的輸出是,教師模型的輸出是 ,Mean Absolute Error 對學生模型引數的梯度可以計算為:

當學生模型和教師模型十分接近時,即接近0時,梯度也不會衰減為0。

直覺上,這個階段和 KD 非常相似,但目標略有不同。在 KD 中,學生可以貪婪地從老師產生的 soft-target 中學習,因為這些目標是從真實資料中獲得的,它們包含著對特定任務有用的知識。然而,在 data-free 的設定中,我們無法訪問任何原始訓練資料。生成器合成的假樣本不保證有用,尤其是在訓練開始的時候。

生成階段 (the generation stage)

the generation stage 固定住 Student 模型的引數,只更新生成器的引數。它受到了人類學習過程的啟發,在這個過程中,基礎知識是在一開始學習的,然後通過解決更具挑戰性的問題來掌握更高階的知識。因此,在這個階段,我們鼓勵生成器產生更多困難的訓練樣本。實現這一目標的一個簡單方法是簡單地將負的 Mean Absolute Error 作為優化生成器的目標,也就是通過更新生成器的引數,使得學生模型和教師模型的差異拉大。

梯度反向傳播會先通過 Teacher 和 Student 所組成的 Discriminator,那麼在這個過程中梯度不能夠消失,否則生成器無法得到良好的訓練,所以才有16式的 MAE Loss。在對抗訓練開始時,來自 Teacher 的梯度是不可缺少的,因為隨機初始化的 Student 實際上無法提供什麼有用的資訊。

但是,若直接使用17式訓練,可能是不穩定的,因為此時生成器傾向於生成一些 "異常" 的訓練樣本,這些樣本通過 Teacher 和 Student 時,會產生極其不同的預測標籤。它惡化了對抗性訓練過程,使資料分佈發生劇烈變化。因此,確保生成的樣本正常至關重要。為此,作者建議將 MAE 的對數值作為生成階段的損失函式,即將17式變為:

採用18式的好處是:當生成器產生的樣本較難,使得 Teacher 和 Student 輸出差距很大時,損失函式的梯度很小。它減緩了生成器的訓練,使訓練更加穩定。若沒有對數項,當Teacher 和 Student 輸出差距很大時,損失函式的梯度很小依舊很大,使得我們需要仔細調整學習率,讓訓練儘可能穩定。

兩階段訓練的演算法概括為下圖8。

圖8:無資料對抗訓練演算法

經過若干步驟的訓練,系統將理想地達到一個平衡點,此時 Student 已經掌握了所有困難樣本,生成器也無法產生一些樣本使得兩個模型 Student 和 Teacher 的輸出有較大的差異,在這種情況下,Student 在功能上與 Teacher 相同。

在對抗訓練中保持穩定是至關重要的。在模仿階段 (the imitation stage),作者對學生模型進行次更新,再更新一次生成器,以保證其收斂性。然而,由於沒有訓練得很好的生成器輸出的訓練樣本不能保證對我們的任務有用,所以 的值不能設定得太大。作者發現 可以使訓練穩定。此外,作者建議在密集預測任務 (如分割任務) 中使用自適應損失 。在分類任務中,僅使用少量樣本來計算生成損失,並且統計資訊不準確,因此更傾向於使用 。

2.1.3 實驗結果

DFAD 方法在影象分類和語義分割2個任務上進行了實驗。

分類任務資料集:

MNIST:Teacher:LeNet-5,Student:LeNet-5-Half

CIFAR10:Teacher:ResNet-34,Student:ResNet-18

CIFAR100:Teacher:ResNet-34,Student:ResNet-18

Caltech101:Teacher:ResNet-34,Student:ResNet-18

分割任務資料集:

CamVid:Teacher:DeepLabV3 (ResNet-50 Backbone),Student:DeepLabV3 (Mobilenet-V2 Backbone)

NYUv2:Teacher:DeepLabV3 (ResNet-50 Backbone),Student:DeepLabV3 (Mobilenet-V2 Backbone)

實驗結果如下圖7所示。上面一部分是有資料知識蒸餾的實驗結果,下面一部分是 data-free 的設定。KD-ORI需要原始的訓練資料,而 KD-REL 和 KD-UNR 則使用一些未標記的替代資料進行訓練。在 KD-REL 中,訓練資料應該與原始訓練資料相似。然而,替代資料和原始資料之間的領域差異是不可避免的,這將導致知識的不完整,所以 KD-REL 的精度略低於 KD-ORI。表格的第二部分顯示了 data-free 蒸餾方法的結果。CIFAR 資料集 batch size 設定為256,Caltech101 資料集 batch size 設定為64。我們的對抗性學習方法在無資料方法中達到了最高的準確率,其效能甚至可以與那些資料驅動的方法相媲美。請注意,我們將Caltech101的資料集 batch size 設定為64,在這種情況下,DAFL 方法失敗了。

圖7:分類任務實驗結果

DFAD 方法生成的圖片如下圖8所示,上面的部分是生成器生成的圖片,下面的是真實資料集的圖片。

圖8:DFAD 方法生成的圖片

語義分割實驗中,作者採用 ImageNet pretrained ResNet-50 來初始化 Teacher,並從頭開始訓練所有 Student。資料驅動方法中的所有模型都是用128×128裁剪影象訓練的。對於無資料方法,直接生成128×128的影象進行訓練。下圖9,10顯示了用不同方法獲得的學生模型的效能。可以看到,在 CamVid 上,DFAD 即使與需要原始的訓練資料的 KD-ORI 相比也獲得了有競爭力的學生模型效能。在 NYU v2 上,DFAD 超越了 KD-UNR 和所有無資料方法。

圖9:分割任務實驗結果
圖10:分割任務實驗結果

小結

本文介紹了2種無需資料的知識蒸餾方法,RDSKD 通過多樣性導向的正則化損失函式來提高生成樣本的多樣性,並證明對於學生模型的訓練至關重要。DFAD 提出了一種對抗蒸餾的策略,對抗訓練過程的兩個階段:模仿階段 (the imitation stage) 和 生成階段 (the generation stage),這個過程類似於 GAN,只是 Teacher 和 Student 模型一起作為 Discriminator。

參考

  1. ^ab[1] https://openaccess.thecvf.com/content_CVPR_2019/papers/Mao_Mode_Seeking_Generative_Adversarial_Networks_for_Diverse_Image_Synthesis_CVPR_2019_paper.pdf

  2. ^[2] https://arxiv.org/abs/2112.15278

  • https://pytorch.org/tutorials/beginner/introyt/autogradyt_tutorial.html)

如果覺得有用,就請分享到朋 友圈吧!

△點選卡片關注極市平臺,獲取 最新CV乾貨

公眾號後臺回覆“ transformer ”獲取最新Transformer綜述論文下載~

極市乾貨

課程/比賽: 珠港澳人工智慧演算法大賽 保姆級零基礎人工智慧教程

演算法trick 目標檢測比賽中的tricks集錦 從39個kaggle競賽中總結出來的影象分割的Tips和Tricks

技術綜述: 一文弄懂各種loss function 工業影象異常檢測最新研究總結(2019-2020)

# 極市平臺簽約作者 #

科技猛獸

知乎:科技猛獸

清華大學自動化系19級碩士

研究領域:AI邊緣計算 (Efficient AI with Tiny Resource):專注模型壓縮,搜尋,量化,加速,加法網路,以及它們與其他任務的結合,更好地服務於端側裝置。

作品精選

搞懂 Vision Transformer 原理和程式碼,看這篇技術綜述就夠了

用Pytorch輕鬆實現28個視覺Transformer,開源庫 timm 瞭解一下!(附程式碼解讀)

輕量高效!清華智慧計算實驗室開源基於PyTorch的影片 (圖片) 去模糊框架SimDeblur

投稿方式:

新增小編微信Fengcall(微訊號:fengcall19),備註: 姓名-投稿

△長按新增極市平臺小編

覺得有用麻煩給個在看啦~   

「其他文章」