什么是損失函數
- 損失函數(Loss Function)也稱代價函數(Cost Function),用來度量預測值與實際值之間的差異
- 公式:
其中E即使損失函數,y表示真實值,y'表示預測值,損失函數即使預測值與實際值之間的差
損失函數的作用
- 度量決策函數內f(x)和實際值之間的差異
- 作為模型性能參考。損失數值越小,說明預測輸出和實際結果(也稱期望輸出)之間的差值就越小,也就說明我們構建的模型越好。學習的過程,就是不斷通過訓練數據進行預測,不斷調整預測輸出與實際輸出差異,使得損失值最小的過程
常用損失函數
- 均方誤差(Mean square error)損失函數。均方誤差是回歸問題或連續問題常用的損失函數,它是預測值與目標值之間差值的平方和,其公式和圖像如下:
- 交叉熵(Cross Entrioy)。交叉熵是Shannon信息論中的一個重要概念,主要用於度量兩個概率分布間的差異性信息,在機器學習中用來作為分類問題的損失函數。假設有兩個概率分布,tk(真實概率)和yk(預測概率),其交叉熵函數公式及圖形如下:
梯度下降
什么是梯度
- 梯度(gradient)是一個向量(矢量,有方向),表示某一個函數在該點處的方向導數沿着該方向取得最大值,即函數在該點處沿着該方向(此梯度的方向)變化最快,變化率最大。損失函數沿梯度相反方向收斂最快(即能最快找到極值點)。當梯度向量為零(或接近於0),說明損失函數到達一個極小值點,模型准確度達到一個極大值點。
- 通過損失函數,我們將“尋找最優參數”問題,轉換為了“尋找損失函數最小值”問題。尋找步驟:
1.損失是否足夠小?如果不是,計算損失函數的梯度。
2.按梯度的反方向走一小步,以縮小損失。
3.循環到1
這種按照負梯度不停地調整函數權值的過程就叫做“梯度下降法”。通過這樣的方法,改變每個神經元與其他神經元的連接權重及自身的擱置,讓損失函數的值下降的更快,進而將值收斂到損失函數的某個極小值。
導數
梯度下降算法會依賴於導數和偏導數
導數定義:所謂導數,就是用來分析函數“變化率”的一種度量。導數越大變化率越大,導數越小變化率越小,其公式為
- 導數的含義:反應變化的劇烈程度(變化率)
偏導數
“偏導”的英文本意是“partial derivatives”(表示局部導數)。對於多維變量函數而言,當球某個變量的導數時,就是把其他變量視為常量,然后對整個函數求其導數(相比於全部變量,這里只求一個變量,即為“局部”)例:
學習率
- 如果在梯度下降過程中,每次都按照相同的步幅收斂,則可能錯過極值點(下圖左),所以每次在之前的步幅減小一定比率,這個比率稱之為“學習率”(下圖右)
梯度遞減訓練法則
- 神經網絡中的權值參數是非常多的,因此針對損失函數E的權值向量的梯度如以下公式所示:
等式左側表示損失函數E的梯度,它本身也是一個向量,它的多個維度分別由損失函數E對多個權值參數Wi求偏導所得。當梯度被解釋為權值空間中的一個向量時,它就確定了E陡峭上升的方向,那么梯度遞減的訓練法則就如下所示:
梯度下降算法
- 批量梯度下降:批量梯度下降法(Batch Gradient Descent,BGD)是最原始的形式,它是指在每一次迭代時使用所有樣本來進行梯度的更新,
- 優點
- 一次迭代是對所有樣本進行計算,此時利用矩陣進行操作,實現了並行。
- 由全數據集去確定的方向能夠更好地代表樣本總體,從而更准確地朝向極值所在的方向。當目標函數為凸函數時,BGD一定能夠得到全局最優。
- 缺點
- 當樣本數目m很大時,每迭代一步都需要對所有樣本進行計算,訓練過程會很慢。
- 優點
- 隨機梯度下降:隨機梯度下降法(Stochastic Gradient Descent,SGD)每次迭代使用一個樣本對參數進行更新,使得訓練速度加快。
- 優點
- 由於不是在全部訓練數據上的損失函數,而是在每輪迭代中,隨機優化某一條訓練數據上的損失函數,這樣每一輪參數的更新速度大大加快
- 缺點:
- 准確度下降。由於即使
- 優點
- 小批量梯度下降:小批量梯度下降(Mini-Batch Grradient Descent,MBGD)是對批量梯度下降以及隨機梯度下降的一個折中方法、其思想是:每次迭代使用指定個(batch_size)樣本來對參數進行更新。
- 優點:
- 通過矩陣運算,每次在一個batch上優化神經網絡參數並不會比單個數據慢太多。
- 每次使用一個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂到的結果更加接近梯度下降的結果。
- 缺點:
- batch_size的不當選擇可能會帶來一些問題
- 優點:
幾種梯度下降算法收斂比較
- 批量梯度下降穩健地向着最低的前進的
- 隨機梯度下降震盪明顯,當總體上向最低點逼近
- 小批量梯度下降位於兩者之間
小結
本章節介紹了損失函數與梯度下降概念與算法
- 損失函數用戶度量預測值與期望值之間的差異,根據該差異值進行參數調整
- 梯度下降用於以最快速度、最少的步驟快速找到損失函數的極小值。