1. 程式人生 > >卷積神經網路(三):權值初始化方法之Xavier與MSRA

卷積神經網路(三):權值初始化方法之Xavier與MSRA

基礎知識

首先介紹一下Xavier等初始化方法比直接用高斯分佈進行初始化W的優勢所在:
一般的神經網路在前向傳播時神經元輸出值的方差會不斷增大,而使用Xavier等方法理論上可以保證每層神經元輸入輸出方差一致。
這裡先介紹一個方差相乘的公式,以便理解Xavier:

這裡寫圖片描述

Xavier

現在我們先來分析一層卷積:
這裡寫圖片描述
其中ni表示輸入個數。

根據概率統計知識我們有下面的方差公式:
這裡寫圖片描述

特別的,當我們假設輸入和權重都是0均值時(目前有了BN之後,這一點也較容易滿足),上式可以簡化為:
這裡寫圖片描述

進一步假設輸入x和權重w獨立同分布,則有:
這裡寫圖片描述

於是,為了保證輸入與輸出方差一致

,則應該有:
這裡寫圖片描述

為什麼要保證輸入和輸出的方差一致:如果不一致,則會造成方差越來越大(vary(y)>var(x)),或是越來越小(var(y)

為了保證前向傳播和反向傳播時每一層的方差一致,應

這裡寫圖片描述

但是,實際當中輸入與輸出的個數往往不相等,於是為了均衡考量,最終我們的權重方差應滿足

———————————————————————————————————————
這裡寫圖片描述
———————————————————————————————————————

學過概率統計的都知道 [a,b] 間的均勻分佈的方差為:
這裡寫圖片描述

因此,Xavier初始化的實現就是下面的均勻分佈

——————————————————————————————————————————
這裡寫圖片描述

MSRA

只考慮輸入個數時,MSRA初始化是一個均值為0方差為2/n的高斯分佈:
MSRA初始化方法
推導證明

推導過程與Xavier類似。

首先,用下式表示第L層卷積:
卷積表示
則其方差為:(假設x和w獨立,且各自的每一個元素都同分布,即下式中的n_l表示輸入元素個數,x_l和w_l都表示單個元素)
方差
當權重W滿足0均值時,上述方差可以進一步寫為:
方差整理——————————————————(1)
對於ReLU啟用函式,我們有:(其中f是啟用函式)
ReLU啟用方差—————————————————————(2)
帶入之前的方差公式則有:
最終方差
由上式易知,為了使每一層資料的方差保持一致,則權重應滿足:
結論
的不同,就是它是隻考慮前向傳播或者只考慮反向傳播的,然後使用高斯分佈,而沒有綜合考慮

補充說明

(1) 對於第一層資料,由於其之前沒有經過ReLU,因此理論上這一層的初始化方差應為1/n。但是,因為只有一層,係數差一點影響不大,因此為了簡化操作整體都採用2/n的方差;

(2) 反向傳播需要考慮的情況完全類似於“Xavier”。對於反向傳播,可以同樣進行上面的推導,最後的結論依然是方差應為2/n,只不過因為是反向,這裡的n不再是輸入個數,而是輸出個數。文章中說,這兩種方法都可以幫助模型收斂。

Xavier與MSRA比較

目前在各種深度學習領域的論文中,使用Xavier初始化方法的比MSRA要多。
雖然MSRA試圖去適應relu這一出發點感覺更好,但是博主個人認為其推導過程是存在弊端的:

一、公式一計算var(x)=E(x2)E(x)2時預設把第二項視為零,但是從公式二中我們知道x是前一層輸出經過啟用函式得到的值,而relu將x中原本的負項都置零了,因此實際上並不能認為公式一成立。

二、MSRA方法只考慮一個方向,無法使得正向反向傳播時方差變化都很小。

可能是因為以上原因,通常深度學習實踐中都是使用Xavier。

相關推薦

神經網路初始方法XavierMSRA

基礎知識 首先介紹一下Xavier等初始化方法比直接用高斯分佈進行初始化W的優勢所在: 一般的神經網路在前向傳播時神經元輸出值的方差會不斷增大,而使用Xavier等方法理論上可以保證每層神經元輸入輸出方差一致。 這裡先介紹一個方差相乘的公式,以便理解Xav

神經網路神經網路CNN的簡單實現部分Python原始碼

上週末利用python簡單實現了一個卷積神經網路,只包含一個卷積層和一個maxpooling層,pooling層後面的多層神經網路採用了softmax形式的輸出。實驗輸入仍然採用MNIST影象使用10個feature map時,卷積和pooling的結果分別如下所示。

搭建簡單圖片分類的神經網路-- 模型的測試和運用

兩個功能都在同一個檔案中 一、新建Disimage.py檔案 import tensorflow as tf from PIL import Image import os import numpy as np import matplotlib.pyplot as plt from Get

MatConvNet神經網路【影象滑動窗】

利用滑動窗搜尋影象中的特定內容 Matconvnet官方給出的神經網路分類器imagenet-googleNet-dag.mat已經具備了較強的識別能力,能識別1000種標籤。利用它再編寫一個滑動窗

神經網路應用簡單網路實現MNIST數字識別

卷積神經網路簡單實現MNIST數字識別 本篇的主要內容: 一個兩層卷積層的簡單卷積網路的TensorFlow的實現 網路的結構 在這張圖裡,我把每一層的輸入以及輸出的結構都標註了,結合閱讀程式碼食用效果更佳。 具體程式碼 具體的內容,都寫在相應位置的註釋中

神經網路學習率、權重衰減、動量

學習率、權重衰減、動量被稱為超引數,因為他們不是由網路訓練而得到的引數 權重衰減 L2正則化就是在代價函式後面再加上一個正則化項: C0代表原始的代價函式,後面那一項就是L2正則化項,λ就是權重衰減項。 作用:防止過擬合 原理: 一個所謂“顯

10分鐘看懂全神經網路 FCN 語義分割深度模型先驅

大家好,我是為人造的智慧操碎了心的智慧禪師。今天是10月24日,既是程式設計師節,也是程式設計師

十四、神經網路1介紹神經網路

本篇部落格主要內容參考圖書《神經網路與深度學習》,李航博士的《統計學習方法》National Taiwan University (NTU)李巨集毅老師的《Machine Learning》的課程,在下文中如果不正確的地方請積極指出。 如果喜歡請點贊

神經網路CNN之一維、二維詳解

由於計算機視覺的大紅大紫,二維卷積的用處範圍最廣。因此本文首先介紹二維卷積,之後再介紹一維卷積與三維卷積的具體流程,並描述其各自的具體應用。 1. 二維卷積 圖中的輸入的資料維度為14×1414×14,過濾器大小為5×55×5,二者做卷積,輸出的資料維度為10×1

吳恩達深度學習系列課程筆記神經網路

本系列文章將對吳恩達在網易公開課“深度學習工程師”微專業內容進行筆記總結,這一部分介紹的是“卷積神經網路”部分。 1、計算機視覺 計算機視覺在我們還是生活中有非常廣泛的應用,以下幾個是最常見的例子: 影象分類: 可以對影象中的物體種類進行判斷,如確定影象中

機器學習13神經網路CNN

一、Why CNN for Image? 1、對於一幅影象來說,用DNN全連線的話,引數會很多,而影象實際上是有很多冗餘的,有些地方的特徵可能不需要。而CNN其實是拿掉了DNN的一些引數。 2、識別工作中,有時候並不需要看整張圖,而只需要看部分位置如鳥嘴。不管鳥嘴出現在影象的哪個位置,

tensorflow 學習專欄使用神經網路CNN在mnist資料集上實現分類

卷積神經網路(Convolutional Neural Network, CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。卷積神經網路CNN的結構一般包含這幾個層:輸入層:用於資料的輸入卷積層:使用卷積核進行特徵提取和

TensorFlow實戰Chapter-6CNN-4-經典神經網路ResNet)

ResNet ResNet簡介 ResNet(Residual Neural Network)由微軟研究院的何凱明大神等4人提出,ResNet通過使用Residual Unit成功訓練152層神經網路,在ILSCRC2015年比賽中獲得3.75%的

Deep Learning模型CNN神經網路深度解析CNN

http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了網上幾位大牛的部落格,詳細地講解了CNN的基礎結構與核心思想,歡迎交流。 1. 概述    卷積神經網路是一種特殊的深層的神經網路模型,它的特殊性體現在兩個方面,一方面它的神經元

TensorFlow實戰Chapter-5CNN-3-經典神經網路GoogleNet)

GoogleNet GoogleNet 簡介 本節講的是GoogleNet,這裡面的Google自然代表的就是科技界的老大哥Google公司。 Googe Inceptio

神經網路CNN在語音識別中的應用

卷積神經網路(CNN)在語音識別中的應用 作者:侯藝馨 前言 總結目前語音識別的發展現狀,dnn、rnn/lstm和cnn算是語音識別中幾個比較主流的方向。2012年,微軟鄧力和俞棟老師將前饋神經網路FFDNN(Feed Forward Deep Neural Network)引入到聲學模

神經網路CNN_相關知識

斯坦福公開課 CS231n Convolutional Neural Networks for Visual Recognition : http://cs231n.stanford.edu/syllabus.html 網路引數初始化:https://www.cnblogs.com/yinheyi

神經網路CNN概念原理

  什麼是卷積神經網路呢?這個的確是比較難搞懂的概念,特別是一聽到神經網路,大家腦海中第一個就會想到複雜的生物學,讓人不寒而慄,那麼複雜啊.卷積神經網路是做什麼用的呢?它到底是一個什麼東東呢? 卷積神經網路的靈感源一種生物程序,其中神經元之間的聯結模式和動物視覺皮層組織非常相似。所以發明者把它叫做卷積神經網

機器學習神經網路

摘要:   卷積神經網路(Convolutional Neural Network,CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。 引言:   在傳統的機器學習中,通常是我們自己來尋找特徵,而深度學習中我們通過神經網路來自主的學習特診。在大量資

【6年人工智慧開發】簡述神經網路CNN

    在百度做了6年人工智慧方面的程式設計開發,也有很多這方面的經驗吧,從古至今,機器人一直承載著人類巨大的夢想。隨著各類感測器、語音互動、機器識別、SLAM等技術的蓬勃發展,機器人開始從科幻作品中走出