引數初始化策略中提到的零空間理解

2021-10-23 15:51:23 字數 1022 閱讀 9222

在花書《深度學習》中,第8.4節講到引數的初始化策略,提到:通常來說,最好還是初始化每個單元使其和其他單元計算不同的函式。這或許有助於確保沒有輸入模式丟失在前向傳播的零空間中,沒有梯度模式丟失在反向傳播的零空間中。

這裡的「零空間」是怎麼理解的?

根據個人理解,是這樣的:

神經網路的所有引數串聯起來可以組成乙個向量,可稱之為引數向量。引數向量的每個引數的變化可以形成不同的引數向量,所有的引數向量可以張成乙個向量空間,該空間可以稱之為引數空間。神經網路的訓練就是在這個引數空間中尋找乙個最佳的引數向量,使神經網路取得最好的效果。引數向量的搜尋方式是梯度下降法。

如果,引數向量中的兩個引數被初始化為相同的數值,而且恰巧這兩個引數所在的神經元又有相同的輸入,相同的計畫函式。那麼相同的引數就會導致這兩個神經元有相同的輸出。損失函式的計算方式與梯度的計算方式是一樣的,進而這兩個引數的更新梯度也就是一樣的,即:這兩個引數會被執行相同的更新,也即,這兩個引數是完全相關的。

如果乙個向量空間中,向量中的兩個元素是完全相關的,那麼,該向量空間中的所有向量實際上張成的是乙個子空間。原本我們期望的引數空間是乙個全空間,因為這種情況下,引數有更大的搜尋空間。現在引數空間坍縮成了乙個子空間,減小了引數的候選範圍,這不是我們想要的。

進而,說到零空間。關於零空間的理解可以參考我之前的部落格:零空間。這裡只引關鍵的一點:乙個運算元的子空間維度(運算元的秩)+該運算元的零空間維度=該運算元的全空間維度。

引數空間由全空間(假如是n維空間)坍縮為子空間時,運算元的秩也由n變為小於n,運算元的零空間也由0維提公升為大於等於1維,即,輸入空間(運算元的原像空間)中的許多樣本就會落入運算元的零空間中。

對應的,因為神經網路運算元不是滿秩,進而神經網路運算元的逆也不是滿秩,所以神經網路運算元的逆也存在維度大於等於1的零空間,所以,也會有梯度會落在反向傳播運算元的零空間中,導致梯度更新失敗。

後記:有些理解或描述不一定準確,望有發現錯誤者斧正。

如:輸入空間時p維,輸出空間是q維,那麼,神經網路的運算元可以用乙個維度為p*q的矩陣表示。而共有n個引數,所以引數空間是n維的,進而,神經網路運算元矩陣的秩也是n。一般n<。。。還是不太清晰

oracle中的初始化引數檔案

oracle初始化引數檔案管理 oracle例項是指執行狀態下的oracle軟體,是由記憶體結構跟一些程序結構組成的,主要實現資料庫的訪問跟控制功能,是oracle的核心。初始化引數檔案是oracle例項執行所需要的引數配置檔案,oracle例項啟動是必須先從引數檔案中讀取資料。初始化引數檔案分為p...

神經網路的引數初始化

1.對於神經網路fminunc函式,我們需要初始化神經網路的initialtheta的引數。對於邏輯回歸來說,我們可以全部初始化為0,但是對於神經網路來說將initialtheta全部初始化為0是不可以的。2.為什麼全部初始化成0是不可以的呢?如果所有引數初始化成0,那麼隱藏層的每個節點的輸出都是相...

DeepCV 模型引數的初始化方式

backto deepcv 模型選好了,在訓練之前,那麼多的 w ww 和 b bb 該如何初始化呢?trial error,試錯中前行 超級省事,但是 absolutely wrong!所有引數都是 0 還是所有的神經元步調完全一致,怎麼訓練,怎麼梯度下降?哎,這還靠譜些。比如指定,w n 0,1...