1. 程式人生 > >人工智能、機器學習和認知計算入門指南

人工智能、機器學習和認知計算入門指南

不遠 要素 人工 算法 網絡拓撲 界面 分布 target 用戶

幾千年來,人們就已經有了思考如何構建智能機器的想法。從那時開始,人工智能 (AI) 經歷了起起落落,這證明了它的成功以及還未實現的潛能。如今,隨時都能聽到應用機器學習算法來解決新問題的新聞。從癌癥檢測和預測到圖像理解和總結以及自然語言處理,AI 正在增強人們的能力和改變我們的世界。

現代 AI 的歷史包含一部偉大的戲劇應具有的所有要素。上世紀 50 年代,隨著對思維機器及阿蘭·圖靈和約翰·馮·諾依曼等著名人物的關註,AI 開始嶄露頭角。盡管隨後經歷了數十年的繁榮與蕭條,並被寄予了難以實現的厚望,但 AI 和它的先驅們仍然一直在努力前行。如今,AI 展現出了它的真正潛力,專註於應用並提供深度學習和認知計算等技術。

本文將探索 AI 的一些重要方面和它的子領域。我們首先會分析 AI 的時間線,然後深入介紹每種要素。

現代 AI 的時間線

從上世紀 50 年代開始,現代 AI 開始專註於所謂的強 AI,強 AI 指的是能普遍執行人類所能執行的任何智能任務的 AI。強 AI 的進展乏力,最終導致了所謂的弱 AI,或者將 AI 技術應用於更小範圍的問題。直到上世紀 80 年代,AI 研究被拆分為這兩種範式。但在 1980 年左右,機器學習成為了一個突出的研究領域,它的目標是讓計算機能學習並構建模型,以便能夠執行一些活動,比如特定領域中的預測。

點擊查看大圖深度學習於 2000 年左右出現,建立在 AI 和機器學習的研究成果之上。計算機科學家通過新的拓撲結構和學習方法,在許多層中使用神經網絡。神經網絡的這次演變成功解決了各種不同領域的復雜問題。

在過去 10 年中,認知計算興起,它的目標是構建能學習並自然地與人交流的系統。IBM Watson 通過在 Jeopardy 比賽上成功擊敗世界級對手,證明了認知計算的能力。

在本教程中,我將探索每個領域,解釋一些促使認知計算取得成功的重要算法。

基礎 AI

1950 年前的研究中提出了大腦由電脈沖網絡組成的理念,這些脈沖觸發並以某種方式精心組織形成思想和意識。阿蘭·圖靈表明任何計算都能以數字方式實現,那時,距離實現構建一臺能模仿人腦的機器的想法也就不遠了。

許多早期研究都重點關註過這個強 AI 方面,但這一時期也引入了一些基礎概念,如今的所有機器學習和深度學習都是在這些概念基礎上建立起來的。

圖 2. 1980 年前的人工智能方法的時間線

AI 即搜索

AI 中的許多問題都可以通過暴力搜索(比如深度或廣度優先搜索)來解決。但是,考慮到普通問題的搜索空間,基本搜索很快就會招架不住。AI 即搜索的最早示例之一是一個下棋程序的開發。Arthur Samuel 在 IBM 701 Electronic Data Processing Machine 上構建了第一個這樣的程序,對搜索樹執行一種名為 α-β 剪枝技術(alpha-beta pruning)的優化。他的程序還會記錄特定某步棋的回報,允許應用程序學習每一場比賽(使它成為了第一個自主學習的程序)。為了提高程序的學習速度,Samuel 將它設計為能夠自己跟自己下棋,提高了它的下棋和學習能力。

盡管可以成功地應用對許多簡單問題的搜索,但隨著選擇數量的增加,該方法很快就會行不通。以簡單的井字棋遊戲為例。在遊戲開始時,有 9 種可能的棋著。每步棋著會導致 8 種可能的對抗棋著,以此類推。井字棋完整的棋著樹(未進行旋轉優化來刪除重復棋著)有 362,880 個節點。如果您將同樣的思維試驗推廣到象棋或圍棋,很快就會看到搜索的缺點。

感知器

感知器是一種用於單層神經網絡的早期的監督式學習算法。給定一個輸入特征矢量,感知器算法就能學習將輸入劃分到特定類別。通過使用訓練集,可以更新線性分類的網絡的權值和閥值。感知器最初是針對 IBM 704 實現的,隨後被用在定制硬件上,用於圖像識別。

圖 3. 感知器和線性分類

作為線性分類器,感知器能線性地分離問題。感知器的局限性的重要示例是,它無法學習一個異或 (XOR) 函數。多層感知器解決了這一問題,為更復雜的算法、網絡拓撲結構和深度學習鋪平了道路。

集群算法

對於感知器,學習方法是監督式的。用戶提供數據來訓練網絡,然後針對新數據來測試網絡。集群算法采用了一種不同的學習方法,叫做無監督學習。在此模型中,算法基於數據的一個或多個屬性,將一組特征矢量組織到集群中。

可通過少量代碼實現的最簡單的算法之一稱為 k 均值。在此算法中,k 表示您可向其中分配樣本的集群數量。您可以使用一個隨機特征矢量初始化一個集群,然後將其他所有樣本添加到離它們最近的集群(前提是每個樣本表示一個特征矢量,而且使用了一種歐幾裏德距離來標識 “距離”)。隨著您將樣本添加到集群中,它的質心 — 即集群的中心 — 會被重新計算。然後該算法會再次檢查樣本,確保它們存在於最近的集群中,並在沒有樣本改變集群成員關系時停止運行。

盡管 k 均值的效率相對較高,但您必須提前指定 k。根據所用的數據,其他方法可能更高效,比如分層或基於分布的集群方法 。

決策樹

與集群緊密相關的是決策樹。決策樹是一種預測模型,對可得出某個結論的觀察值進行預測。樹上的樹葉代表結論,而節點是觀察值分叉時所在的決策點。決策樹是利用決策樹學習算法來構建的,它們根據屬性值測試將數據集拆分為子集(通過一個稱為遞歸分區的流程)。

考慮下圖中的示例。在這個數據集中,我可以根據 3 個因素來觀察某個人何時的生產力較高。使用決策樹學習算法時,我可以使用一個指標來識別屬性(比如信息增益)。在這個示例中,情緒是生產力的主要因素,所以我依據 “good mood” 是 Yes 還是 No 來拆分數據集。No 分支很簡單:它始終導致生產力低下。但是,Yes 分支需要根據其他兩個屬性來再次拆分數據集。我給數據集塗上顏色,以演示何處的觀察值通向我的葉節點。

點擊查看大圖決策樹的一個有用方面是它們的內在組織,您能輕松且圖形化地解釋您是如何分類一個數據項的。流行的決策樹學習算法包括 C4.5 和分類回歸樹。

基於規則的系統

第一個根據規則和推斷來構建的系統稱為 Dendral,是 1965 年開發出來的,但直到上世紀 70 年代,這些所謂的 “專家系統” 才得到大力發展。基於規則的系統可以存儲知識和規則,並使用一個推理系統來得出結論。

基於規則的系統通常包含一個規則集、一個知識庫、一個推理引擎(使用前向或後向規則鏈),以及一個用戶界面。在下圖中,我使用一段信息(“蘇格拉底是一個凡人”)、一條規則(“凡人終有一死”)和一次關於誰會死的交互。

基於規則的系統已應用於語音識別,規劃和控制,以及疾病識別。上世紀 90 年代開發的一個監視和診斷壩體穩定性的系統 Kaleidos 至今仍在運營。

機器學習

機器學習是 AI 和計算機科學的一個子領域,起源於統計學和數學優化。機器學習涵蓋應用於預測、分析和數據挖掘的監督式和非監督式學習技術。它並不僅限於深度學習,在本節中,我將探討一些實現這種效率奇高的方法的算法。板面的做法和配料

反向傳播算法(Backpropagation)

神經網絡的真正威力在於它們的多層變形。訓練單層感知器很簡單,但得到的網絡不是很強大。那麽問題就變成了如何訓練有多個層的網絡?這時就會用到反向傳播算法。

反向傳播是一種訓練有許多層的神經網絡的算法。它分兩個階段執行。第一階段是通過一個神經網絡將輸入傳播到最後一層(稱為前饋)。在第二階段,算法計算一個錯誤,然後將此錯誤從最後一層反向傳播(調節權值)到第一層。

在訓練期間,網絡的中間層自行進行組織,以便將輸入空間的各部分映射到輸出空間。通過監督式學習,反向傳播識別輸入-輸出映射中的錯誤,然後相應地(以一定的學習速率)調整權值來更正此錯誤。反向傳播一直是神經網絡學習的一個重要方面。隨著計算資源消耗得更快和變得更廉價,反向傳播會繼續被應用於更大更密集的網絡。

卷積神經網絡(Convolutional neural networks)

卷積神經網絡 (CNN) 是受動物視覺皮質啟發的多層神經網絡。該架構在各種應用中都很有用,包括圖像處理。第一個 CNN 是 Yann LeCun 創建的,當時,該架構專註於手寫字符識別任務,比如讀取郵政編碼。

LeNet CNN 架構包含多層,這些層實現了特征提取,然後實現了分類。圖像被分成多個接受區,註入可從輸入圖像中提取特征的卷積層。下一步是池化,它可以(通過下采樣)降低提取特征的維度,同時(通常通過最大池化)保留最重要的信息。然後該算法執行另一個卷積和池化步驟,註入一個完全連通的多層感知器。此網絡的最終輸出層是一組節點,這些節點標識了圖像的特征(在本例中,每個節點對應一個識別出的數字)。用戶可以通過反向傳播訓練該網絡。

深層處理、卷積、池化和一個完全連通的分類層的使用,為神經網絡的各種新應用開啟了一扇門。除了圖像處理之外,CNN 還被成功應用到許多視頻識別和自然語言處理的任務中。CNN 也已在 GPU 中獲得高效實現,顯著提高了它們的性能。

長短期記憶

回想一下,在反向傳播的討論中曾提到過,該網絡是用前饋方式進行訓練的。在這個架構中,用戶將輸入註入網絡中,通過隱藏層將它們前向傳播到輸出層。但是,還有許多其他神經網絡拓撲結構。此處分析的拓撲結構允許在節點之間建立連接,以便形成一個定向循環。這些網絡被稱為遞歸神經網絡,它們能反向饋送到前幾層或它們的層中的後續節點。該屬性使這些網絡成為處理時序數據的理想選擇。

1997 年,人們創建了一種名為長短期記憶 (LSTM) 的特殊回歸網絡。LSTM 由記憶細胞組成,網絡中的這些細胞會短期或長期記住一些值。

記憶細胞包含控制信息如何流進或流出細胞的閘門。輸入門控制新信息何時能流入記憶中。遺忘門控制一段現有信息保留的時長。最後,輸出門控制細胞中包含的信息何時用在來自該細胞的輸出中。記憶細胞還包含控制每個門的權值。訓練算法通常沿時間反向傳播(反向傳播的一種變體),可以根據得到的錯誤來優化這些權值。

LSTM 已被應用於語音識別、手寫體識別、文本到語音合成、圖像字幕和其他各種任務。我很快會再介紹 LSTM。

深度學習

深度學習是一組相對較新的方法,它們正從根本上改變機器學習。深度學習本身不是一種算法,而是一系列通過無監督學習來實現深度網絡的算法。這些網絡非常深,以至於(除了計算節點集群外)需要采用新計算方法(比如 GPU)來構建它們。

本文目前為止探討了兩種深度學習算法:CNNs 和 LSTMs。這些算法的組合已用於實現多種非常智能的任務。如下圖所示,CNN 和 LSTM 已用於識別,以及使用自然語言描述照片或視頻。

點擊查看大圖深度學習算法也應用於面部識別,能以 96% 的準確度識別肺結核,自動駕駛汽車,以及其他許多復雜的問題。

但是,盡管應用深度學習算法取得了這些成果,但是仍有一些亟待我們解決的問題。最近,深度學習在皮膚癌檢測上的應用發現,該算法比獲得職業認證的皮膚科醫生更準確。但是,皮膚科醫生能列舉促使他們得出診斷結果的因素,而深度學習程序無法識別其在分類時使用了哪些因素。這就是所謂的深度學習黑盒問題。

另一種應用稱為 Deep Patient,能根據患者的醫療記錄成功地預測疾病。事實證明,該應用預測疾病的能力比醫生好得多 — 甚至是眾所周知難以預測的精神分裂癥。所以,盡管這些模型很有效,但沒有人能真正弄清楚龐大的神經網絡行之有效的原因。

認知計算

AI 和機器學習都有許多生物靈感方面的示例。早期 AI 專註於構建模仿人腦的機器的宏偉目標,而認知計算也致力於實現此目標。

認知計算是根據神經網絡和深度學習來構建的,正在應用來自認知科學的知識來構建模擬人類思維過程的系統。但是,認知計算沒有專註於單組技術,而是涵蓋多個學科,包括機器學習、自然語言處理、視覺和人機交互。

IBM Watson 就是認知計算的一個示例,在 Jeopardy 上,IBM Watson 證實了它最先進的問答交互能力,但自那時起,IBM 已通過一系列 Web 服務擴展了該能力。這些服務公開的應用編程接口可用於視覺識別、語音到文本和文本到語音轉換功能,語言理解和翻譯,以及對話引擎,以構建強大的虛擬代理。

人工智能、機器學習和認知計算入門指南