第203章 自編程理論
許毅第一次和蘇蘭鬧了彆扭,不過許毅完全是為了兩個人的未來著想。剛才他的做法,也只是善意的技巧而已,並沒有什麼惡劣的意圖,完全只是為了讓老媽從心裡上更好受一點,因為不論她反不反對,這件事反正已經成為定局了。所以,從這個角度上來說,許毅這麼做也可以說是為了家庭的和睦著想。然而,結局卻沒有朝著許毅預想的那樣進行,這讓許毅很鬱悶。
胡思亂想了一會兒,許毅將這些完全拋到腦後,轉而去繼續思考自己正在研究的理論。只有在這個時候,他才會真正的心平氣和,樂在其中,其他的事情他什麼都不想,完全沉浸在自己的精神世界中。
層次理論經過和selina的多方辯論,現在已經完善得差不多,越到後面,許毅越堅信自己的理論是經的住事實的檢驗的。令許毅比較驚訝的是selina的態度,她有時候非常支持自己的觀點,而在另外一個時刻,她又和自己針鋒相對起來。將一些連許毅都還沒想明白的問題一一提出,毫不留情的反駁許毅,前後判若兩人。不過許毅對selina這個性格卻覺得非常適合,因為當他有些氣餒的時候,selina就會出言安慰,對他的那些奇怪的想法表示支持,而當他有些「得意忘形」的時候,selina又會及時得出來敲許毅的腦袋,讓他的理論從模糊逐漸走向清晰,越來越接近事情的真相。
現有的人工智能理論的局限性在哪裡?許毅逐漸抓住了關鍵所在——研究人工智能、編寫人工智能的那些人。
現在的那些人工智能程序,都是由研究人員首先對人類智能的特點進行分析,然後將這些特點進行抽像,形成各種各樣的模型、算法,有時候還會採用一些數學理論進行輔助處理。這樣,問題就來了。這些程序一旦編寫成功之後,系統就會按照那些程序原先固定好的方式進行特定的智能處理工作。所以,這些程序的能夠完成的功能、靈活性、智能程度的高低,都要受到編程人員對人類智能的認識的限制。也就是說,這些智能程序都是死板的,既定的。不會再出現什麼變化,想要出現像人類智能那樣高級的功能,具有抽像、聯想功能,那顯然是不可能的。
人類的智能是非常靈活的。很多想法都是「憑空」產生,也許在之前,這個想法從來沒有在腦海中出現過,是大腦隨著情況的變化臨時想出了新的處理方式。顯然,這裡和智能程序唯一的區別就在於這個「想出」的來源,如果不考慮這個,那人類的智能就基本和既定的程序無異了。
為什麼能夠「想出」處理方式?這些想法怎麼出現的?很顯然,這表明人類的智能並不是按照某些固定的方式進行的。許毅覺得,他的類人智能首先要解決的就是這個問題,他覺得自己抓住了研究類人智能的關鍵點和出發點,類人智能的模擬,首先要從這裡開始。
在此基礎上,許毅提出了一個自編程理論:人類智能的本質其實是大腦的操作能力、對信息的操作能力。而在計算機中,各種操作都是由程序來實現的,於是,在智能和計算程序中間,就可以建立起一種特殊的映射——人類智能能夠不斷「想出」新的處理方式,對應於計算機,就相當於計算機能夠不斷的自己編寫出新的程序。
這樣,許毅的類人智能理論研究終於從末尾開始逆推到了起點:要成功的模擬出人類的智能,首先要解決計算機的自編程問題。
讓計算機自己能夠編寫程序?這可能嗎?selina聽到許毅的這個理論的時候,她在第一時間內提出了自己的疑問,並且由此推導出了一個悖論:自編程是類人智能的起點,但是如果使用計算機語言來實現自編程程序,要如何讓計算機來理解這個源程序的語言和語法?怎樣來設計自編程程序呢?如何調試?很顯然,要完全實現這些功能本身就要求計算機有較高的智能才能做到,那麼它的高智能又是如何來的?這就成為了一個「先有蛋還是先有雞」的悖論。
許毅到這裡也被難住了,到底怎麼來解決這個自編程問題,這段時間來他一直沒有頭緒,不過他相信,只要他解決了這個問題,他的類人智能理論就一定會有一個非常大的突破,到時候類人智能就會有其基本的理論基石,從而將整個理論大廈完全建立起來!
最初的智能到底是怎麼產生的?智能的產生和哪些因素有關?單細胞生物再到多細胞生物怎麼根據周圍的環境來進行自我「編程」?……許毅躺在床上直直的望著天花板回想著自己在麻省的時候看的那些生物書籍。為了研究智能的本質和起源,他看了很多本生物方面的著作,從微觀到宏觀。
「在最開始,生物肯定是不存在智能的,所有動作都是無意識的,出自於自己的本能……」許毅這樣想道,「按照層次理論,它們那個時候應該遵守另外一套規律……」
想著,想著,許毅突然噌的一下坐了起來,他伸出自己的手,張開手掌然後又握緊,接著又張開……
「有了!」許毅情不自禁的喊了出來。他想,他已經發現到了一個可行的方法!
仔細現察著手的活動過程,可以發現,手的整個動作都是由一系列細微的小動作而組成的,整個手掌的伸張包含了肌肉的拉伸和收縮,骨骼的活動……雖然這些細小的動作本身獨立出來並不能表現出什麼效果,但是一旦它們組合起來,就形成了集體的力量。
將這個原理應用到編程當中,許毅找到了一種自編程程序的編寫方法-一首先編寫一些能夠成功運行的基本小程序塊,然後將這些小程序塊以一種特定的方式結合起來,形成一個較大的程序,而這個大程序便能夠完成某種的功能。這種功能並不是小程序塊所具有的功能,而是它們組合起來整體表現出來的效果,這就經歷了一個從無到有的過程,達到了自編程的特點!
「就是這個!」許毅快速的來回在房間裡走動著,右拳激動的擊著左掌,腦海中電光火石般的圍繞這個中心迅速的思考著,完善著這個理論。
如果用這個方法構建程序,那麼怎麼樣才能實現程序中的循環和條件轉移呢?許毅繼續深入想下去。以手的活動做參考,手要進行動作,是在大腦的指揮下進行的,即肢體活動程序是由大腦來指揮調用的,而這點完全和計算機程序相反。
在計算機中,程序一旦運行之後,程序便取得了完全的控制權,沒有另外的其他東西監視和控制它,所以程序中的流向必須由裡面的循環和轉移語句來控制。
「看來要解決這個問題,只能另外設置一個控制程序運行的系統,這樣才能夠準確的控制程序到底往哪個方向進行。」許毅提出了一個解決方法。有了這個控制程序,自編程程序中就不需要再有循環和轉移的存在,如此一來,在編寫程序的時候,就完全不用考慮由這些語言所造成的死機問題了。
許毅提出了這個自編程程序的編寫方法,但是現在並不能就將這種程序編寫止來,由此還帶出了一系列的問題,例如基本小程序塊怎麼確定?組合程序如何產生?組合程序產生之後要如何進行調試?怎樣才能讓這些程序朝著既定方向進行組合?……等等等等。
雖然由此引發了更多的問題,但是許毅還是感到非常高興,因為他又有了進一步的突破,也就相當於自己離最終的目標越來越近了,現在他可以針對selina提出的悖論進行反駁了,雖然那樣會給selina更多的機會進行疑難,但是那已經是另外的問題了,這個悖論基本上已經得到解決。
許毅迅速將自己剛才所思考的內容記錄下來,一些重要的靈感也記錄在記事本中,並且將這些問題都形成條理,一個一個來解決,他感覺,自己快要接近實踐的邊緣了,只要讓他想清楚自編程基本小程序塊的編寫方法和控制方法,他就可以開始著手進行程序編寫了。