跟我一起學(xué)人工智能(二)
文 | 小步
上一篇文章里簡單說了下機器學(xué)習(xí)、深度學(xué)習(xí)的幾個概念,如果你已經(jīng)看完了上篇文章,還是建議你去搜索下這幾個名詞的權(quán)威解釋,更能加深你的理解,也使你對這些概念的認識更加嚴(yán)謹和規(guī)范~
話不多說,這篇重點說下機器學(xué)習(xí)重要的兩大模型:線性回歸和邏輯回歸模型。

學(xué)習(xí)之前你需要學(xué)會如下知識:
函數(shù)(一次函數(shù)、二次函數(shù)、反比例函數(shù)、三角函數(shù)等),導(dǎo)數(shù),偏導(dǎo)數(shù),矩陣知識。
如果對上述不懂,可以去萬能的b站學(xué)習(xí)下高數(shù),線代,離散,也不用全部都學(xué),用啥學(xué)啥就好了~
這篇文章因為涉及很多數(shù)學(xué)方面知識,好多細節(jié)也沒有表述清楚,再加之自己也沒有理解透徹,如果想要學(xué)習(xí)的話,還是建議去b站看下ng的視頻,從2-1開始看~
傳送門:https://www.bilibili.com/video/av9912938/#page=6
如有此篇文章有不妥之處,還麻煩告知我下,大家共同進步!微信公眾號:多一點思考
線性回歸模型
通過一個房子的面積,房間數(shù)量等等,估算出這個房價是多少。
通過人均GDP,國民總收入等預(yù)測未來人口自然增長率。
研究用戶的滿意度與產(chǎn)品的顏色,重量,大小等之間的關(guān)系,改善產(chǎn)品。
…………
以上每個案例都其實可以用線性回歸模型來解決,它們的特點:
需要先給模型輸入大量的數(shù)據(jù)以及每條數(shù)據(jù)對應(yīng)的標(biāo)簽值,如房子的面積,房間數(shù)量等的矩陣X(房子的面積,房間數(shù)量等屬性稱作特征量,矩陣X稱作訓(xùn)練集)以及對應(yīng)的房子價格的矩陣Y(矩陣Y稱作預(yù)測集)

矩陣X內(nèi)每個元素的上標(biāo)表示第幾條數(shù)據(jù),下標(biāo)表示第幾個特征量,如X上標(biāo)2,下標(biāo)3,表示訓(xùn)練集的第2條的第3個特征量。
矩陣Y對應(yīng)訓(xùn)練集的每行的結(jié)果值。
有點迷糊?拿預(yù)測房價舉例子,矩陣X的每行僅有兩個特征量,房子面積和房間數(shù)量,矩陣Y每一行對應(yīng)矩陣X的每一行特征量的房價。
線性回歸就是通過矩陣X,Y和算法得到數(shù)據(jù)的一般規(guī)律進行預(yù)測~
下面先說下回歸算法不得不提的三個概念:(這三個函數(shù)我找了好久權(quán)威概念,還是沒找到~只好根據(jù)自己的理解說下)
假設(shè)函數(shù):這個函數(shù)可以是一元一次函數(shù),二元一次函數(shù)等等,可以理解為用來擬合數(shù)據(jù)的函數(shù)。
代價函數(shù):用假設(shè)函數(shù)擬合數(shù)據(jù)時產(chǎn)生的代價。
優(yōu)化目標(biāo):確認最優(yōu)解的函數(shù)。
我們先拿只有一個特征量的訓(xùn)練集來說下線性回歸模型算法,數(shù)據(jù)表如下:

對應(yīng)的散點圖如下:

從散點圖上來看,我們可以用 h (Θ) ?= Θ0+ Θ1 X 來作假設(shè)函數(shù)(當(dāng)然也可以用二次函數(shù),后面會提到,先這么認為)
代價函數(shù):

優(yōu)化目標(biāo):

我們要做的就是求得使J(Θ0,Θ1)最小(即代價最小,最能擬合數(shù)據(jù))的Θ0,Θ1,這就又引出一個概念,梯度下降算法:

關(guān)于梯度下降的一個直觀解釋:我們在大山(J(Θ0,Θ1)函數(shù))的某個位置,打算走到山底,于是決定走一步算一步,每走一步,就計算該位置的梯度(梯度是函數(shù)在該點下降最快的方向),沿著梯度的方向,也就是下山最快的方向走一步,這樣一步一步走下去就可以快速得到達山腳下,當(dāng)然還可能走到一個山谷的最低點。

這里需要注意的一點是,如果學(xué)習(xí)速率太小,則需要進行多次迭代才能到達最低點,學(xué)習(xí)速率過大,就有可能越過最低點。我們可以通過指定多個學(xué)習(xí)速率值,來選擇最合適的那個。
在算法中,通過做自動收斂測試來檢測是否得到了最低點的值,即?J(Θ)< β 則可認為已經(jīng)收斂。

通過上面這幾個式子,我們就可以得出最能擬合數(shù)據(jù)的Θ0,Θ1的值,最重要的是,算法是可以用python代碼寫出來的~
上面的例子其實僅僅是對于一個特征量的情況下所說的,那如果多個特征量怎么辦呢?
我們改下假設(shè)函數(shù):

對于每條數(shù)據(jù)添加一個恒為1的X0(對于整體不影響),這樣我們就可以將假設(shè)函數(shù)寫成兩個矩陣相乘的形式。X1,X2……Xn分別表示特征量1,2……n的值。
代價函數(shù)以及梯度下降算法:

這里梯度下降算法中將求導(dǎo)后的結(jié)果寫了出來。
上面是多個特征量的情況,如果我要讓一個二次/三次的函數(shù)來做假設(shè)函數(shù)怎么辦?
對于這種情況的處理,可以直接將特征量的值N方帶入,比如:

到這里線性回歸模型已經(jīng)差不多了。
為了提升梯度下降算法的性能,我們其實提前還需要對訓(xùn)練集進行優(yōu)化,有個專業(yè)名詞叫特征縮放。

用(該特征量的值 - 該特征量集合的均值)/(該特征量集合中最大值 - 該特征量集合中最小值)來優(yōu)化訓(xùn)練集,從而使梯度下降算法效率更高。
邏輯回歸模型
預(yù)測一個用戶是否點擊特定的商品
判斷用戶的性別
判斷用戶是否購買給定的類別商品
判斷一個腫瘤是惡性的還是良性的
…………
以上其實是邏輯回歸中簡單的二分類問題~下面是實現(xiàn)的具體算法。(以二分類舉例,預(yù)測集只有0,1兩個取值)
線性回歸的結(jié)果輸出是一個連續(xù)值,而值的范圍是無法被限定的,那我們有沒有辦法將結(jié)果映射成(0,1)之間的概率值呢?于是我們找到了一個神奇的sigmoid函數(shù),詳見下面的假設(shè)函數(shù)h(X)。
新定義的代價函數(shù)J(Θ),如果y=1,h(x)越接近于1,J(Θ)越小即代價越小,反之,h(x)越接近于0,J(Θ)越大即代價越大。如果y=0,,h(x)越接近于1,J(Θ)越大即代價越大,反之,h(x)越接近于0,J(Θ)越小即代價越小。(可以結(jié)合函數(shù)圖像來具體分析)
梯度下降算法不變。

多分類問題以后再歸納總結(jié)~
從前只是覺得數(shù)學(xué)只有考上上才能派上用場,沒想到學(xué)好數(shù)學(xué)還能干這么多事情~后悔當(dāng)初沒好好學(xué)數(shù)學(xué)呀。
下篇文章不出意外的話,會出一篇python基本語法的文章,敬請期待~