讀這篇文章有感。
我來總結(jié)一下,便于記憶。
- 最小二乘法(Least Square Method)適用于二維空間,用直線 y=ax+b 對二維空間(平面)的數(shù)據(jù)進(jìn)行擬合。將true label與直線評測出的值的偏差的平方和作為最小條件來選擇參數(shù)a,b。
- 線性回歸(Linear Regression)將最小二乘法拓展到多維空間,用超平面 y=Wx+b 對多維空間的數(shù)據(jù)進(jìn)行擬合。 與最小二乘法類似,將true label與超平面評測出的值的偏差的平方和作為最小條件來選擇參數(shù)W,b。
- 邏輯回歸(Logistics Regression)僅僅是在線性回歸模型外面加了一層映射函數(shù)(sigmoid函數(shù))。邏輯回歸其實(shí)是一種分類模型!
sigmoid函數(shù)其中,z=Wx+b(線性回歸模型),若z很大,則f(z) ≈1;若z很小,則f(z)≈0。
二分類問題中使用sigmoid函數(shù),多分類問題中使用softmax函數(shù)。
邏輯回歸模型詳解
邏輯回歸模型的成本函數(shù)推導(dǎo):
可以看到,此處用了交叉熵?fù)p失函數(shù)來作為成本函數(shù)。
那么為什么使用交叉熵而不是二次代價函數(shù)(最小二乘法)來定義呢?
原因如下:
-
為什么不用二次代價函數(shù)?
- 對于多元函數(shù),由于變量過多,用最小二乘法定義的成本函數(shù)(損失函數(shù))并不是在整個集合上都是凸函數(shù),很難進(jìn)行優(yōu)化。
- 由于邏輯回歸模型使用了sigmoid函數(shù)作為激活函數(shù),根據(jù)sigmoid函數(shù)的性質(zhì),函數(shù)值趨近于0和1的時候梯度值過小,會導(dǎo)致在后續(xù)梯度下降算法中參數(shù)收斂速度過慢。
-
為什么用交叉熵?fù)p失函數(shù)?
- 交叉熵代價函數(shù)的兩個性質(zhì)
- 非負(fù)性(所以我們的目標(biāo)就是最小化代價函數(shù))
- 當(dāng)true label與預(yù)測值接近時,代價函數(shù)接近于0
- 可以克服二次代價函數(shù)更新過慢的問題。根據(jù)梯度下降算法可知,當(dāng)誤差大的時候參數(shù)更新越快;誤差小的時候參數(shù)更新越慢。
- 交叉熵代價函數(shù)的兩個性質(zhì)
優(yōu)化算法(成本函數(shù)最小化方法):
采用隨機(jī)梯度下降方法來最小化交叉熵成本函數(shù)。
梯度下降(Gradient Descent):朝著梯度的反方向迭代地調(diào)整參數(shù)直到收斂。
Note:
梯度下降的幾何意義描述:梯度下降實(shí)際上是一個“下坡”的過程。在每一個點(diǎn)上,我們希望往下走一步(假設(shè)一步為固定值0.5米),使得下降的高度最大,那么我們就要選擇坡度變化率最大的方向往下走,這個方向就是成本函數(shù)在這一點(diǎn)梯度的反方向。每走一步,我們都要重新計(jì)算函數(shù)在當(dāng)前點(diǎn)的梯度,然后選擇梯度的反方向作為走下去的方向。隨著每一步迭代,梯度不斷地減小,到最后減小為零。
梯度的反方向是函數(shù)值下降最快的方向,故用梯度下降法尋找局部最小值,梯度的方向是函數(shù)值上升最快的方向,故用梯度上升法尋找局部最大值。
梯度下降圖解:
參數(shù)的更新公式為
梯度下降法詳解
隨機(jī)梯度下降(Stochastic Gradient Descent):
最小化每條樣本的損失函數(shù)。優(yōu)點(diǎn):收斂速度快。雖然不是每次迭代得到的損失函數(shù)都向著全局最優(yōu)方向, 但是大的整體的方向是向全局最優(yōu)解的,最終的結(jié)果往往是在全局最優(yōu)解附近。
缺點(diǎn):因?yàn)橛?jì)算得到的并不是準(zhǔn)確的一個梯度,容易陷入到局部最優(yōu)解中。
批量梯度下降(Batch Gradient Descent)
最小化所有訓(xùn)練樣本的損失函數(shù),使得最終求解的是全局的最優(yōu)解,即求解的參數(shù)是使得風(fēng)險(xiǎn)函數(shù)最小。優(yōu)點(diǎn):得到的是一個全局最優(yōu)解
缺點(diǎn):每迭代一步,都要用到訓(xùn)練集所有的數(shù)據(jù),如果數(shù)據(jù)集很大,這種方法的迭代速度會很慢。
對比: 隨機(jī)梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),那么可能只用其中幾萬條或者幾千條的樣本,就已經(jīng)將theta迭代到最優(yōu)解了,對比批量梯度下降,迭代一次需要用到幾十萬訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。但是,SGD伴隨的一個問題是噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。
Mini-batch梯度下降
這是介于BSD和SGD之間的一種優(yōu)化算法。每次選取一定量的訓(xùn)練樣本進(jìn)行迭代。此算法是將批量梯度下降法中m替換成mini-batch,將mini-bach的size設(shè)置為遠(yuǎn)小于m的大小。
在吳恩達(dá)的機(jī)器學(xué)習(xí)課程中講到可以將m使用b來代替,循環(huán)m/b次直到收斂或是循環(huán)次數(shù)達(dá)到。優(yōu)點(diǎn):得到的是一個局部近似解,但是其所計(jì)算的時間和效果要比隨機(jī)梯度下降法的好。
缺點(diǎn):但是在計(jì)算時候多了一個參數(shù) b (即每批的大小)需要去調(diào)試。
帶Mini-batch的隨機(jī)梯度下降
- 選擇n個訓(xùn)練樣本(n<m,m為總訓(xùn)練集樣本數(shù))
- 在這n個樣本中進(jìn)行n次迭代,即每次使用1個樣本
- 對n次迭代得出的n個gradient進(jìn)行加權(quán)平均再并求和,作為這一次mini-batch下降梯度
- 不斷在訓(xùn)練集中重復(fù)以上步驟,直到收斂。