從 0 開始機器學習 - 線性回歸 & 代價函數(shù) & 梯度下降

一挣惰、基本概念

1.1 機器學習的定義

一個年代近一點的定義,由來自卡內(nèi)基梅隆大學的 Tom Mitchell 提出糠涛,一個好的學習問題定義如下:

一個程序被認為能從經(jīng)驗 E 中學習援奢,解決任務 T,達到性能度量值 P忍捡,當且僅當集漾,有了經(jīng)驗 E 后,經(jīng)過 P 評判砸脊,程序在處理 T 時的性能有所提升具篇。

比如以下棋的機器學習算法為例:經(jīng)驗 E 就是程序上萬次的自我練習的經(jīng)驗,任務 T 是下棋凌埂,性能度量值 P 是它在與一些新的對手比賽時驱显,贏得比賽的概率。

1.2 分類問題和回歸問題

分類問題:預測離散的數(shù)據(jù)點侨舆。比如下面的二分類問題:

紅×和藍圈代表兩種不同類型秒紧,中間的直線是我們算法預測的分類邊界函數(shù)绢陌,當函數(shù)參數(shù)確定好了挨下,我們給定一個輸入,那么輸出就是在直線上部或者下部的一個離散的點脐湾,表示該輸入數(shù)據(jù)是最可能是哪一種類型臭笆,對于多個特征的分類問題,原理是一樣的秤掌。

回歸問題:預測連續(xù)的輸出(擬合函數(shù)曲線)愁铺,比如用最小二乘回歸一個連續(xù)的輸出曲線:

擬合的曲線可能有多條,通過不斷的優(yōu)化函數(shù)模型和參數(shù)闻鉴,可以看出藍色的曲線比紫色的直線擬合(回歸)效果好茵乱。

再來練習下:

  • 你有一大批同樣的貨物,想象一下孟岛,你有上千件一模一樣的貨物等待出售瓶竭,這時你想預測接下來的三個月能賣多少件? - 回歸問題

  • 你有許多客戶渠羞,這時你想寫一個軟件來檢驗每一個用戶的賬戶斤贰。對于每一個賬戶,你要判斷它們是否曾經(jīng)被盜過次询? - 分類問題

1.3 監(jiān)督學習

監(jiān)督學習可以理解為:算法使用的數(shù)據(jù)集中已經(jīng)人為設置了正確的屬性荧恍。

比如用監(jiān)督學習來根據(jù)房屋面積預測房價,那么在訓練數(shù)據(jù)集中每個房屋面積都對應一個確定的價格(750, 200)屯吊,這個確定的價格 200 就是我們?nèi)藶榻o定的送巡,用來訓練算法模型(預測函數(shù)參數(shù))摹菠。


1.3 無監(jiān)督學習

無監(jiān)督學習:算法使用的數(shù)據(jù)集不做任何人為處理,即沒有加上任何屬性授艰。

上面是監(jiān)督學習辨嗽,已經(jīng)人為設置了屬性(紅叉,藍圈)

這是無監(jiān)督學習淮腾,所有的數(shù)據(jù)沒有進行處理糟需,表面上看起來都差不多。

在無監(jiān)督學習中谷朝,常用的是聚類算法洲押,即把距離相近的數(shù)據(jù)點劃分為同一個簇,比如 Google 新聞從互聯(lián)網(wǎng)上收集很多條新聞圆凰,然后將類型相近的文章劃分為同一個類別:科技杈帐,情感,政治等等专钉。

二挑童、單變量線性回歸算法

這個線性回歸算法就是高中學的最小二乘擬合曲線數(shù)據(jù)點,通過下面這個例子來復習下機器學習算法工作流程跃须,根據(jù)房屋面積預測出售價格(監(jiān)督學習):

訓練數(shù)據(jù)集如下(訓練就是用給定的數(shù)據(jù)來計算最優(yōu)的函數(shù)曲線參數(shù)站叼,使得擬合效果最好):

  • m 代表訓練集中實例的數(shù)量
  • x 代表輸入變量(特征 Feature)
  • y 代表輸出變量(目標變量)
  • (x, y) 代表訓練集中的實例
  • (Xi, Yi) 代表第 i 個觀察實例
  • h 代表學習算法的解決方案或函數(shù),也稱為假設函數(shù)(hypothesis

一個經(jīng)典監(jiān)督學習算法工作流程如下圖:

使用訓練數(shù)據(jù)集和選擇的訓練算法菇民,來計算假設函數(shù) h 的參數(shù)尽楔,使得給定一個輸入,假設函數(shù)給出一個預測的輸出第练。比如預測房屋價格:

  • 訓練集:人為標記的房屋面積和對應房價的一組數(shù)據(jù)點
  • 學習算法:比如梯度下降法
  • 假設函數(shù) h:比如 h_\theta \left( x \right)=\theta_{0}+\theta_{1}x阔馋,線性函數(shù)擬合
  • 輸入和輸出:房屋的預測價格 y = h(房屋面積 x)

機器學習算法的訓練就是計算最優(yōu)的參數(shù) a 和 b,這里的函數(shù)只有一個輸入特征面積娇掏,所以叫單變量線性回歸模型呕寝。

三、代價函數(shù)(Cost Function)

我的理解:代價函數(shù)(cost function婴梧,loss function)在機器學習中的作用是確定最優(yōu)的函數(shù)參數(shù)下梢,使得擬合數(shù)據(jù)點的誤差達到最小,即擬合效果最好志秃。

因為我們訓練函數(shù)參數(shù)怔球,最終還是要選擇一個最優(yōu)的,那么代價函數(shù)就給我們一個最優(yōu)參數(shù)的度量方式浮还,使得我們可以根據(jù)數(shù)學理論選擇訓練參數(shù)竟坛。

3.1 預測房價的代價函數(shù)

還是用預測房價的例子來介紹下代價函數(shù)的原理,這是預測房價的數(shù)據(jù)集:

我們使用線性回歸算法來預測,所以取假設函數(shù) Hypothesis 的表達式為 2 個參數(shù)(\theta_0担汤,\theta_1)線性函數(shù)涎跨,那么這個機器學習的問題就可以轉(zhuǎn)換為如何選擇最優(yōu)的參數(shù)來使得預測的誤差(代價)最小崭歧?

可問題是用什么方式來度量預測的誤差呢隅很?這時代價函數(shù)就派上用場了,我們可以用代價函數(shù)來計算不同參數(shù)所對應的誤差率碾,取誤差最小的那組參數(shù)作為訓練的最終結果叔营,代價函數(shù)有挺多種形式,線性回歸常用誤差的平方和計算代價:

上面的代價函數(shù) Cost Function 的求和公式其實就是高中學習的最小二乘法的平方誤差的計算所宰,最終的求和結果就是預測值與真實值誤差的平方和绒尊,再除以訓練集實例數(shù)量,不過要注意這里的乘以 1/2仔粥,只是為了盡量把最后的求和結果變小一點婴谱,不含有其他邏輯。

可以將 Cost Function 的求和值理解就是下圖中三條藍色線段的長度平方之和再除以 1/ 2m躯泰,表示當前預測的函數(shù)值與實際的函數(shù)值之間的總的誤差:

可以直觀的理解谭羔,藍色的線段總長度越小(誤差越小麦向,代價越形谅恪),則預測的函數(shù)直線就越接近(1磕蛇,1)(2景描,2)(3十办,3)這 3 個點秀撇,且當代價函數(shù)的值為 0 時,預測的函數(shù)直線就是 y = x(淺藍色直線)向族,直接擬合了這 3 個訓練的數(shù)據(jù)點呵燕,這時誤差達到最小,對應的函數(shù)參數(shù)為 \theta_0 = 0件相,\theta_1 = 1再扭,這就是訓練的最終結果了。

所以機器學習的訓練就是找到使得代價函數(shù)取最小值得那組參數(shù)夜矗,就這么簡單泛范,聽起來挺高大上的,上圖中右邊的代價函數(shù) J(\theta_0) = 0紊撕,但如果不把 \theta_0 設置為 0罢荡,又如何理解帶有 2 個參數(shù)的代價函數(shù)呢?繼續(xù)往下看。

3.2 理解 2 個參數(shù)的代價函數(shù)

上面一個參數(shù) \theta_1 的代價函數(shù)容易理解区赵,如果是兩個參數(shù)的 J(\theta_0, \theta_1) 的代價函數(shù)惭缰,函數(shù)圖形稍微復雜些,不過也不是很難理解笼才,我們目前只需要理解 2 個參數(shù)成本函數(shù)的求最小值的過程就行了漱受,其他的暫時不需要深究。

來看下這個 2 參數(shù)的代價函數(shù)骡送,其實就是在參數(shù) \theta_1 的基礎上昂羡,縱向擴展了一個 \theta_0 維度,最后的曲線變成了一個像漁網(wǎng)一樣的圖像摔踱,我們稱這樣的函數(shù)為凸函數(shù)紧憾,不必追究它的概念,只需要知道凸函數(shù)只有一個局部最優(yōu)解 - 即漁網(wǎng)的最底部昌渤。

但這個漁網(wǎng)一樣的曲線也不是很直觀赴穗,為了在二維坐標系中顯示這個曲線,我們使用等高線來表示這 2 個參數(shù)膀息,可以把上面的漁網(wǎng)從下往上看般眉,像個小山頭,下面右圖就相當于山頭的等高線潜支,每個等高線上函數(shù)的代價都相同甸赃。

當代價函數(shù)達到最小時:

  • 漁網(wǎng)圖像中(\theta_0\theta_1)在漁網(wǎng)的最底部取得冗酿,使得代價函數(shù)達到最小值埠对;
  • h_\theta \left( x \right) 圖像中預測的函數(shù)曲線對訓練數(shù)據(jù)的擬合效果達到最優(yōu);

四裁替、梯度下降算法(Gradient Descent)

如何在程序中求代價函數(shù)的最小值呢项玛?可以使用經(jīng)典的梯度下降算法,迭代求代價函數(shù) J(\theta_0, \theta_1) 的最小值弱判。

4.1 算法思想

梯度下降基本思想:開始時隨機選擇一個參數(shù)的組合 \left( {\theta_{0}},{\theta_{1}},......,{\theta_{n}} \right)襟沮,計算代價函數(shù),然后尋找下一個能讓代價函數(shù)值下降最多的參數(shù)組合昌腰,持續(xù)這么迭代直到求出一個局部最小值(local minimum)开伏。

但是因為沒有嘗試完所有的參數(shù)組合,所以不能確定得到的局部最小值是否便是全局最小值(global minimum)遭商,選擇不同的初始參數(shù)組合固灵,可能會找到不同的局部最小值(下圖中的 2 個谷底就是不同的局部最小值)。

可以拿下山的例子來形象地理解梯度下降:想象一下你正站立在山頂?shù)哪骋稽c上劫流,我們要做的就是原地旋轉(zhuǎn) 360 度巫玻,看看我們的周圍暑认,并問自己如果要在某個方向上用小碎步盡快下山,那么這些小碎步需要朝什么方向大审?如果我們發(fā)現(xiàn)最佳的下山方向蘸际,就邁出一步,然后再看看周圍徒扶,想想我應該從什么方向下山粮彤?依此類推,直到你接近局部最低點的位置姜骡。

你也可以把這個算法記成梯度下山算法导坟,幫助你更好的理解算法的執(zhí)行邏輯,但還是要記住原名圈澈。

4.2 算法數(shù)學理解

在實際算法中惫周,常用批量梯度下降算法(Batch Gradient Descent)來同時更新多個參數(shù) \theta_i

解釋下這個更新公式:

  • \theta_j 是待更新的參數(shù) (\theta_0\theta_1
  • \alpha 是學習率(learning rate)康栈,決定了代價函數(shù)在下降方向每次更新的步長(其實就是每次下山的小碎步)
  • \alpha \frac{\partial }{\partial {\theta_j}}J(\theta_0,\theta_1) 是代價函數(shù)對(\theta_0递递,\theta_1)的偏導數(shù)
  • 因為是求偏導,所以(\theta_0啥么,\theta_1)必須同步更新

可以用一句話總結這個公式:在批量梯度下降中登舞,每一次同時讓所有參數(shù)減去學習率 alpha 乘以代價函數(shù)的偏導數(shù)。

4.3 算法的直觀理解

下面用實際的預測房價的代價函數(shù)曲線來直觀理解梯度下降尋找最優(yōu)解的執(zhí)行過程:{\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left(\theta \right)

為了方便理解悬荣,上面的代價函數(shù)假設 \theta_0 = 0菠秒,紅色的直線線表示 \theta_1 點的切線,切線斜率即右端的紅框中的對 \theta_1 的偏導數(shù)氯迂,且切線的斜率大于 0践叠,所以一次更新過程為:新的 \theta_1 = 舊的 \theta_1 - \alpha * 正數(shù)。

影響梯度下降算法的一個重要變量是 \alpha嚼蚀,它對更新會產(chǎn)生如下作用:

  • 如果 \alpha 太小禁灼,每次更新的步長很小,導致要很多步才能才能到達最優(yōu)點驰坊;
  • 如果 \alpha 太大匾二,每次更新步長很大哮独,在快接近最優(yōu)點時拳芙,容易應為步長過大錯過最優(yōu)點,最終導致算法無法收斂皮璧,甚至發(fā)散舟扎;

雖然 \alpha 會對更新步長產(chǎn)生影響,但是實際設計算法時悴务,并不需要對 \alpha 進行特殊處理睹限,為什么呢譬猫?來看下面這個例子:

我們知道一點的切線越陡則斜率(\alpha)越大,越緩則斜率(\alpha)越邢哿啤(這里只強調(diào)斜率大于 0染服,斜率小于 0 完全類似,只不過變了符號而已)叨恨,在上圖中隨著算法不斷迭代柳刮,更新的數(shù)據(jù)點越來越接近曲線底部,相對應的切線也越來越緩痒钝,即學習率 \alpha 會自動變小秉颗,隨著學習率變小,那么下一步更新的步長也就隨之變小送矩,因為下一步更新的步長使用的 \alpha 在上一步中已經(jīng)自動變小了蚕甥,所以直到下降到最低點(該點導數(shù)為 0)時:新的 \theta_1 = 舊的 \theta_1 - \alpha * 0 = 舊的 \theta,此時不再進行迭代栋荸,算法找到最優(yōu)解菇怀!

可以看出,梯度下降算法在執(zhí)行過程中會自動更新 \alpha晌块,所以沒必須另外再減小 \alpha敏释,這點一定要注意了!那么既然學習了梯度下降算法摸袁,下面來看看如何用它來找到預測房價的代價函數(shù)最優(yōu)解钥顽!

五、梯度下降的線性回歸

我們用梯度下降算法來求平方誤差代價函數(shù)的最小值靠汁,以此來擬合房價預測的函數(shù)直線蜂大,兩個部分的公式如下:

當你理解了梯度下降算法的公式后,便可以看出求解的關鍵點就在于求出代價函數(shù)關于參數(shù) \theta_i 的偏導數(shù)蝶怔,求偏導是高數(shù)中很基礎的方法奶浦,這里就不介紹了,直接看下求出的 2 個偏導數(shù):

當我們在程序中求出了所有參數(shù)的偏導數(shù)后踢星,接著就可以按照算法的邏輯來同步更新參數(shù) \theta_i澳叉,再一步步迭代下去直到找到最優(yōu)解。

要注意一點沐悦,因為這里代價函數(shù)求出的偏導成洗,在計算時需要使用到所有的訓練集,因為它含有求和公式藏否,需要累加所有訓練數(shù)據(jù)的誤差瓶殃,所以這里的梯度下降算法也稱為批量梯度下降,其中批量的意思就是每次梯度下降時都會用到所有的訓練樣本副签。

實際上也有其他不是批量型的梯度下降法遥椿,每次迭代值關注訓練集中的一個子集基矮,以后我學到了再跟你分享吧,記得持續(xù)關注我哈哈哈哈冠场。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末家浇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子碴裙,更是在濱河造成了極大的恐慌蓝谨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件青团,死亡現(xiàn)場離奇詭異譬巫,居然都是意外死亡,警方通過查閱死者的電腦和手機督笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門芦昔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人娃肿,你說我怎么就攤上這事咕缎。” “怎么了料扰?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵凭豪,是天一觀的道長。 經(jīng)常有香客問我晒杈,道長嫂伞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任拯钻,我火速辦了婚禮帖努,結果婚禮上,老公的妹妹穿的比我還像新娘粪般。我一直安慰自己拼余,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布亩歹。 她就那樣靜靜地躺著匙监,像睡著了一般。 火紅的嫁衣襯著肌膚如雪小作。 梳的紋絲不亂的頭發(fā)上亭姥,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音躲惰,去河邊找鬼致份。 笑死,一個胖子當著我的面吹牛础拨,可吹牛的內(nèi)容都是我干的氮块。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼诡宗,長吁一口氣:“原來是場噩夢啊……” “哼滔蝉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起塔沃,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蝠引,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蛀柴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螃概,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年鸽疾,在試婚紗的時候發(fā)現(xiàn)自己被綠了吊洼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡制肮,死狀恐怖冒窍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豺鼻,我是刑警寧澤综液,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站儒飒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏桩了。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一士葫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧送悔,春花似錦慢显、人聲如沸欠啤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽应狱。三九已至,卻和暖如春祠丝,著一層夾襖步出監(jiān)牢的瞬間除嘹,已是汗流浹背岸蜗。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留年缎,地道東北人铃慷。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像洲鸠,于是被迫代替她去往敵國和親赁温。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

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