由來
在神經網絡的訓練過程中,權重和偏差的初始值對模型的性能和訓練過程的收斂速度都有影響。隨機初始化是一種常用的權重和偏差初始值設置方法,它有助于打破對稱性,避免網絡陷入局部最優解。
概念
當所有權重和偏差都被設置為相同的初始值時,神經網絡的每個神經元在反向傳播時會計算相同的梯度,導致網絡無法學到不同的特征。為了避免這種情況,我們使用隨機初始化,即為每個權重和偏差分配隨機的小值。
通常,隨機初始化的原則是使用均勻分布或正態分布生成隨機數,并根據網絡的規模和結構來調整初始化的尺度。
代碼實現,一個簡單的隨機初始化示例,以正態分布為例
import numpy as npdef initialize_parameters(layers_dims):"""Initialize the parameters of the neural network.Arguments:layers_dims -- list containing the dimensions of each layer in the networkReturns:parameters -- python dictionary containing your parameters "W1", "b1", ..., "WL", "bL":Wl -- weight matrix of shape (layers_dims[l], layers_dims[l-1])bl -- bias vector of shape (layers_dims[l], 1)"""np.random.seed(42)parameters = {}L = len(layers_dims) # number of layersfor l in range(1, L):parameters['W' + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) * 0.01parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))return parameters