不是碼農(nóng),也能看懂的AI機(jī)器算法學(xué)習(xí)原理
什么是機(jī)器學(xué)習(xí)?
我們先來(lái)說(shuō)個(gè)老生常談的情景:
某天你去買(mǎi)芒果,小販有滿滿一車(chē)芒果,你一個(gè)個(gè)選好,拿給小販稱(chēng)重,然后論斤付錢(qián)。
自然,你的目標(biāo)是那些最甜最成熟的芒果,那怎么選呢?你想起來(lái),外婆說(shuō)過(guò),明黃色的比淡黃色的甜。你就設(shè)了條標(biāo)準(zhǔn):只選明黃色的芒果。于是按顏色挑好、付錢(qián)、回家。啊哈,人生完整了?
呵呵呵。告訴你吧人生就是各種麻煩
等你回到家,嘗了下芒果。有些確實(shí)挺甜,有些就不行了。額~顯然,外婆教的金科玉律還不夠用,光看顏色不靠譜哪。
閉關(guān)研究大半天以后,你得出結(jié)論:大個(gè)的明黃色芒果必然甜,小個(gè)的,就只有一半幾率會(huì)是甜的了。
于是下次,你滿意地帶著這個(gè)結(jié)論再去買(mǎi)芒果,卻發(fā)現(xiàn)你經(jīng)常光顧的那個(gè)小販關(guān)門(mén)度假去了。好吧,換家店,結(jié)果人家的進(jìn)貨渠道還不一樣,你這套法則不管用了,又得從頭再來(lái)。好吧,這家店里每種芒果你都嘗了下,總結(jié)出來(lái)小個(gè)淡黃色的最甜。
還沒(méi)結(jié)束。你遠(yuǎn)房表妹又來(lái)找你玩了。但她說(shuō)了,無(wú)所謂芒果甜不甜,汁水多就行。好唄,你還得再做一次實(shí)驗(yàn),找到芒果越軟汁水越多的規(guī)律。
接著你又移民了。一嘗這邊的芒果,咦,新世界的大門(mén)打開(kāi)了。綠色的芒果居然比黃色的好吃……
有請(qǐng)碼農(nóng)
好了,現(xiàn)在想象下,這一路辛酸曲折的,你寫(xiě)了組程序幫忙減輕負(fù)擔(dān)。那程序邏輯基本應(yīng)該類(lèi)似這樣:
預(yù)設(shè)變量 顏色、大小、店家、硬度
如 顏色=明黃
大小=大
店家=經(jīng)常光顧的小販
則 芒果=甜
如 硬度=軟
則 芒果=多汁
用著很爽吧,你甚至可以把這套玩意兒發(fā)給你小弟,他挑來(lái)的芒果也包你滿意。
但每做一次新實(shí)驗(yàn),你就得人肉改一次程序邏輯。而且你得首先保證自己已經(jīng)理解了選芒果那套錯(cuò)綜復(fù)雜的藝術(shù),才能把它寫(xiě)進(jìn)程序里。
如果要求太復(fù)雜、芒果種類(lèi)太多,那光把所有挑選規(guī)則翻譯成程序邏輯就夠你出一身大汗,相當(dāng)于讀個(gè)“芒果學(xué)”博士了。
不是所有人都有“讀博”的功夫的。
有請(qǐng)“機(jī)器學(xué)習(xí)”算法
機(jī)器學(xué)習(xí)算法其實(shí)就是普通算法的進(jìn)化版。通過(guò)自動(dòng)學(xué)習(xí)數(shù)據(jù)規(guī)律,讓你的程序變得更聰明些。
你從市場(chǎng)上隨機(jī)買(mǎi)一批芒果(訓(xùn)練數(shù)據(jù)),把每只芒果的物理屬性列一個(gè)表格出來(lái),比如顏色、大小、形狀、產(chǎn)地、店家,等等(特征),對(duì)應(yīng)芒果的甜度、汁水多少、成熟度,等等(輸出變量)。然后把這些數(shù)據(jù)扔給機(jī)器學(xué)習(xí)算法(分類(lèi)/回歸),它就會(huì)自己計(jì)算出一個(gè)芒果物理屬性與其品質(zhì)之間的相關(guān)性模型。
等下一次你去采購(gòu)時(shí),輸入店里在賣(mài)的芒果的物理屬性(測(cè)試數(shù)據(jù)),機(jī)器學(xué)習(xí)算法就會(huì)根據(jù)上次計(jì)算出來(lái)的模型來(lái)預(yù)測(cè)這些芒果品質(zhì)如何。機(jī)器用的算法可能跟你人肉寫(xiě)的邏輯規(guī)則類(lèi)似(比如決策樹(shù)),也有可能更先進(jìn),但反正基本上你不用多慮。
好啦,現(xiàn)在你可以信心滿滿去買(mǎi)芒果了,顏色大小啥的都是浮云,交給機(jī)器去操心唄。更妙的是,你的算法還會(huì)逐漸進(jìn)化(強(qiáng)化學(xué)習(xí)):根據(jù)其預(yù)測(cè)結(jié)果的正誤,算法會(huì)自行修正模型,那么隨著訓(xùn)練數(shù)據(jù)的積累,到后來(lái)它的預(yù)測(cè)就會(huì)越來(lái)越準(zhǔn)確。
最妙的來(lái)了,用同一個(gè)算法,你可以做好幾個(gè)模型,蘋(píng)果桔子香蕉葡萄各給爺來(lái)上一套。
用一句話總結(jié)機(jī)器學(xué)習(xí)就是:走自己的屌絲路,讓你的算法牛逼去吧。
機(jī)器學(xué)習(xí)常見(jiàn)算法分類(lèi)匯總
一、學(xué)習(xí)方式
根據(jù)數(shù)據(jù)類(lèi)型的不同,對(duì)一個(gè)問(wèn)題的建模有不同的方式。
在機(jī)器學(xué)習(xí)或者人工智能領(lǐng)域,人們首先會(huì)考慮算法的學(xué)習(xí)方式。
在機(jī)器學(xué)習(xí)領(lǐng)域,有幾種主要的學(xué)習(xí)方式。將算法按照學(xué)習(xí)方式分類(lèi)是一個(gè)不錯(cuò)的想法,這樣可以讓人們?cè)诮:退惴ㄟx擇的時(shí)候考慮能根據(jù)輸入數(shù)據(jù)來(lái)選擇最合適的算法來(lái)獲得最好的結(jié)果。
監(jiān)督式學(xué)習(xí):
在監(jiān)督式學(xué)習(xí)下,輸入數(shù)據(jù)被稱(chēng)為“訓(xùn)練數(shù)據(jù)”,每組訓(xùn)練數(shù)據(jù)有一個(gè)明確的標(biāo)識(shí)或結(jié)果,如對(duì)防垃圾郵件系統(tǒng)中“垃圾郵件”“非垃圾郵件”,對(duì)手寫(xiě)數(shù)字識(shí)別中的“1“,”2“,”3“,”4“等。在建立預(yù)測(cè)模型的時(shí)候,監(jiān)督式學(xué)習(xí)建立一個(gè)學(xué)習(xí)過(guò)程,將預(yù)測(cè)結(jié)果與“訓(xùn)練數(shù)據(jù)”的實(shí)際結(jié)果進(jìn)行比較,不斷的調(diào)整預(yù)測(cè)模型,直到模型的預(yù)測(cè)結(jié)果達(dá)到一個(gè)預(yù)期的準(zhǔn)確率。監(jiān)督式學(xué)習(xí)的常見(jiàn)應(yīng)用場(chǎng)景如分類(lèi)問(wèn)題和回歸問(wèn)題。常見(jiàn)算法有邏輯回歸(Logistic Regression)和反向傳遞神經(jīng)網(wǎng)絡(luò)(Back PropagaTIon Neural Network)
非監(jiān)督式學(xué)習(xí):
在非監(jiān)督式學(xué)習(xí)中,數(shù)據(jù)并不被特別標(biāo)識(shí),學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)。常見(jiàn)的應(yīng)用場(chǎng)景包括關(guān)聯(lián)規(guī)則的學(xué)習(xí)以及聚類(lèi)等。常見(jiàn)算法包括Apriori算法以及k-Means算法。
半監(jiān)督式學(xué)習(xí):
在此學(xué)習(xí)方式下,輸入數(shù)據(jù)部分被標(biāo)識(shí),部分沒(méi)有被標(biāo)識(shí),這種學(xué)習(xí)模型可以用來(lái)進(jìn)行預(yù)測(cè),但是模型首先需要學(xué)習(xí)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)以便合理的組織數(shù)據(jù)來(lái)進(jìn)行預(yù)測(cè)。應(yīng)用場(chǎng)景包括分類(lèi)和回歸,算法包括一些對(duì)常用監(jiān)督式學(xué)習(xí)算法的延伸,這些算法首先試圖對(duì)未標(biāo)識(shí)數(shù)據(jù)進(jìn)行建模,在此基礎(chǔ)上再對(duì)標(biāo)識(shí)的數(shù)據(jù)進(jìn)行預(yù)測(cè)。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(jī)(Laplacian SVM.)等。
強(qiáng)化學(xué)習(xí):
在這種學(xué)習(xí)模式下,輸入數(shù)據(jù)作為對(duì)模型的反饋,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個(gè)檢查模型對(duì)錯(cuò)的方式,在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋到模型,模型必須對(duì)此立刻作出調(diào)整。常見(jiàn)的應(yīng)用場(chǎng)景包括動(dòng)態(tài)系統(tǒng)以及機(jī)器人控制等。常見(jiàn)算法包括Q-Learning以及時(shí)間差學(xué)習(xí)(Temporal difference learning)
在企業(yè)數(shù)據(jù)應(yīng)用的場(chǎng)景下, 人們最常用的可能就是監(jiān)督式學(xué)習(xí)和非監(jiān)督式學(xué)習(xí)的模型。
在圖像識(shí)別等領(lǐng)域,由于存在大量的非標(biāo)識(shí)的數(shù)據(jù)和少量的可標(biāo)識(shí)數(shù)據(jù), 目前半監(jiān)督式學(xué)習(xí)是一個(gè)很熱的話題。
而強(qiáng)化學(xué)習(xí)更多的應(yīng)用在機(jī)器人控制及其他需要進(jìn)行系統(tǒng)控制的領(lǐng)域。
二、算法類(lèi)似性
根據(jù)算法的功能和形式的類(lèi)似性,我們可以把算法分類(lèi),比如說(shuō)基于樹(shù)的算法,基于神經(jīng)網(wǎng)絡(luò)的算法等等。當(dāng)然,機(jī)器學(xué)習(xí)的范圍非常龐大,有些算法很難明確歸類(lèi)到某一類(lèi)。而對(duì)于有些分類(lèi)來(lái)說(shuō),同一分類(lèi)的算法可以針對(duì)不同類(lèi)型的問(wèn)題。這里,我們盡量把常用的算法按照最容易理解的方式進(jìn)行分類(lèi)。
回歸算法:
回歸算法是試圖采用對(duì)誤差的衡量來(lái)探索變量之間的關(guān)系的一類(lèi)算法?;貧w算法是統(tǒng)計(jì)機(jī)器學(xué)習(xí)的利器。在機(jī)器學(xué)習(xí)領(lǐng)域,人們說(shuō)起回歸,有時(shí)候是指一類(lèi)問(wèn)題,有時(shí)候是指一類(lèi)算法,這一點(diǎn)常常會(huì)使初學(xué)者有所困惑。常見(jiàn)的回歸算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(LogisTIc Regression),逐步式回歸(Stepwise Regression),多元自適應(yīng)回歸樣條(MulTIvariate AdapTIve Regression Splines)以及本地散點(diǎn)平滑估計(jì)(Locally Estimated Scatterplot Smoothing)
基于實(shí)例的算法
基于實(shí)例的算法常常用來(lái)對(duì)決策問(wèn)題建立模型,這樣的模型常常先選取一批樣本數(shù)據(jù),然后根據(jù)某些近似性把新數(shù)據(jù)與樣本數(shù)據(jù)進(jìn)行比較。通過(guò)這種方式來(lái)尋找最佳的匹配。因此,基于實(shí)例的算法常常也被稱(chēng)為“贏家通吃”學(xué)習(xí)或者“基于記憶的學(xué)習(xí)”。常見(jiàn)的算法包括 k-Nearest Neighbor(KNN), 學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map , SOM)
正則化方法
正則化方法是其他算法(通常是回歸算法)的延伸,根據(jù)算法的復(fù)雜度對(duì)算法進(jìn)行調(diào)整。正則化方法通常對(duì)簡(jiǎn)單模型予以獎(jiǎng)勵(lì)而對(duì)復(fù)雜算法予以懲罰。常見(jiàn)的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網(wǎng)絡(luò)(Elastic Net)。
決策樹(shù)學(xué)習(xí)
決策樹(shù)算法根據(jù)數(shù)據(jù)的屬性采用樹(shù)狀結(jié)構(gòu)建立決策模型, 決策樹(shù)模型常常用來(lái)解決分類(lèi)和回歸問(wèn)題。常見(jiàn)的算法包括:分類(lèi)及回歸樹(shù)(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機(jī)森林(Random Forest), 多元自適應(yīng)回歸樣條(MARS)以及梯度推進(jìn)機(jī)(Gradient Boosting Machine, GBM)
貝葉斯方法
貝葉斯方法算法是基于貝葉斯定理的一類(lèi)算法,主要用來(lái)解決分類(lèi)和回歸問(wèn)題。常見(jiàn)算法包括:樸素貝葉斯算法,平均單依賴估計(jì)(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
基于核的算法
基于核的算法中最著名的莫過(guò)于支持向量機(jī)(SVM)了。 基于核的算法把輸入數(shù)據(jù)映射到一個(gè)高階的向量空間, 在這些高階向量空間里, 有些分類(lèi)或者回歸問(wèn)題能夠更容易的解決。 常見(jiàn)的基于核的算法包括:支持向量機(jī)(Support Vector Machine, SVM), 徑向基函數(shù)(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等
聚類(lèi)算法
聚類(lèi),就像回歸一樣,有時(shí)候人們描述的是一類(lèi)問(wèn)題,有時(shí)候描述的是一類(lèi)算法。聚類(lèi)算法通常按照中心點(diǎn)或者分層的方式對(duì)輸入數(shù)據(jù)進(jìn)行歸并。所以的聚類(lèi)算法都試圖找到數(shù)據(jù)的內(nèi)在結(jié)構(gòu),以便按照最大的共同點(diǎn)將數(shù)據(jù)進(jìn)行歸類(lèi)。常見(jiàn)的聚類(lèi)算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。
關(guān)聯(lián)規(guī)則學(xué)習(xí)
關(guān)聯(lián)規(guī)則學(xué)習(xí)通過(guò)尋找最能夠解釋數(shù)據(jù)變量之間關(guān)系的規(guī)則,來(lái)找出大量多元數(shù)據(jù)集中有用的關(guān)聯(lián)規(guī)則。常見(jiàn)算法包括 Apriori算法和Eclat算法等。
人工神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)算法模擬生物神經(jīng)網(wǎng)絡(luò),是一類(lèi)模式匹配算法。通常用于解決分類(lèi)和回歸問(wèn)題。人工神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的一個(gè)龐大的分支,有幾百種不同的算法。(其中深度學(xué)習(xí)就是其中的一類(lèi)算法,我們會(huì)單獨(dú)討論),重要的人工神經(jīng)網(wǎng)絡(luò)算法包括:感知器神經(jīng)網(wǎng)絡(luò)(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網(wǎng)絡(luò),自組織映射(Self-Organizing Map, SOM)。學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ)
深度學(xué)習(xí)
深度學(xué)習(xí)算法是對(duì)人工神經(jīng)網(wǎng)絡(luò)的發(fā)展。 在近期贏得了很多關(guān)注, 特別是百度也開(kāi)始發(fā)力深度學(xué)習(xí)后, 更是在國(guó)內(nèi)引起了很多關(guān)注。 在計(jì)算能力變得日益廉價(jià)的今天,深度學(xué)習(xí)試圖建立大得多也復(fù)雜得多的神經(jīng)網(wǎng)絡(luò)。很多深度學(xué)習(xí)的算法是半監(jiān)督式學(xué)習(xí)算法,用來(lái)處理存在少量未標(biāo)識(shí)數(shù)據(jù)的大數(shù)據(jù)集。常見(jiàn)的深度學(xué)習(xí)算法包括:受限波爾茲曼機(jī)(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷積網(wǎng)絡(luò)(Convolutional Network), 堆棧式自動(dòng)編碼器(Stacked Auto-encoders)。
降低維度算法
像聚類(lèi)算法一樣,降低維度算法試圖分析數(shù)據(jù)的內(nèi)在結(jié)構(gòu),不過(guò)降低維度算法是以非監(jiān)督學(xué)習(xí)的方式試圖利用較少的信息來(lái)歸納或者解釋數(shù)據(jù)。這類(lèi)算法可以用于高維數(shù)據(jù)的可視化或者用來(lái)簡(jiǎn)化數(shù)據(jù)以便監(jiān)督式學(xué)習(xí)使用。常見(jiàn)的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回歸(Partial Least Square Regression,PLS), Sammon映射,多維尺度(Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等。
集成算法:
集成算法用一些相對(duì)較弱的學(xué)習(xí)模型獨(dú)立地就同樣的樣本進(jìn)行訓(xùn)練,然后把結(jié)果整合起來(lái)進(jìn)行整體預(yù)測(cè)。集成算法的主要難點(diǎn)在于究竟集成哪些獨(dú)立的較弱的學(xué)習(xí)模型以及如何把學(xué)習(xí)結(jié)果整合起來(lái)。這是一類(lèi)非常強(qiáng)大的算法,同時(shí)也非常流行。常見(jiàn)的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆疊泛化(Stacked Generalization, Blending),梯度推進(jìn)機(jī)(Gradient Boosting Machine, GBM),隨機(jī)森林(Random Forest)。