回歸系列之梯度下降

上一篇文章中荣刑,線性回歸關(guān)鍵問題之一:求解系數(shù)的方法梯度下降措嵌。梯度下降在數(shù)據(jù)挖掘很多算法中都有應(yīng)用, 屬于比較基本的數(shù)學(xué)基礎(chǔ)方法谤辜, 本文對(duì)此算法進(jìn)行基本的介紹蓄坏。

梯度下降在機(jī)器學(xué)習(xí)中的意義:
機(jī)器學(xué)習(xí)算法會(huì)利用某個(gè)統(tǒng)計(jì)量來刻畫目標(biāo)函數(shù)的擬合情況。雖然不同的算法擁有不同的目標(biāo)函數(shù)表示方法和不同的系數(shù)值丑念,但是它們擁有一個(gè)共同的目標(biāo)——即通過最優(yōu)化目標(biāo)函數(shù)來獲取最佳參數(shù)值涡戳。而梯度下降法就是優(yōu)化目標(biāo)函數(shù)而求得最佳參數(shù)值的方法。

梯度下降數(shù)學(xué)原理

理解梯度概念之前脯倚, 先預(yù)習(xí)下幾個(gè)基本概念和物理意義:

導(dǎo)數(shù)

導(dǎo)數(shù)定義:設(shè)函數(shù)y=f(x)在點(diǎn)x0的某個(gè)鄰域內(nèi)有定義渔彰,當(dāng)自變量x在x0處有增量Δx,(x0+Δx)也在該鄰域內(nèi)時(shí)推正,相應(yīng)地函數(shù)取得增量Δy=f(x0+Δx)-f(x0)恍涂;如果Δy與Δx之比當(dāng)Δx→0時(shí)極限存在,則稱函數(shù)y=f(x)在點(diǎn)x0處可導(dǎo)舔稀,并稱這個(gè)極限為函數(shù)y=f(x)在點(diǎn)x0處的導(dǎo)數(shù)記為f'(x0)乳丰,也記作y'│x=x0或dy/dx│x=x0掌测,即:

導(dǎo)數(shù)公式

導(dǎo)數(shù)的物理意義:表示函數(shù)值在這一點(diǎn)的變化率内贮。

偏導(dǎo)數(shù)

偏導(dǎo)數(shù)定義(以二元函數(shù)X方向偏導(dǎo)數(shù)為例):
設(shè)有二元函數(shù)z=f(x,y),點(diǎn)(x0,y0)是其定義域D內(nèi)一點(diǎn).把y固定在y0而讓x在x0有增量△x汞斧,相應(yīng)地偏導(dǎo)數(shù)函數(shù)z=f(x,y)有增量(稱為對(duì)x的偏增量)△z=f(x0+△x,y0)-f(x0,y0)夜郁。如果△z與△x之比當(dāng)△x→0時(shí)的極限存在,那么此極限值稱為函數(shù)z=f(x,y)在(x0,y0)處對(duì)x的偏導(dǎo)數(shù)(partial derivative)粘勒。記作f'x(x0,y0)竞端。


在X方向的偏導(dǎo)數(shù)

如上圖所示:偏導(dǎo)數(shù)表示固定面上一點(diǎn)M0(x0, y0, z0)對(duì)x軸的切線斜率;
偏導(dǎo)數(shù)的物理意義:函數(shù)沿坐標(biāo)軸正方向的變化率。

方向?qū)?shù)

多元函數(shù)的偏導(dǎo)數(shù)反映了函數(shù)值沿坐標(biāo)軸方向的變化率庙睡,而方向?qū)?shù)則是反應(yīng)的函數(shù)值沿各個(gè)方向的變化率事富。方向?qū)?shù)的定義:

方向?qū)?shù)定義

方向?qū)?shù)的求解公式:

方向?qū)?shù)的求解公式

說明:其中a1, a2, ..., an指的是向量L與各個(gè)坐標(biāo)軸的夾角。

在了解以上幾個(gè)概念之后乘陪, 正式進(jìn)入本文的正題:梯度统台。

梯度

數(shù)學(xué)對(duì)梯度的定義如下:


Paste_Image.png

通過上面的公式, 很顯然梯度與方向?qū)?shù)存在某種聯(lián)系啡邑。通過向量的推導(dǎo)贱勃,很容易得到如下公式:

方向?qū)?shù)與梯度的關(guān)系

其中:L0是方向?qū)?shù)中向量L的單位向量


L0向量的定義

要這個(gè)向量的點(diǎn)積達(dá)到最大, 即方向?qū)?shù)達(dá)到最大, gradf和L0必須同方向贵扰,也就是說當(dāng)L0是梯度gradf的方向時(shí)仇穗, 方向?qū)?shù)到達(dá)最大。因此梯度的物理意義:是函數(shù)各個(gè)方向上變化率最大的那個(gè)方向戚绕,函數(shù)沿著梯度的方向纹坐,變化率達(dá)到最大。

梯度下降優(yōu)化目標(biāo)函數(shù)的原理

在理解梯度下降的物理意義之后列肢, 自然就能理解梯度下降在回歸算法(其他機(jī)器學(xué)習(xí)算法也會(huì)用到)的作用:優(yōu)化損失函數(shù)恰画,讓損失函數(shù)一直沿著最大的降低方向變化,最終找到最小損失函數(shù)(也可能是局部最写陕怼)拴还。具體如圖所示:

Paste_Image.png

實(shí)現(xiàn)回歸算法損失函數(shù)的思路:每次算出損失函數(shù)的梯度(就是對(duì)每個(gè)參數(shù)進(jìn)行偏導(dǎo)數(shù)計(jì)算),計(jì)算出每個(gè)參數(shù)的偏導(dǎo)數(shù)后欧聘, 在每個(gè)參數(shù)上減去相應(yīng)的偏導(dǎo)數(shù)片林,得到一個(gè)新的參數(shù)值, 損失函數(shù)就得到函數(shù)值降低最快的效果怀骤。迭代過程持續(xù)到參數(shù)收斂费封,參數(shù)是否收斂的判斷依據(jù)是:
1、θ值變化不再明顯(差值小于某給定值)蒋伦;
2弓摘、用損失函數(shù)值變化不明顯,訓(xùn)練值加上迭代的參數(shù)值觀察損失函數(shù)的變化情況痕届,直到變化不再明顯韧献;
3、存在收斂過慢或者死循環(huán)的情況研叫,可以強(qiáng)制限制迭代次數(shù)锤窑。

下面用數(shù)學(xué)公式推導(dǎo)下回歸算法損失函數(shù)求解參數(shù)的相關(guān)公式。損失函數(shù)如下:

Paste_Image.png

PS:1/2是為后續(xù)計(jì)算偏導(dǎo)數(shù)方便嚷炉,并不影響求解損失函數(shù)的最小值渊啰。

對(duì)一個(gè)樣本點(diǎn)j,參數(shù)偏導(dǎo)數(shù)的計(jì)算公式進(jìn)行推導(dǎo):


參數(shù)偏倒數(shù)的推導(dǎo)過程

對(duì)有M個(gè)樣本點(diǎn)申屹,第J個(gè)參數(shù)就基于上面偏導(dǎo)數(shù)公式進(jìn)行更新绘证,其迭代的過程如下所示:


參數(shù)的迭代公式

公式中alpha 是步長。

梯度下降的局限性

通過參數(shù)最終的迭代公式以及梯度下降的實(shí)現(xiàn)思路可知哗讥,梯度下降公式存在如下幾個(gè)問題:

  1. 計(jì)算量很大嚷那,因?yàn)槊看胃聇heta值時(shí)都要將整個(gè)訓(xùn)練集的數(shù)據(jù)代入計(jì)算,該算法在訓(xùn)練集合非常大的情況下將會(huì)非常低效忌栅。
  2. 計(jì)算的初始值對(duì)結(jié)果影響大车酣。如果該函數(shù)不是凸函數(shù)(凸函數(shù)得到的最終值是全局最小值)曲稼, 函數(shù)得到的是局部最小值, 初始值不一樣湖员, 最小值也會(huì)不一樣贫悄。如果函數(shù)沒有最小值,就會(huì)陷入無限循環(huán)中娘摔。

梯度下降的實(shí)現(xiàn)

用代碼實(shí)現(xiàn) 簡單的梯度下降程序窄坦。
利用y = 2 * x1 + (x2^2) / 2生成x_train, y_train數(shù)據(jù), 具體的實(shí)現(xiàn)如下圖:

# y = 2 * x1 + (x2^2) / 2 
alpha=0.001
max_count = 1000000

x_train = [(1.0,3.0), (2.0, 4.0), (3.0, 5.0), (5.0,9.0), (8.0, 10.0)]
y_train = [6.6, 12.2, 18.8, 50.5, 66.3]

error_end = 0.5

#h(x)
def h(x, theta0, theta1):
    #global theta0, theta1
    #print theta0, theta1, x[0], x[1]
    hx = theta0 * x[0] + theta1 * (x[1]**2)
    return hx

def gradf():
    theta0 = 0.5 
    theta1 = 0.1
    data_len = len(y_train)
    cn = 0
    is_finish = False
    while True:
        for i in range(data_len):            
            det_theta = alpha * (h(x_train[i], theta0, theta1) -  y_train[i])
            theta0 = theta0 - (det_theta) * x_train[i][0]
            theta1 = theta1 - (det_theta) * x_train[i][1]

        error = 0.0
        for i in range(data_len):
            error = error + ((y_train[i] - h(x_train[i], theta0, theta1))**2)/2
        cn = cn + 1
        if error < error_end or cn > max_count:
            print error
            break;

    print "theta:%f, %f" %(theta0, theta1)

if __name__=="__main__":
   gradf()

程序運(yùn)行后得到的參數(shù):

theta:1.682974, 0.528715

對(duì)比函數(shù)y = 2 * x1 + (x2^2) / 2的參數(shù): 2凳寺, 0.5鸭津。有所差異, 但還是比較接近肠缨。

以上是最簡單的批量梯度下降方法逆趋, 梯度下降還涉及alpha步長, 非凸函數(shù)的初始化參數(shù)選取問題等等晒奕, 后續(xù)文章再探討闻书。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脑慧,隨后出現(xiàn)的幾起案子魄眉,更是在濱河造成了極大的恐慌,老刑警劉巖闷袒,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坑律,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡囊骤,警方通過查閱死者的電腦和手機(jī)晃择,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淘捡,“玉大人藕各,你說我怎么就攤上這事池摧〗钩” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵作彤,是天一觀的道長膘魄。 經(jīng)常有香客問我,道長竭讳,這世上最難降的妖魔是什么创葡? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮绢慢,結(jié)果婚禮上灿渴,老公的妹妹穿的比我還像新娘洛波。我一直安慰自己,他們只是感情好骚露,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布蹬挤。 她就那樣靜靜地躺著,像睡著了一般棘幸。 火紅的嫁衣襯著肌膚如雪焰扳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天误续,我揣著相機(jī)與錄音吨悍,去河邊找鬼。 笑死蹋嵌,一個(gè)胖子當(dāng)著我的面吹牛育瓜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栽烂,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼爆雹,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了愕鼓?” 一聲冷哼從身側(cè)響起钙态,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎菇晃,沒想到半個(gè)月后册倒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磺送,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年驻子,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片估灿。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崇呵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馅袁,到底是詐尸還是另有隱情域慷,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布汗销,位于F島的核電站犹褒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏弛针。R本人自食惡果不足惜叠骑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望削茁。 院中可真熱鬧宙枷,春花似錦掉房、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至璧帝,卻和暖如春捍岳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睬隶。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工锣夹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苏潜。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓银萍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親恤左。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贴唇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載-劉建平Pinard-www.cnblogs.com/pinard/p/5970503.html 在求解機(jī)器學(xué)...
    商三郎閱讀 3,498評(píng)論 0 2
  • 在高數(shù)中,我們求解一個(gè)函數(shù)的最小值時(shí)飞袋,最常用的方法就是求出它的導(dǎo)數(shù)為0的那個(gè)點(diǎn)戳气,進(jìn)而判斷這個(gè)點(diǎn)是否能夠取最小值。但...
    耳朵和爪子閱讀 3,830評(píng)論 2 5
  • AI人工智能時(shí)代巧鸭,機(jī)器學(xué)習(xí)瓶您,深度學(xué)習(xí)作為其核心,本文主要介紹機(jī)器學(xué)習(xí)的基礎(chǔ)算法纲仍,以詳細(xì)線介紹 線性回歸算法 及其 ...
    erixhao閱讀 13,832評(píng)論 0 36
  • 人生旅途呀袱,因有陪伴才沒了孤獨(dú)。陪伴是一種付出郑叠,陪伴是一種幸福夜赵,陪伴也是一種精神領(lǐng)悟。 從孩子來到這個(gè)世界的第...
    mjhjht閱讀 310評(píng)論 0 1
  • 你的出現(xiàn)乡革,并非預(yù)期寇僧。 還在忙忙碌碌查著你的所屬,想來想去你的名字署拟,甚至婉宰,連預(yù)期的編號(hào)都沒有確定歌豺。 第一張照片推穷,第一...
    cabry閱讀 377評(píng)論 1 1