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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

全面解析Inception Score原理及其局限性

發布時間:2024/10/8 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全面解析Inception Score原理及其局限性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


作者丨尹相楠

學校丨里昂中央理工博士在讀

研究方向丨人臉識別、對抗生成網絡


本文主要基于這篇文章:A Note on the Inception Score,屬于讀書筆記的性質,為了增加可讀性,也便于將來復習,在原文的基礎上增加了一些細節。?




很多關于 GAN 生成圖片的論文中,作者評價其模型表現的一項重要指標是 Inception Score(下文簡稱 IS)。其名字中 Inception 來源于 Google 的 Inception Net,因為計算這個 score 需要用到 Inception Net-V3(第三個版本的 Inception Net)。?


Inception Net 是圖片分類網絡,在 ImageNet 數據庫上訓練,ImageNet 數據庫共有 1.2M 個 RGB 圖片,分為 1000 類。Inception Score 只是把 Inception Net-V3 作為一個工具,理解 Inception Score 不需要知道 Inception Net-V3 的細節,各種深度學習框架中都已經包含了預訓練好的 Inception Net-V3 了,直接拿來用就好了。


基本原理


眾所周知,評價一個生成模型,我們需要考驗它兩方面性能:1. 生成的圖片是否清晰;2. 生成的圖片是否多樣。生成的圖片不夠清晰,顯然說明生成模型表現欠佳;生成的圖片夠清晰了,我們還要看是不是能生成足夠多樣的圖片,有些生成模型只能生成有限的幾種清晰圖片,陷入了所謂 mode collapse,也不是好的模型。?


Inception Score 是這樣考慮這兩個方面的:?


1. 清晰度:把生成的圖片 x 輸入 Inception V3 中,將輸出 1000 維的向量 y ,向量的每個維度的值對應圖片屬于某類的概率。對于一個清晰的圖片,它屬于某一類的概率應該非常大,而屬于其它類的概率應該很小(這個假設本身是有問題的,有可能有些圖片很清晰,但是具體屬于哪個類卻是模棱兩可的)。用專業術語說, p(y|x) 的熵應該很小(熵代表混亂度,均勻分布的混亂度最大,熵最大)。?


2. 多樣性:如果一個模型能生成足夠多樣的圖片,那么它生成的圖片在各個類別中的分布應該是平均的,假設生成了 10000 張圖片,那么最理想的情況是,1000 類中每類生成了 10 張。轉換成術語,就是生成圖片在所有類別概率的邊緣分布 p(y) 熵很大(均勻分布)。


具體計算時,可以先用生成器生成 N 張圖片,然后用公式 (1) 的經驗分布來代替:



綜合上面兩方面,Inception Score 的公式為:



exp:僅僅是為了好看,沒有具體含義。


x~Pg :表示從生成器中生圖片。


p(y|x) :把生成的圖片 x 輸入到 Inception V3,得到一個 1000 維的向量 y ,也就是該圖片屬于各個類別的概率分布。IS 提出者的假設是,對于清晰的生成圖片,這個向量的某個維度值格外大,而其余的維度值格外小(也就是概率密度圖十分尖)。


p(y) :N 個生成的圖片(N 通常取 5000),每個生成圖片都輸入到 Inception V3 中,各自得到一個自己的概率分布向量,把這些向量求一個平均,得到生成器生成的圖片全體在所有類別上的邊緣分布,見公式 (1)。


:對 p(y|x)?和 p(y) 求 KL 散度。KL 散度離散形式的公式如下:



KL 散度用以衡量兩個概率分布的距離,它是非負的,值越大說明這兩個概率分布越不像。但這個距離不是對稱的,觀察公式, P(i) 很大 Q(i) 很小的地方對 KL 距離貢獻很大,而 P(i) 很小 Q(i) 很大的地方對 KL 距離的貢獻很小。


我們預期的某個維度值很大,而 p(y) 總體均勻,因此需要把放在公式 (2) 中雙豎線的前面。放到后面可能會造成的極端值被忽略,而正是這個極端值的存在告訴了我們這個生成的圖片是否清晰。?


綜合起來,只要 p(y|x)?和 p(y) 的距離足夠大,就能證明這個生成模型足夠好。因為前者是一個很尖銳的分布,后者是一個均勻分布,這倆距離本就應該很大。?


公式 (2) 很不直觀,在實際操作中可以改成如下形式:



實際操作中,先用生成的大量樣本代入公式 (1),求出,然后再對每個樣本求出,計算它和的 KL 散度,最后求平均,再算一下指數即可。?


Inception Score 的 pytorch 版本代碼可以參考下面的鏈接,十分清晰易懂:


https://github.com/sbarratt/inception-score-pytorch


深入理解Inception Score


我們對公式 (2) 取對數刨除無用的 exp,并作簡單的推導:



可以發現,公式 (4) 的結尾正是互信息的定義式,即:



注意,互信息是對稱的,即 I(y;x)=I(x;y) 。而互信息的 Wikipedia 頁面,給出了它和熵之間的關系推導。


熵,條件熵,信息增益和互信息


熵是衡量隨機變量不確定性的量,對隨機變量 x,其信息熵的公式為:



條件熵是衡量在給定條件下,隨機變量不確定性的量。對隨機變量 x,y 條件熵的公式為:



關于這兩個公式的直觀解釋,請參閱數學之美第 6 章 [1]


而對于互信息,我們可以作如下推導:



從公式 (8) 中發現,對于隨機變量 y,其本來的不確定性是 H(y),而給定了條件 x 后,y 的不確定性變為了 H(y|x)。因此,互信息為:給定某個條件后,隨機變量不確定性的減少程度,因此也叫信息增益。而這個指標同時反映的是兩個變量的相關程度


互信息和信息增益是等價的,一個側重表達兩個隨機變量的相關程度,一個側重給定某個條件后,隨機變量不確定性的減少程度。


PS:協方差也可以用于表示兩個隨機變量的相關性,但是只能表示兩個變量之間的線性相關性,但協方差的好處是不需要知道變量的概率分布函數,而這對互信息是必須的。具體見這個鏈接 [2]


有了上面的推導,再代回到公式 (5):



我們根據公式 (9) 發現,Inception Score 的真實意義是:生成的所有樣本在各類別的分布函數的熵,與每個樣本在各類別可能性的分布的熵(的期望)之差。第一項越大,說明生成的樣本在各類上分布越平均,第二項越小,說明生成的樣本屬于某個類別的可能性越大,說明這個樣本越清晰。


Inception Score的局限性


A Note on the Inception Score 中,作者首先舉了一個一維的例子,用以說明 Inception Score 并不能反映生成模型的性能。


?圖1


假設真實數據以 1/2 的概率分別從兩個正態分布 N(-1, 2) 和 N(1,2) 中采樣(如圖 1),各自對應的類別分別為 0 和 1。那么最優貝葉斯分類器為:



公式 10 的圖像如圖 2。即給出一個 x,分別算一下它在左正態分布和右正態分布的概率,代入上式,大于 0.5 表示來自右邊的正態分布,小于 0.5 表示來自左邊的正態分布。注意在 x=0 時,它來自左右兩個分布的概率均為 0.5。


?圖2


而根據 Inception score 的計算公式 (9),我們可以設計這樣的生成器:以相同概率隨機生成 -∞ 和 +∞。為了方便閱讀,這里重新復制一遍公式 (9):



根據圖 2 中最優判別器的圖像,可以知道:



(11) 代入 (9) 的第二項,可以得到 H(y|x)=0,而生成?-∞ 和 +∞?的概率都是 1/2,故 H(y)=log2。因此,Inception Score 可以取到最大值 2。?


除此之外,還有很多分布都可以得到很高的 Inception Score,例如均勻分布 U(-100,100),正態分布 N(0, 20) ,因為它們都可以得到 H(y)=log2(關于坐標原點對稱,所以生成兩類的概率相同),同時得到一個很小的 H(y|x)=0(最優判別器下,大于 0 的數對應的概率都很大,小于 0 的數,概率都很小)。反而真正的分布,左右兩個正態分布對應的 Inception Score 小于前面這些分布。


作者總結,Inception Score 主要有兩個問題:


  • Inception Score 自身的問題

  • 錯誤的使用場景?


Inception Score自身的問題


1. Inception Score 對神經網絡內部權重十分敏感。


作者利用 TensorFlow, Torch 和 Keras 等不同框架下預訓練的 Inception V2 和 Inception V3 ,計算同一個數據庫(50 k CIFAR-10 training images 和 50k ImageNet validation images)的 Inception Score。


發現盡管不同框架預訓練的網絡達到同樣的分類精度,但由于其內部權重微小的不同,導致了 Inception Score 很大的變化,在 CIFAR-10 上 IV3 (inception v3) Torch 和 IV3 Keras 算出的 Inception Score 相差了 11.5% ,在 ImageNet 上,IV3 Torch 和 IV3 Keras 算出的 IS 相差 3.5%,這些差異,足以涵蓋某些所謂 state-of-the-art 的模型所作出的提升。


2. 計算 Inception Score 的方式不對。


通常計算 Inception Score 時,會生成 50000 個圖片,然后把它分成 10 份,每份 5000 個,分別代入公式 (3) 計算 10 次 Inception Score,再計算均值和方差,作為最終的衡量指標(均值+-方差)。?


但是 5000 個樣本往往不足以得到準確的邊緣分布,尤其是像 ImageNet 這種包含 1000 個類的數據集,僅僅 5000 個樣本是不夠的。作者通過實驗證明,把同一個數據集分成不同的份數,會影響最后的 Inception Score。因此,作者建議把 50000 個樣本放到一起,來確定邊緣分布。?


同時,作者建議去掉 Inception Score 提出者基于審美原因加進公式的 exp,根據上文,去掉后可以直接解釋為互信息。改進后的 Inception Score 公式為:



按照作者的改進,就不會出現把數據集劃分為不同份數,計算的 Inception Score 不一致的現象了。對于方差,可以通過計算每一個生成數據的來計算(相當于 n_split = N)。


錯誤的使用場景?


1. 分類模型和生成模型在不同的數據集上訓練。


由于 Inception V3 是在 ImageNet 上訓練的,用 Inception V3 時,應該保證生成模型也在 ImageNet 上訓練并生成 ImageNet 相似的圖片,而不是把什么生成模型生成的圖片(臥室,花,人臉)都往 Inception V3 中套,那種做法沒有任何意義。?


Inception Score 基于兩個假設:?


  • Inception V3 可以準確估計 p(y),即樣本在所有類別上的邊緣分布;

  • Inception V3 可以準確估計 p(y|x) ,從而計算出條件熵,用條件熵反映圖片的真實程度。


對于假設 1,作者計算了 CIFAR-10 的邊緣分布,取了排名前 10 的預測類。把這 10 類和 CIFAR-10 的 10 類相比較,發現,它們并沒有對應關系。再一次說明了生成模型的訓練數據需要和 Inception Net 或者別的什么分類網絡的訓練數據一致。不能在一個數據集上訓練分類模型,用來評估另一個數據集上訓練的生成模型。?


對于假設 2,Inception 網絡通過 p(y|x) 計算出條件熵,條件熵越低表示生成的圖片越真實,這也是有問題的。作者計算了 CIFAR 10 訓練集的條件熵是 4.664 bit,而在隨機噪聲圖片上,條件熵是 6.512 bit,僅僅比真實訓練集圖片高了一點點。


而在 ImageNet 的 validation set上,Inception net 算出的條件熵是 1.97 bit,也就是說 CIFAR 訓練數據比起 ImageNet 更接近隨機噪聲,這顯然是不科學的,因為 CIFAR 數據再不濟也是真實圖片,應該和 ImageNet 的條件熵更接近才對。再一次說明了,不能在一個數據集上訓練分類模型,用來評估另一個數據集上訓練的生成模型。


2. 優化 Inception Score (不直接地&隱式地)。


Inception Score 只能是粗糙的指導,如果直接優化這個 Inception Score,會導致生成對抗樣本(只會刷分,其實并不真實)。但同時也應該注意到,間接地優化這個分數,同樣會導致生成對抗樣本,例如用這個指標來確定是否停止訓練,調整超參數,甚至調整網絡架構。


作者在附錄中提出了一種可以刷 Inception Score 的方法:把生成樣本輸入分類模型中,用梯度下降來修改輸入的樣本,讓它在某一類的概率達到非常大,這樣,條件熵就降下來了,同時讓不同樣本優化不同的類,循環遍歷所有的類,這樣就能保證邊緣分布是均勻分布,即生成的圖片把每個類都均勻覆蓋了。但是,這會導致生成毫無意義的圖片。?


3. 沒有反映過擬合。


根據 Inception Score 的計算原理,我們可以發現:如果神經網絡記住了所有的訓練集圖片,然后隨機輸出,那么它會得到一個很高的 Inception Score。但是這種生成模型是沒有意義的。


因此在用 Inception Score 評估生成模型的性能時,應該加上別的指標,證明模型沒有過擬合,即模型輸出的圖片和訓練集中任何圖片都不同,單純用 Inception Score 評估性能是不全面的。


總結


本文全面講解了 Inception Score 的原理和它存在的一些問題:?


  • IS大,不一定生成的圖片就真實;

  • 分類模型參數的輕微變動將影響 IS;

  • 使用 IS 時,分類模型和生成模型應該在同一個數據集上訓練;

  • 通常計算 IS 的方法是有漏洞的:估計的樣本數據量太小,導致同一堆數據,分割的份數不同算出的 IS 不同;

  • 以 IS 為優化目標會導致產生對抗樣本;

  • IS 無法反映生成模型過擬合情況。


綜上,IS 是一個渾身硬傷的評價指標,能不用還是不要用了……


經常與 IS 并列的還有 Fréchet Inception Distance,關于它的簡介請移步本人的另一篇文章 [3]。限于水平,這篇文章會比較水,沒能對 Fréchet Distance 做出理論推導或者直觀解釋,只是引用了一下公式,但從公式中仍然可以看出,它比 IS 更加有道理一點。


相關鏈接


[1]?https://github.com/Tongzhenguo/ebooks/blob/master/數學之美.pdf

[2]?https://stats.stackexchange.com/questions/81659/mutual-information-versus-correlation

[3]?https://zhuanlan.zhihu.com/p/54213305




點擊以下標題查看更多往期內容:?


  • 自動機器學習(AutoML)最新綜述

  • 圖神經網絡綜述:模型與應用

  • 近期值得讀的10篇GAN進展論文

  • 自然語言處理中的語言模型預訓練方法

  • 從傅里葉分析角度解讀深度學習的泛化能力

  • 兩行代碼玩轉Google BERT句向量詞向量

  • AI Challenger 2018 機器翻譯參賽總結

  • TensorSpace:超酷炫3D神經網絡可視化框架

  • 深度長文:NLP的巨人肩膀(上)

  • NLP的巨人肩膀(下):從CoVe到BERT




#投 稿 通 道#

?讓你的論文被更多人看到?



如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢??答案就是:你不認識的人。


總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?


PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術干貨。我們的目的只有一個,讓知識真正流動起來。


??來稿標準:

? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?

? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?

? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志


? 投稿郵箱:

? 投稿郵箱:hr@paperweekly.site?

? 所有文章配圖,請單獨在附件中發送?

? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通




?


現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧



關于PaperWeekly


PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。


▽ 點擊 |?閱讀原文?| 獲取最新論文推薦

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的全面解析Inception Score原理及其局限性的全部內容,希望文章能夠幫你解決所遇到的問題。

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