一、梯度下降法原理和步驟
梯度下降法是機器學習中常用的優化演算法,可以幫助我們得到函數的最小值。它的原理是通過不斷地迭代,找到函數的局部最小值或全局最小值。步驟如下:
1、給定一個初始值。
2、將該值代入函數,得到梯度。
3、將梯度乘以一個步長,從而得到一個新的位置。
4、重複步驟2和3,直到函數的值不再下降為止。
梯度下降法的缺點是容易陷入局部最小值,不一定能夠找到全局最小值。
二、隨機梯度下降的優缺點
隨機梯度下降與梯度下降法類似,只是在每一次迭代時,只考慮一個樣本的損失函數。優點是收斂速度快,缺點是比較不穩定,容易收斂到局部最小值。此外,隨機梯度下降演算法也容易受到雜訊的影響。
三、小批量梯度下降的優點
小批量梯度下降是隨機梯度下降和梯度下降的一種折中方案,它在每次迭代時,使用小批量樣本的損失函數來更新參數。相比於隨機梯度下降,它的優點在於更加穩定,容易收斂到全局最小值。而相對於梯度下降法,它的優點在於訓練速度更快,內存佔用更小,可以處理更大規模的數據集。
四、小批量梯度下降中的小批量體現在
小批量指的是每次更新參數時使用的樣本數。一般來說,該值是在幾百個到幾千個之間。小批量梯度下降可以看作是梯度下降和隨機梯度下降的結合體,比起全量梯度下降和隨機梯度下降,小批量梯度下降的代價函數誤差比全量梯度下降小,參數的更新比隨機梯度下降更加穩定。
五、小批量梯度下降法步驟
1、給定一個初始值。
2、將該值代入函數,得到損失函數。
3、從訓練數據中隨機抽取一小批量樣本。
4、計算該小批量樣本的損失函數,並計算梯度。
5、將梯度乘以一個步長,從而得到一個新的位置。
6、重複步驟3到5,直到滿足停止條件。
六、小批量梯度下降公式
假設代價函數為J(θ),θ為參數向量。則小批量梯度下降的更新公式如下:
θ = θ - α(1/m)∑ij=1∇θJi(θ)
其中,m為小批量樣本的大小,α為學習率,∇θJi(θ)為對於第i個樣本的損失函數求導結果。該公式表示,每一次更新參數時,我們需要對本批量樣本中的每個樣本求得損失函數的梯度,然後對這些梯度做平均,得到一個平均梯度。最後,將參數向量減去學習率乘以平均梯度,進行參數的更新。
七、小批量梯度下降法adm
ADM是Adaptive Moment Estimation的縮寫,是一種常用的、自適應學習率的優化方法。在小批量梯度下降中,通常結合ADM使用。ADM考慮了梯度的一階矩估計和二階矩估計,以此來自適應地調整學習率。
八、小批量隨機梯度下降法
小批量隨機梯度下降是小批量梯度下降和隨機梯度下降的結合,即每次使用一小批量樣本來計算梯度,同時也引入了一定的隨機性。
九、小批量梯度下降法matlab實現
在MATLAB中,我們可以使用如下代碼實現小批量梯度下降演算法:
alpha = 0.01; batch_size = 128; theta = randn(num_features, 1); num_batches = ceil(num_train_examples / batch_size); for epoch = 1:max_epochs perm = randperm(num_train_examples); x_train = x_train(:, perm); y_train = y_train(:, perm); for batch = 1:num_batches x_batch = x_train(:, (batch-1)*batch_size+1:batch*batch_size); y_batch = y_train(:, (batch-1)*batch_size+1:batch*batch_size); gradient = (1/batch_size) * x_batch * (sigmoid(x_batch' * theta) - y_batch)'; theta = theta - alpha * gradient; end end
其中,batch_size為小批量樣本的大小,theta為參數向量,num_batches為迭代次數,perm為隨機打亂的樣本索引。演算法利用嵌套循環,對於每一個epoch和batch,都計算一次損失函數的梯度,進行一次參數的更新。
原創文章,作者:NKGS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138748.html