<b>本文講的是[譯] 從金屬巨人到深度學習,</b>
<b></b>
AI(人工智能)簡史
塔羅斯是一個青銅巨人戰士,被創造出來守護克裡特島,抵禦海盜和入侵者的攻擊。他每天繞克裡特島三周,他兇狠的外表迫使海盜去别的地方尋找寶藏。但是在他兇狠外表的背後,塔羅斯根本算不上一個戰士。他隻是一個機器人。一個按照戰士的樣子做出來的稻草人。但是我們仍然相信造物主給類似塔羅斯這樣的生物注入了非常真實的思考、情感、想法和智慧。這當然是無稽之談。塔羅斯僅僅是人類曆史長河最近的一個關于智能思想的夢想:創造生物的渴望,創造像我們自己一樣智能生物的夢想。
用作家 Pamela McCorduck 的話來說就是:"一個模仿上帝的古老願望。"
科學家、數學家、哲學家和作家們一直在尋找創造“會思考的機器”的秘訣。比人類本身更好的”會思考的機器“。
從創造出塔羅斯這樣會動的機器開始,人類中的創造者已經不滿足于簡單的模仿,而是開始尋求内在的真實。無意識的機器人讓它們窺見了智能應該是什麼樣子,但是這種創造物并不能揭示智能的實質。是以,他們不得不考慮智能最為明顯的表現:人類的思想。
但是很快我們發現,人類差別與低等生物的主要原因并不是我們腦容量的大小,也不是我們在地球上生存的經驗,而是我們強大的處理各種推理任務的能力。是以當我們構思出第一台可程式設計的計算機時,并沒有什麼好驚訝的,并且這個計算機還可以模拟任何正式的推理過程,至少要和人類一樣,經考證,單詞 "computer" 第一次被使用是在 1940 年代的英格蘭,當時它的意思是”一個會計算的機器“。
事實證明,雖然計算機擅長解決那些被一系列邏輯和數學規則定義的問題,但是更大的挑戰則是讓計算機解決那些不能被抽象成正規的聲明語句的問題。比如識别圖檔中的人臉或者是翻譯人類的語音。
這個認識導緻幾個 AI 研究員否認了符号 AI(曾經一度統治 AI 研究的形式推理方法的一個術語)是創造人造智能機器最好方法的基本原則。符号 AI 的基石像情景推演和謂詞邏輯都被證明太嚴苛以緻于不能捕捉到現實世界中所有的不确定因素。AI 領域需要一個全新的方法。
一些研究員決定使用一個叫做“模糊邏輯”的方法來尋求答案,模糊邏輯是一種真值不僅僅是 0 或者 1 還可以是任何中間值的邏輯範式。另外一些研究員則把所有努力都放在了叫做“機器學習”的新興領域。
機器學習是由于形式推理處理真實世界的不确定性因素的不足而誕生的。它不是将世界上的知識進行一個嚴格的邏輯公式的綁定,而是讓計算機自己去學習知識。不是簡單的告訴它“這是椅子”,"這是桌子",而是教計算機學習椅子和桌子概念的差別 。機器學習研究員們一直避免使用必然的事件來代表世界,因為嚴格的特征條件并不是真實世界的本質。
相反,他們決定用統計和機率來模型化這個世界。
機器學習算法不是使用真和假來判斷,而是使用真假的程度來判斷。換句話說就是 — 機率。
很快,像”邏輯回歸“和”樸素貝葉斯“這樣的簡單的機器學習算法就已經可以告訴計算機如何過濾垃圾郵件以及根據房屋大小來預估價格了。邏輯回歸是一個非常直接的算法:給一個輸入向量 x,模型隻需要将 x 分類到 {1, 2, …, k} 中的一個就可以了。
不過有一個條件。
這些簡單算法的表現嚴重依賴于訓練資料的表現。(Goodfellow et al. 2017)
總的來說就是,想象這樣一個場景,你做了一個使用邏輯回歸來決定是否剖腹産的機器學習系統。這個系統無法直接檢測病人,而是由一個醫生來給這個系統喂資訊。這些資訊可能會包含子宮疤痕、懷孕了幾個月以及病人的年齡。每一個單獨的資訊都是一個特征,把它們合在一起,對于 AI 系統來說就是這個病人的表示。
通過一些訓練資料的訓練,邏輯回歸可以獲得病人的這些特征中每一項與不同結果的關系。舉例來說就是如果訓練資料中沒有包含分娩過程中惡心的機率和母親年齡增長之間的關系的話,那麼這個算法就不太可能為年紀大的病人推薦處理流程。
雖然邏輯回歸可以将表示映射到結果上,但t實際上它并不能真切地影響到構成病人表示的特征。
如果邏輯回歸不是從醫生那裡獲得一份正式的報告,而是隻有一張病人的核磁共振掃描結果,那麼它就不能做出有用的預測。(Goodfellow et al. 2017)
在分娩時期病人是否會有并發症的風險這個方面,核磁共振圖的每一個獨立的像素能告訴我們的資訊太少了。
這取決于有一個良好的表示,如果有優秀的表現那麼無論對于計算機科學還是每日的生活都是一個偉大的貢獻。舉例來說就是你可以在 Spotify 上快速的搜尋到你想要找的歌曲,因為它們的音樂集是使用一種類似于三叉樹的智能資料結構,而不是用類似于亂序資料的粗曠結構來存儲的。還有一個例子就是,學校裡的孩子可以輕松的處理阿拉伯數字的算術,而處理羅馬數字的算術卻異常困難。機器學習沒什麼不同,輸入表示的不同将會對你的學習算法的表現産生巨大的影響。

David Warde-Farley, Goodfellow et al. 2017
由于這個原因,在人工智能領域中很多問題最後都可以歸結為尋找合适的表示并把它作為輸入資料。舉個例子,假設我們設計了一個算法用于識别 Instagram 照片中的漢堡。首先,我們要根據所有的漢堡建構出一個特征集。首先我們要嘗試的或許就是通過圖檔的原始像素的值來描述漢堡。起初這或許是一個明智的做法,但是很快你就會發現并不是。
單純憑借原始像素來描述漢堡長啥樣是十分困難的,其實你可以想一下在麥當勞點漢堡的情景。當你點你想要的漢堡時,你應該會通過各種”特征“來描述要點的漢堡,比如奶酪、中間的肉餅、芝麻、生菜、紅洋蔥以及其他的調味料。我們可以通過不同的成分的集合來描述漢堡,每一個成分又可以用它本身的特征集來描述。大部分漢堡的成分可以用它們的的顔色和外形來描述,那麼一個漢堡就可以它的不同的成分的顔色和外形來描述了。
但是當漢堡不在圖檔的中心位置,或者被放置在一個與之顔色相近的食物旁邊,又或者在一個異域風情的飯店裡漢堡是被分開提供的時候會發生什麼呢?這時我們的算法又将如何區分以及解構漢堡呢?一個顯而易見的辦法是添加更多的(不同的)特征,但是這隻是臨時的解決辦法。很快,我們就會發現更多的邊界條件,然後我們就又要在我們的特征集裡面添加更多的特征來差別相似的圖檔。随着輸入表示的複雜,計算成本也随之提高,事情就變的更加複雜了。現在的開發者不僅要關注特征的數量還要還要關注輸入表示的所有特征的表達力是否足夠。尋找完美特征集對于任何機器學習算法來說都是一個艱苦卓絕的任務,研究人員同時也耗時耗力。一個經驗豐富的社群可能都要研究幾十年。
對于學習算法來說衡量表示輸入好壞的問題又被稱作表示問題。
從 1990 年後期到 2000 年早期,機器學習算法在處理不完美輸入表示的弱點本質上其實是 AI 領域研究過程中的瓶頸。當設計輸入特征的表示時,為了彌補算法上的弱點,工程師們除了依賴于人類的靈感和問題領域的前置知識以外别無他法。從長遠來看,這樣的"特征工程"其實是站不住腳的。如果一個學習算法不能夠從原始資料和未被過濾的資料中擷取有利資訊,那麼從一個更哲學角度講,這些算法是不能了解這個世界的。
盡管有這麼多的障礙,研究人員們依然很快就發現了解決問題的方法。如果一個機器學習算法可以把表示映射到輸出,那麼為什麼讓這些算法學習表示本身呢。這就是表示學習。關于表示學習最著名的例子應該就是自編碼(神經網絡的一種)了,它是基于人類大腦和神經系統模組化的計算機系統。
一個自編碼實際上就是一個可以将輸入轉化為不同表示的編碼函數和一個可以将這個中間表示轉換回它的原始格式(盡可能多的保留資訊)的解碼函數的組合。結果就是我們會得到一個在編碼器和解碼器之間正确的分割,它可以将用來訓練的的”噪音“圖檔的解碼成更有用的表示。舉例來說就是一張擁有在相似顔色中隐藏的漢堡的 Instagram 圖檔。這個解碼器将會消除這個”噪音“,僅僅保留可以描述漢堡本身的的特征。
但是對于自編碼來說,問題仍然存在。為了消除噪音,自編碼和一些其他的表示學習算法必須能夠準确的決定對于輸入資料的描述來說什麼是最重要的因素。我們想要我們的算法更好的分辨出哪些是我們感興趣的圖檔(包含漢堡的)和哪些是我們不感興趣的圖檔。對于這個例子來說,如果我們不是關注圖檔原始像素的值,而是将更多的注意力放在圖檔成分的外形和顔色上,那麼在分辨有漢堡圖檔和無漢堡圖檔這個問題上顯然更有優勢。當然了,說比做總是要容易的多。關鍵點就是告訴算法如何從沒用的因子中解構出有用的因子,這就是變量因子。
乍一看,表示學習似乎無法為我們提供幫助,但是讓我們再研究研究。
一個編碼器通過隐藏層(中間層)擷取一個輸入表示,将這個輸入壓縮成一個較小的格式。解碼器做一個相反的事情:将輸入解壓回到原來的格式,盡可能多的保留資料。在這兩個情況下,如果隐藏層知道哪些因子是描述輸入最重要的,那麼輸入的資訊将會得到最好的保留,然後確定這些因子沒有在輸入中被清除并傳遞到下一層。
在上面的圖示中,編碼器和解碼器都隻包含一個隐藏層,一個被壓縮,一個被解壓。層的數量導緻粒度的匮乏意味着這個算法為了最大限度的保留資訊,會在判斷輸入的壓縮和解壓的好壞時彈性不足。但是如果我們做一個小調整,将幾個隐藏層堆疊起來,一個接一個,那麼我們就會給算法提供更大的自由度,同時算法也會在選擇權重因子時對輸入的壓縮和解壓達到最好的效果。
這種使用多個隐藏層的神經網絡算法就是深度學習。
但是這并沒有結束,深度學習還要再深入一步。在使用多個隐藏層時,我們可以組合多個簡單的層來建構複雜的表示。通過一個一個的堆疊隐藏層,我們可以分辨出每一個層的變量因子。這會讓我們的算法擁有用通過多個簡單層的來表達高深複雜的概念的能力。
Zeiler and Fergus (2014)
深度學習曆史悠久。這個領域的核心觀點在 1960 年代就通過多層感覺器被提出來了。反向傳播算法在 1970 年被正式提出,1980 年代各種人工神經網絡也開始陸續登場。但是這些早期的成果又經曆了幾十年才在實踐中得以運用。沒有差的算法(有些人并不這樣認為),隻是我們還沒有意識到需要多大的資料量才能讓它們變的有用。
越小的資料樣本越容易産生極端的結果(因為在統計噪音上會有更大的影響)。越大的資料樣本則會減弱噪音的影響并讓深度學習模型更精确的知道哪些因子可以最好的描述輸入。
在 21 世紀初期深度學習取得如此成就一點也不意外,而幾乎同時,大部分科技公司也都發現了它們正坐在一座座未被開發的資料的金山上。
<b>原文釋出時間為:2017年7月20日</b>
<b>本文來自雲栖社群合作夥伴掘金,了解相關資訊可以關注掘金網站。</b>