如何理解并實現(xiàn)一個簡單的人臉識別算法(中):機(jī)器學(xué)習(xí)模型

在上次的教程中,我介紹了一些理解需要基本的數(shù)學(xué)知識。其實這些基礎(chǔ)知識是基本不夠的,我建議大家在閱讀的時候,放棄知識細(xì)節(jié)的把握,重點在于思想精髓的領(lǐng)悟。當(dāng)然,不是我的思想,是強(qiáng)大的數(shù)學(xué)思想。

這次教程里,我繼續(xù)介紹“最小二乘回歸”這個很簡單但是很實用的機(jī)器學(xué)習(xí)模型。

我們先忘掉模型,來看看我們現(xiàn)實中經(jīng)常出現(xiàn)的問題:假設(shè)你看中了一個新開盤小區(qū)的房子,可是你不知道房子的真實價格是多少,對于開發(fā)商的開盤價,你也是非常懷疑的,那你該怎么決定你所購買的房子的單價呢?

我們需要了解這個新小區(qū)周邊的房價和配套情況,假設(shè)周邊有上百個小區(qū)。每個小區(qū)的二手房均價都可以在網(wǎng)上查到。經(jīng)過研究,我們發(fā)現(xiàn),小區(qū)的均價和離某個神秘的工廠的距離存在一定的線性關(guān)系,關(guān)系大概如下:

大家會發(fā)現(xiàn),離工廠越遠(yuǎn),小區(qū)的均價越高,反之越低。當(dāng)然,工廠周圍的價格應(yīng)該是大于0的,這個圖表示的涵義符合基本的事實。

那么我們該如何給自己設(shè)定這個新小區(qū)的價格呢?

我們可以這么做,如上圖所示,我們把所有小區(qū)的均價按照距離工廠遠(yuǎn)近畫出一個表,然后我們可以根據(jù)我們將要學(xué)會的“最小二乘回歸模型”來擬合出一條直線。這條直線反應(yīng)的是去除掉一些不穩(wěn)定因素(比如房子外表顏色)之后的真實價位。

那么,如果我們已知新小區(qū)距離工廠兩千米,那么我們在橫軸(距離軸)上找到兩千米的位置,往上畫一條直線,然后在與直線交叉的該點畫一條水平的線,水平線與縱軸(價格軸)的交叉點,就是新小區(qū)的合理價格,即2萬元一平。

當(dāng)然,我們這個模型是在簡化了很多復(fù)雜情況之后得到的模型,現(xiàn)實的情況遠(yuǎn)比這個復(fù)雜。

那么現(xiàn)在問題來了,怎么得到上圖中的這條直線?

答案就是“最小二乘回歸”!

怎么來的?

假設(shè)現(xiàn)在有n個數(shù)據(jù)點,分別是{(x1,y1), (x2,y2), ..., (xn,yn)},每個數(shù)據(jù)點中的x是上圖中橫軸中的距離數(shù)值,y是縱軸中的價格數(shù)值。我們尋求的是x和y之間的一種對應(yīng)關(guān)系。

為簡單起見,我們假設(shè)這種對應(yīng)關(guān)系是線性的,即y=wx+b,其中w是權(quán)重系數(shù),b是偏差,也就是x=0的時候y的值。

我們現(xiàn)在需要確定w和b的值,b的值相對好確定一些,只需要調(diào)查當(dāng)距離x=0的時候,價格y是多少就可以了,因為這個時候b=y,所以我們就可以得到b的值。

那么如何確定w的值呢?

我們需要確定一個目標(biāo)函數(shù),假設(shè)我們只有一組(x,y),情況就會簡單的多。

目標(biāo)函數(shù)可以設(shè)為(y-w*x)^2,這表示的是(y-w*x)的平方。這個模型就是最小二乘了。

需要注意的是,最小二乘不是最小二乘回歸哦!最小二乘模型一般容易過擬合,就是確定的w不能反映真實數(shù)據(jù)的分布情況,一般我們需要對w有一個約束。

這個約束需要與(y-w*x)^2綁在一起,從而得到更反應(yīng)數(shù)據(jù)真實情況的w。

這里我們可以用(y-w*x)^2+a*w^2,這里a是一個系數(shù),這個模型就是一個變量是一維的最小二乘回歸模型。

正式的寫法是:min{w} (y-w*x)^2+a*w^2.

min是求最小值的意思,min{w}的意思是這個最小值是通過變化w的值來得到的。這個a可以用統(tǒng)計學(xué)里的交叉驗證方式得到,涉及到更復(fù)雜的原理,所以我們不討論。大家只需要知道a可以得到就可以了。

那么如何求解上面最小二乘回歸模型的最小值呢?

方法在我們上一期的教程里,就是用函數(shù)求導(dǎo),我們對上面的函數(shù)(y-w*x)^2+a*w^2對w求導(dǎo),然后讓導(dǎo)函數(shù)等于0,就可以得到w=x*y/(x^2+a)。是不是很簡單?這就是我們需要的w的值了。

如果我們不加w的正則項,也就是a=0,會出現(xiàn)什么情況?如果x=0,那么w就無法得到具體的數(shù)值,于是也就無法預(yù)測y。這樣的模型就太脆弱了!為了讓模型更合理,我們對w有約束,加上了w的約束項。

那么當(dāng)有多組(x,y)的時候,即有n個數(shù)據(jù)點,分別是{(x1,y1), (x2,y2), ..., (xn,yn)}的時候,解決辦法會稍微復(fù)雜一點。

此時的最小化目標(biāo)函數(shù)是:

min{w} {(y1-w*x1)^2+(y2-w*x2)^2+...+(yn-w*xn)^2+a*w^2}

同樣,對w求導(dǎo),然后讓導(dǎo)函數(shù)等于0,我們可以得到

w=(x1*y1+x2*y2+...+xn*yn)/(x1^2+x2^2+...+xn^2+a).

大家不需要記得這些計算的公式,就大概理解這個過程就可以:

我們是先用觀察數(shù)據(jù),然后用一個最簡單的線性函數(shù)去擬合房價和距離之間的關(guān)系,在確定這個線性函數(shù)的參數(shù)的時候,我們需要用到“最小二乘回歸”模型,這個模型有一個參數(shù)a,是為了避免w因x=0而陷入無法求解。

那么得到參數(shù)w和b之后呢,我們就可以用y=w*x+b來預(yù)測房價了,即在給定距離x的情況下得到單價y的值。

y=w*x+b這個線性函數(shù)也叫最小二乘回歸線,得到這條線之后,這條線是所有點到某條線豎直距離的平方和最小的線。這一點不用理解,但是很妙。

數(shù)學(xué)中有很多這種巧妙的東西,比如歐拉公式

那么現(xiàn)在為止,我介紹了一維的最小二乘回歸模型,其實這個模型很多都是用在高維的情形當(dāng)中。比如人臉就是一個高維的物體。在拍攝的人臉照片中,一般最小都是32乘以32維也就是1024維的情形,再小的話可能就很難看清了。

好了,那么這次我們了解了一點最小二乘回歸模型在房價預(yù)測方面的一點應(yīng)用,這個應(yīng)用的重點是要得到線性相關(guān)函數(shù)y=w*x+b。

下一次,我們直接看看怎么用最小二乘回歸模型做人臉預(yù)測。大家拭目以待哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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