梯度下降法(Gradient Descent)推導和示例(必看!!!)
梯度下降法 (Gradient Descent Algorithm,GD) 是為目標函數J(θ),如代價函數(cost function), 求解全局最小值(Global Minimum)的一種迭代算法。(其可由泰勒一階展開式推出!)
為什么使用梯度下降法

α表示學習速率(learning rate)。
梯度下降法的工作原理
梯度下降法的類型
基於如何使用數據計算代價函數的導數,梯度下降法可以被定義為不同的形式(various variants)。確切地說,根據使用數據量的大小(the amount of data),時間復雜度(time complexity)和算法的准確率(accuracy of the algorithm),梯度下降法可分為:
1. 批量梯度下降法(Batch Gradient Descent, BGD);
2. 隨機梯度下降法(Stochastic Gradient Descent, SGD);
3. 小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)。
批量梯度下降法原理

其中,m是訓練樣本(training examples)的數量。
Note:
1. 如果訓練集有3億條數據,你需要從硬盤讀取全部數據到內存中;
2. 每次一次計算完求和后,就進行參數更新;
3. 然后重復上面每一步;
4. 這意味着需要較長的時間才能收斂;
5. 特別是因為磁盤輸入/輸出(disk I/O)是系統典型瓶頸,所以這種方法會不可避免地需要大量的讀取。
上圖是每次迭代后的等高線圖,每個不同顏色的線表示代價函數不同的值。運用梯度下降會快速收斂到圓心,即唯一的一個全局最小值。批量梯度下降法不適合大數據集。
隨機梯度下降法原理

這里m表示訓練樣本的數量。
如下為隨機梯度下降法的偽碼:
1. 進入內循環(inner loop);
2. 第一步:挑選第一個訓練樣本並更新參數,然后使用第二個實例;
3. 第二步:選第二個訓練樣本,繼續更新參數;
4. 然后進行第三步…直到第n步;
5. 直到達到全局最小值
如下圖所示,隨機梯度下降法不像批量梯度下降法那樣收斂,而是游走到接近全局最小值的區域終止。

小批量梯度下降法原理
小批量梯度下降法是最廣泛使用的一種算法,該算法每次使用m個訓練樣本(稱之為一批)進行訓練,能夠更快得出准確的答案。小批量梯度下降法不是使用完整數據集,在每次迭代中僅使用m個訓練樣本去計算代價函數的梯度。一般小批量梯度下降法所選取的樣本數量在50到256個之間,視具體應用而定。
1.這種方法減少了參數更新時的變化,能夠更加穩定地收斂。
2.同時,也能利用高度優化的矩陣,進行高效的梯度計算。
隨機初始化參數后,按如下偽碼計算代價函數的梯度: