文章目錄
1.梯度
2.多元線性回歸參數(shù)求解
3.梯度下降
4.梯度下降法求解多元線性回歸
梯度下降算法在機(jī)器學(xué)習(xí)中出現(xiàn)頻率特別高叠殷,是非常常用的優(yōu)化算法幼东。
本文借多元線性回歸颊糜,用人話解釋清楚梯度下降的原理和步驟凑阶。
1.梯度
梯度是什么呢瓦胎?
我們還是從最簡(jiǎn)單的情況說(shuō)起芬萍,對(duì)于一元函數(shù)來(lái)講,梯度就是函數(shù)的導(dǎo)數(shù)搔啊。
而對(duì)于多元函數(shù)而言柬祠,梯度是一個(gè)向量,也就是說(shuō)坯癣,把求得的偏導(dǎo)數(shù)以向量的形式寫出來(lái)瓶盛,就是梯度。
例如示罗,我們?cè)?a target="_blank">用人話講明白線性回歸LinearRegression一文中惩猫,求未知參數(shù) 和時(shí),對(duì)損失函數(shù)求偏導(dǎo)蚜点,此時(shí)的梯度向量為轧房,其中:
那篇文章中,因?yàn)橐辉€性回歸中只有2個(gè)參數(shù)绍绘,因此令兩個(gè)偏導(dǎo)數(shù)為0奶镶,能很容易求得 和的解迟赃。
但是,這種求導(dǎo)的方法在多元回歸的參數(shù)求解中就不太實(shí)用了厂镇,為什么呢纤壁?
2.多元線性回歸參數(shù)求解
多元線性回歸方程的一般形式為:
可以簡(jiǎn)寫為矩陣形式(一般加粗表示矩陣或向量):
其中,
之前我們介紹過一元線性回歸的損失函數(shù)可以用殘差平方和:
代入多元線性回歸方程就是:
用矩陣形式表示:
上面的展開過程涉及矩陣轉(zhuǎn)置捺信,這里簡(jiǎn)單提一下矩陣轉(zhuǎn)置相關(guān)運(yùn)算酌媒,以免之前學(xué)過但是現(xiàn)在忘了:
好了,按照一元線性回歸求解析解的思路迄靠,現(xiàn)在我們要對(duì)Q求導(dǎo)并令導(dǎo)數(shù)為0(原諒我懶秒咨,后面寫公式就不對(duì)向量或矩陣加粗了,大家能理解就行):
上面的推導(dǎo)過程涉及矩陣求導(dǎo)掌挚,這里以求導(dǎo)為例展開講下雨席,為什么,其他幾項(xiàng)留給大家舉一反三吠式。
首先:
為了直觀點(diǎn)陡厘,我們將記為A,因?yàn)閅是n維列向量特占,X是n×(p+1)的矩陣雏亚,因此是(p+1)維行向量:
那么上面求導(dǎo)可以簡(jiǎn)寫為:
這種形式的矩陣求導(dǎo)屬于分母布局,即分子為行向量或者分母為列向量(這里屬于后者)摩钙。
搞不清楚的可以看看這篇:矩陣求導(dǎo)實(shí)例,這里我直接寫出標(biāo)量/列向量求導(dǎo)的公式查辩,如下(y表示標(biāo)量胖笛,X表示列向量):
根據(jù)上式,顯然有:
前面我們將記為A宜岛,长踊,那么上面算出來(lái)的結(jié)果就是,即萍倡。
說(shuō)了這么多有的沒的身弊,最終我想說(shuō)是的,里面涉及到矩陣求逆列敲,但實(shí)際問題中可能X沒有逆矩陣阱佛,這時(shí)計(jì)算的結(jié)果就不夠精確。
第二個(gè)問題就是戴而,如果維度多凑术、樣本多,即便有逆矩陣所意,計(jì)算機(jī)求解的速度也會(huì)很慢淮逊。
所以催首,基于上面這兩點(diǎn),一般情況下我們不會(huì)用解析解求解法求多元線性回歸參數(shù)泄鹏,而是采用梯度下降法郎任,它的計(jì)算代價(jià)相對(duì)更低。
3.梯度下降
好了备籽,重點(diǎn)來(lái)了舶治,本文真正要講的東西終于登場(chǎng)了。
梯度下降胶台,就是通過一步步迭代歼疮,讓所有偏導(dǎo)函數(shù)都下降到最低。如果覺得不好理解诈唬,我們就還是以最簡(jiǎn)單的一元函數(shù)為例開始講韩脏。
下圖是我用Excel簡(jiǎn)單畫的二次函數(shù)圖像(看起來(lái)有點(diǎn)歪,原諒我懶……懶得調(diào)整了……)铸磅,函數(shù)為赡矢,它的導(dǎo)數(shù)為y=2x。
如果我們初始化的點(diǎn)在x=1處阅仔,它的導(dǎo)函數(shù)值吹散,也就是梯度值是2,為正八酒,那就讓它往左移一點(diǎn)空民,繼續(xù)計(jì)算它的梯度值,若為正羞迷,就繼續(xù)往左移界轩。
如果我們初始化的點(diǎn)在x=-1處,該處的梯度值是-2衔瓮,為負(fù)浊猾,那就讓它往右移。
多元函數(shù)的邏輯也一樣热鞍,先初始化一個(gè)點(diǎn)葫慎,也就是隨便選擇一個(gè)位置,計(jì)算它的梯度薇宠,然后往梯度相反的方向偷办,每次移動(dòng)一點(diǎn)點(diǎn),直到達(dá)到停止條件昼接。
這個(gè)停止條件爽篷,可以是足夠大的迭代步數(shù),也可以是一個(gè)比較小的閾值慢睡,當(dāng)兩次迭代之間的差值小于該閾值時(shí)逐工,認(rèn)為梯度已經(jīng)下降到最低點(diǎn)附近了铡溪。
二元函數(shù)的梯度下降示例如上圖(圖片來(lái)自梯度下降),對(duì)于這種非凸函數(shù)泪喊,可能會(huì)出現(xiàn)這種情況:初始化的點(diǎn)不同棕硫,最后的結(jié)果也不同,也就是陷入局部最小值袒啼。
這種問題比較有效的解決方法哈扮,就是多取幾個(gè)初始點(diǎn)。不過對(duì)于我們接下來(lái)講的多元線性回歸蚓再,以及后面要講的邏輯回歸滑肉,都不存在這個(gè)問題,因?yàn)樗麄兊膿p失函數(shù)都是凸函數(shù)摘仅,有全局最小值靶庙。
用數(shù)學(xué)公式來(lái)描述梯度下降的步驟,就是:
解釋下公式含義:
- 為k時(shí)刻的點(diǎn)坐標(biāo)娃属,為下一刻要移動(dòng)到的點(diǎn)的坐標(biāo)六荒,例如就代表初始化的點(diǎn)坐標(biāo),就代表第一步到移動(dòng)到的位置矾端;
- g代表梯度掏击,前面有個(gè)負(fù)號(hào),就代表梯度下降秩铆,即朝著梯度相反的反向移動(dòng)砚亭;
-
被稱為步長(zhǎng),用它乘以梯度值來(lái)控制每次移動(dòng)的距離殴玛,這個(gè)值的設(shè)定也是一門學(xué)問钠惩,設(shè)定的過小,迭代的次數(shù)就會(huì)過多族阅,設(shè)定的過大,容易一步跨太遠(yuǎn)膝捞,直接跳過了最小值坦刀。
4.梯度下降法求解多元線性回歸
回到前面的多元線性回歸,我們用梯度下降算法求損失函數(shù)的最小值蔬咬。
首先鲤遥,求梯度,也就是前面我們已經(jīng)給出的求偏導(dǎo)的公式:
將梯度代入隨機(jī)梯度下降公式:
這個(gè)式子中林艘,X矩陣和Y向量都是已知的盖奈,步長(zhǎng)是人為設(shè)定的一個(gè)值,只有參數(shù)是未知的狐援,而每一步的是由決定的钢坦,也就是每一步的點(diǎn)坐標(biāo)究孕。
算法過程:
- 初始化向量的值,即爹凹,將其代入得到當(dāng)前位置的梯度厨诸;
- 用步長(zhǎng)乘以當(dāng)前梯度,得到從當(dāng)前位置下降的距離禾酱;
- 更新微酬,其更新表達(dá)式為;
- 重復(fù)以上步驟颤陶,直到更新到某個(gè)颗管,達(dá)到停止條件,這個(gè)就是我們求解的參數(shù)向量滓走。
參考鏈接:
深入淺出--梯度下降法及其實(shí)現(xiàn)
梯度下降與隨機(jī)梯度下降概念及推導(dǎo)過程
文中圖片水印為本人博客地址:https://blog.csdn.net/simplification