摘要:然后,小隨機數初始化如是可以的函數是基于零均值和標準差的一個高斯分布,不過不是越小越好,權重初始化的太小的話計算出來的激活值會很小,在反向傳播中就會得到很小的梯度,后果你知道的。
【DL-CV】卷積神經網路<前篇---后篇>【DL-CV】批量歸一化(BN算法)
數據預處理在網絡訓練時,我們通常會對原始數據進行預處理再喂給網絡進行訓練,而不是直接把原始數據喂給網絡。這樣能減少訓練時問題的發生,提高網絡模型的性能。現在我們有原始數據 X,其尺寸是 NxD(N是數據樣本數量,D是數據的維度)
均值減法均值減法(Mean subtraction)是預處理最常用的形式,將數據的每一維特征都減去平均值即可,在numpy的實現是X -= np.mean(X, axis=0),它能使數據零中心化。
另外還有一些類似的方法對圖像數據預處理來說也很可能用到:
直接減去整個數據的均值,X -= np.mean(X),對于圖像,可以移除圖像的平均亮度值,因為很多情況下我們對圖像亮度并不感興趣,而是關注其內容,所以將圖像整體減去像素均值是有意義的
減去每個顏色通道上的均值
歸一化歸一化(Normalization)也是一種預處理的方法,他將數據的所有維度都歸一化,使其數值范圍都近似相等。先對數據做零中心化處理,然后每個維度都除以其標準差
x = x - np.mean(x, axis=0) x = x / np.std(x, axis=0)
除此之外,預處理方法還有PCA和白化,但在圖像處理這一塊他們用得并不是很多,這里就不講了,有興趣自查。在圖像識別領域,更常用的是零中心化和歸一化,特別是零中心化
零中心化在使用時,先將樣本數據分成訓練/驗證/測試集,從訓練集中求得平均值,然后將各個集(訓練/驗證/測試集)中的數據再減去這個均值。
首先,全零初始化想想都知道肯定是錯的。
然后,小隨機數初始化如W = 0.01 * np.random.randn(D,H)是可以的(randn函數是基于零均值和標準差的一個高斯分布),不過不是越小越好,權重初始化的太小的話計算出來的激活值會很小,在反向傳播中就會得到很小的梯度,后果你知道的。
但是,還不是最好的,小隨機數初始化有一個問題就是隨著輸入數據量的增長,隨機初始神經元輸出數據的方差也增大,這樣網絡一深問題就大了。解決方法是:除以輸入數據量的平方根來調整數值范圍,使神經元輸出的方差歸一化為1,也就是W = np.random.randn(in, out) / sqrt(in) ,其中in是輸入數據的數量(若W尺寸 DxH ,則in=D,out=H)。這種更厲害的方法叫做 Xavier初始化,他保證了網絡中所有神經元起始時有近似同樣的輸出分布。實踐經驗證明,這樣做可以提高收斂的速度。
《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》論文指出,使用relu激活函數的網絡,由于一半的激活值變成了0,相當于一半的輸入數據量是對方差無貢獻的,為保持輸入輸出的方差維持不變,初始化方法也作了相應改變(根號中的數據量除以二): W = np.random.randn(in, out) / sqrt(in/2) ,這是針對使用relu的初始化方法。
至于偏置值,通常初始化為0
總結針對圖像識別領域,通常來說
數據預處理使用零中心化
權重初始化使用Xavier;如網絡使用relu,使用W = np.random.randn(in, out) / sqrt(in/2)
偏置值初始化為0
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42364.html
摘要:為什么呢本文將對這一問題進行解疑并介紹多種多種激活函數。激活函數就是用來引入這個非線性因素的,下面介紹幾種常見的激活函數及其優缺點正負號表示。如果想了解更多可上網搜激活函數選擇在同一個模型中,激活函數不會混搭使用,選定一個就用一個。 【DL-CV】反向傳播,(隨機)梯度下降【DL-CV】神經網絡的補充 在介紹線性分類器的時候,提到了激活函數,還提到線性分類器的輸出要經過激活函數才能作為...
閱讀 1341·2023-04-25 23:42
閱讀 2808·2021-11-19 09:40
閱讀 3520·2021-10-19 11:44
閱讀 3529·2021-10-14 09:42
閱讀 1860·2021-10-13 09:39
閱讀 3821·2021-09-22 15:43
閱讀 665·2019-08-30 15:54
閱讀 1448·2019-08-26 13:32