人工智慧、模式識別領域最終是否會被一種本質、通用的演算法主導?
我是做編程和音頻信號處理的,從去年開始因為工作的關係接觸了一些人工智慧的演算法,對此很感興趣,但時間不允許都沒有深入了解,只是泛泛地了解了一下。有個問題是為什麼這個領域存在如此多的原理不同的演算法?
舉個例子,比如線性濾波器設計可以通過卷積的方法,傅里葉分析,線性微分方程等方法來設計,但這些方法實際上無論從感性解釋到數學形式,都可以互相轉化. 本質上我覺得它們是同源的. 但又比如識別一個音頻信號,至少能有SVM,人工神經元,進化演算法三種演算法來設計,這三種演算法在我看來從原理上完全不同,計算方法也不大相同,數學形式也很難互相轉化,然後最後準確率都差不多。為什麼會有這樣的現象出現? 這是否意味著這些演算法實際上都不是人工智慧的"本質"? 是否意味著在將來可能存在一個統一的比這些演算法更加本質的演算法能夠完全包含這些演算法? 其實我也沒有要問強人工智慧能否實現的問題,因為我覺得即使是現有的演算法,能實現像siri或者自動駕駛之類的成果已經很有價值了,我想問的就是現有的這些演算法為什麼不是像力學不管什麼力學都離不開牛二一樣,從同一個理論基礎發展出來,反而有點各自為戰的感覺?是什麼導致了這種現象,是否說明這些演算法其實都不是非常完善的演算法? 是否意味著在將來可能存在一個統一的比這些演算法更加本質的演算法能夠完全包含這些演算法?
很有意思的觀點。之前有從這個角度思考過這個問題,稍微說一下自己的想法吧。
"General Purpose AI"一直是每個研究AI人的夢想。但是到目前為止都沒有任何「階段性」的研究成果清晰地指向機器主動思考的可能性。
這個結論有兩個互相糾纏的前提,即這個問題「有一個正確的答案」,和「主動思考有明確的定義」。 題主你的問題大概是前者,即「有沒有一個演算法,或系統,或一個理論體系可以直接或間接的指向機器主動思考的可能性"。以下為我的答案:
______________________________簡潔的答案:據我所知,這個問題所對應的命題尚未有證明或證偽。(以及很多reference懶得貼了)______________________________
不那麼簡潔的答案:考跪了midterm來答題。大堆的AI史話略過不表。根據我的理解現在AI的大方向(approach)分四種,而這四種方式分別代表了現在人們對人類大腦運作方式的不同理解。
首先是樓主所提到的模式識別。模式識別大體來講就是統計學習(Statistical Learning)。由很多很多很多的數據來對一個現實世界或虛構的系統建模。這個系統可以非常非常簡單,比如觀察一個偽隨機數生成器(pseudo-random number generator)。一個簡單的機器學習程序可以很快的從取得的隨機數中找到模式並建成一個數值分布(gaussian, poisson, chi-square, etc)。這個系統也可以非常複雜,比如基於機器學習的天氣與災害預報。在一個不僅看似混沌(chaotic)而且真的很混沌的系統里尋找模式對於現代計算機幾乎是不可能完成的任務,不過還是有人在堅持不懈地做這件事情而且賺了很多很多錢發了很多很多paper... (RenaissanceRe)。
而這個approach的思想本源(or analogy from human brain, either way)就是人類的模式識別能力。舉個簡單的栗子:一個人出生的時候並不知道這個世界的物理定律,比如看到一輛車和另一輛車相互迎頭行駛,一個生活在現代社會切智力正常的人會馬上會想到這兩輛車會相撞並且腦補出各種液體橫流的慘狀。而一個相同智力(思維能力,非知識)的剛出生的人(咦?)卻不會想到這些。為什麼呢?以為那個正常的人已經有了一系列的模式識別能力,例如車不會在那麼短的距離停下來,車的方向不會突然發生很大的改變,一個物體不會憑空消失,駕車的人受到那麼大衝擊肯定會受傷等等等等。那麼人類到底是怎樣完成模式識別的呢?一些人人為人類的模式識別其實是基於貝葉斯模型為首的統計學模型的(Bayesian approaches to brain function),也就是說模式識別主要依賴觀察相同類型(category)的事件發生多次而產生的,也就是現在大部分機器學習採取的方式,俗一點就是大數據。。。(喂
而另一些人則不這麼想。他們認為雖然這個世界是連續的(continuous),但是人類的思維方式確實基於邏輯 (這裡指廣義的logic即reason而非數學上的logic)的,即離散的(discrete)。理由同樣也很簡單,一個栗子: 「最然沒有親眼看到過地球是圓的,人們還是相信它是圓的。」 而之前提到的模式識別也並非觀察相同事件多次那麼簡單,而是理性思考中的總結歸納(categorization)這一功能。基於這個想法所產生的AI approach就是Symbolic Reasoning(符號處理)。把英文解釋放前面是因為感覺這個的中文名很有誤導性。從AI這個領域誕生開始對於Symbolic Reasoning的研究就沒有停止過。經過數十年的努力,至今沒有很大的突破所以到上世紀八十年代這個領域就逐漸沒落了。這個領域中一個非常著名的體系是First Order Logic(一階邏輯,這什麼爛翻譯...),有興趣可以去看看。
插一句:個人認為這個approach,即人類思維是由邏輯主導的是有理論及實際依據的。不談康德休謨一系列哲學家對於這個問題上千年的探索,Noam Chomsky對於語言學的研究在這個領域其實很有借鑒意義。他提出的Universal Grammar就是在探索為什麼雖然不同文化的發源地不同且互相沒有交流,它們的語言有一些最核心的結構是相同的。這代表了人類對於這個世界的認知的方法很大一部分是prior的(找不到合適的中文詞)而不是後天習得的。如果撇開靈魂這種虛無的東西不談,這些先天具備的東西更像是由人類的生物構造產生的。這裡說生理構造其實就是大腦的構造。對於大腦運行方式的研究帶來了第三種AI的approach,即用軟硬體模擬大腦在生理層面上的運行方式以期帶來智能。模擬大腦的運行方式是一個經久未衰的研究題目。嘗試從未停止過。近些年來隨著科技的發展,我們已經能很細緻的觀察到生物大腦在微觀層面上的運行方式,這為完整複製大腦帶來了理論依據。之前模擬大腦很大的一個困難其實是大腦運行方式本身,因為大腦其實就是一個超多核CPU,每個神經元都是獨立運作而不是靠一個」中央處理器指揮的「。而用現代計算機模擬如此數量極的並行計算幾乎不可能。隨著電子元件的普及化,現今用極小極便宜的單片機堆成一個類大腦的超多核處理器也不是不可能的事 (有興趣請戳這個研究項目:http://www.artificialbrains.com/spinnaker)。雖然這是個看似非常可行而且有依據的approach,但是我認為它也是最不著邊際的方法。理由如下:即使能夠用電子元件構造大腦完整的生理結構,難道要插上電源之後等著智能有一天在電子的碰撞中產生出來嗎?當然不能,所以要有與這種處理器相應的演算法。誰來想出這些演算法呢?人類自己。人類要想出能運行如此複雜計算機以期模擬自己思考的演算法?。。。我覺得不大可能。當然啦還是有很多人覺得這個是一個非常可行的方法的,包括高通高通將於明年推出民用神經形態處理器——仿生設計像人腦一樣根據實時信息調整演算法,以及Google Solidot | Google收購人工智慧公司Deep Mind。各路大神也在nature上對這個方法有過評價:
(請戳 http://www.gatsby.ucl.ac.uk/~demis/TuringSpecialIssue(Nature2012).pdf)另黑一句:雖然深度學慣用的演算法叫神經網路,它跟真正大腦里的神經網路關係卻沒多大。上周LeCun還來學校里做了演講,黑的deep learning是"a great fake"...最後一個方法其實不算一個方法,卻是至今為止成效最大的方法,即站在巨人的肩膀上(Stand on the shoulder of giants)。。。 : D
好吧我是指IBM的Watson。作為目前世界上最有效的人工智慧系統,它所採用的方法包括了之前所概括的所有方法以及各種各樣其它的方法。它的數據採集部分包括了模式識別和符號計算,決策部分和語義分析部分包括了專家系統(Expert System)以及其它演算法(好吧其實我也沒有細看有哪些其他演算法)。Watson的成功給我們帶來了一個全新的角度:沒準真正的人工智慧是又很多很多複雜或簡單的演算法堆起來的呢~(^o^)/~。
啊第一次寫這麼長的答案呢。
其實還有個總結,今天沒空寫了。改天有空來補完。No free lunch theorem
當前很多人工智慧專家擁有這個觀點,初衷大致是源於對人大腦新皮層的統一性認識。
目前很多前沿的理論研究也在試圖做到這一點,比如Google Deepmind的Nerual Turing Machine,Numenta的Herachical Tempral Memory而反過來看,機器學習領域的研究者們並不是特別關心類人智能而是傾向於回答統計學的要求,所以svm,lstm,deep learning之流的模型並沒有按照實現類人智能的目標去設計,所以不能歸於此類。但這個時候不在適宜叫統一演算法了,應該是一個清晰簡明的結構化設計,既包括一些基礎性反覆使用的演算法,也包括基礎型組件模型,也包括基礎性關係模型,總之,我相信類人智能的終極結構是一個有通用演算法,通用組件的結構化模型。
至於你所說的特定領域的所謂智能問題,某些時候特定的演算法去解決效果更好,不一定要用類人智能通用演算法,就好比人也可以完成人臉識別任務,但在某些人臉識別任務上還不如現有的演算法又快又准。人工智慧和模式識別相比,就象真人與相片之間的差距。
我所認為的人工智慧是人類採用非自然方法實現自我意識這種,在這個層面上,我認為存在一套通用的演算法以及內在機制而實現人工智慧。
今天太晚了,我沒耐性回答,只想打個比方:幼兒園裡的小朋友就是身懷一套通用演算法及內豐機制的人,長大以後,他們各自發展出不同的專長和本領……
這套通用的玩意是什麼呢?是學習、知識歸納、知識再學習、邏輯、多道推演互相觀察、互相演進、多角度、多目的敲打事實等等的基本邏輯能力
作為一個思考過這個問題的人,我嘗試回答下,首先是智能的定義,智能之所以是智能,首先是人類理解的事物的模式,你可能認為其實就是,在多變數系統中快速的找出了最優解。但是!這個目標是怎樣設定出來的呢?這才是問題的關鍵!說到這裡就要扯到意識了。。。複雜系統求最優解無非是個數學優化問題,簡單問題找規律,複雜問題就先找特徵,利用特徵找規律,再複雜的就摸石頭過河,不斷嘗試不斷朝著最優的方向去有。什麼局部最優全局最優的。可是計算機和人的差異是在這裡,尤其是在圖像和音頻領域,人在處理數據時總是大量數據之間複雜的關聯起來處理,可是電腦卻不能做到大範圍關聯,一方面電腦自動學習特徵的演算法仍然是一個小範圍的最優解,另一方面,這個計算量實在夠大。最大的問題在於意識,電腦無法自己發現問題,無法自己設定目標函數。
這個想法挺好,但可惜只是幻想。高票答案說沒證明,呵呵 這還需要證明么?認真學過計算原理的人都明白計算機背後的極限在哪。
題主說的通用演算法,這東西就等價於一個通用「人」機了。這通用人機是什麼意思呢,就是通用圖靈機的人類版。這個通用機代表什麼呢,能夠將任何一個人進行編碼,輸入通用人機,通用人機可以模擬這個人的任何行為。也就是說 這個通用人機的能力不低於任何一個人。而這種模擬能力,人類也無法做到吧。
如果要證明,計算機的極限是通用圖靈機,通用圖靈機的極限等價於遞歸可枚舉語言,遞歸可枚舉語言是形式語言的子集,形式語言是自然語言的子集。而人類的極限在自然語言,所以圖靈機無法模擬人類。PS.開一下腦洞,假設人類可以創造一台比自己還要聰明的通用機器,那麼這台通用機器就可以製造一台比他更聰明的機器,以此下去就可以發展成為無限聰明的機器了。聽起來似乎蠻有趣。
PSS 假設人類可以造和自己一樣聰明的機器,那麼也就意味著人類可以製造人類,(當然不是用ooxx的辦法),那麼意味著人類的能力和創造人類的上帝能力等價。所以上帝等價於人類等價於機器。似乎更有趣了……最近有學習機器學習相關的知識,不請自來的回答一下吧。
我對題主問題的理解是,有沒有這樣一種演算法,它可以像大統一理論統一四大基本力一樣統一所有演算法,或者能夠像無相神功模擬天下武學一樣模擬達到所有演算法的效果。如果是前者,據我所知,沒有。如果是後者,現在已經有了,多層神經網路可以無限逼近任意連續函數。
多層神經網路可以任意精度逼近任意函數的論文我忘了是哪篇了,不過確實是被理論證明了的。所以神經網路在理論上是可以替代現有的所有其他方法的,但是問題是計算量太大,而且容易陷入過擬合。神經網路的出現曾經帶來了80年代人工智慧的熱潮,但因為求解方法的落後,所以很快跌入低谷。06年深度學習的概念被提出,本質上是一種先進巧妙的神經網路求解方法,人工智慧又再次出現熱潮。又加上大數據的推波助瀾,直到現在,這股熱潮還在繼續。
個人覺得,神經網路一定會主導人工智慧和模式識別。但是因為效率問題,其他演算法在某些專業領域也是不可替代的。就像現在通用處理器(電腦、手機、平板、伺服器的cpu)佔據了主流地位,但是一些單片機(路由器、開關、感測器、智能家居的處理器)在專業領域也不可替代。問題不是這樣的演算法有沒有,而是演算法的速度能有多快。強人工智慧的演算法當然有,我們人類不就是通過這樣的演算法產生的嗎?
你搞個足夠大的容器,裝上宇宙中能找到的各種元素,攪一攪,然後找個安全的地方放著,讓大自然這台計算機去運算,幾十億年之後說不定就會從裡面爬出個智能生物來!但是這樣的演算法是一個平凡解,耗時太長,並且最終得到的東西還不一定是能服務與人類的(很可能就進化出一個吃人的怪物,能進化出乖乖幫人識別語音,老老實實替人開車的生物的可能性即使有也是極小的。)。因此,其實人類真正需要的是這樣一種演算法:能加速智能體產生的速度,同時又要保證產生的智能體能像奴隸一樣服務於人類。
演算法要加速只有一種方法,那就是給它注入各種先驗信息。人類在宇宙中進化了幾百億年,積累了大量的常識和知識。將這些知識中的一部分加入到演算法數據中,「智能」甚至能在普通PC上很快的出現。神經網路,遺傳演算法,統計學習等等就是這樣的derivation。
但是演算法一旦被注入了先驗知識就會出現偏執,並失去通用性。就像一塊鑽石被打磨成了鑽戒之後就很難再做成吊墜。
所以吧,這是一個tradeoff的問題,不要一味的追求通用性,越通用的演算法潛力越大,但是速度越慢;越具體的演算法潛力越小,但是速度越快。
===========================
關於神經網路,遺傳演算法,統計學習等各種演算法再說幾句:這些演算法本身就是帶偏執的,當應用這些模型到具體問題時,你再在此基礎之上添加更多問題相關的偏執。本身就是帶偏執的,意味著對於某個模型,無論你怎麼用它(即給它加入任何問題相關 的偏執),總有一些問題是這個模型註定解決不了的,這是這個模型自身的局限性。最近我正在構建一種全新的演算法,它的優勢就在於模型本身是不帶任何偏執的,所有的偏執都由用戶根據具體的問題加進去。這樣的演算法自身局限性為0,可以應用於任何機器學習或人工智慧問題,從模擬一個原子到模擬一個人。不過正如上面所說的,會有tradeoff問題。你不知道力學還可以有另外一個理解方式吧,叫做拉格朗日力學。一樣的事實,本來就可以有不同的理解,從不同的理解推出來的結果也完全一樣。而它們也沒有統一到一起。你讀一下費恩曼寫的《物理定律的本性》這本書就知道這種現象的確存在了。
是的沒錯。不過不能理解成演算法,最多理解成元演算法。具體在我搞定之前也不會說。
SVM,神經網路,遺傳演算法似乎本質上有很大的相同。首先他們都是搜索演算法,要搜索到一個最優解,而且都是啟發式搜索演算法。神經網路和SVM更相似,SVM不就是最優化的perceptron+kernel么?本來這些演算法就都是有聯繫的,也是相似的。你看不到相似性是因為你沒有這方面的研究而已。。
外行拋磚,僅供參考:
人類是如何擁有通用智能的呢?其實很簡單,有基本的感覺,語言能力,邏輯能力的人,要學某門專業知識,只需要找個老師,然後跟著老師學就可以了;大多數情況下,「自學」其實本質是一樣的:在網上找該專業知識的參考資料,看懂這些資料,必要時問別人,去知乎提問題等。也許少數天才可以無師自通,但其成功率並不高。
所以,只要一個計算機有足夠的
1.感覺能力,特別是視覺和聽覺能力;2.語言能力;3.邏輯推理能力,包括自編程能力;它就必然擁有
4.在知識庫,例如圖書館或互聯網上搜索有用信息的能力;5.把信息讀懂並內化為自身知識的能力;而這就是我們需要的通用人工智慧。
(這也解釋了為什麼人類要學會什麼是貓不需要幾百萬張圖片:人類能夠通過多種途徑獲取關於貓的形態特徵的知識,例如從書本上可以學到貓的耳朵的形狀,而不是僅僅把貓當作一種不規則的圖形。)
但是,這種人工智慧未必完美,它能否6.創造新知識,我不敢肯定。推薦閱讀:
※如何看待微軟小冰寫的詩?
※2016 年的人工智慧和機器人又新學會了什麼?
※哪一句翻譯讓你覺得語言「妙不可言」?
※機器學習中的目標函數、損失函數、代價函數有什麼區別?
※神經網路中的SIGMOID函數的意義?