人工智慧/機器學習/深度學習 — 它們到底差在哪?
人工智慧 (Artificial Intelligence, AI) 已經離不開我們的生活。如果你對 AI 有點興趣,自己可能還會看到「機器學習 (Machine Learning)」、「深度學習 (Deep Learning)」這兩個詞,而且不知道這它們有什麼區別。如果你是大學生在選課,甚至可能沒有一門叫做 AI 或是深度學習的課可以修。又或者你可能感覺,這三個名詞就是同一件事?
如果你曾經對這個問題有疑問,你可能會查到一些深入淺出的資料,也看到下面這張圖;但還是一頭霧水,覺得你到底看了三小?
這篇文章我試著用幾個故事與案例,來試著說明這三者之間的互相關係,並明確的解釋什麼是人工智慧?什麼是機器學習?什麼是深度學習?
什麼是 AI?
你可能有聽過人工智慧包含「弱人工智慧」、「強人工智慧」、「通用人工智慧」這些定義,但是這些先放一邊。我看過對 AI 最廣泛的定義是類似這樣的:
可以自動化來解決人類問題的電腦程式都可以被稱為 AI
AI 這一詞最早被確立出來是在 1956 年的達特茅斯會議,那時電腦程式都還是用打孔帶寫的,電腦比衣櫃還大好幾倍。當年的 AI 科學家相信能夠在幾十年內造出人造的大腦,並且像人類一樣思考、解決問題。
雖然至今仍沒有造出真正的人造大腦,但在 20 世紀的確是誕生了很多能夠像人一樣解決問題的機器。例如 1967 年,英國發明了第一個 ATM (Automated Teller Machine, 自動櫃員機),可以像銀行櫃員一樣解決客戶的基本問題。
因此,AI 從一開始誕生的目的就是為了代替人類工作、解決人類的問題。這也是為什麼我傾向用這個定義來解釋 AI,我甚至認為能夠取代人力的電腦程式都可以稱之為 AI,包括自動點菜系統。但是需要人類高度操作的程式,例如 Word、PowerPoint,就不能稱為 AI。
Deep Blue 深藍:首次戰勝人類的 AI
1985 年,IBM 的西洋棋 AI —— Deep Blue 打敗了人類冠軍,成為世界上第一個戰勝人類的 AI。
Deep Blue 的演算法包含 2 種:暴力法 (Brute Force)、啟發式演算法 (Heuristic Algorithm)。暴力法就是用機器的速度優勢,把所有可能的棋路都試一遍。啟發式演算法就是經驗法則,例如要以棋換棋的時候,大多數時候拿我方小兵換對方皇后是合理的。Deep Blue 主要是依賴暴力法,至於計算量不夠跑完的部分則會用啟發式演算法來補上。
這裡 Deep Blue 被稱為 AI 是無庸置疑的,因為他能夠自動化解決西洋棋的問題。但是他卻不能被稱為機器學習,也不能稱為深度學習(雖然他的名字有個 deep)。原因很簡單:Deep Blue 沒有在「學習」。
問題來了,機器怎麼學習?
機器學習?機器怎麼學習?
機器學習這一名詞最早在 1959 年被提出,比 AI 晚了 3年,是 AI 裡面的其中一塊領域。機器學習是 AI 的其中一種方法。機器學習程式一定是 AI,但 AI 不一定是機器學習。
機器學習有一個特性:需要數據。簡單來說,如果是需要數據才能完成的 AI,就可以被稱為是機器學習;反過來,不需要數據就能完成的 AI 就不屬於機器學習,例如 Deep Blue。
機器學習有很多應用場景,例如:天氣預報、股價預測、推薦系統。在之前的文章中,我曾經介紹過推薦系統怎麼推薦對的產品給對的使用者。這些方法都需要用到歷史數據,沒有數據的話就不能成立。
機器學習中,「學習」這個詞可說是精準掌握了數據的重要性。回想你一生的所有學習過程,都是仰賴經驗——經過摔倒才能學會走路、需要看過才能認識三角形、需要扔過幾次球才能學會投籃。對機器而言,數據就是經驗,而機器學習就是機器透過數據來學習的一個過程。
垃圾郵件過濾:機器學習的應用案例
1996 年,第一個垃圾郵件過濾系統誕生。這個郵件過濾是基於貝氏分類器 (Bayes Classifier) 實作的。
在郵件過濾的例子上來說明貝氏分類器的原理很簡單:在垃圾郵件與正常郵件中間畫一條分割線,看新來的郵件落在線的哪邊?靠近垃圾郵件的那邊就是垃圾郵件,反之就是正常郵件。
舉個例子,如果我們整理一下郵箱裡面的所有把歷史,把郵件中出現單字「傳給/轉給/分享」的次數設為 X 軸,出現「朋友/財/運」的次數設為 Y 軸。再把垃圾/正常郵件分別用黑點/白點表示,我們可能會得到以下的圖:
圖中的分割線就是貝氏分類器的分割線。只要統計新郵件裡面出現的單詞次數,就可以知道這個郵件是否是垃圾郵件。試著數數下面這個貼文中「傳給/轉給/分享」、「朋友/財/運」的次數,看看會落在上面座標圖的哪邊?
深度學習?到底是哪裡深?
現在我們已經知道 AI 與機器學習之間有什麼差別了,最後的問題就是深度學習了。在探討深度學習之前,我們先來看幾個深度學習的案例。
AlphaGo 攻克圍棋:深度學習的標竿性勝利
2016 年 3 月,Google 基於深度學習的圍棋 AI —— AlphaGo 擊敗了人類世界冠軍,為深度學習做了一次響亮的宣傳。這與 Deep Blue 攻克西洋棋是完全不同的象徵意義,因為西洋棋與圍棋的難度差距遠大於天壤之別。
前面說明過 Deep Blue 的原理,其之所以能戰勝西洋棋冠軍靠的是超越人類的電腦計算能力;但這種做法在圍棋就不適用了。西洋棋的棋盤大小是 8x8,圍棋的棋盤大小是 81x81,光是棋盤就大了 100 倍。據說圍棋的棋步組合比宇宙中的原子數量還要多,不是暴力法可以解決的範疇。
根據 AlphaGo 的 Nature 論文《Mastering the game of Go with deep neural networks and tree search》,AlphaGo 的核心算法就是深度學習。AlphaGo 利用大量的棋譜學習基本的圍棋策略,然後再讓 2 個 AlphaGo 彼此對戰,對戰的結果可以再變成數據回頭訓練 AlphaGo。
經過上面的說明,我們知道 AlphaGo 是深度學習的 AI。並且它其中使用到了「數據」,所以也是屬於機器學習的其中一種。所以我們可以推測,深度學習是一種「屌到爆」的機器學習演算法,也是一種 AI。
那麼,深度學習到底是什麼?
手寫數字辨識:揭開深度學習的面紗
早在 1989 年,Yann LeCun 的深度學習演算法 LeNet 在手寫數字資料集 MNIST 上就取得了很好的成果。這是深度學習最簡單的一個實作之一,但是它仍然不像前面的垃圾郵件過濾一樣這麼簡單易懂。
LeNet 是一種卷積神經網路 (Convolutional Neural Network),是神經網路 (Neural Network) 的其中一種。說起神經網路,大家應該會想起類似下面這張圖,知道他是一種酷似生物神經系統的演算法,但具體是什麼仍一無所知。
但是,在圖片辨識的例子裡面,神經網路能夠被更好地理解。下面是 Youtube 的一個神經網路辨識手寫數字的 3D 模擬動畫,你可以看到原始的數字是怎麼從像素,一層一層地傳遞到網路的後段,變成最後的預測標籤。
從上面的 3D 模擬動畫中,展示了不同深度學習演算法的運算過程;而且,每一種演算法都是由一層層的結構堆疊起來的。這個朝深度堆疊的演算法結構,正是深度學習被稱為「深度」學習的緣由。
所以深度學習是什麼?
維基百科對深度學習的定義如下:
Deep learning is a class of machine learning algorithms that uses multiple layers to progressively extract higher-level features from the raw input.
在上面的 3D 動畫中,看到了 Raw Input(圖片)、Multiple Layers(分層架構),也解釋過了 Machine Learning。我猜大家現在對維基百科的這段定義應該能有一個比較深刻的理解。
早在 1986 年,深度學習這個名詞就已經誕生,但一直沒有受到關注。深度學習是一種用多層結構來提取特徵的機器學習方法;而「多層結構」指的就是多層的神經網路,也是深度學習的「深度」所在。
在早期,這些神經網路基於電腦設計與數值工程的關係,沒有辦法訓練堆疊多層的神經網路,因此限制了深度學習的發展。近代由於 Yunn LeCun 等人的突破性成果,使得堆疊多層神經網路變得可能,也讓深度學習變成了機器學習的最前沿領域。
深度學習也創造了很多成功的商業化案例,也催生了各種獨角獸公司。現在多數人認為,最終能實現「像人一樣思考的 AI」——也就是通用人工智慧——的方法必定是深度學習。
最後總結一下:
人工智慧 Artificial Intelligence
包含了機器學習與深度學習,最終目的是創造能夠像人一樣思考的程式;但廣義的來說,能夠解決人類任務的電腦程式都可以算是人工智慧。
機器學習 Machine Learning
屬於人工智慧的其中一個領域,需要借助數據的輸入來學習如何完成任務。不需要數據就能完成任務的 AI 就不能稱為是機器學習。
深度學習 Deep Learning
屬於人工智慧,同時也是機器學習的其中一個子領域。深度學習是目前效果最好的機器學習方法,目前市面上的尖端 AI 產品大多是基於深度學習的產物,也被認為是最可能實現通用人工智慧的方法。
再回來看一下這張圖,是不是更清楚了呢?