解讀知識蒸餾模型TinyBert

摘要:本篇文章的重點在於改進信息瓶頸的優化機制,並且圍繞着高緯空間中互信息難以估計,以及信息瓶頸優化機制中的權衡難題這兩個點進行講解。

本文分享自華爲雲社區《【雲駐共創】美文賞析:大佬對變分蒸餾的跨模態行人重識別的工作》,作者:啓明。

論文講解:《Farewell to Mutual Information: Variational Distillation for CrossModal Person Re-identification》

論文概述

本篇文章的重點在於改進信息瓶頸的優化機制,並且圍繞着高緯空間中互信息難以估計,以及信息瓶頸優化機制中的權衡難題這兩個點進行講解。

信息瓶頸研究背景

此報告一共分爲3個部分,爲了便於理解,我們先介紹一下信息瓶頸的研究背景。

就“信息瓶頸”這個概念而言,在2000年左右的時候才正式被學者提出,其理想狀態下的目標,是獲得一個最小充分標準。意思就是,把所有那些對任務有幫助的判別性信息全提取出來,同時又過濾掉冗餘性的信息。從實踐的角度來說,信息瓶頸的部署就是直接優化下圖紅色框出部分即可:

迄今爲止,信息瓶頸作爲一種信息論指導下的表徵學習方法,已經被廣泛應用於多個領域,包括計算機視覺、自然語言處理、神經科學等等,當然還有一些學者已經把信息瓶頸用於揭開神經網絡黑箱的問題上。

但是,互信息有3個不足之處:

1. 其有效性嚴重依賴互信息估算精度

雖然信息瓶頸有着先進的構思和理念,但是它的有效性嚴重依賴於互信息的估算精度。根據現在大量的理論分析,以及目前很多的工作在實踐中的嘗試,我們可以知道在高維空間中,算互信息其實是非常有力的。

從上圖表達式上來看,

v代表着觀察量,大家可以把它直接理解成一個高維度的特徵圖;

z代表是代表它的一個表徵,可以把它理解成是一個經過信息瓶頸壓縮得到的一個低緯度的表徵。

現在我們需要算它們兩個之間的互信息。

理論上來說我們需要知道這三個分佈纔可以實現互信息的計算(如上圖)。但是很可惜的是,對於觀察量其本身的潛在分佈,我們只能有限個數據點,而並不能通過這些有限個數據點去觀測到其具體的潛在分佈,更不用說空間變量z的相關信息了。

那麼,如果我們用一個代參的估計器在解空間去猜呢?也不是很可行。因爲其可信度不是很高,而且去年ICLR(國際表徵學習大會)上有很多篇工作已經證明了,互信息估計器很大可能只是一個噱頭。

2. 預測性能與簡潔性之間難以權衡

另外一個比較嚴重的問題是,信息平臺優化本質上是一種權衡。這意味着,這種機制會把表徵的判別性和簡潔性放到天平的兩側(如上圖)。

想消除冗餘信息,那麼也會附帶的造成部分判定性信息的損失;但如果你想保留更多的判別性信息,那麼也會有相當部分的冗餘信息跟着被保存下來。這樣一來,就會使得信息瓶頸最開始定的目標成爲不可能實現的目標。

或是咱們從優化目標上來看。假設我們給一個非常大的β,這意味着模型此時更傾向於做刪減。顯而易見,壓縮力度是提上來了,但是此時模型就沒怎麼保存判定性。

同樣的,假如說現在給一個非常小的β(假設是10^(-5)),那麼相對來說模型就更傾向於完成第一項互信息給的目標。但此時模型就不管“去冗餘”的事了。

所以我們在選取β的過程中,其實就是權衡兩個目標在不同任務下的重要性,也就印證了文章開頭講的問題,信息瓶頸的優化的本質是一種權衡。

3. 對多視圖問題乏力

除上述2個問題之外,我們還可以發現,信息瓶頸雖然可以通過任務給定的標籤,對任務所包含的信息進行二元化定義,也就是說我們可以根據是否對任務有幫助來定義判別性信息(紅色部分)和冗餘信息(藍色部分)。

但是任務涉及到多視圖的數據的時候,信息瓶頸沒有確切的依據從多視圖的角度把信息再次寫出來,後果就是使得它對視圖變化比較敏感,或者說,就是缺乏應對多視圖問題的能力。

變分信息瓶頸工作介紹

說完傳統的信息瓶頸,我們再引入一篇里程碑式的工作:《變分信息瓶頸》。此工作發表在2017年的ICLR上面,其一個突出貢獻,是引入了“變分推斷”(如下圖):把互信息轉化成了熵的形式。雖然這篇工作沒有很好的解決我們前面提到的問題,但這個思路幾乎啓發了後續的所有相關工作。

把互信息轉化到熵,是一個非常大的進步。但是還是有幾點不足之處:

1. 表徵判別性能與簡潔性之間的trade-off沒得到解決

遺憾的是變分信息瓶頸,也沒能解決優化機制中判別性與簡潔性之間的權衡難題。被優化的天平依然隨着λ擺動。

2. 無法保證變分上界的有效性

第二個問題就是變分信息瓶頸優化的時候,其實是優化其找的一個上界,但上界的有效性是值得商榷的。因爲它需要空間變量z的一個鮮豔分佈Q(z)去逼近一個潛在分佈P(z)。然而,這在實際中這其實是很難保證的。

3. 涉及重參數、重採樣等複雜操作

第三點就是優化這一項變分推斷的結果,會涉及到很多複雜的操作(重參數、重採樣等這些不確定性很高的操作),會給訓練過程增加一定的波動,使得訓練可能不是很穩定,而且複雜度較高。

研究方法

上面說的幾個問題,是變分信息瓶頸針對方法的通病,一定程度上阻礙了信息瓶頸的時間應用。那麼,接下來講解一下相應的解決思路,從本質上解決前面提到的所有問題。

充分性

首先需要引入“充分性”概念:z包含所有關於y的判別性信息。

它要求信息瓶頸的編碼過程不允許有判別性信息的損失,也就是說v經過信息瓶頸到達z之後,只允許消除冗餘信息,當然這是一個比較理想化的要求(如上圖)。

有了“充分性”概念之後,我們把觀察量和其表徵之間的互信息進行拆分,可以得到藍色的冗餘信息和紅色的判別性信息,再根據信息處理不等式可以得到下面這行的結果。此結果意義比較大,它說明我們想要獲得最小充分標準,也就是最優標準,需要經歷三個子過程。

第一個子過程,其實是在提高表徵z所包含的判別性信息總量的上限。爲什麼這樣說?因爲z所包含的所有內容都來源於它的觀察量。所以提高觀察量,它自己的判別性信息總量的上限,也就是拉高了z的它自己的上限。

而第二個子過程就是讓表徵z去逼近自己的判別性上限。這兩項其實對應了充分性的要求。

第三個子過程的條件互信息,如前面所說,它代表目標所包含的冗餘信息,因此最小化這一項就對應了最簡性的目標。此處,簡單說明一下“條件互信息”,它代表的是z中所包含的僅和v相關且與y無關的信息,簡單來說,就是和任務沒有關係的冗餘信息。其實從前面的變分信息瓶頸可以看到第一個子過程,其實優化一個條件熵,也就是用觀察量v初始的特徵圖和標籤算一個交叉熵,然後進行優化。所以這一項它本質上和給定的任務是一致的,因此暫且不需要特殊處理。

至於另外兩項的優化目標,他們本質上是等價的。而且值得注意的一點是這種等價關係,意味着提升表徵的判別性的過程中,也在消除冗餘。把原來曾經對立的兩個目標拉到了天平同一側,直接就擺脫了信息瓶頸原有的一個權衡難題,使得信息瓶頸隨着最小充分標準理論上是可行的。

定理一和引理一

定理一:最小化I(v;y) − I(z;y) 等價於最小化 v,z 關於任務目標y條件熵的差值,即:

minI(v;y)−I(z;y) ⇔ min H(y|z) − H(y|v),

其中條件熵定義爲H(y|z):=−∫p(z)dz∫p(y|z)log p(y|z)dy .

引理一:當表徵z對任務目標y做出的預測與其觀察量 v的相同時,表徵 z對於任務目標 y具備充分性,即:

爲了達到前面制定的目標,還需要避免高維空間中互信息的估算,因此文章中提出了非常詳細的重點的定理和引理這兩項內容。

爲了方便理解,可以看上面的邏輯圖。定理一通過對藍色的互信息的優化,直接轉化成條件熵之間的差。也就是說,如果想實現上面兩個(藍色的)目標,可以轉變爲最小化條件熵的差即可。

而引理一,在此基礎上把上面的結果轉化成了一項KL散度,而 KL散度裏面其實就是兩個logits。

也就是實踐當中只需要優化這麼一項簡單的KL散度,就能同時達到表徵的充分性和最簡性。照比傳統的信息瓶頸來說,還是簡單很多的。

網絡結構本身很簡單:一個編碼器一個信息瓶頸,再加一個KL散度。考慮到它的形式,將這方法也命名爲變分自蒸餾(Variational Self-Distillation),簡稱VSD。

和互信息瓶頸原有的優化機制做一個對比,可以發現VSD有三個比較突出的優點:

  1. 無需進行互信息估算且更精確地擬合
  2. 解決優化時的權衡難題
  3. 不涉及重參數、採樣等繁瑣操作

Consistency

僅保存判別性且滿足視圖間一致性的信息,以增強表徵對於視圖變化的魯棒性。

定義:表徵 z1, z2 滿足視圖間一致性,當且僅當 I(z1;y) = I(v1v2;y) = I(z2;y)。

在有了定理一和引理一之後,接下來的任務是要把變分自蒸餾擴展到多視圖的學習背景下。

如上圖,這是一個最基本的框架。兩張圖像x1,x2,輸入到一個編碼器中,得到兩個原始的高維特徵圖v1和v2,然後把v1和v2送到信息瓶頸,得到兩個壓縮過的低維度表徵z1和z2。

如上圖所示,此項互信息是同一視圖下的觀察量和其表徵之間的互信息。但拆分的時候要注意和VSD中的處理的區別,因爲這裏對信息的劃分依據是它是否反映了視圖間的共性,而不再是判別性和冗餘性的要求,所以它拆分出來的結果有I(Z1;V2) = i(v2;v1|y) + I(z1;y)。

之後再根據視圖是否滿足判別性要求,對層次的視圖間共性的信息進行二次劃分,得到兩項冗餘信息和判別信息(如上圖)。

如果要想提升表徵對於視圖變化的魯棒性,以及進而提升任務的精度,只需要保持I(z1;y)(紅色部分)就可以了,I(v1;z1|v2)(藍色部分)和I(v2;v1|y)(綠色部分)都要丟掉。優化的目標如下:

定理二:給定兩個滿足充分性的觀察量 v1, v2, 其對應的表徵 z1和 z2 滿足視圖間一致性,當且僅當滿足此條件:I(v1;z1|v2) + I(v2;z2|v1)≤0 and I(v2;v1|y) + I(v1;v2|y) ≤ 0

定理二可用來闡述視圖間一致性的本質。視圖間一致性在本質上就是要求消除視圖特異性信息,也消除和任務沒有關係的冗餘信息來最大化的提升表徵。

兩種方法

消除視圖特異性信息

變分互學習(Variational Mutual Learning, VML,對應上圖藍色部分):最小化 z1, z2 預測分佈之間的JS散度以消除其所包含的視圖特異性信息,具體目標如下:

消除冗餘信息

變分交叉蒸餾(Variational Cross-Distillation, VCD,對應上圖紅色部分):在留存的視圖一致性信息中,通過交叉地優化觀察量與不同視圖表徵之間的KL散度提純判別性信息,同時剔除冗餘信息,具體目標如下( v1 與 z1 同理):

上圖是這兩種方法的處理的結構圖。原本是有特異性和一致性,根據VML來把信息進行二元劃分,再用變分互學習把特性的信息全部消除掉了,然後剩下的橙色的一致性信息還有兩塊:冗餘信息和判決信息。這個時候就需要變分交叉蒸餾,把冗餘信息(綠色部分)分別消掉,只保留判別性信息(紅色的部分)。

實驗結果

接下來我們來分析一下文章中的實驗部分。爲了驗證方法的有效性,我們把前文中提到的三種方法:變分自蒸餾、交叉蒸餾,還有互學習,應用到跨模態行人羣識別的問題。

跨模態行人羣識別問題,是計算機學的子問題,核心目標是爲給定的人像匹配另一個模態下的照片。舉例來說,以下圖綠色框標記出來的紅外圖像來說,我們希望在一個圖像庫中找到對應同一個人的可見光圖像,要麼是用紅外光去找可見光,或者用可見光去找紅外光。

框架總覽

模型結構總覽:

模型總體一共包括三條獨立的分支,且每條分支僅包含一個編碼器和一個信息瓶頸。具體結構見下圖。

這裏值得注意的一點是,由於上下兩個分支,橙色的部分只接受和處理紅外光東西,藍色的只接受和處理可見光的東西,所以他們不涉及多視圖,因而用VSD和它們綁定即可。

中間這條分支訓練的時候,會同時接受並處理兩個模態的數據。因此訓練的時候,用VCD,就是變分交叉蒸餾和變分互學習協同訓練分析。

損失函數總覽:

損失函數由兩部分構成,即論文中提出的變分蒸餾,以及 Re-ID 最常用的訓練約束。注意 VSD 只約束單模態分支,而 VCD 協同 VML 一起約束跨模態分支。

實驗標準:SYSU-MM01 & RegDB

SYSU-MM01:

數據集共包括 491 個目標的 287,628 張可見光圖像以及 15,792 張紅外光圖像。每個目標的圖像都來源於 6 個不重疊攝像頭分別在室內和戶外進行拍攝的拍攝結果。

評測標準包含全場景查詢( all-search )和室內查詢( indoorsearch )。論文中所有實驗結果都採用標準評測準則。

RegDB:

數據集共包括 412 個目標,且每個目標對應十張在同一時刻拍攝的可見光圖像以及紅外光圖像。

評測標準包括可見光搜紅外(visible-to-infrared)以及紅外搜可見光(infrared-to-visible)。最終評測結果爲十次實驗的平均精度,且每次實驗都開展於隨機劃分的評估集。

結果分析

我們把跨模態行人羣識別的相關工作大體分爲了4類:Network Design(網絡框架設計)、Metric Design(度量設計)、Generative(生成類)、Representation(表徵學習類)。

此方法作爲第一份探索表徵學習的工作,在不涉及生存過程以及複雜的網絡結構的條件下,性能還能這麼大幅度的領先競爭對手。而且也正是個原因,此文章提出的變分蒸餾損失可以非常輕鬆的融入到不同類別的方法,挖掘更大的潛力。

在另外一個數據集上,我們可以看到一個類似的結果。

接下來我們將選一些代表性的消融實驗,分析一下方法在實踐中的有效性。

開始之前我們需要明確,接下來所有的實驗:觀察量v的維度統一設置成Re-ID社區常用的2048;表徵的維度就默認成256;信息瓶頸統一採用GS互信息估計器。

消融實驗:單一模態分支條件下,變分蒸餾 vs 信息瓶頸

在不考慮多視圖條件下,僅關注表徵的充分性。

如上圖,我們可以觀察到變分自蒸餾可以帶來鉅額的性能提升。28.69至59.62,非常直觀的數,說明了變分自蒸餾可以有效的提升表徵的判別性,大量去除冗餘信息的同時,提煉出更多有價值的信息

消融實驗:多模態分支條件下,變分蒸餾 vs 信息瓶頸

我們再來看多視圖下面的結果。當我們只用跨模態分支做測試的時候,發現兩個現象:

一是,變分蒸餾的方法的性能是有所下降的。剛剛是59,而現在只有49。這裏我們推測是被拋棄的一些模態特異性信息。中間分值保留同時滿足兩個特點信息,所以會先拋去那些模態特異性信息。但對被拋棄的模態特異性信息裏面,也具備相當的判別性,因此就滿足模態一致性的代價,即,判別性損失帶來的精度下降。

二是傳統信息瓶頸的性能,在多模態的條件下,變化其實並不是很大。剛剛是28,現在是24。我們認爲是傳統的信息瓶頸並不能很好的去辨別一致性和特異性信息,因爲其根本就不關注多視圖問題,也根本就沒有能力去處理這個問題。所以說多視圖的條件並不會給其帶來顯著性的波動。

消融實驗:三分支條件下,變分蒸餾 vs 信息瓶頸

在雙分支的基礎上,再添加了中間這條分支之後,模型的總體性能基本沒有變化。我們可以得出以下結論:

上下兩條分分支,只要滿足了判別性信息,信息就可以得以保存下來。

而中間這條分支保存的信息要滿足兩個要求。其中一個是滿足判別性要求,也就是說中間這條分支所保存的信息,其實是上下兩個信息的一個子集。

反觀信息瓶頸,三個分支能給它帶來的提升還是比較明顯的。因爲它哪條分支都不能完整的保存判別性信息,更不要說再去顧及“多視圖”這個事情。

消融實驗:不同壓縮率的情況下,“充分性”對比

我們再看錶徵的壓縮率對性能的影響。按照Re-ID設計的統一標準,原始的特徵圖維度設計成2048。

我們通過調整表徵v對模型總體的性能產生的變化。當維度小於256的時候,性能會隨着維度的上升不斷的升高,我們推測是因爲當壓縮率壓縮太厲害的時候,模型再怎麼強,都沒有那麼多通道用來保存足夠的判別性信息,就容易導致非充分的現象。

而當維度超過256的時候,發現性能反而開始下降。關於這一點我們認爲是多出來的那部分通道,反而使得一部分冗餘信息也可以保留下來,這樣就造成了整體判別性和泛化性的事情降低。此時這種現象被稱之爲“冗餘”(Redundancy)。

爲了更好的展示不同方法的差別,我們用TFNE把不同的特徵空間合併到了一個平面上(如下圖)。

我們先針對充分性展開分析,就是VSD和傳統信息瓶頸的對比。上標“V”“I”代表的是可見光和紅外光下的數據,而下標的 Sp代表的是View specific,也就是說他們取自於單模態的分析。

我們可以看到傳統信息瓶頸的特徵空間可以說是混亂不堪,說明模型根本就沒有辦法清晰的分辨不同目標所屬的類別。換句話來說,就是判別性信息損失嚴重;而VSD情況完全相反是,雖然說不同模態之間的特徵空間還是有不小的差別,因爲所保存的判決性信息就相當一部分屬於模態特異性信息,但是能看到幾乎每一個錯誤都是清晰分明,說明模型在VSD的幫助下可以更好的滿足充分性。

我們再來看下面這張圖,下標的sh代表他們來自於shared branch,他們來自於多模態的分支,上標“V”“I”依然代表了可見光以及紅外光的數據點。

同樣的信息瓶頸的特徵空間,在多視圖的條件下依然是混亂不堪。而且如果不作說明的話,其實基本無法分辨上下這兩張圖到底哪個是單模態,哪個是多模態。這也就驗證了前面的觀點:傳統的信息瓶頸根本沒有能力去應對多視圖的問題。

經過變分交叉蒸餾處理的特徵空間,雖然照比VSD有一些鬆散(因爲視圖的要求難免造成一些判別性信息的損失),但是單看兩個模態的特徵空間的重合度是很高的,側面說明方法對一致性信息提出了有效性。

接下來,我們把不同模態的數據投射到同一個特徵空間,用橙色和藍色分別代表紅外光圖像數據點和可見光圖像數據點。

我們可以看到在變分交叉蒸餾作用的幫助下,不同模態的特徵空間幾乎完全吻合。對比信息瓶頸的結果,可以非常直觀的說明變分交叉蒸餾的有效性。

代碼復現

性能對比:Pytorch vs Mindspore

無論是用PyTorch還是用MindSpore,它們都是用來訓練模型,而性能測試則是需要用得到的模型把特徵提取出來,送到對應數據及官方支持的測試文件,因此這個結果的對比肯定是公平的。

我們能看到無論是baseline,還是從整個框架來看(由於右下角的實驗現在只跑了一半,我只能先放一箇中間),無論從精度上來說,還是從訓練的時長來說,MindSpore得出來的模型還是比PyTorch是要好不少。

如果對MindSpore感興趣可以前往學習一下:https://www.huaweicloud.com/product/modelarts.html

本文整理自【內容共創系列】IT人加薪新思路,認證華爲雲簽約作者,贏取500元稿酬和流量扶持!→查看活動詳情

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章