初始化方法有多種,包括全零或等值初始化、正態初始化、均勻初始化、Xavier初始化等。
全零或等值初始化:每個神經元學到的東西相同,可能導致「對稱性」問題。
正態初始化:均值為零,標準差設定一個小值,有助於有相同的偏差,權重有正有負。
均勻初始化:均勻分布的區間通常為【-1/sqrt(fan_in),1/sqrt(fan_in)】,其中fan_in表示輸入神經元的數量,fan_out表示輸出神經元的數量。
Xavier Initialization:根據sigmoid函式圖像的特點,如果初始化值很小,那麼隨著層數的傳遞,方差就會趨於0,此時輸入值也變得越來越小,接近於線性,失去了非線性。如果初始值很大,那麼隨著層數的傳遞,方差會迅速增加,此時輸入值變得很大,而sigmoid在大輸入值附近寫倒數趨近於0,反向傳播時會遇到梯度消失的問題。
此外,在程式語言如C++中,變數的初始化方法包括默認初始化、直接初始化和拷貝初始化。默認初始化是如果沒有顯式指定初始化值,變數將被默認初始化。直接初始化是使用等號(=)初始化一個變數,拷貝初始化是將一個對象的值賦給另一個變數。