機器學習的前世今生:一段波瀾壯闊的歷史

天澤28發表於2016-09-07

機器學習的前世今生:一段波瀾壯闊的歷史






Machine Learning

一部氣勢恢巨集的人工智慧發展史


AlphaGo的勝利,無人駕駛的成功,模式識別的突破性進展,人工智慧的的飛速發展一次又一次地挑動著我們的神經。作為人工智慧的核心,機器學習也在人工智慧的大步發展中備受矚目,光輝無限。

如今,機器學習的應用已遍及人工智慧的各個分支,如專家系統、自動推理、自然語言理解、模式識別、計算機視覺、智慧機器人等領域。

但也許我們不曾想到的事機器學習乃至人工智慧的起源,是對人本身的意識、自我、心靈等哲學問題的探索。而在發展的過程中,更是融合了統計學、神經科學、資訊理論、控制論、計算複雜性理論等學科的知識。


總的來說,機器學習的發展是整個人工智慧發展史上頗為重要的一個分支。其中故事一波三折,令人驚訝歎服,頗為蕩氣迴腸。

其中穿插了無數牛人的故事,在下面的介紹中,你將會看到以下神級人物的均有出場,我們順著ML的進展時間軸娓娓道來


基礎奠定的熱烈時期

20世紀50年代初到60年代中葉

Hebb於1949年基於神經心理學的學習機制開啟機器學習的第一步。此後被稱為Hebb學習規則。Hebb學習規則是一個無監督學習規則,這種學習的結果是使網路能夠提取訓練集的統計特性,從而把輸入資訊按照它們的相似性程度劃分為若干類。這一點與人類觀察和認識世界的過程非常吻合,人類觀察和認識世界在相當程度上就是在根據事物的統計特徵進行分類。


從上面的公式可以看出,權值調整量與輸入輸出的乘積成正比,顯然經常出現的模式將對權向量有較大的影響。在這種情況下,Hebb學習規則需預先定置權飽和值,以防止輸入和輸出正負始終一致時出現權值無約束增長。

Hebb學習規則與“條件反射”機理一致,並且已經得到了神經細胞學說的證實。比如巴甫洛夫的條件反射實驗:每次給狗餵食前都先響鈴,時間一長,狗就會將鈴聲和食物聯絡起來。以後如果響鈴但是不給食物,狗也會流口水。


1950年,阿蘭·圖靈創造了圖靈測試來判定計算機是否智慧。圖靈測試認為,如果一臺機器能夠與人類展開對話(通過電傳裝置)而不能被辨別出其機器身份,那麼稱這臺機器具有智慧。這一簡化使得圖靈能夠令人信服地說明“思考的機器”是可能的。


2014年6月8日,一臺計算機(計算機尤金·古斯特曼是一個聊天機器人,一個電腦程式)成功讓人類相信它是一個13歲的男孩,成為有史以來首臺通過圖靈測試的計算機。這被認為是人工智慧發展的一個里程碑事件。


1952,IBM科學家亞瑟·塞繆爾開發了一個跳棋程式。該程式能夠通過觀察當前位置,並學習一個隱含的模型,從而為後續動作提供更好的指導。塞繆爾發現,伴隨著該遊戲程式執行時間的增加,其可以實現越來越好的後續指導。

通過這個程式,塞繆爾駁倒了普羅維登斯提出的機器無法超越人類,像人類一樣寫程式碼和學習的模式。他創造了“機器學習”,並將它定義為“可以提供計算機能力而無需顯式程式設計的研究領域”。

1957年,羅森·布拉特基於神經感知科學背景提出了第二模型,非常的類似於今天的機器學習模型。這在當時是一個非常令人興奮的發現,它比Hebb的想法更適用。基於這個模型羅森·布拉特設計出了第一個計算機神經網路——感知機(the perceptron),它模擬了人腦的運作方式。

3年後,維德羅首次使用Delta學習規則用於感知器的訓練步驟。這種方法後來被稱為最小二乘方法。這兩者的結合創造了一個良好的線性分類器。


1967年,最近鄰演算法(The nearest neighbor algorithm)出現,由此計算機可以進行簡單的模式識別。kNN演算法的核心思想是如果一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。


kNN的優點在於易於理解和實現,無需估計引數,無需訓練,適合對稀有事件進行分類,特別適合於多分類問題(multi-modal,物件具有多個類別標籤), 甚至比SVM的表現要好。

Han等人於2002年嘗試利用貪心法,針對檔案分類實做可調整權重的k最近鄰居法WAkNN (weighted adjusted k nearest neighbor),以促進分類效果;而Li等人於2004年提出由於不同分類的檔案本身有數量上有差異,因此也應該依照訓練集合中各種分類的檔案數量,選取不同數目的最近鄰居,來參與分類。

1969年馬文·明斯將感知器興奮推到最高頂峰。他提出了著名的XOR問題和感知器資料線性不可分的情形。

明斯基還把人工智慧技術和機器人技術結合起來,開發出了世界上最早的能夠模擬人活動的機器人Robot C,使機器人技術躍上了一個新臺階。明斯基的另一個大舉措是建立了著名的“思維機公司”(Thinking Machines,Inc.),開發具有智慧的計算機。

此後,神經網路的研究將處於休眠狀態,直到上世紀80年代。儘管BP神經的想法由林納因馬在1970年提出,並將其稱為“自動分化反向模式”,但是並未引起足夠的關注。


停滯不前的冷靜時期

20世紀60年代中葉到70年代末

從60年代中到70年代末,機器學習的發展步伐幾乎處於停滯狀態。雖然這個時期溫斯頓(Winston)的結構學習系統海斯·羅思(Hayes Roth)等的基於邏輯的歸納學習系統取得較大的進展,但只能學習單一概念,而且未能投入實際應用。此外,神經網路學習機因理論缺陷未能達到預期效果而轉入低潮。

這個時期的研究目標是模擬人類的概念學習過程,並採用邏輯結構或圖結構 作為機器內部描述。機器能夠採用符號來描述概念(符號概念獲取),並提出關於學習概念的各種假設。

事實上,這個時期整個AI領域都遭遇了瓶頸。當時的計算機有限的記憶體和處理速度不足以解決任何實際的AI問題。要求程式對這個世界具有兒童水平的認識,研究者們很快發現這個要求太高了:1970年沒人能夠做出如此巨大的資料庫,也沒人知道一個程式怎樣才能學到如此豐富的資訊。


重拾希望的復興時期

20世紀70年代末到80年代中葉

從70年代末開始,人們從學習單個概念擴充套件到學習多個概念,探索不同的學習 策略和各種學習方法。這個時期,機器學習在大量的時間應用中回到人們的視線,又慢慢復甦。

1980年,在美國的卡內基梅隆大學(CMU)召開了第一屆機器學習國際研討會,標誌著機器學習研究已在全世界興起。此後,機器歸納學習進入應用。

經過一些挫折後,多層感知器(MLP)由偉博斯在1981年的神經網路反向傳播(BP)演算法中具體提出。當然BP仍然是今天神經網路架構的關鍵因素。有了這些新思想,神經網路的研究又加快了。

1985 -1986神經網路研究人員(魯梅爾哈特,辛頓,威廉姆斯-赫,尼爾森)先後提出了MLPBP訓練相結合的理念。

一個非常著名的ML演算法由昆蘭在1986年提出,我們稱之為決策樹演算法,更準確的說是ID3演算法。這是另一個主流機器學習的火花點。此外,與黑盒神經網路模型截然不同的是,決策樹ID3演算法也被作為一個軟體,通過使用簡單的規則和清晰的參考可以找到更多的現實生活中的使用情況。


決策樹是一個預測模型,他代表的是物件屬性與物件值之間的一種對映關係。樹中每個節點表示某個物件,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的物件的值。決策樹僅有單一輸出,若欲有複數輸出,可以建立獨立的決策樹以處理不同輸出。資料探勘中決策樹是一種經常要用到的技術,可以用於分析資料,同樣也可以用來作預測。


現代機器學習的成型時期

20世紀90年初到21世紀初

1990年,Schapire最先構造出一種多項式級的演算法 ,對該問題做了肯定的證明 ,這就是最初的Boosting演算法。一年後 ,Freund提出了一種效率更高的Boosting演算法。但是,這兩種演算法存在共同的實踐上的缺陷 ,那就是都要求事先知道弱學習演算法學習正確的下限。


1995年 , Freundschapire改進了Boosting演算法 ,提出了 AdaBoost (Adap tive Boosting)演算法,該演算法效率和 Freund於 1991年提出的 Boosting演算法幾乎相同 ,但不需要任何關於弱學習器的先驗知識 ,因而更容易應用到實際問題當中。

Boosting方法是一種用來提高弱分類演算法準確度的方法,這種方法通過構造一個預測函式系列,然後以一定的方式將他們組合成一個預測函式。他是一種框架演算法,主要是通過對樣本集的操作獲得樣本子集,然後用弱分類演算法在樣本子集上訓練生成一系列的基分類器

同年,機器學習領域中一個最重要的突破,支援向量(support vector machines,  SVM ),由瓦普尼克科爾特斯在大量理論和實證的條件下年提出。從此將機器學習社群分為神經網路社群和支援向量機社群。


然而兩個社群之間的競爭並不那麼容易,神經網路要落後SVM核化後的版本將近2000s 。支援向量機在以前許多神經網路模型不能解決的任務中取得了良好的效果。此外,支援向量機能夠利用所有的先驗知識做凸優化選擇,產生準確的理論和核模型。因此,它可以對不同的學科產生大的推動,產生非常高效的理論和實踐改善。

支撐向量機 , Boosting,最大熵方法(比如logistic regression, LR)等。這些模型的結構基本上可以看成帶有一層隱層節點(如SVM, Boosting),或沒有隱層節點(如LR)。這些模型在無論是理論分析還是應用都獲得了巨大的成功。

另一個整合決策樹模型由佈雷曼博士在2001年提出,它是由一個隨機子集的例項組成,並且每個節點都是從一系列隨機子集中選擇。由於它的這個性質,被稱為隨機森林(RF),隨機森林也在理論和經驗上證明了對過擬合的抵抗性。

甚至連AdaBoost演算法在資料過擬合和離群例項中都表現出了弱點,而隨機森林是針對這些警告更穩健的模型。隨機森林在許多不同的任務,像DataCastle、Kaggle等比賽等都表現出了成功的一面。



大放光芒的蓬勃發展時期

21世紀初至今

在機器學習發展分為兩個部分,淺層學習(Shallow Learning)和深度學習(Deep Learning)。淺層學習起源上世紀20年代人工神經網路的反向傳播演算法(Back-propagation)的發明,使得基於統計的機器學習演算法大行其道,雖然這時候的人工神經網路演算法也被稱為多層感知機(Multiple layer Perception),但由於多層網路訓練困難,通常都是隻有一層隱含層的淺層模型。

神經網路研究領域領軍者Hinton在2006年提出了神經網路Deep Learning演算法,使神經網路的能力大大提高,向支援向量機發出挑戰。 2006年,機器學習領域的泰斗Hinton和他的學生Salakhutdinov在頂尖學術刊物《Scince》上發表了一篇文章,開啟了深度學習在學術界和工業界的浪潮。

這篇文章有兩個主要的訊息:1)很多隱層的人工神經網路具有優異的特徵學習能力,學習得到的特徵對資料有更本質的刻劃,從而有利於視覺化或分類;2)深度神經網路在訓練上的難度,可以通過“逐層初始化”( layer-wise pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監督學習實現的。

Hinton的學生Yann LeCun的LeNets深度學習網路可以被廣泛應用在全球的ATM機和銀行之中。同時,Yann LeCun和吳恩達等認為卷積神經網路允許人工神經網路能夠快速訓練,因為其所佔用的記憶體非常小,無須在影象上的每一個位置上都單獨儲存濾鏡,因此非常適合構建可擴充套件的深度網路,卷積神經網路因此非常適合識別模型。

2015年,為紀念人工智慧概念提出60週年,LeCun、Bengio和Hinton推出了深度學習的聯合綜述。

深度學習可以讓那些擁有多個處理層的計算模型來學習具有多層次抽象的資料的表示。這些方法在許多方面都帶來了顯著的改善,包括最先進的語音識別、視覺物件識別、物件檢測和許多其它領域,例如藥物發現和基因組學等。深度學習能夠發現大資料中的複雜結構。它是利用BP演算法來完成這個發現過程的。BP演算法能夠指導機器如何從前一層獲取誤差而改變本層的內部引數,這些內部引數可以用於計算表示。深度卷積網路在處理影象、視訊、語音和音訊方面帶來了突破,而遞迴網路在處理序列資料,比如文字和語音方面表現出了閃亮的一面。

當前統計學習領域最熱門方法主要有deep learning和SVM(supportvector machine),它們是統計學習的代表方法。可以認為神經網路與支援向量機都源自於感知機。

神經網路與支援向量機一直處於“競爭”關係。SVM應用核函式的展開定理,無需知道非線性對映的顯式表示式;由於是在高維特徵空間中建立線性學習機,所以與線性模型相比,不但幾乎不增加計算的複雜性,而且在某種程度上避免了“維數災難”。而早先的神經網路演算法比較容易過訓練,大量的經驗引數需要設定;訓練速度比較慢,在層次比較少(小於等於3)的情況下效果並不比其它方法更優。

神經網路模型貌似能夠實現更加艱難的任務,如目標識別、語音識別、自然語言處理等。但是,應該注意的是,這絕對不意味著其他機器學習方法的終結。儘管深度學習的成功案例迅速增長,但是對這些模型的訓練成本是相當高的,調整外部引數也是很麻煩。同時,SVM的簡單性促使其仍然最為廣泛使用的機器學習方式。


人工智慧機器學習是誕生於20世紀中葉的一門年輕的學科,它對人類的生產、生活方式產生了重大的影響,也引發了激烈的哲學爭論。但總的來說,機器學習的發展與其他一般事物的發展並無太大區別,同樣可以用哲學的發展的眼光來看待。

機器學習的發展並不是一帆風順的,也經歷了螺旋式上升的過程,成就與坎坷並存。其中大量的研究學者的成果才有了今天人工智慧的空前繁榮,是量變到質變的過程,也是內因和外因的共同結果。

回望過去,我們都會被這一段波瀾壯闊的歷史所折服吧。


相關文章