一挣惰、基本概念
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ù) 的參數(shù)尽楔,使得給定一個輸入,假設函數(shù)給出一個預測的輸出第练。比如預測房屋價格:
- 訓練集:人為標記的房屋面積和對應房價的一組數(shù)據(jù)點
- 學習算法:比如梯度下降法
- 假設函數(shù)
:比如
阔馋,線性函數(shù)擬合
- 輸入和輸出:房屋的預測價格
(房屋面積 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ù)(担汤,
)線性函數(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ù)為 = 0件相,
= 1再扭,這就是訓練的最終結果了。
所以機器學習的訓練就是找到使得代價函數(shù)取最小值得那組參數(shù)夜矗,就這么簡單泛范,聽起來挺高大上的,上圖中右邊的代價函數(shù) = 0紊撕,但如果不把
設置為 0罢荡,又如何理解帶有 2 個參數(shù)的代價函數(shù)呢?繼續(xù)往下看。
3.2 理解 2 個參數(shù)的代價函數(shù)
上面一個參數(shù) 的代價函數(shù)容易理解区赵,如果是兩個參數(shù)的
的代價函數(shù)惭缰,函數(shù)圖形稍微復雜些,不過也不是很難理解笼才,我們目前只需要理解 2 個參數(shù)成本函數(shù)的求最小值的過程就行了漱受,其他的暫時不需要深究。
來看下這個 2 參數(shù)的代價函數(shù)骡送,其實就是在參數(shù) 的基礎上昂羡,縱向擴展了一個
維度,最后的曲線變成了一個像漁網(wǎng)一樣的圖像摔踱,我們稱這樣的函數(shù)為凸函數(shù)紧憾,不必追究它的概念,只需要知道凸函數(shù)只有一個局部最優(yōu)解 - 即漁網(wǎng)的最底部昌渤。
但這個漁網(wǎng)一樣的曲線也不是很直觀赴穗,為了在二維坐標系中顯示這個曲線,我們使用等高線來表示這 2 個參數(shù)膀息,可以把上面的漁網(wǎng)從下往上看般眉,像個小山頭,下面右圖就相當于山頭的等高線潜支,每個等高線上函數(shù)的代價都相同甸赃。
當代價函數(shù)達到最小時:
- 漁網(wǎng)圖像中(
,
)在漁網(wǎng)的最底部取得冗酿,使得代價函數(shù)達到最小值埠对;
-
圖像中預測的函數(shù)曲線對訓練數(shù)據(jù)的擬合效果達到最優(yōu);
四裁替、梯度下降算法(Gradient Descent)
如何在程序中求代價函數(shù)的最小值呢项玛?可以使用經(jīng)典的梯度下降算法,迭代求代價函數(shù) 的最小值弱判。
4.1 算法思想
梯度下降基本思想:開始時隨機選擇一個參數(shù)的組合 襟沮,計算代價函數(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ù) :
解釋下這個更新公式:
-
是待更新的參數(shù) (
,
)
-
是學習率(learning rate)康栈,決定了代價函數(shù)在下降方向每次更新的步長(其實就是每次下山的小碎步)
-
是代價函數(shù)對(
递递,
)的偏導數(shù)
- 因為是求偏導,所以(
啥么,
)必須同步更新
可以用一句話總結這個公式:在批量梯度下降中登舞,每一次同時讓所有參數(shù)減去學習率 乘以代價函數(shù)的偏導數(shù)。
4.3 算法的直觀理解
下面用實際的預測房價的代價函數(shù)曲線來直觀理解梯度下降尋找最優(yōu)解的執(zhí)行過程:
為了方便理解悬荣,上面的代價函數(shù)假設 = 0菠秒,紅色的直線線表示
點的切線,切線斜率即右端的紅框中的對
的偏導數(shù)氯迂,且切線的斜率大于 0践叠,所以一次更新過程為:新的
= 舊的
-
* 正數(shù)。
影響梯度下降算法的一個重要變量是 嚼蚀,它對更新會產(chǎn)生如下作用:
- 如果
太小禁灼,每次更新的步長很小,導致要很多步才能才能到達最優(yōu)點驰坊;
- 如果
太大匾二,每次更新步長很大哮独,在快接近最優(yōu)點時拳芙,容易應為步長過大錯過最優(yōu)點,最終導致算法無法收斂皮璧,甚至發(fā)散舟扎;
雖然 會對更新步長產(chǎn)生影響,但是實際設計算法時悴务,并不需要對
進行特殊處理睹限,為什么呢譬猫?來看下面這個例子:
我們知道一點的切線越陡則斜率()越大,越緩則斜率(
)越邢哿啤(這里只強調(diào)斜率大于 0染服,斜率小于 0 完全類似,只不過變了符號而已)叨恨,在上圖中隨著算法不斷迭代柳刮,更新的數(shù)據(jù)點越來越接近曲線底部,相對應的切線也越來越緩痒钝,即學習率
會自動變小秉颗,隨著學習率變小,那么下一步更新的步長也就隨之變小送矩,因為下一步更新的步長使用的
在上一步中已經(jīng)自動變小了蚕甥,所以直到下降到最低點(該點導數(shù)為 0)時:新的
= 舊的
-
* 0 = 舊的
,此時不再進行迭代栋荸,算法找到最優(yōu)解菇怀!
可以看出,梯度下降算法在執(zhí)行過程中會自動更新 晌块,所以沒必須另外再減小
敏释,這點一定要注意了!那么既然學習了梯度下降算法摸袁,下面來看看如何用它來找到預測房價的代價函數(shù)最優(yōu)解钥顽!
五、梯度下降的線性回歸
我們用梯度下降算法來求平方誤差代價函數(shù)的最小值靠汁,以此來擬合房價預測的函數(shù)直線蜂大,兩個部分的公式如下:
當你理解了梯度下降算法的公式后,便可以看出求解的關鍵點就在于求出代價函數(shù)關于參數(shù) 的偏導數(shù)蝶怔,求偏導是高數(shù)中很基礎的方法奶浦,這里就不介紹了,直接看下求出的 2 個偏導數(shù):
當我們在程序中求出了所有參數(shù)的偏導數(shù)后踢星,接著就可以按照算法的邏輯來同步更新參數(shù) 澳叉,再一步步迭代下去直到找到最優(yōu)解。
要注意一點沐悦,因為這里代價函數(shù)求出的偏導成洗,在計算時需要使用到所有的訓練集,因為它含有求和公式藏否,需要累加所有訓練數(shù)據(jù)的誤差瓶殃,所以這里的梯度下降算法也稱為批量梯度下降,其中批量的意思就是每次梯度下降時都會用到所有的訓練樣本副签。
實際上也有其他不是批量型的梯度下降法遥椿,每次迭代值關注訓練集中的一個子集基矮,以后我學到了再跟你分享吧,記得持續(xù)關注我哈哈哈哈冠场。