人工智能需要多方面的知識(shí)和能力臊岸。
從機(jī)器學(xué)習(xí)的角度來講,我們需要了解監(jiān)督學(xué)習(xí)蕉饼,半監(jiān)督學(xué)習(xí)虐杯,無監(jiān)督學(xué)習(xí)以及增強(qiáng)學(xué)習(xí)等學(xué)習(xí)方法。
從計(jì)算機(jī)視覺的角度來講昧港,根據(jù)加州大學(xué)伯克利分校的著名學(xué)者Jitendra Malik的觀點(diǎn)擎椰,我們需要解決計(jì)算機(jī)視覺的三個(gè)基本問題("3R"):重建(Reconstruction),識(shí)別(Recognition)创肥,以及再組織(Reorganization)达舒。
作為"3R"中的重要一環(huán)值朋,識(shí)別(Recognition)是一個(gè)非常重要而且相對(duì)容易上手的視覺問題。作為識(shí)別中最重要的基本問題休弃,人臉識(shí)別(Face Recognition)一直以來都占據(jù)了大多數(shù)研究者的精力。
在這一系列教程里圈膏,我會(huì)詳細(xì)介紹一個(gè)人臉識(shí)別算法塔猾,基于這個(gè)算法,搭建人臉識(shí)別系統(tǒng)就基本完成了一大半稽坤,剩下的都是軟件方面的事情了丈甸。
為了使得教程盡可能簡(jiǎn)單,我選用了人臉識(shí)別 領(lǐng)域里一個(gè)非常出名并且簡(jiǎn)單的方法尿褪,并且盡量不介紹與本方法無關(guān)的知識(shí)睦擂,節(jié)省小孩的學(xué)習(xí)成本。當(dāng)然杖玲,我并不是說與本方法無關(guān)的知識(shí)就是無用的顿仇。我只是希望大家經(jīng)過盡可能少的學(xué)習(xí)就可以基本搭建起一個(gè)人臉識(shí)別算法。
這一個(gè)教程分3部分:
1. 第一部分是數(shù)學(xué)基礎(chǔ)部分摆马,我介紹函數(shù)的概念臼闻,函數(shù)如何求導(dǎo),函數(shù)如何得到最小值囤采;矩陣的基礎(chǔ)知識(shí)述呐,求導(dǎo)等等。
2. 第二部分是機(jī)器學(xué)習(xí)部分蕉毯,我介紹“最小二乘回歸”這個(gè)非常簡(jiǎn)單的機(jī)器學(xué)習(xí)模型乓搬,還會(huì)給出一些例子讓大家深入理解。
3. 第三部分是人臉識(shí)別部分代虾,我會(huì)介紹我導(dǎo)師在2011年用“最小二乘回歸”這個(gè)模型設(shè)計(jì)出的人臉識(shí)別算法进肯。該算法發(fā)表在計(jì)算機(jī)視覺國(guó)際頂級(jí)會(huì)議ICCV上,目前引用已經(jīng)超過一千次棉磨。
本次教程介紹數(shù)學(xué)基礎(chǔ)坷澡。我盡量用淺顯易懂的語言讓孩子們明白背后的原理。
函數(shù)
函數(shù)在數(shù)學(xué)里就是一個(gè)對(duì)應(yīng)關(guān)系含蓉。
比如孩子們?cè)诿髂甑慕裉炱盗玻瑲q數(shù)會(huì)增加1,那么這用函數(shù)來表示就是“明年的歲數(shù)=今年的歲數(shù)+1”馅扣,這已經(jīng)是函數(shù)了斟赚,不管你如何鄙視這個(gè)函數(shù)的簡(jiǎn)單性。
那我們來看一個(gè)稍微復(fù)雜點(diǎn)的例子吧差油,我昨天特地去深圳看了電影《戰(zhàn)狼2》拗军,里面出現(xiàn)的祖國(guó)的航母非常振奮人心任洞,如果航母以變化的速度航行,那么航母的速度與時(shí)間之間有一個(gè)對(duì)應(yīng)關(guān)系发侵。
如果航母每小時(shí)增加或者減少的速度未定交掏,我們可以用“航母的加速度”這個(gè)未知量來表示。就是說刃鳄,航母下一個(gè)小時(shí)的速度=上一個(gè)小時(shí)的速度+航母的加速度盅弛。
到這里,我們就可以理解函數(shù)的導(dǎo)數(shù)這個(gè)概念叔锐,就是對(duì)函數(shù)求導(dǎo)之后得到的函數(shù)挪鹏。函數(shù)導(dǎo)數(shù)表示的是函數(shù)變化的規(guī)律,其本身也是一個(gè)函數(shù)愉烙,表示的是航母加速度與時(shí)間之間的對(duì)應(yīng)關(guān)系讨盒。
大家想想,航母在什么時(shí)候速度達(dá)到最大值步责?是不是當(dāng)航母的加速度為0的時(shí)候返顺?你真是太聰明了。
如果嚴(yán)格地來說蔓肯,如果航母的加速度變成0创南,那么有兩種情況,一種是航母的速度達(dá)到最小值省核,另一種是航母的速度達(dá)到最大值稿辙。那到底該如何判斷呢?為了知道航母在加速度為0時(shí)的速度是最大值還是最小值气忠,我們需要知道加速度的變化情況:如果加速度是由大于0變?yōu)?之后再小于0邻储,那么在加速度等于0之前,航母一直在加速旧噪,在加速度等于0之后吨娜,航母一直在減速,在這種情況下的加速度等于0時(shí)淘钟,航母的速度達(dá)到最大值宦赠。反之,如果加速度是由小于0變?yōu)?再大于0米母,那么在加速度等于0之前勾扭,航母一直在減速,在加速度等于0之后铁瞒,航母一直在加速妙色,在這種情況下的加速度等于0時(shí),航母的速度達(dá)到最小值慧耍。我們可以從下圖中得到直觀的理解:
總之身辨,為了知道航母的速度在加速度等于0的時(shí)候到底是最大值還是最小值丐谋,我們需要對(duì)加速度這個(gè)函數(shù)再求一次導(dǎo)數(shù),得到加速度的變化規(guī)律函數(shù)煌珊,這個(gè)函數(shù)反應(yīng)的是航母的加速度的變化值與時(shí)間之間的關(guān)系号俐。
為什么要學(xué)習(xí)函數(shù),函數(shù)的導(dǎo)數(shù)定庵?因?yàn)樵诤芏喙こ虇栴}(包括計(jì)算機(jī)吏饿,生物,金融)里洗贰,優(yōu)化(optimization)是一個(gè)非常有用的工具找岖,在優(yōu)化中陨倡,我們需要時(shí)刻了解目標(biāo)函數(shù)是什么敛滋,如何優(yōu)化目標(biāo)函數(shù)即如何使得目標(biāo)函數(shù)最大化或者最小化。當(dāng)然兴革,在本系列教程里绎晃,我也會(huì)使用到最基本的優(yōu)化技巧。
矩陣
函數(shù)是一種對(duì)應(yīng)關(guān)系杂曲,可以兩個(gè)變量之間的對(duì)應(yīng)關(guān)系庶艾,也可以是兩組變量之間的對(duì)應(yīng)關(guān)系。那么每組變量可以有很多表達(dá)形式擎勘,比如向量(vector)咱揍,矩陣(matrix),張量(tensor)等等棚饵。
向量其實(shí)就是把很多獨(dú)立的變量拼起來煤裙,組成一個(gè)列。如:
在上圖中噪漾,A是一個(gè)向量硼砰,i,j欣硼,k是三個(gè)互相垂直方向上的長(zhǎng)度為1的向量题翰,也叫單位向量。A在i诈胜,j豹障,k三個(gè)方向上的長(zhǎng)度分別為a,b焦匈,c沼填,所以A向量是(a,b括授,c)坞笙。一般要豎著寫才符合國(guó)際規(guī)范岩饼。上面的向量A是三維的,其實(shí)向量可以不止3維薛夜,可以是任意維度的籍茧,比如B=(a,b,c,d,e,...)都是可以的。
矩陣其實(shí)就是把很多相同維度的向量拼起來梯澜,組成一個(gè)矩陣寞冯,一般一列(一豎條)就是一個(gè)向量。鑒于大陸和臺(tái)灣在行和列上面有分歧(具體見:兩岸線性代數(shù)用詞參照)晚伙,我在這里介紹的列是英文里的column吮龄,就是豎條的一組向量,而行是英文里的row咆疗,就是橫條的一組向量漓帚。
雖然很多圖片是張量(彩色圖片有寬,高午磁,RGB通道)或矩陣(灰度圖片有寬尝抖,高),但是我們一般采用灰度圖片迅皇,而且把灰度圖片拉伸為一個(gè)豎直方向上的向量昧辽,即一列。
如果函數(shù)表達(dá)的是矩陣與數(shù)值之間的關(guān)系登颓,那么函數(shù)對(duì)矩陣的導(dǎo)數(shù)可以用函數(shù)對(duì)矩陣中的每個(gè)變量求導(dǎo)的方式得到搅荞。
具體的,我建議大家可以閱讀臺(tái)灣周老師的博客線代啟示錄框咙。
如果英文比較好咕痛,可以閱讀MATH is FUN這個(gè)博客上的文章
更復(fù)雜的概念和運(yùn)算方式不要求能理解,這里也不再詳述扁耐。
下次教程暇检,我會(huì)介紹“最小二乘回歸”這個(gè)非常簡(jiǎn)單的機(jī)器學(xué)習(xí)模型,還會(huì)給出一些例子讓大家深入理解婉称。