search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

透過人工智慧簡史,看人類如何讓機器會思考

中文科訊網消息:為了保護克里特島防禦海盜和入侵者,人們創造了巨型青銅戰士塔羅斯(Talos)。他每天環繞全島三圈,勇武的造型嚇得海盜們只能另覓他處。但在勇猛外表下,塔羅斯並沒有所謂的「勇士之心」,他只是個機器人。就像稻草人一樣,生來只是為了對外表現出這種驍勇形象。然而信徒們認為,匠人已經為塔羅斯這樣的作品灌注了真正的心智、喜怒哀樂、思想,以及智慧。當然這不是真的。塔羅斯也僅僅是夢想的一種外在表現,而這樣的夢想幾乎貫穿了人類的整個歷史:我們多想創造出如同我們自己一樣栩栩如生的智慧生命啊。

科學家、數學家、哲學家,甚至作家,對於創造所謂「會思考的機器」的方法已經思考了很久。同時,又有什麼比人類自身更像是「會思考的機器」呢?

自從創造出諸如塔羅斯這樣會動的機器后,我們身邊的匠人們對於簡單的「擬人」智慧就不再感興趣了,他們開始追求真正的智慧。這些「沒頭腦」的機器人僅讓他們管窺到智慧之表,卻並未揭示智慧之本。為此他們必須深入領略智慧最明確的體現:人類的心靈。

正如前人所說:「 如欲開悟,必先自省(For enlightenment, look within) 」。

人們很快意識到,人類與其他不那麼智慧的生物間最大的差別,並不在於腦容量或在地球上生存時間的長短,真相其實很簡單,僅僅在於我們卓越的推理能力。因此首個可編程計算機的構想產生后,我們會理所當然地認為,這樣的計算機將能模擬任何形式的推理過程,至少能夠像人一樣進行推理。事實上,「計算機(Computer)」這個詞的首次使用可以上溯至1640年代的英格蘭,當時這個詞被用於代表「會進行計算的人」。

最開始,這個過程的進展非常緩慢。1940年代,當時最先進的哈佛馬克一號(Harvard Mark I)是一個重達10,000磅,由數千個機械組件驅動的「怪獸」,為了讓這個機器動起來,內部共使用了長達500英里的線纜。儘管有如此精心巧妙的設計,這個機器每秒鐘只能執行三次加法運算。但隨著 摩爾定律 的影響,計算機很快在形式推理各種任務的執行方面獲得了超出人類能力的表現。研究人員對所取得的進展感到驚喜,並斷言只要按照這樣的速度繼續發展,首個真正完善的「會思考的機器」變為現實將僅僅是時間問題。1960年代,20世紀知名學者司馬賀(Herbert Simon)甚至宣稱:「20年內,機器將能從事人能做到的一切工作」。很可惜,雖然足夠驚人,但這個預言沒能實現。

實際上計算機確實很擅長解決能夠通過一系列邏輯和數學規則定義的問題,但更大的挑戰在於讓計算機解決無法通過這種以「聲明」方式歸納提煉的問題,例如識別圖片中的人臉,或者翻譯人的語言。

整個世界始終混亂不堪,機器下象棋的水平也許遠勝於人類,甚至可能贏得象棋錦標賽冠軍,但放眼現實世界,機器的作用其實和橡皮小黃鴨差不多(除非你從事的本身就是 小黃鴨調試法 ,那就要另說了)。

意識到這一點后,很多AI領域的研究者開始拒絕承認符號化AI(Symbolic AI,一種描述形式推理方法的涵蓋性術語,至今依然在AI研究領域處於支配地位)是創建人工智慧機器的最佳方式這一原則。符號化AI的基石,例如Situation Calculus(情景演算)和First-Order Logic(一階邏輯)被證明因為過於形式化並且過於嚴格而無法容納現實世界中的所有不確定性。我們需要新的方法。

一些研究人員決定通過更為巧妙的「模糊邏輯(Fuzzy Logic)」尋求答案,在這種邏輯範式中,真實的值不是簡單的0和1,而可以是介於這兩個數之間的任何值。還有其他研究人員決定專註於別的新興領域,例如「機器學習」。

機器學習彌補了形式邏輯的不足,可順利解決真實世界的不確定性問題。這種方式並不需要將有關現實世界的所有知識「硬編碼」至一系列嚴格的邏輯公式中,而是可以教計算機自行推導出所需知識。也就是說,我們並不需要告訴計算機「這是一把椅子」或「這是一張桌子」,我們可以教計算機學習如何將椅子和桌子的概念區分開來。機器學習領域的研究人員會謹慎地避免使用確定性概念描述整個世界,因為這種嚴格的描述特性與現實世界的本質是截然相悖的。

於是他們決定使用統計學和概率論語言來描述整個世界。

機器學習演算法並不需要了解真理和謬誤,只需要了解真實和虛假的程度,也就是概率。

這種使用概率,以數值方式了解現實世界中所存在不確定性的想法,使得貝氏統計學(Bayesian statistics)成為機器學習的基石。「 頻率學派(Frequentists) 」對此有不同看法,不過這個分歧還是另行撰文介紹吧。

很快,諸如 邏輯回歸 和 樸素貝葉斯 等簡單的機器學習演算法已經可以教計算機區分合法郵件和垃圾郵件,並能根據面積預測房屋價格。邏輯回歸是一種相當簡單的演算法:給出一個輸入向量x,模型會直接將這個x分類至 {1, 2, …, k} 多個類別之一。

然而這就會導致一個問題。

這種簡單演算法的效果嚴重依賴所使用的數據表達方法(Goodfellow et al. 2017)。

為了更形象地理解這個問題,可以試著假設構建一種使用邏輯回歸判斷是否建議進行剖腹產的機器學習系統。系統無法直接檢查產婦,因此需要通過醫生提供的信息來判斷。這種信息可能包含是否存在子宮疤痕、懷孕月數、產婦年齡等。每個信息可以算作一個 特徵 ,通過將不同特徵結合起來,AI系統就可以全面了解產婦的 表徵 。

通過提供訓練數據,邏輯回歸演算法可以學習產婦的不同特徵與各種結果之間的關係。例如,演算法可以從訓練數據中發現,隨著產婦年齡的增長,分娩過程中出現「噁心反胃」情況的風險會增加,因此演算法會降低向高齡產婦推薦自然分娩的概率。

雖然邏輯回歸可將表徵與結果對應,但實際上並不能決定哪些特徵可以組成產婦的表徵。

如果直接為邏輯回歸演算法提供患者的MRI掃描結果,而非醫生的正式報告,那麼演算法將無法提供有用的預測(Goodfellow et al. 2017)。

單純就MRI掃描結果中的每個像素來說,幾乎無法幫助我們判斷產婦分娩過程中遇到併發症的可能。

這種足夠好的表徵,與足夠好結果之間的依賴性廣泛存在於計算機科學和我們的日常生活中。例如,我們幾乎可以瞬間在Spotify上找到任何歌曲,因為他們的曲庫很可能就是用智能的數據結構來存儲的,例如三元搜索嘗試(Ternary search tries),而非常見的簡單結構,例如無序數組。另一個例子:學童可以使用阿拉伯數字輕鬆進行數學計算,但如果使用羅馬數字,情況就截然不同了。機器學習也是如此,輸入表徵的選擇將對學習演算法的效果產生巨大影響。

該圖為不同表徵的範例:假設我們需要在散點圖上畫一根線將兩類數據分開。左圖使用笛卡爾坐標系呈現這些數據,此時幾乎無法做到;右圖對同一批數據使用了極坐標系,一條豎線即可解決問題。此圖與David Warde-Farley合作製作。

因此人工智慧領域的很多問題實際上可以通過為輸入數據尋找更適合的表徵這種方式進行簡化。例如,假設我們要設計一套演算法來學習識別Instagram照片中的漢堡。首先要構建一個用來描述所有漢堡的 特徵集 。最初我們可能會用圖片中的原始像素值來描述漢堡,一開始你也許覺得這種做法很合理,但很快會發現根本不是這樣。

單憑原始像素值,很難描述漢堡看起來是什麼樣的。想想你自己在麥當勞點漢堡時的場景吧(如果你還會在他家吃飯的話)。你也許會用不同「特徵」來描述自己想要怎樣的漢堡,例如乳酪、三分熟的牛肉餅、表面撒有芝麻的圓麵包、生菜、紅洋蔥,以及各種醬料。結合這種情況考慮,也許可以用類似的方式構造我們需要的特徵集。我們可以將漢堡描述成一種不同成分的集合,每個成分又可以用各自不同的特徵集來描述。大部分漢堡的成分都可以用其顏色和外形來描述,進而漢堡作為整體也就可以使用不同成分的顏色和外形來描述了。

但如果漢堡不在照片正中央,周圍有其他顏色相近的物體,或者是一間風格迥異的餐廳,他們提供沒有「組裝」在一起的漢堡,此時又該怎麼辦?演算法該如何區分這些顏色或幾何造型?最顯而易見的解決方式無疑是增加更多(可分辨的)特徵,但這也僅僅是權宜之計,很快你將會遇到更多邊緣案例,需要增加更多特徵才能區分類似圖片。輸入的表徵越來越複雜,計算成本增加,同時會讓情況變得更棘手。因此從業者現在不僅需要關注數量,同時也要關注所輸入表徵中,所有特徵的表現能力。對於任何機器學習演算法,尋找完美的特徵集都是一個複雜過程,需要花費大量時間精力,甚至需要大量有經驗的研究人員投入數十年的時間。

確定如何以最佳方式呈現輸入給學習演算法的數據,行話來說實際上是一種「表徵」問題。

1990年代末到2000年代初,機器學習演算法在不完美輸入表徵方面的局限對AI發展產生了巨大阻礙。在設計輸入特徵的表徵時,工程師們沒有任何選擇,只能依賴人類自身的才智以及圍繞問題所在領域的先驗知識(Prior knowledge)克服這些局限。長久以來,這樣的「特徵工程」始終站不住腳,如果某個學習演算法無法從未篩選的原始輸入數據中提取出任何見解,那麼用更具哲學意義的話來說,它就無法理解我們的世界。

面對這些困難,研究人員快速發現了一種應對之道。如果機器學習演算法的目標是學著將表徵與輸出結果進行映射,為何不教它們學習表徵本身。這種方式也叫做 表徵學習 。最著名的例子可能就是 autoencoder ,這是一種神經網路,根據人腦和神經系統進行建模的計算機系統。

Autoencoder實際上是 編碼器(Encoder) 函數和 解碼器(Decoder) 函數的組合,編碼器函數負責將輸入的數據轉換為不同表徵,解碼器函數負責將中間態的表徵重新轉換為原始格式,並在這一過程中儘可能多地保留信息。這樣就可以在編碼器和解碼器之間產生一個分界(Split),輸入的「噪音」圖像可解碼出更有用的表徵。例如,噪音圖像可能是一張Instagram照片,其中有一個漢堡,周圍還有很多顏色近似的物體。解碼器可以消除這些「噪音」,只保留描述漢堡本身所需的圖片特徵。

作者:Chervinskii,自行製作, 依CC BY-SA 4.0方式許可 .

但就算有了autoencoder,問題依然存在。為了消除噪音,autoencoder(以及任何其他表徵學習演算法)必須能精確確定哪些因素對輸入數據的描述是最重要的。我們希望自己的演算法能選擇恰當的因素,使其更好地識別出真正感興趣的圖片(例如包含漢堡的圖片),並排除不感興趣的圖片。在漢堡這個例子中,我們已經明確,如果能更專註於圖片中不同元素的外形和顏色,而非只關注圖片的原始像素值,就可以很好地區分包含和不包含漢堡的圖片。然而永遠都是知易行難。重點在於教演算法如何從不重要的因素中解讀出重要的因素,也就是說,需要教演算法識別所謂的 因素變體(Factors of variation) 。

初看起來,表徵學習似乎沒法解決這個問題,但還是仔細看看吧。

編碼器接受輸入的表徵並通過傳入一個 隱藏層 (中間層),將輸入結果壓縮為略小一點的格式。解碼器的作用截然相反:將輸入內容重新解壓縮為原始格式,並儘可能多地保留信息。兩種情況下,如果隱藏層能夠知道哪些因素是描述輸入內容時最重要的,並儘可能確保這些因素在該層傳遞過程中不會從輸入數據中消除,輸入數據中包含的信息將得到最大程度的保留。

在上圖示例中,編碼器和解碼器分別只包含一個隱藏層:一層用於壓縮,一層用於解壓縮。這種粗粒度的層數意味著演算法在判斷如何以最佳方式對輸入數據進行壓縮和解壓縮,進而保留最大量信息的過程中缺乏足夠靈活性。但如果略微改動一下設計,引入多個隱藏層並按順序堆疊在一起,在選擇重要因素時,演算法就可以更自由地判斷對輸入數據壓縮和解壓縮的最佳方式。

這種在神經網路中使用多個隱藏層的方法就是深度學習。

但事情還沒完,深度學習還可以更進一步。在使用多個隱藏層后,只需構造一個更簡單的層就可以建立複雜的表徵。通過按順序堆疊隱藏層,我們可以在每一層中識別新的因素變體,這樣演算法就可以用更簡單的層表達更複雜的概念。

Zeiler and Fergus (2014)

深度學習有著深遠悠久的歷史。這一領域的中心思想早在1960年代就已通過多層感知器(Multi-layer perceptrons)的形式誕生,後來在1970年代首次出現了更實用的反向傳播演算法,1980年代出現了人工神經網路。儘管歷史悠久,這些技術依然花了數十年才變得實用。這些演算法本身並不差(儘管很多人這樣想),我們只是沒有意識到為了讓他們變得足夠實用需要提供多大量的數據。

由於統計雜訊的影響,小規模數據樣本更有可能獲得極端的結果。然而只要增大數據量,就可以降低雜訊影響讓深度學習模型更精確地確定輸入數據最適合的描述因素。

毫無疑問,21世紀初,深度學習終於一飛衝天,與此同時很多大型科技公司也發現自己正坐在有待開發的數據金礦頂端。(與非網)



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦