【论文学习】高频分量有助解释卷积神经网络泛化 High-frequency Component Helps Explain the Generalization of CNN
??這篇論文是CVPR2020的oral,在神經網絡可解釋性方面做了一定工作。為了對神經網絡的基礎原理有更深入的理解,我決定學習此文。論文內容的介紹網上有不少,請各位自行搜索,本著深入學習論文的目的,這里對論文的部分內容進行復現試驗,下面把我的試驗數據忠實記錄下來。
論文:https://arxiv.org/pdf/1905.13545.pdf
文章目錄
- 一、高頻分量在圖像識別中的作用
- 1.論文觀點
- 2.復現條件
- 3.試驗結果
- 4.結論
- 二、高低頻圖像的shuffle label試驗
- 1.論文觀點
- 2.復現條件
- 3.試驗結果
- 4.結論
- 三、高低頻圖像的訓練/測試精度試驗
- 1.論文觀點
- 2.復現條件
- 3.試驗結果
- 4.結論
- 四、訓練超參數對高低頻圖像的作用
- 1.論文觀點
- 2.復現條件
- 3.試驗結果
- 4.結論
- 總結
一、高頻分量在圖像識別中的作用
1.論文觀點
論文首先提出了一個有趣的現象,就是:把一張圖像經過傅里葉變換分成高頻和低頻部分,把兩部分分別重建,然后對兩幅圖像分別用已訓練好的模型識別會發現,肉眼看起來和原圖相似的低頻圖像反而會被識別錯誤,而肉眼幾乎看不出什么的高頻圖像反而會被正確識別。作者認為這說明人眼難以的觀察的高頻信息也可能與標簽相互關聯,這些高頻信息會降低模型的泛化性能,正是從這個現象的觀察出發,作者引出對整篇文章的討論。下圖是原文進行的示例:
我們先來復現對這個現象的觀察:
2.復現條件
(1)和原文一樣,使用ResNet18和cifar10。我用的ResNet18代碼見:https://github.com/kuangliu/pytorch-cifar,在cifar10上訓練200epoch后,在驗證集上最高精度達到95.33%。
(2)cifar10的驗證集共10000張圖片32×32×3的彩色圖片,共10類,每類1000張。對這些圖片按照高頻和低頻分離并分別重建。由于論文中沒有說明高頻和低頻分界時使用的半徑是多少,所以我將半徑從0~16都進行了試驗。
說明:對圖像進行傅里葉變換再移頻后,低頻分量集中在圖像中心區域,高頻分量在邊緣區域,因此如果以頻域圖像中心為圓點,半徑r制作圓形掩膜,就可以把低頻和高頻分量分離出來,然后再分別重建即可得到低頻分量圖片和高頻分量圖片。半徑0時高頻分量和原圖一樣,低頻分量為純黑;由于圖片中心到角點的長度為16216\sqrt{2}162?,因此半徑16時低頻分量仍比原圖少一點信息。操作代碼可參見我之前的csdn博客。
3.試驗結果
下表給出低頻和高頻圖像識別正確的個數(總數10000),以及各種交叉情況的個數:
| 0 | 118 | 8651 | 882 | 349 | 1000 | 9533 |
| 2 | 486 | 4785 | 1072 | 3657 | 1558 | 5887 |
| 4 | 1113 | 2543 | 796 | 5548 | 1909 | 3339 |
| 5 | 1469 | 1502 | 689 | 6340 | 2158 | 2191 |
| 6 | 1961 | 728 | 611 | 6700 | 2572 | 1339 |
| 8 | 3909 | 384 | 620 | 5087 | 4529 | 1004 |
| 12 | 7547 | 229 | 774 | 1450 | 8321 | 1003 |
| 16 | 8437 | 150 | 850 | 563 | 9287 | 1000 |
4.結論
??從試驗結果可以看出,是有一些低頻圖片識別錯誤而高頻圖片識別正確的情況,論文中說這種情況大約有600張,也許對應的是半徑6,但是我們可以看到此時有更多的低頻正確而高頻錯誤的情況。我覺得似乎作者為了證明他的觀點只提了支撐證據成立,而沒有提及反對證據是否不成立。如果據此認為高頻信息和標簽也有關聯,那么也可以認為低頻信息和標簽反而有更多的關聯,這更可能只是一種隨機性現象,不應據此說明高頻分量也蘊含了和標簽有關的信息。此外我還試驗了DenseNet121等其他網絡,情況差不多。
??當然,這個引子可能有點問題,但也不影響作者后續的試驗分析。
二、高低頻圖像的shuffle label試驗
1.論文觀點
??論文又在cifar10上使用resnet18進行了不同低頻分量的shuffle label試驗。shuffle label試驗由Bengio在《A Closer Look at Memorization in Deep Networks》中提到,我的另一篇博客https://blog.csdn.net/Brikie/article/details/113237509也有介紹。所謂shuffle label試驗就是把訓練集的標簽完全打亂,由于完全沒有了規律性,這時網絡訓練就是完全靠死記每個樣本和標簽的對應關系。
論文試驗結果如下圖,從圖中可以看出,訓練初期低頻和高頻精度基本一樣,但隨著訓練的增加,高頻的作用逐漸體現,作者認為可以得出結論:CNN會優先學習低頻信息。
2.復現條件
(1)使用和第一部分一樣的ResNet18和cifar10。
(2)和論文說明的參數一樣:Adam, lr=0.0001, batch size=100。
3.試驗結果
對figure3的復現試驗結果如下圖:
4.結論
??曲線形態和原文不同,這可能是模型某些參數細節不同造成的,但反映出來的規律和結論和原文一致。
??注:這部分試驗我開始理解成不同半徑的低頻圖像分別訓練觀察精度變化,結果和論文曲線完全不同。后來仔細觀察Figure3曲線的毛刺抖動都是一致的,細想才理解這個試驗是用原始的Train數據訓練,然后分別對不同半徑的Train低頻圖像進行推理,觀察同一個訓練模型下各種頻率分量的精度。
三、高低頻圖像的訓練/測試精度試驗
1.論文觀點
??作者然后又分別在低頻(LFC)和高頻(HFC)分量圖上進行了真實標簽的訓練和測試,得到數據如下表,作者的結論是低頻信息有更好的泛化能力。
2.復現條件
(1)使用和第一部分一樣的ResNet18和cifar10。
(2)Adam, lr=0.0001, batch size=100。
3.試驗結果
對Table1的復現如下表:
| r | train acc | test acc | train acc | test acc |
| 4 | 0.99 | 0.64 | 0.99 | 0.35 |
| 8 | 0.99 | 0.79 | 0.96 | 0.14 |
| 12 | 0.99 | 0.84 | 0.99 | 0.10 |
| 16 | 0.99 | 0.86 | 0.98 | 0.11 |
4.結論
??經驗證,考慮到可能是模型某些參數細節不同造成了一些數值差異,但反映出的規律和原文Table1是基本一致的。
四、訓練超參數對高低頻圖像的作用
1.論文觀點
??作者又分別分析了模型其他一些超參變化時高、低頻域圖像上訓練精度的變化,如BatchSize 、Vanilla、Dropout、Mix-up、BatchNorm、Adervisal Trainning等。結果如下,作者認為可以得出的結論是:小的batch size可以提高訓練和測試準確率,而高的batch size可以縮小泛化差距。還有一點就是BatchNorm能夠顯著提升高頻分量的捕捉能力。
2.復現條件
(1)使用和第一部分一樣的ResNet18和cifar10。
(2)只使用cifar10中5000張圖片,Adam, lr=0.01, batch size=100。使用圖片較少是為了加快速度。對Figure5只試驗了BatchNorm的情況。
3.試驗結果
4.結論
??由于顯存不夠,batch size最大只能試到100,能夠看出batch size大時訓練會慢一些。BatchNorm的試驗沒有成功復現原文高頻分量精度較高的現象,原因不明。
總結
??作者在論文中還繼續進行了對抗訓練的分析等等,我對這些部分不熟悉,暫不進行復現了。
總的來說,
(1)本文通過頻域分量的拆解,分析了CNN在圖像高低頻域分量上的表現,低頻泛化能力強,高頻更接近噪聲。
(2)通過復現此文學習了圖像頻域分析的相關技術,理解了高低頻分量的意義和作用。
??本文不是為了嚴格復現,只是為了自己學習練手,僅忠實列出我試驗的結果,文中理解不對,試驗不對的地方,還請各位批評指正。
總結
以上是生活随笔為你收集整理的【论文学习】高频分量有助解释卷积神经网络泛化 High-frequency Component Helps Explain the Generalization of CNN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeNet试验(四)使用shuffle
- 下一篇: Pytorch CookBook