用人話講明白梯度下降Gradient Descent(以求解多元線性回歸參數(shù)為例)

文章目錄
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ù)\beta_{0}\beta_{1}時(shí),對(duì)損失函數(shù)求偏導(dǎo)蚜点,此時(shí)的梯度向量為(\frac{?Q}{?\beta_{0}}, \frac{?Q}{?\beta_{1}})^T轧房,其中:

\frac{\partial Q}{\partial \beta_{0}}=2\sum_{1}^{n}{(y_{i}-\hat{\beta_{0}}-\hat{\beta_{1}}x_{i})}

\frac{\partial Q}{\partial \beta_{1}}=2\sum_{1}^{n}{(y_{i}-\hat{\beta_{0}}-\hat{\beta_{1}}x_{i})x_{i}}

那篇文章中,因?yàn)橐辉€性回歸中只有2個(gè)參數(shù)绍绘,因此令兩個(gè)偏導(dǎo)數(shù)為0奶镶,能很容易求得\beta_{0}\beta_{1}的解迟赃。

但是,這種求導(dǎo)的方法在多元回歸的參數(shù)求解中就不太實(shí)用了厂镇,為什么呢纤壁?


2.多元線性回歸參數(shù)求解

多元線性回歸方程的一般形式為:

y={\beta}_{0}+{\beta}_{1} {x}_{\mathbf{1} }+{\beta}_{2} {x}_{2 }+\cdots+{\beta}_{p}{x}_{p}
可以簡(jiǎn)寫為矩陣形式(一般加粗表示矩陣或向量):
\boldsymbol{Y}=\boldsymbol{X}\boldsymbol{\beta}
其中,\boldsymbol{Y}=\left[\begin{array}{c}y_{1} \\ y_{2} \\ \vdots \\ y_{n}\end{array}\right], \boldsymbol{X}=\left[\begin{array}{cccc}1 & x_{11} & \cdots & x_{1 p} \\ 1 & x_{21} & \cdots & x_{2 p} \\ \vdots & \vdots & & \vdots \\ 1 & x_{n 1} & \cdots & x_{n p}\end{array}\right], \boldsymbol{\beta}=\left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]

之前我們介紹過一元線性回歸的損失函數(shù)可以用殘差平方和:
Q=\sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}

代入多元線性回歸方程就是:
Q=\sum_{i=1}^{n}\left(y_{i}-\hat\beta_{0}-\hat\beta_{1} x_{i 1}-\ldots-\hat\beta_{p} x_{i p}\right)^{2}
用矩陣形式表示:
\begin{aligned} Q &=(\boldsymbol{X}\boldsymbol{\beta}-\boldsymbol{Y})^T(\boldsymbol{X}\boldsymbol{\beta}-\boldsymbol{Y}) \\ & =(\boldsymbol \beta^{T} \boldsymbol{X}^{T}-\boldsymbol{Y}^{T})(\boldsymbol{X} \boldsymbol\beta-\boldsymbol{Y}) \\ & =\boldsymbol\beta^{T} \boldsymbol{X}^{T} \boldsymbol{X} \boldsymbol\beta-\boldsymbol\beta^{T} \boldsymbol{X}^{T} \boldsymbol{Y}-\boldsymbol{Y}^{T} \boldsymbol{X} \boldsymbol\beta+\boldsymbol{Y}^{T} \boldsymbol{Y}\end{aligned}

上面的展開過程涉及矩陣轉(zhuǎn)置捺信,這里簡(jiǎn)單提一下矩陣轉(zhuǎn)置相關(guān)運(yùn)算酌媒,以免之前學(xué)過但是現(xiàn)在忘了:
(A+B)^{T}=A^{T}+B^{T}

(A B)^{T}=B^{T} A^{T}

好了,按照一元線性回歸求解析解的思路迄靠,現(xiàn)在我們要對(duì)Q求導(dǎo)并令導(dǎo)數(shù)為0(原諒我懶秒咨,后面寫公式就不對(duì)向量或矩陣加粗了,大家能理解就行):
\begin{aligned} \frac{\partial Q}{\partial \beta}=2 X^{T} X \beta-X^{T} Y-X^{T} Y &=0 \\ 2X^{T} X \beta-2X^{T} Y &=0 \\ X^{T} X \beta&=X^{T} Y \\ \beta &=\left(X^{T} X\right)^{-1} X^{T} Y \end{aligned}

上面的推導(dǎo)過程涉及矩陣求導(dǎo)掌挚,這里以{Y}^{T} {X} \beta求導(dǎo)為例展開講下雨席,為什么\frac{\partial {Y}^{T} {X} \beta}{\partial \beta}={X}^{T} {Y},其他幾項(xiàng)留給大家舉一反三吠式。

首先:
\begin{aligned} \frac{\partial {Y}^{T} {X} \beta}{\partial \beta} = \frac{\partial \left((y_{1}, y_{2}, \dots,y_{n}) \left[\begin{array}{cccc}1 & x_{11} & \cdots & x_{1 p} \\ 1 & x_{21} & \cdots & x_{2 p} \\ \vdots & \vdots & & \vdots \\ 1 & x_{n 1} & \cdots & x_{n p}\end{array}\right] \left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]\right)} {\partial \left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]} \end{aligned}

為了直觀點(diǎn)陡厘,我們將{Y}^{T} {X}記為A,因?yàn)閅是n維列向量特占,X是n×(p+1)的矩陣雏亚,因此{Y}^{T} {X}是(p+1)維行向量:
(y_{1}, y_{2}, \dots,y_{n}) \left[\begin{array}{cccc}1 & x_{11} & \cdots & x_{1 p} \\ 1 & x_{21} & \cdots & x_{2 p} \\ \vdots & \vdots & & \vdots \\ 1 & x_{n 1} & \cdots & x_{n p}\end{array}\right] = (\alpha_{0}, \alpha_{1}, \dots,\alpha_{p})
那么上面求導(dǎo)可以簡(jiǎn)寫為:
\begin{aligned} \frac{\partial {Y}^{T} {X} \beta}{\partial \beta} = \frac{\partial \left((\alpha_{0}, \alpha_{1}, \dots,\alpha_{p}) \left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]\right)} {\partial \left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]}= \frac{\partial (\alpha_{0}\beta_{0}+\dots+\alpha_{p}\beta_{p})} {\partial \left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]} \end{aligned}

這種形式的矩陣求導(dǎo)屬于分母布局,即分子為行向量或者分母為列向量(這里屬于后者)摩钙。

搞不清楚的可以看看這篇:矩陣求導(dǎo)實(shí)例,這里我直接寫出標(biāo)量/列向量求導(dǎo)的公式查辩,如下(y表示標(biāo)量胖笛,X表示列向量):
\frac{\partial y}{\partial {X}}= \left[\begin{array}{c} \frac{\partial y}{\partial x_{1}} \\ \frac{\partial y}{\partial x_{2}} \\ \vdots \\ \frac{\partial y}{\partial x_{n}} \end{array}\right]

根據(jù)上式,顯然有:
\frac{\partial (\alpha_{0}\beta_{0}+\dots+\alpha_{p}\beta_{p})} {\partial \left[\begin{array}{c}\beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p}\end{array}\right]} = {\left[\begin{array}{c} \frac{\partial \alpha_{0}\beta_{0}}{\partial \beta_{0}} \\ \frac{\partial \alpha_{1}\beta_{1}}{\partial \beta_{1}} \\ \vdots \\ \frac{\partial \alpha_{p}\beta_{p}}{\partial \beta_{p}} \end{array}\right]}= \left[\begin{array}{c}\alpha_{0} \\ \alpha_{1} \\ \vdots \\ \alpha_{p}\end{array}\right]

前面我們將{Y}^{T} {X}記為A宜岛,A=(\alpha_{0}, \alpha_{1}, \dots,\alpha_{p})长踊,那么上面算出來(lái)的結(jié)果就是{A}^{T},即{X}^{T} {Y}萍倡。

說(shuō)了這么多有的沒的身弊,最終我想說(shuō)是的\beta=\left(X^{T} X\right)^{-1} X^{T} Y,里面涉及到矩陣求逆列敲,但實(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ù)為y=x^2赡矢,它的導(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)描述梯度下降的步驟,就是:
\Theta_{k+1}=\Theta_{k}-\alpha \cdot g

解釋下公式含義:

  • \Theta_{k}為k時(shí)刻的點(diǎn)坐標(biāo)娃属,\Theta_{k+1}為下一刻要移動(dòng)到的點(diǎn)的坐標(biāo)六荒,例如\Theta_{0}就代表初始化的點(diǎn)坐標(biāo),\Theta_{1}就代表第一步到移動(dòng)到的位置矾端;
  • g代表梯度掏击,前面有個(gè)負(fù)號(hào),就代表梯度下降秩铆,即朝著梯度相反的反向移動(dòng)砚亭;
  • \alpha被稱為步長(zhǎng),用它乘以梯度值來(lái)控制每次移動(dòng)的距離殴玛,這個(gè)值的設(shè)定也是一門學(xué)問钠惩,設(shè)定的過小,迭代的次數(shù)就會(huì)過多族阅,設(shè)定的過大,容易一步跨太遠(yuǎn)膝捞,直接跳過了最小值坦刀。
    在這里插入圖片描述


4.梯度下降法求解多元線性回歸

回到前面的多元線性回歸,我們用梯度下降算法求損失函數(shù)的最小值蔬咬。

首先鲤遥,求梯度,也就是前面我們已經(jīng)給出的求偏導(dǎo)的公式:
\frac{\partial Q}{\partial \beta}=2 X^{T} X \beta-2X^{T} Y=2 X^{T} (X \beta-Y)

將梯度代入隨機(jī)梯度下降公式:
\Theta_{k+1}=\Theta_{k}-\alpha \cdot 2 X^{T} (X \beta-Y)

這個(gè)式子中林艘,X矩陣和Y向量都是已知的盖奈,步長(zhǎng)是人為設(shè)定的一個(gè)值,只有參數(shù)\beta是未知的狐援,而每一步的\Theta是由\beta決定的钢坦,也就是每一步的點(diǎn)坐標(biāo)究孕。

算法過程:

  1. 初始化\beta向量的值,即\Theta_{0}爹凹,將其代入\frac{\partial Q}{\partial \beta}得到當(dāng)前位置的梯度厨诸;
  2. 用步長(zhǎng)\alpha乘以當(dāng)前梯度,得到從當(dāng)前位置下降的距離禾酱;
  3. 更新\Theta_1微酬,其更新表達(dá)式為\Theta_1=\Theta_0-\alpha \cdot 2 X^{T} (X \Theta_0-Y)
  4. 重復(fù)以上步驟颤陶,直到更新到某個(gè)\Theta_k颗管,達(dá)到停止條件,這個(gè)\Theta_k就是我們求解的參數(shù)向量滓走。

參考鏈接:
深入淺出--梯度下降法及其實(shí)現(xiàn)
梯度下降與隨機(jī)梯度下降概念及推導(dǎo)過程

文中圖片水印為本人博客地址:https://blog.csdn.net/simplification

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垦江,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子闲坎,更是在濱河造成了極大的恐慌疫粥,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腰懂,死亡現(xiàn)場(chǎng)離奇詭異梗逮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绣溜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門慷彤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怖喻,你說(shuō)我怎么就攤上這事底哗。” “怎么了锚沸?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵跋选,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我哗蜈,道長(zhǎng)前标,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任距潘,我火速辦了婚禮炼列,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘音比。我一直安慰自己俭尖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稽犁,像睡著了一般焰望。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缭付,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天柿估,我揣著相機(jī)與錄音,去河邊找鬼陷猫。 笑死秫舌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绣檬。 我是一名探鬼主播足陨,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娇未!你這毒婦竟也來(lái)了墨缘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤零抬,失蹤者是張志新(化名)和其女友劉穎镊讼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體平夜,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝶棋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了忽妒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玩裙。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖段直,靈堂內(nèi)的尸體忽然破棺而出吃溅,到底是詐尸還是另有隱情,我是刑警寧澤鸯檬,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布决侈,位于F島的核電站,受9級(jí)特大地震影響喧务,放射性物質(zhì)發(fā)生泄漏颜及。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一蹂楣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讯蒲,春花似錦痊土、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)犯祠。三九已至,卻和暖如春酌呆,著一層夾襖步出監(jiān)牢的瞬間衡载,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工隙袁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痰娱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓菩收,卻偏偏與公主長(zhǎng)得像梨睁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子娜饵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351