值得再度好多遍:https://www.cnblogs.com/wj-1314/p/9593364.html
摘抄自‘ 戰爭熱誠’ 的博文
權值共享:
下圖左:如果我們有1000x1000像素的圖像,有1百萬個隱層神經元,那么他們全連接的話(每個隱層神經元都連接圖像的每一個像素點),就有1000x1000x1000000=10^12個連接,也就是10^12個權值參數。然而圖像的空間聯系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經元都不需要對全局圖像做感受,每個神經元只感受局部的圖像區域,然后在更高層,將這些感受不同局部的神經元綜合起來就可以得到全局的信息了。這樣,我們就可以減少連接的數目,也就是減少神經網絡需要訓練的權值參數的個數了。如下圖右:假如局部感受野是10x10,隱層每個感受野只需要和這10x10的局部圖像相連接,所以1百萬個隱層神經元就只有一億個連接,即10^8個參數。比原來減少了四個0(數量級),這樣訓練起來就沒那么費力了,但還是感覺很多的啊,那還有啥辦法沒?
我們知道,隱含層的每一個神經元都連接10x10個圖像區域,也就是說每一個神經元存在10x10=100個連接權值參數。那如果我們每個神經元這100個參數是相同的呢?也就是說每個神經元用的是同一個卷積核去卷積圖像。這樣我們就只有多少個參數??只有100個參數啊!!!親!不管你隱層的神經元個數有多少,兩層間的連接我只有100個參數啊!親!這就是權值共享啊!親!這就是卷積神經網絡的主打賣點啊!親!(有點煩了,呵呵)也許你會問,這樣做靠譜嗎?為什么可行呢?這個……共同學習。
好了,你就會想,這樣提取特征也忒不靠譜吧,這樣你只提取了一種特征啊?對了,真聰明,我們需要提取多種特征對不?假如一種濾波器,也就是一種卷積核就是提出圖像的一種特征,例如某個方向的邊緣。那么我們需要提取不同的特征,怎么辦,加多幾種濾波器不就行了嗎?對了。所以假設我們加到100種濾波器,每種濾波器的參數不一樣,表示它提出輸入圖像的不同特征,例如不同的邊緣。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為Feature Map。所以100種卷積核就有100個Feature Map。這100個Feature Map就組成了一層神經元。到這個時候明了了吧。我們這一層有多少個參數了?100種卷積核x每種卷積核共享100個參數=100x100=10K,也就是1萬個參數。才1萬個參數啊!親!(又來了,受不了了!)見下圖右:不同的顏色表達不同的濾波器。