關(guān)于作者

 一個畢業(yè)于北京大學(xué)數(shù)學(xué)力學(xué)系,在中國科學(xué)院計算所、計算中心和網(wǎng)絡(luò)中心工作過,在澳大利亞科工組織DMS、香港浸會學(xué)院數(shù)學(xué)系和中國21世紀(jì)議程管理中心等處工作過,多次獲國家和中科院科技獎并享受政府特殊津貼的退休老頭?,F(xiàn)在在【中國科普博覽】網(wǎng)“科學(xué)新語林”欄目里開設(shè)一個《數(shù)學(xué)與計算機》的個人專欄,愿和愛好數(shù)學(xué)與計算機的各界網(wǎng)友和青少年朋友,談?wù)剬?shù)學(xué)與計算機的看法、想法。

《常用算法之智能計算(三)》:機器學(xué)習(xí)計算

張建中
2018年11月08日
機器學(xué)習(xí)(Machine Learning),人工智能的核心,是使計算機具有智能的根本途徑,其應(yīng)用遍及人工智能的各個領(lǐng)域,主要使用歸納、綜合而不是演繹的方法研究計算機怎樣模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識或技能,重新組織已有的知識結(jié)構(gòu)使之不斷改善自身的性能。機器學(xué)習(xí)是一門多領(lǐng)域的交叉學(xué)科,涉及到概率論、統(tǒng)計學(xué)、逼近論、凸分析、算法復(fù)雜度理論和計算機科學(xué)等諸多學(xué)科。

機器學(xué)習(xí)(摘自互聯(lián)網(wǎng))

機器學(xué)習(xí)計算(Machine Learning Computing)主要設(shè)計和分析一些讓計算機可以自動“學(xué)習(xí)”的算法,是一類從數(shù)據(jù)中自動分析獲得規(guī)律、利用規(guī)律,對未來數(shù)據(jù)進行分類、聚類和預(yù)測等的一類算法。因為機器學(xué)習(xí)計算中涉及了大量的統(tǒng)計學(xué)理論,機器學(xué)習(xí)與統(tǒng)計推斷的聯(lián)系尤為密切,也被稱為統(tǒng)計學(xué)習(xí)理論。算法設(shè)計方面,機器學(xué)習(xí)計算關(guān)注可以實現(xiàn)的、行之有效的學(xué)習(xí)算法,很多推論問題具有無程序可循的難度,所以部分的機器學(xué)習(xí)研究是開發(fā)簡單、處理容易的近似算法。
機器學(xué)習(xí)已經(jīng)得到了十分廣泛的應(yīng)用,如數(shù)據(jù)挖掘、計算機視覺、自然語言處理、生物特征識別、搜索引擎、醫(yī)學(xué)診斷、檢測信用卡、證券市場分析、DNA序列測序、語音和手寫識別、戰(zhàn)略游戲和機器人運用等。
從更廣泛的意義上來看,機器學(xué)習(xí)是人工智能的一個子集。人工智能旨在使計算機更加智能化,而機器學(xué)習(xí)已經(jīng)證明如何做到這一點。簡而言之,機器學(xué)習(xí)是人工智能的應(yīng)用,通過應(yīng)用從數(shù)據(jù)中反復(fù)學(xué)習(xí)得到算法,可以改進計算機的功能,而無需進行明確的編程。
在給出機器學(xué)習(xí)計算各種算法之前,最好是先研究一下什么是機器學(xué)習(xí)和如何對機器學(xué)習(xí)進行分類,才能更好的理解和掌握一些具體的機器學(xué)習(xí)算法并將其用于實際問題的計算和處理。
學(xué)習(xí)是人類具有的一種重要智能行為,但究竟什么是學(xué)習(xí),長期以來卻眾說紛紜。社會學(xué)家、邏輯學(xué)家和心理學(xué)家都各有自己不同的看法和說法。比如,有人定義機器學(xué)習(xí)是一門人工智能的科學(xué),該領(lǐng)域的主要研究對象是人工智能,特別是如何從經(jīng)驗學(xué)習(xí)中改善具體算法的性能,也有人認為機器學(xué)習(xí)是對能通過經(jīng)驗自動改進計算機算法的研究,還有人認為機器學(xué)習(xí)是用數(shù)據(jù)或以往的經(jīng)驗,以此優(yōu)化計算機程序的性能標(biāo)準(zhǔn)等等。盡管如此,為了便于進行討論和推進機器學(xué)習(xí)學(xué)科的進展,有必要對機器學(xué)習(xí)給出定義,即使這種定義是不完全、不完整和不充分的并存在諸多爭議的。
顧名思義,機器學(xué)習(xí)是研究如何使用機器來模擬人類學(xué)習(xí)活動的一門學(xué)科。稍為嚴(yán)格的提法是:機器學(xué)習(xí)是一門研究機器獲取新知識、新技能并識別現(xiàn)有知識的學(xué)問。這里所說的“機器”,當(dāng)然指的是計算機;現(xiàn)在是電子計算機,將來還可能是中子計算機、光子計算機或神經(jīng)網(wǎng)絡(luò)計算機。
計算機能否象人類一樣能具有學(xué)習(xí)的能力,特別是機器的學(xué)習(xí)能力是否能超過人類,確有許多不同的想法和看法,爭議頗多。持否定意見人的一個主要論據(jù)是:機器是人造的,其性能和動作完全是由設(shè)計者規(guī)定的,因此無論如何其能力也不會超過設(shè)計者本人。這種意見對不具備學(xué)習(xí)能力的計算機來說的確是對的,可是對具備了學(xué)習(xí)能力的計算機就值得考慮了,因為這種計算機的能力通過學(xué)習(xí)和實際應(yīng)用會不斷提高和增強,過了一段時間之后,設(shè)計者本人也不知它的能力達到了什么水平、是否超過了自己。
對機器學(xué)習(xí)可按照不同的標(biāo)準(zhǔn)和方法進行分類,下面簡單介紹兩種常見的分類方法。
(1)基于學(xué)習(xí)策略的分類???學(xué)習(xí)策略是指學(xué)習(xí)過程中系統(tǒng)所采用的推理策略。一個學(xué)習(xí)系統(tǒng)總是由學(xué)習(xí)和環(huán)境兩部分組成。由環(huán)境(如書本或教師)提供信息,學(xué)習(xí)部分則實現(xiàn)信息轉(zhuǎn)換,用能夠理解的形式記憶下來,并從中獲取有用的信息。學(xué)習(xí)策略的分類標(biāo)準(zhǔn)就是根據(jù)學(xué)生實現(xiàn)信息轉(zhuǎn)換所需的推理多少和難易程度來分類的,依照從簡到繁、從少到多的次序分為以下六種基本類型:
1)機械學(xué)習(xí)????學(xué)習(xí)者無需任何推理或其它的知識轉(zhuǎn)換,直接吸取環(huán)境所提供的信息,主要考慮如何索引存貯知識并加以利用。系統(tǒng)的學(xué)習(xí)方法是直接通過事先編好、構(gòu)造好的程序來學(xué)習(xí),學(xué)習(xí)者不作任何工作,或者是通過直接接收既定的事實和數(shù)據(jù)進行學(xué)習(xí),對輸入信息不作任何的推理。
2)示教學(xué)習(xí)????學(xué)生從環(huán)境中獲取信息,把知識轉(zhuǎn)換成內(nèi)部可使用的表示形式,并將新的知識和原有知識有機地結(jié)合為一體。所以要求學(xué)生有一定程度的推理能力,但環(huán)境仍要做大量的工作。教師以某種形式提出和組織知識,以使學(xué)生擁有的知識可以不斷的增加。這種學(xué)習(xí)方法和人類社會的學(xué)校教學(xué)方式有點相似,學(xué)習(xí)的任務(wù)就是建立一個系統(tǒng),使它能接受教導(dǎo)和建議,并有效地存貯和應(yīng)用學(xué)到的知識。目前,不少專家系統(tǒng)在建立知識庫時就使用這種方法以實現(xiàn)知識獲取。
3)演繹學(xué)習(xí)????學(xué)生所用的推理形式為演繹推理,從公理出發(fā),經(jīng)過邏輯變換推導(dǎo)出結(jié)論。這種推理是"保真"變換和特化的過程,使學(xué)生在推理過程中可以獲取有用的知識。這種學(xué)習(xí)方法包含宏操作學(xué)習(xí)、知識編輯和組塊技術(shù)。
4)類比學(xué)習(xí)????利用源域和目標(biāo)域二個不同領(lǐng)域中的知識相似性,通過類比從源域的知識推導(dǎo)出目標(biāo)域的相應(yīng)知識,從而實現(xiàn)學(xué)習(xí)。類比學(xué)習(xí)系統(tǒng)可以使一個已有的計算機應(yīng)用系統(tǒng)轉(zhuǎn)變?yōu)檫m應(yīng)于新的領(lǐng)域,來完成原先沒有設(shè)計出來的類似功能。類比學(xué)習(xí)需要比上述三種學(xué)習(xí)方式更多的推理,一般要求先從知識源中檢索出可用的知識,再將其轉(zhuǎn)換成新的形式,用到新的狀態(tài)中去。
5)解釋學(xué)習(xí)????學(xué)生根據(jù)教師提供的目標(biāo)概念、該概念的一個例子、領(lǐng)域理論及可操作準(zhǔn)則,首先構(gòu)造一個解釋來說明為什么該例子滿足目標(biāo)概念,然后將解釋推廣為目標(biāo)概念的一個滿足可操作準(zhǔn)則的充分條件。
6)歸納學(xué)習(xí)????歸納學(xué)習(xí)是由教師或環(huán)境提供某些概念的一些實例或反例,讓學(xué)生通過歸納推理得出該概念的一般描述。這種學(xué)習(xí)的推理工作量遠多于示教學(xué)習(xí)和演繹學(xué)習(xí),因為環(huán)境并不提供一般性概念描述。歸納學(xué)習(xí)是最基本的、發(fā)展較為成熟的一類學(xué)習(xí)方法,在人工智能領(lǐng)域中已經(jīng)得到廣泛的研究和應(yīng)用。
(2)基于學(xué)習(xí)方式的分類 ??機器學(xué)習(xí)算法按照學(xué)習(xí)方式的不同可以分為五種類型:有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、強化學(xué)習(xí)和深度學(xué)習(xí)。
1)有監(jiān)督學(xué)習(xí)????輸入的數(shù)據(jù)為訓(xùn)練數(shù)據(jù),并且每一個數(shù)據(jù)都會帶有標(biāo)簽或類別。通過訓(xùn)練過程建模,模型需要作出預(yù)測,如果預(yù)測出錯會被修正,直到模型輸出準(zhǔn)確的訓(xùn)練結(jié)果,訓(xùn)練過程會一直持續(xù)。常用于解決的問題有分類和回歸,常用的算法包括分類、邏輯回歸和BP神經(jīng)網(wǎng)絡(luò)。
2)無監(jiān)督學(xué)習(xí)????輸入數(shù)據(jù)沒有標(biāo)簽或類別,輸出沒有標(biāo)準(zhǔn)答案,就是一系列的樣本。無監(jiān)督學(xué)習(xí)通過推斷輸入數(shù)據(jù)中的結(jié)構(gòu)建模,可能是提取一般規(guī)律,可以是通過數(shù)學(xué)處理系統(tǒng)以減少冗雜,或者根據(jù)相似性組織數(shù)據(jù)。常用于解決的問題有聚類,降維和關(guān)聯(lián)規(guī)則的學(xué)習(xí)。常用的算法包括了Apriori算法和K均值算法等。
3)半監(jiān)督學(xué)習(xí)????半監(jiān)督學(xué)習(xí)可以看做無監(jiān)督學(xué)習(xí)的延伸,介于有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)二者之間,其輸入數(shù)據(jù)包含標(biāo)簽和不帶標(biāo)簽的樣本。常用于解決的問題是分類和回歸,常用的算法是對所有的無標(biāo)簽的數(shù)據(jù)建模進行的預(yù)測算法。
4)強化學(xué)習(xí) ???強化學(xué)習(xí)是一個連續(xù)決策的過程,每次預(yù)測都有一定形式的反饋,但是沒有精確的標(biāo)簽或者錯誤信息。
5) 深度學(xué)習(xí)????深度學(xué)習(xí)并不是一種獨立的學(xué)習(xí)方法,其本身也會用到有監(jiān)督和無監(jiān)督的學(xué)習(xí),由于近幾年該領(lǐng)域發(fā)展迅猛,一些特有的學(xué)習(xí)手段和算法相繼提出,因此將其看作一種單獨的學(xué)習(xí)方法。
深度學(xué)習(xí)是機器學(xué)習(xí)研究中的一個新的領(lǐng)域,目的在于建立、模擬人腦進行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),模仿人腦的機制來解釋數(shù)據(jù),如圖像、聲音和文本等多媒體數(shù)據(jù)。深度學(xué)習(xí)是無監(jiān)督學(xué)習(xí)的一種,其概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,含有多隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層表示其屬性類別或特征,以發(fā)現(xiàn)數(shù)據(jù)的分布式特征。基于深信度網(wǎng)絡(luò)提出非監(jiān)督逐層訓(xùn)練算法,為解決深層結(jié)構(gòu)相關(guān)的優(yōu)化難題帶來了希望,隨后提出多層自動編碼器深層結(jié)構(gòu)。此外提出的卷積神經(jīng)網(wǎng)絡(luò)是第一個真正多層結(jié)構(gòu)學(xué)習(xí)算法,它利用空間相對關(guān)系減少參數(shù)數(shù)目以提高訓(xùn)練性能。
目前,機器學(xué)習(xí)領(lǐng)域的研究工作主要圍繞在以下三個方面:
1)任務(wù)研析???對一組預(yù)定任務(wù)的學(xué)習(xí)系統(tǒng)進行研究,改進執(zhí)行性能并提高其有效性;
2)模型研發(fā) ??研究人類學(xué)習(xí)過程并進行計算機模擬和分析,改進現(xiàn)有模型,提出新的更加有效的模型;
3)理論分析???從理論上探索各種可能的機器學(xué)習(xí)方法,給出獨立于應(yīng)用領(lǐng)域的高效算法。
機器學(xué)習(xí)算法的功能可粗略的分為四大類,即分類、聚類、預(yù)測和降維,可用的機器學(xué)習(xí)算法不下數(shù)百種,包括回歸分析、判別分析、聚類分析、因子分析和主成分分析、貝葉斯分類、決策樹、支持向量機、EM、Adaboost、人工神經(jīng)網(wǎng)絡(luò)及它們之間的一些集成算法等。其中的回歸分析、判別分析、聚類分析等已在統(tǒng)計計算里進行了介紹,神經(jīng)網(wǎng)絡(luò)計算也在上一篇文章中進行了較多的討論,下面僅對機器學(xué)習(xí)中最常用的一些特有算法,如決策樹算法、支持向量機算法、樸素貝葉斯算法、最大期望算法、KNN算法和K均值算法等,進行一些思考性、原理性的簡單介紹。
1)決策樹(Decision Trees)算法
決策樹是一個預(yù)測模型,代表的是對象屬性與對象值之間的一種映射關(guān)系。樹中每個節(jié)點表示某個對象,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結(jié)點則對應(yīng)從根節(jié)點到該葉節(jié)點所經(jīng)歷的路徑所表示的對象的值。決策樹僅有單一輸出,若想有多個輸出,可以建立獨立的決策樹以處理不同輸出。
一個決策樹包含三種類型的節(jié)點,即決策節(jié)點,機會節(jié)點和終結(jié)點。這里,每個決策樹都表述了一種樹型結(jié)構(gòu),由它的分支來對該類型的對象依靠屬性進行分類。每個決策樹可以依靠對源數(shù)據(jù)庫的分割進行數(shù)據(jù)測試。這個過程可以遞歸式的對樹進行修剪。當(dāng)不能再進行分割或一個單獨的類可以被應(yīng)用于某一分支時,遞歸過程完成。
決策樹算法根據(jù)數(shù)據(jù)的屬性采用樹狀結(jié)構(gòu)建立決策模型,常常用來解決分類和預(yù)測問題。常見的算法有分類及回歸樹,ID3,C4.5,隨機森林,多元樣條回歸等實際可用的一些算法。
2)支持向量機(Support Vector Machine,SVM)算法
SVM是一種監(jiān)督式學(xué)習(xí)算法,廣泛用于統(tǒng)計分類以及預(yù)測分析計算中。
SVM屬于一般化線性分類器。這類分類器的特點是他們能夠同時最小化經(jīng)驗誤差與最大化幾何邊緣區(qū),因此支持向量機也被稱為最大邊緣區(qū)分類器。
SVM的主要思想可以概括為兩點:① 針對線性可分情況進行分析,對于線性不可分的情況,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分,從而使得高維特征空間采用線性算法對樣本的非線性特征進行線性分析成為可能;② 基于結(jié)構(gòu)風(fēng)險最小化理論,在特征空間中建構(gòu)最優(yōu)分割超平面,使得學(xué)習(xí)器得到全局最優(yōu)化,并且在整個樣本空間的期望風(fēng)險以某個概率滿足一定的上界。
3)樸素貝葉斯分類(Na?ve Bayesian classification)算法
樸素貝葉斯是一種基于貝葉斯定理與特征條件獨立假設(shè)的概率分類算法,通過對象的先驗概率,利用貝葉斯公式
其中P(A|B)是后驗概率,P(B|A)是似然概率,P(A)是先驗概率,P(B)是預(yù)測先驗概率。
根據(jù)上述公式計算出其后驗概率,即該對象屬于某一類的概率,選擇具有最大后驗概率的類別作為該對象所屬的類別。樸素貝葉斯算法簡單,快速,具有較小的出錯率,對結(jié)果解釋容易理解。
4)最大期望(Expectation–Maximization,EM)算法
在統(tǒng)計計算中,最大期望算法是在概率模型中尋找參數(shù)最大似然估計的算法,其中概率模型依賴于無法觀測的隱藏變量,經(jīng)常用在機器學(xué)習(xí)和計算機視覺的數(shù)據(jù)集聚領(lǐng)域。最大期望算法經(jīng)過兩個步驟交替進行計算,第一步是計算期望(E),也就是將隱藏變量象能夠觀測到的一樣包含在內(nèi)從而計算最大似然的期望值;第二步是最大化(M),也就是最大化在E步上找到的最大似然的期望值從而計算參數(shù)的最大似然估計。M步上找到的參數(shù)然后用于另外一個E步計算,這個過程不斷交替進行,進行改進,以尋求漸近最優(yōu)結(jié)果。
5)K最近鄰(k-Nearest Neighbor,KNN)分類算法
KNN分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學(xué)習(xí)算法之一。該方法的思路是:如果一個樣本在特征空間中的k個最相似的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別。KNN算法中,所選擇的鄰居都是已經(jīng)正確分類的對象。該方法在定類決策上只依據(jù)最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。
KNN方法雖然從原理上依賴于極限定理,但在類別決策時,只與極少量的相鄰樣本有關(guān)。由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。
KNN算法不僅可以用于分類,還可以用于回歸。通過找出一個樣本的k個最近鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以得到該樣本的屬性。
K-近鄰算法的思想如下:首先,計算新樣本與訓(xùn)練樣本之間的距離,找到距離最近的K個鄰居;然后,根據(jù)這些鄰居所屬的類別來判定新樣本的類別,如果它們都屬于同一個類別,那么新樣本也屬于這個類;否則,對每個后選類別進行評分,按照某種規(guī)則確定新樣本的類別。
6)K-均值(K-means)算法
K-均值算法是輸入聚類個數(shù)k,以及包含 n個數(shù)據(jù)對象的數(shù)據(jù)庫,輸出滿足方差最小標(biāo)準(zhǔn)?k(k數(shù)據(jù)對象劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高,而不同聚類中的對象相似度較小。
k-means 算法的工作過程說明如下:首先從n個數(shù)據(jù)對象任意選擇 k 個對象作為初始聚類中心,而對于所剩下其它對象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的聚類,然后再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復(fù)這一過程直到標(biāo)準(zhǔn)測度函數(shù)開始收斂為止。一般都采用均方差作為標(biāo)準(zhǔn)測度函數(shù). k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。
從算法的表現(xiàn)上來說,它并不保證一定得到全局最優(yōu)解,最終解的質(zhì)量很大程度上取決于初始化的分組。由于該算法的速度快,因此常用的一種方法是多次運行k平均算法,選擇最優(yōu)解。
機器學(xué)習(xí)是繼神經(jīng)網(wǎng)絡(luò)系統(tǒng)之后人工智能應(yīng)用的又一重要研究領(lǐng)域,也是人工智能和神經(jīng)網(wǎng)絡(luò)計算的核心研究課題。對機器學(xué)習(xí)的研究及其進展,必將促使人工智能和整個科學(xué)技術(shù)的進一步發(fā)展。