假設訓練集有1000條數據,一個batch有100條數據。以神經網路的第一層為例,第一個batch前向傳播和反向傳播後得到參數向量w[1], b[1],對於網路的最終參數,它是以下面哪一種方式進行更新的呢?
【1】第二個batch是在第一個batch得到的w[1], b[1]基礎上做前向傳播和反向傳播得到w[2], b[2]....最後第10個batch在第9個batch基礎上做前向傳播和反向傳播,第10個完成後的參數就是最終神經網路的參數?
【2】第二個batch和第一個batch是獨立的,它計算一個獨立的w[2], b[2],....,最後所有的batch遍歷完後,用(w[1]+w[2]+...w[10])/10作為第一層神經網路的w參數?
?答案是第一種。梯度下降演算法是一個不斷迭代的過程,這個迭代過程就是為了不斷更新參數向量W和b,從而找到損失的最優解。
直觀上講就是不斷的學習數據中的特徵,而這個學習的過程就體現在參數向量W和b的更新。
而第二種,相當於每一個參數向量W和b只學習了一部分數據的特徵(知識),並沒有迭代的過程,不能算是梯度下降演算法。
下面以線性回歸為例子具體介紹一下什麼是梯度下降演算法,批量梯度下降演算法,隨機梯度下降演算法,小批量梯度下降以及他們的優缺點。
梯度下降演算法
梯度下降演算法的目的就是優化參數θ(W和b合併)
尋找最小的loss。對於線性回歸來說就是下面的式子: