1. 程式人生 > >深度 | IBM長文解讀人工智慧、機器學習和認知計算

深度 | IBM長文解讀人工智慧、機器學習和認知計算

人工智慧的發展曾經經歷過幾次起起伏伏,近來在深度學習技術的推動下又迎來了一波新的前所未有的高潮。近日,IBM 官網發表了一篇概述文章,對人工智慧技術的發展過程進行了簡單梳理,同時還圖文並茂地介紹了感知器、聚類演算法、基於規則的系統、機器學習、深度學習、神經網路等技術的概念和原理。

 

人類對如何創造智慧機器的思考從來沒有中斷過。期間,人工智慧的發展起起伏伏,有成功,也有失敗,以及其中暗藏的潛力。今天,有太多的新聞報道是關於機器學習演算法的應用問題,從癌症檢查預測到影象理解、自然語言處理,人工智慧正在賦能並改變著這個世界。

 

現代人工智慧的歷史具備成為一部偉大戲劇的所有元素。在最開始的 1950 年代,人工智慧的發展緊緊圍繞著思考機器和焦點人物比如艾倫·圖靈、馮·諾伊曼,迎來了其第一次春天。經過數十年的繁榮與衰敗,以及難以置信的高期望,人工智慧及其先驅們再次攜手來到一個新境界。現在,人工智慧正展現著其真正的潛力,深度學習、認知計算等新技術不斷湧現,且不乏應用指向。

 

本文探討了人工智慧及其子領域的一些重要方面。下面就先從人工智慧發展的時間線開始,並逐個剖析其中的所有元素。

 

 

現代人工智慧的時間線

 

1950 年代初期,人工智慧聚焦在所謂的強人工智慧,希望機器可以像人一樣完成任何智力任務。強人工智慧的發展止步不前,導致了弱人工智慧的出現,即把人工智慧技術應用於更窄領域的問題。1980 年代之前,人工智慧的研究一直被這兩種正規化分割著,兩營相對。但是,1980 年左右,機器學習開始成為主流,它的目的是讓計算機具備學習和構建模型的能力,從而它們可在特定領域做出預測等行為。很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習扣群:805127855,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系
 

 

圖 1:現代人工智慧發展的時間線

 

在人工智慧和機器學習研究的基礎之上,深度學習在 2000 年左右應運而生。電腦科學家在多層神經網路之中使用了新的拓撲學和學習方法。最終,神經網路的進化成功解決了多個領域的棘手問題。

 

在過去的十年中,認知計算(Cognitive computing)也出現了,其目標是打造可以學習並與人類自然互動的系統。通過成功地擊敗 Jeopardy 遊戲的世界級選手,IBM Watson 證明了認知計算的價值。

 

在本文中,我將逐一探索上述的所有領域,並對一些關鍵演算法作出解釋。

基礎性人工智慧

 

1950 年之前的研究提出了大腦是由電脈衝網路組成的想法,正是脈衝之間的互動產生了人類思想與意識。艾倫·圖靈表明一切計算皆是數字,那麼,打造一臺能夠模擬人腦的機器也就並非遙不可及。

 

上文說過,早期的研究很多是強人工智慧,但是也提出了一些基本概念,被機器學習和深度學習沿用至今。

 

圖 2:1950 - 1980 年間人工智慧方法的時間線

 

 

人工智慧搜尋引擎

 

人工智慧中的很多問題可以通過強力搜尋(brute-force search)得到解決。然而,考慮到中等問題的搜尋空間,基本搜尋很快就受影響。人工智慧搜尋的最早期例子之一是跳棋程式的開發。亞瑟·塞繆爾(Arthur Samuel)在 IBM 701 電子資料處理機器上打造了第一款跳棋程式,實現了對搜尋樹(alpha-beta 剪枝)的優化;這個程式也記錄並獎勵具體行動,允許應用學習每一個玩過的遊戲(這是首個自我學習的程式)。為了提升程式的學習率,塞繆爾將其程式設計為自我遊戲,以提升其遊戲和學習的能力。

 

儘管你可以成功地把搜尋應用到很多簡單問題上,但是當選擇的數量增加時,這一方法很快就會失效。以簡單的一字棋遊戲為例,遊戲一開始,有 9 步可能的走棋,每 1 個走棋有 8 個可能的相反走棋,依次類推。一字棋的完整走棋樹包含 362,880 個節點。如果你繼續將這一想法擴充套件到國際象棋或者圍棋,很快你就會發展搜尋的劣勢。

 

 

感知器

 

感知器是單層神經網路的一個早期監督學習演算法。給定一個輸入特徵向量,感知器可對輸入進行具體分類。通過使用訓練集,網路的權重和偏差可為線性分類而更新。感知器的首次實現是 IBM 704,接著在自定義硬體上用於影象識別。

 

圖 3:感知器與線性分類

 

作為一個線性分類器,感知器有能力解決線性分離問題。感知器侷限性的典型例項是它無法學習專屬的 OR (XOR) 函式。多層感知器解決了這一問題,併為更復雜的演算法、網路拓撲學、深度學習奠定了基礎。

 

 

聚類演算法

 

使用感知器的方法是有監督的。使用者提供資料來訓練網路,然後在新資料上對該網路進行測試。聚類演算法則是一種無監督學習(unsupervised learning)方法。在這種模型中,演算法會根據資料的一個或多個屬性將一組特徵向量組織成聚類。

 

圖 4:在一個二維特徵空間中的聚類

 

你可以使用少量程式碼就能實現的最簡單的聚類演算法是 k-均值(k-means)。其中,k 表示你為樣本分配的聚類的數量。你可以使用一個隨機特徵向量來對一個聚類進行初始化,然後將其它樣本新增到其最近鄰的聚類(假定每個樣本都能表示一個特徵向量,並且可以使用 Euclidean distance 來確定「距離」)。隨著你往一個聚類新增的樣本越來越多,其形心(centroid,即聚類的中心)就會重新計算。然後該演算法會重新檢查一次樣本,以確保它們都在最近鄰的聚類中,最後直到沒有樣本需要改變所屬聚類。

 

儘管 k-均值聚類相對有效,但你必須事先確定 k 的大小。根據資料的不同,其它方法可能會更加有效,比如分層聚類(hierarchical clustering)或基於分佈的聚類(distribution-based clustering)。

 

 

決策樹

 

決策樹和聚類很相近。決策樹是一種關於觀察(observation)的預測模型,可以得到一些結論。結論在決策樹上被表示成樹葉,而節點則是觀察分叉的決策點。決策樹來自決策樹學習演算法,其中資料集會根據屬性值測試(attribute value tests)而被分成不同的子集,這個分割過程被稱為遞迴分割槽(recursive partitioning)。

 

考慮下圖中的示例。在這個資料集中,我可以基於三個因素觀察到某人是否有生產力。使用一個決策樹學習演算法,我可以通過一個指標來識別屬性(其中一個例子是資訊增益)。在這個例子中,心情(mood)是生產力的主要影響因素,所以我根據 Good Mood 一項是 Yes 或 No 而對這個資料集進行了分割。但是,在 Yes 這邊,還需要我根據其它兩個屬性再次對該資料集進行切分。表中不同的顏色對應右側中不同顏色的葉節點。

 

圖 5:一個簡單的資料集及其得到的決策樹

 

決策樹的一個重要性質在於它們的內在的組織能力,這能讓你輕鬆地(圖形化地)解釋你分類一個項的方式。流行的決策樹學習演算法包括 C4.5 以及分類與迴歸樹(Classification and Regression Tree)。

 

 

基於規則的系統

 

最早的基於規則和推理的系統是 Dendral,於 1965 年被開發出來,但直到 1970 年代,所謂的專家系統(expert systems)才開始大行其道。基於規則的系統會同時存有所需的知識的規則,並會使用一個推理系統(reasoning system)來得出結論。

 

基於規則的系統通常由一個規則集合、一個知識庫、一個推理引擎(使用前向或反向規則鏈)和一個使用者介面組成。下圖中,我使用了知識「蘇格拉底是人」、規則「如果是人,就會死」以及一個互動「誰會死?」

 

圖 6:基於規則的系統

 

基於規則的系統已經在語音識別、規劃和控制以及疾病識別等領域得到了應用。上世紀 90 年代人們開發的一個監控和診斷大壩穩定性的系統 Kaleidos 至今仍在使用。

 

 

機器學習

 

機器學習是人工智慧和電腦科學的一個子領域,也有統計學和數學優化方面的根基。機器學習涵蓋了有監督學習和無監督學習領域的技術,可用於預測、分析和資料探勘。機器學習不限於深度學習這一種。但在這一節,我會介紹幾種使得深度學習變得如此高效的演算法。

 

圖 7:機器學習方法的時間線

 

 

反向傳播

 

神經網路的強大力量源於其多層的結構。單層感知器的訓練是很直接的,但得到的網路並不強大。那問題就來了:我們如何訓練多層網路呢?這就是反向傳播的用武之地。

 

反向傳播是一種用於訓練多層神經網路的演算法。它的工作過程分為兩個階段。第一階段是將輸入傳播通過整個神經網路直到最後一層(稱為前饋)。第二階段,該演算法會計算一個誤差,然後從最後一層到第一層反向傳播該誤差(調整權重)。

 

圖 8:反向傳播示意圖

 

在訓練過程中,該網路的中間層會自己進行組織,將輸入空間的部分對映到輸出空間。反向傳播,使用監督學習,可以識別出輸入到輸出對映的誤差,然後可以據此調整權重(使用一個學習率)來矯正這個誤差。反向傳播現在仍然是神經網路學習的一個重要方面。隨著計算資源越來越快、越來越便宜,它還將繼續在更大和更密集的網路中得到應用。

 

 

卷積神經網路

 

卷積神經網路(CNN)是受動物視覺皮層啟發的多層神經網路。這種架構在包括影象處理的很多應用中都有用。第一個 CNN 是由 Yann LeCun 建立的,當時 CNN 架構主要用於手寫字元識別任務,例如讀取郵政編碼。

LeNet CNN 由好幾層能夠分別實現特徵提取和分類的神經網路組成。影象被分為多個可以被接受的區域,這些子區域進入到一個能夠從輸入影象提取特徵的卷積層。下一步就是池化,這個過程降低了卷積層提取到的特徵的維度(通過下采樣的方法),同時保留了最重要的資訊(通常通過最大池化的方法)。然後這個演算法又執行另一次卷積和池化,池化之後便進入一個全連線的多層感知器。卷積神經網路的最終輸出是一組能夠識別影象特徵的節點(在這個例子中,每個被識別的數字都是一個節點)。使用者可以通過反向傳播的方法來訓練網路。

 

圖 9.LeNet 卷積神經網路架構

 

對深層處理、卷積、池化以及全連線分類層的使用打開了神經網路的各種新型應用的大門。除了影象處理之外,卷積神經網路已經被成功地應用在了視訊識別以及自然語言處理等多種任務中。卷積神經網路也已經在 GPU 上被有效地實現,這極大地提升了卷積神經網路的效能。

 

 

長短期記憶(LSTM)

 

記得前面反向傳播中的討論嗎?網路是前饋式的訓練的。在這種架構中,我們將輸入送到網路並且通過隱藏層將它們向前傳播到輸出層。但是,還存在其他的拓撲結構。我在這裡要研究的一個架構允許節點之間形成直接的迴路。這些神經網路被稱為迴圈神經網路(RNN),它們可以向前面的層或者同一層的後續節點饋送內容。這一特性使得這些網路對時序資料而言是理想化的。

 

在 1997 年,一種叫做長短期記憶(LSTM)的特殊的迴圈網路被髮明瞭。LSTM 包含網路中能夠長時間或者短時間記憶數值的記憶單元。

 

圖 10. 長短期記憶網路和記憶單元

 

記憶單元包含了能夠控制資訊流入或者流出該單元的一些門。輸入門(input gate)控制什麼時候新的資訊可以流入記憶單元。遺忘門(forget gate)控制一段資訊在記憶單元中存留的時間。最後,輸出門(output gate)控制輸出何時使用記憶單元中包含的資訊。記憶單元還包括控制每一個門的權重。訓練演算法(通常是通過時間的反向傳播(backpropagation-through-time),反向傳播演算法的一種變體)基於所得到的誤差來優化這些權重。

LSTM 已經被應用在語音識別、手寫識別、語音合成、影象描述等各種任務中。下面我還會談到 LSTM。

 

 

深度學習

 

深度學習是一組相對新穎的方法集合,它們從根本上改變了機器學習。深度學習本身不是一種演算法,但是它是一系列可以用無監督學習實現深度網路的演算法。這些網路是非常深層的,所以需要新的計算方法來構建它們,例如 GPU,除此之外還有計算機叢集。

 

本文目前已經介紹了兩種深度學習的演算法:卷積神經網路和長短期記憶網路。這些演算法已經被結合起來實現了一些令人驚訝的智慧任務。如下圖所示,卷積神經網路和長短期記憶已經被用來識別並用自然語言描述圖片或者視訊中的物體。

 

圖 11. 結合卷積神經網路和長短期記憶來進行影象描述

 

深度學習演算法也已經被用在了人臉識別中,也能夠以 96% 的準確率來識別結核病,還被用在自動駕駛和其他複雜的問題中。

 

然而,儘管運用深度學習演算法有著很多結果,但是仍然存在問題需要我們去解決。一個最近的將深度學習用於面板癌檢測的應用發現,這個演算法比經過認證的面板科醫生具有更高的準確率。但是,醫生可以列舉出導致其診斷結果的因素,卻沒有辦法知道深度學習程式在分類的時候所用的因素。這被稱為深度學習的黑箱問題。

 

另一個被稱為 Deep Patient 的應用,在提供病人的病例時能夠成功地預測疾病。該應用被證明在疾病預測方面比醫生還做得好——即使是眾所周知的難以預測的精神分裂症。所以,即便模型效果良好,也沒人能夠深入到這些大型神經網路去找到原因。

 

 

認知計算

 

人工智慧和機器學習充滿了生物啟示的案例。儘管早期的人工智慧專注於建立模仿人腦的機器這一巨集偉目標,而現在,是認知計算正在朝著這個目標邁進。

 

認知計算建立在神經網路和深度學習之上,運用認知科學中的知識來構建能夠模擬人類思維過程的系統。然而,認知計算覆蓋了好多學科,例如機器學習、自然語言處理、視覺以及人機互動,而不僅僅是聚焦於某個單獨的技術。

 

認知學習的一個例子就是 IBM 的 Waston,它在 Jeopardy 上展示了當時最先進的問答互動。IBM 已經將其擴充套件在了一系列的 web 服務上了。這些服務提供了用於一些列應用的程式設計介面來構建強大的虛擬代理,這些介面有:視覺識別、語音文字轉換(語音識別)、文字語音轉換(語音合成)、語言理解和翻譯、以及對話引擎。

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習扣群:805127855,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系
 

 

繼續前進

 

本文僅僅涵蓋了關於人工智慧歷史以及最新的神經網路和深度學習方法的一小部分。儘管人工智慧和機器學習經歷了很多起起伏伏,但是像深度學習和認知計算這樣的新方法已經明顯地提升了這些學科的水平。雖然可能還無法實現一個具有意識的機器,但是今天確實有著能夠改善人類生活的人工智慧系統。