以下資料來自:
李巨集毅老師《機器學習》2020春季-gradient
3blue1brown《深度學習 deep learning》
結合自己的學習筆記整理而成
在李巨集毅老師的課程中,任何機器學習都可以分為三步走,類似將大象放進冰箱的問題:
選取模型
評價模型的好壞
優化模型直至最優解
那麼梯度下降(gradient descent)的概念,在step3會起到非常重要的作用。下面就從易到難,逐步理解梯度下降的思想。
單變數假設有一堆散點,我們要依據其擬合一條直線(過原點),那麼問題的引數就只有一次項係數w,最終評價模型的方式就是其他點與w的偏差,評價的方式有很多,也就是step2的工作,我們這裡不詳細講述。
假設我們採用了se(平方誤差):
上標n表示你的第n個樣本,y-hat表示真實值,那麼這個loss(損失函式)就可以評價你的模型引數w選取的好壞,這裡l是w的函式,所以我們想要將l最小化。
這裡先不講梯度下降,我們來看一下面對的問題:
上面的式子中只有未知數w,其他都是常數,將其展開,無非就是w的一元二次多項式,我們甚至可以直接利用小學二年級學的知識,求出其最小值。
問題結束了嗎?沒有。單變數比較容易,但是多變數函式直接求最值恐怕就沒有那麼容易了,所以下面我們換一種角度看問題,我們嘗試將l(w)進行視覺化,如下圖:
圖中可以看到l(w)與w的關係,假設我們不計算最值,而是讓電腦隨便找乙個w,然後通過某種演算法讓其逐步找到能使l(w)最小的w,也就是圖中的最低谷,這就是梯度下降。
注意:這裡的l(w)的影象與我們假設的問題不完全相同。
具體方法其實圖中已經講清楚了,就是我們隨機找乙個w,然後計算其梯度(在一元函式中就是斜率),根據斜率,決定其變化的方向,如果斜率為負,說明向右改變w才能使l更小,於是重複以上步驟,最終可以找到l的最小是對應的w。
注意:這裡可能會只找到local minima(區域性最小值)而沒有找到global minima(全域性最小值)。
到這裡,梯度下降的概念已經在單變數的情況已經清楚了,接下來看2個變數。
2個變數
依舊可以使用數學方法計算二元多次函式的最值,但是數學方法對高維的可拓展性比較差,但機器學習不會,這也是機器學習的優點之一。
對於一元函式,不論損失函式如何設計,只會影響次數的高低,最終依舊是乙個平面(二維空間)就可以視覺化的形式:
推廣到二元函式,視覺化後就是乙個三維空間;換言之,只要是二元,那麼不論其形式如何,最終都是與下圖類似的形式:
我們要想找到最小值,那麼在移動的時候就需要按照l(w,b)的梯度的反方向進行移動,移動的距離就是我們所知的學習率,最終一步步移動到最小值。這樣的邏輯比起計算多元函式的最值,更適合機器操作。
於是,我們就可以拓展到高維,雖然已經無法視覺化,但是不難模擬,結果依舊可以轉變為如下問題:
找乙個多元函式的最值,其對應的點的座標就是我們要找的最優引數。
多個引數
所以,在高維空間(多個引數)的情況也可以使用同樣的思想,找梯度,按照梯度下降的方向,更新引數,最終找到最小值,這便是梯度下降。
反向傳播(back propagation)
耳熟能詳的bp神經網路中的bp就指back propagation。
接下來就可以利用反向傳播尋找梯度。
神經網路 梯度下降
優化問題newton s method 牛頓法 least squares method最小二乘法 gradient descent梯度下降法 當 cost對w的梯度最小 斜率最小 時,誤差最小。我們從圖中可以看出,cost 誤差最小的時候正是這條 cost 曲線最低的地方,不過在藍點的 w 卻不知...
神經網路中回歸問題梯度下降的直觀理解
修改迭代次數,就可以直 到回歸問題中採用梯度下降法尋找local minimal的過程。下圖給出了迭代次數分別為1,10,100000時到達local minimal的路徑。import matplotlib import matplotlib.pyplot as plt matplotlib.us...
神經網路的梯度下降法
常用的神經網路如bp神經網路 rbf神經網路等都有三層神經元,即輸入層 隱藏層和輸出層。我們知道通過不斷的修改神經元之間的權值和偏置使網路的輸出能夠擬合所有的訓練輸入,為了量化這個目標,引入乙個代價函式 其中w表示所有網路中權值集合,b是所有的偏置,n是訓練輸入資料的個數,a表示當輸入為x時輸出的向...