常能見到一款經典的益智游戲——猜數字。假定C為游戲主持者,M為玩家,過程是這樣的:
C任意選取4個不重復的數字(0-9),並以任意次序組成一個串;
M開始猜測這4個數字,同樣給出不重復且有次序地4個數字;
C拿M的猜測與事先選取好的4個數字相比較,並給出結果:計數字和位置都正確的個數為m;而數字出現過但位置不對的個數為n,結果以mAnB的形式給出。
如果結果是4A0B,則游戲結束,否則M繼續猜,重復2。
比如某次游戲過程是這樣的:
C選取5816
M猜8754,C回答 0A2B
M猜4138,C回答 0A2B
M猜7081,C回答 0A2B
M猜5410,C回答 2A0B
M猜5816,C回答 4A0B,游戲結束
上面這次游戲用了5個回合完成游戲。人在玩這個游戲的時候,都是根據邏輯推理來進行,在沒有前提條件無法進行推理的時候,則隨意猜測。比如第一次猜8754的結果是0A2B,則說明這四個數字中有兩個在結果中出現過,但位置不對,那下一次猜測時則保留上次中的兩個,調整一下位置,然後猜測4138,這樣逐步逼近結果。
大一C語言課的一道大作業題,就是編成完成猜測的過程。我一開始是按照人游戲時的邏輯進行,根據回答進行分類判斷,進行推理,導致程序異常復雜,是我所難以完成的。後來跟chaoslawful等討論,他的解法則完全不是這個思路:他會根據猜測的結果把所有可能的數字過濾一遍,保留所有可能是結果的那些數字排列,並從中任選一個去猜,如果回答是4A0B或者僅剩下一個,則得到結果。當時聽到這個方法時,讓我非常震驚,以致現在都還記得。
雖然只是一個猜數字問題,但卻反映了一個重要的事實:計算機的思維方式是跟人不一樣的,不能以人的思維方式去讓計算機干活。人的記憶能力和處理速度(狹義),遠不如現在的計算機,但邏輯推理等方面異常強大,在處理復雜問題時表現出強大的智能。而計算機的優勢在於可以高度的重復完成簡單任務,通過這些簡單任務的組合,可以解決很多復雜問題,實現“智能”。
比如這個猜數字游戲,計算機通過窮舉和搜索完成了人必須用復雜的邏輯推理才能做到的事,可以說在這方面與人具有了同樣的智能。類似的例子還有很多,比如深藍戰勝卡斯帕羅夫,搜索引擎幫我們找到所需要的資料,都是以與人的思維過程完全不同的方式,達到甚至超越了人的智能所能達到的效果。可以說在這一方面,它們通過了圖靈測試,可以說具有了智能。
有人會說計算機的這種能力不能稱為智能,理由是它現在還不能完成許多復雜任務,比如圖像內容識別。可是回想一下,現在的人類大腦,是經過了幾十億年(從高分子有機物開始)的漫長演化,而計算機從出現到現在,才有不到兩百年(包括早年的機械計算器),可見它的前途是不可限量的。二十年前,識別汽車牌號可能還只在科幻片中出現,可現在已經開始在生活中廣泛應用。
也有人會說計算機不具有創新能力,只能按照它的創造者人所指定的軌跡行事。所謂創新,其實是一個相對的概念,回想一下人所做的創新,很多時候是把原先已經存在的東西做了從未有過的組合,那種從無到有的創造,估計只有上帝才能完成。計算機是可以完成這種組合的,甚至窮舉所有組合。當這種組合是人從未想到過的時,就是創新。
在電影《I, Robot》中,過於復雜的中央控制系統,通過不斷演化最終具有了自我意識,可以給我們一點啟示:當一個系統復雜到人無法想象的程度時,它所做的一些常規的事情也會讓人無法理解,就可以說它具有了智能或者獨立意識。比如2003年我參加的智能體大賽,“決不貪吃”所具有的能力已經超過的大多數人類玩家,在不懂得編成的人看來,“決不貪吃”的某些舉動實在無法理解,它太聰明了,甚至能夠創新。可對我們這些參賽者來說,所有這些舉動都是根據我們事先指定的規則來的,不存在所謂創新。但有時候,仍不免被那些事先未預料到的場面所震驚,只有通過事後的仔細分析,才發現出現這種結果是“理所當然”的。
再看看我們的大腦,不也是一些原子構成的麼?再往上看,無非是一些腦皮層細胞而已。只是它太復雜了,幾十億個腦細胞以更加復雜的方式耦合在一起,其復雜程度是現在人所無法想象的。假如拿幾十億個CPU組成一個超復雜網絡,那將會是什麼樣的一個系統?再看看現在的internet,接入的計算機數量已近達到了億的量級,只是計算機之間的連接還相對簡單。但如果從一個旁觀者的角度看,互聯網的行為已經是非常詭異了。隨著P2P和Web 2.0 的發展,互聯網將更加復雜,說不定哪天它就能夠思考,有了“自我意識”。