AlexNet中Local Response Normalization(局部響應歸一化)個人理解

1. 公式介紹

首先論文中已經有了公式的介紹,但是剛看的時候會覺得有些懵,先看看LRN的定義:
在這裏插入圖片描述
第一眼看上去公式好像很複雜,我一開始也這麼覺得。。。後來細看了兩邊之後發現好像跟某種公式有着差不多的結構,具體什麼公式也不記得了,就覺得很像,然後比較好理解了,總之大概意思就是求某一個值在整體值中的佔比。
bi=ai/inai2 b_{i} = a_{i}/\sqrt {\sum^n_{i} a_{i}^2}
然後再來看文章中的這個公式,這裏直接根據我的理解舉個實際的栗子吧,看栗子比較簡單。
在網上找了一張應該是cs231n的圖,希望不要侵權,做學術的東西,能叫偷麼?
就拿這個圖舉例子吧,首先是一個三通道(3 channels)的圖像輸入,經過6個kernel的卷積得到了6張feature map,這是前提條件,然後來看文章中的公式。
在這裏插入圖片描述
首先先解釋一下每個參數的意思(所有解釋都建立在博主的理解之上,如有錯誤感謝指出):

  1. a,也就是卷積+ReLU後的輸出值,對應feature map上的一個格子;
  2. b,LRN計算的輸出值;
  3. i,第i個kernnel,這個kernel卷積形成了第i個feature map;
  4. N,feature map的總數,在上慄中,N=6;
  5. (x,y),這個根據論文來看應該是輸入圖片中像素(x,y)的位置(position);
  6. 其餘的都是超參數,其中最重要的就是n,下面會解釋。

現在知道了式子中參數的含義,就來通過栗子解釋一下這個圖在幹嘛,首先假設我們取i=3、n=2。
在這裏插入圖片描述
如圖所示,這個i=3就相當於是第三個feature map。
然後n=2是什麼意思呢?根據公式中求和符號的上下方表達式可以看出,這個n的意思就是在第i個feature map的前後各取n/2個feature map來與這第i個feature map做運算。n=2也就是在第3個feature map前後各取一個,也就是下圖中紅色剪頭所指的fm。
在這裏插入圖片描述

在這裏插入圖片描述
然後這個公式的意思就相當於是在fm的深度方向做一個歸一化,求取第i個fm在其周圍幾個fm中的佔比進行輸出。
在這裏插入圖片描述
然後從名字上也可以看出一些意思(LRN,局部響應歸一化),局部的意思應該就是指某一個(第i個)fm周邊的幾個fm之間做歸一化,而不涉及全體fm,所以是局部;相應應該就是經過卷積+ReLU後的響應值所做的歸一化;至於歸一化,應該就不用解釋了!

本文是我個人的理解,如果有錯誤感謝指出!然後後面好像有論文指出AlexNet中用到的這個LRN實際上是沒卵用的,除了消耗更多的內存和時間!^ _ ^,具體對不對,大佬說了算!

2. 代碼實現

後面在看代碼的時候,看到Github上是這樣寫的:
在這裏插入圖片描述
在那一瞬間,我又凌亂了,這個nn.AvgPool3d操作,在所有係數相加之後還要除以一個元素個數啊!!!可是原公式裏是直接平方和,並沒有除以個數啊!!!看了一晚上,也沒看出來爲什麼要這麼寫,後來偶然在博客裏面看到,caffee的實現就是上面那段代碼,除以了個數n,而tensorflow則是用的原論文公式!!!我。。。下圖第一張是tf裏面用的公式,第二個是caffee,github上的代碼就是用的caffee的公式,我xx。。。浪費這麼久時間
在這裏插入圖片描述
在這裏插入圖片描述
然後對比這篇博客tensorflow中的lrn函數詳解中tf的lrn實現,對github上的代碼進行了修改(也就是改掉了除以m的那一行),改成tf也就是原論文的實現方式然後在notebook裏測試了一下,結果如下:
在這裏插入圖片描述
在這裏插入圖片描述
然後是結果對比,第一張圖是修改Github代碼後跑的結果,第二章是上面提到的博客中的結果
在這裏插入圖片描述
在這裏插入圖片描述
數值已經非常接近了,至於這些誤差應該是來源於計算公式和浮點數精度吧,不過至少證明了我一晚上是白想了!!!

3. cs231n的cifar10數據集測試

正好cs231n裏面assignment2的最後一段自己寫代碼還沒做,就直接套用了alexnet的結構試了一下,先是嫌麻煩,沒加LRN的網絡,下面是訓練截圖:

3.1 簡化AlexNet測試(無LRN)

在這裏插入圖片描述
在這裏插入圖片描述

3.2 帶LRN的AlexNet測試

在這裏插入圖片描述
在這裏插入圖片描述

3.3 不嚴謹結論

果不其然,加了LRN好像真沒什麼卵用,除了讓訓練時間增加了大約20s,測試正確率不相上下,不過這裏只跑了一次,沒有用大量實驗來做支撐,沒什麼說服力,不過就這樣來看好像並沒有太大的提升!

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