對於batchnorm層的理解


batchnorm層的作用是什么?

batchnorm層的作用主要就是把結果歸一化,

首先如果沒有batchnorm ,那么出現的場景會是:

 

過程模擬

首先batch-size=32,所以這個時候會有32個圖片進入resnet.

其次image1進入resnet50里面第2個卷積層,然后得出一個結果,這個結果是一個feature,這個feature是一個貓,此時他的位置是在坐標軸的左上角

接下來同一個batch里面的

image2進入resnet50里面仍然是第2個卷積層然后得到一個結果,這個結果必然也會是一個feature,同時,此刻的feature是一個狗的模樣,此時他的位置在坐標軸左中的位置

 以此這樣,32個圖片都在第一個卷積層做完了卷積

 

 

接下來可以講一下什么是卷積和激活

卷積其實就是匹配的過程,卷積中的一個weight就是一個特征提取器,所謂的特征提取器就是看你像不像,如果像(),那么激活你,如果不像,那么把你kill掉

像: relu(w*x)>0 即w*x>0   而w*x>0,也就是w,x同號,如果這個w是找眉毛,同號,激活,得到結果,如果結果正確,那么讓這個w更大,他對於眉毛的提取會更好,如果不正確,那么讓這個w變小,也就是說這個w可以廢了,因為這個w也只是對於這個feature進行作用,如果找了半天,錯了,那就不用你找了,所以讓w減小,如果減少到0,那么就永遠不會被激活了

不像:relu(w*x)<0 即w*x<0   而w*x<0,   也就是w,x異號,如果這個w是找眉毛,異號,不激活,w不改變,

 

這樣就明白了卷積和激活的作用,就是在不停的比對,並對這個比對給予判斷

那么我們對於bn的作用就逐漸明朗了,bn的作用是要在不影響現實分布結果

這句話要分成兩點看,一個是前提,一個是作用

前提:不能影響真實分布,所以要對一整個batch進行分布,這樣才會保證貓和狗的分界線是一樣的,只是把分界線從左上角平移到了原點附近,這個不會影響最終結果,因為卷積和激活就是比對,判斷。在哪比對不是比對,所以不影響結果。

作用:比對誰?答案簡單,即比對貓和狗,那么比對貓和狗的時候,第1個bacth從第1個卷積層出來的結果可能和第2個bacth從第1個卷積層出來的結果是不一樣的(可能會跑到右上角),導致的原因是訓練不充分。

那么第二個卷積層第一次學習的weight其實都會變得有問題,因為此刻第二個卷積層在面對第一個batch時,學習到的結果是讓某一部分激活,但是他激活的是第二象限的坐標,如果面對第一象限的坐標,那么肯定激活的結果與之前產生了顛倒。而第3個batch如果又是第二象限,那么又出現了顛倒,第4個batch在第一象限,那么激活的結果又出現了顛倒,這樣學習的很慢,對於weight要求很高。最終很久很久之后可能才能學到一個既能比對第二象限,又能比對第一象限的卷積層,但是結果未必好,

而如果有bn,那么每次都把分布放回到原點附近,那么在不改變真實分布的前體下,又能不會讓各個batch有更大的偏差

 

keywords:

比對,激活,batch,不能讓激活層手忙腳亂

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM