2、如何理解圖靈機模型
剛才用小蟲說明了圖靈機的工作原理,相信你的第一個反映就是,這樣的模型太簡單了!他根本說明不了現(xiàn)實世界中的任何問題!下面,我就要試圖說服你,圖靈機這個模型是偉大的! 首先,我想說的是,其實我們每一個會決策、會思考的人就可以被抽象的看成一個圖靈機。 前移,保持吃飽
涂白,轉(zhuǎn)入吃飽
前移,保持吃飽
后移,變成饑餓
涂黑,保持饑餓
為什么可以做這種抽象呢?首先我們可以考慮擴展剛才說的小蟲模型。因為小蟲模型是以一切都簡化的前提開始的,所以它的確是太太簡單了。然而,我們可以把小蟲的輸入集合、輸出行動集合、內(nèi)部狀態(tài)集合進行擴大,這個模型就一下子實用多了。首先,小蟲完全可以處于一個三維的空間中而不是簡簡單單的紙帶。并且小蟲的視力很好,它一下子能讀到方圓500米的信息,當然,小蟲也可以擁有其他的感覺器官,比如嗅覺、聽覺等等,而這些改變都僅僅是擴大了輸入集合的維數(shù)和范圍,并沒有其他更本質(zhì)的改變。同樣道理,小蟲可能的輸出集合也是異常的豐富,它不僅僅能移動自己,還可以盡情的改造它所在的自然界。進一步的,小蟲的內(nèi)部狀態(tài)可能非常的多,而且控制它行為的程序可能異常復雜,那么小蟲會有什么本事呢?這就很難說了,因為隨著小蟲內(nèi)部的狀態(tài)數(shù)的增加,隨著它所處環(huán)境的復雜度的增加,我們正在逐漸失去對小蟲行為的預測能力。但是所有這些改變?nèi)匀粵]有逃出圖靈機的模型:輸入集合、輸出集合、內(nèi)部狀態(tài)、固定的程序!就是這四樣東西抓住了小蟲信息處理的根本。
我們?nèi)四懿荒芤脖贿@樣的抽象呢?顯然,輸入狀態(tài)集合就是你所處的環(huán)境中能夠看到、聽到、聞到、感覺到的所有一起,可能的輸出集合就是你的每一言每一行,以及你能夠表達出來的所有表情動作。內(nèi)部狀態(tài)集合則要復雜得多。因為我們可以把任意一個神經(jīng)細胞的狀態(tài)組合看作是一個內(nèi)部狀態(tài),那么所有可能的神經(jīng)細胞的狀態(tài)組合將是天文數(shù)字!
似乎你會說,這個模型根本不對,還有很多思維本質(zhì)的東西沒有概括進去。比如記憶問題,人有記憶,圖靈機有么?其實,只要圖靈機具有了內(nèi)部狀態(tài),它就相應的具有了記憶。比如上面講到的具有饑餓和吃飽兩種狀態(tài)的小蟲就會記住它所經(jīng)歷過的世界:如果吃到食物就用吃飽狀態(tài)來“記住”吃過的食物。什么是記憶呢?假如你經(jīng)歷了一件事情并記住了它,那么只要你下一次的行動在相同條件下和你記住這件事情之前的行動不一樣了,就說明該事情對你造成了影響,也就說明你確實記住了它。
學習的問題反映在模型中了么?學習是怎么回事兒呢?似乎圖靈機模型中不包括學習,因為學習就意味著對程序的改變,而圖靈機是不能在運行過程中改變它的程序的。然而,我們不難假設,你實際上并不能打開一個人的腦袋來看,所以它的實際程序規(guī)則你是不知道的。很有可能一個圖靈機的規(guī)則沒有改變,只不過激活了它的某些內(nèi)部狀態(tài),因而它的行為發(fā)生了本質(zhì)上的變化,盡管給它相同的輸入,它給出了完全不同的輸出,因而在我們看來,它似乎會學習了!而實際上,這個圖靈機的程序一點都沒變。
還有很多很多現(xiàn)象似乎都能被圖靈機包括,什么是人類的情緒、情感?你完全可以把它看作是某種內(nèi)部狀態(tài),因而處于心情好的情緒下,你的輸入輸出是一套規(guī)則,而心情不好的時候則完全是另一套。這仍然沒有逃出圖靈機的模型范圍。
接下來的問題就是我們?nèi)说乃季S究竟是不是和圖靈機一樣遵循固定的程序呢?這個問題似乎初看是不可能的,因為人的行為太不固定了!你不可預言它!然而我會爭辯道,無論如何神經(jīng)元傳遞信息、變化狀態(tài)的規(guī)律都是固定的,可以被程序化的,那么作為神經(jīng)元的整體:腦的運作必然也要遵循固定的規(guī)則也就是程序了。那么,如果是這樣,正如圖靈相信的,
人腦也不會超越圖靈機這個模型,所以,人工智能也必然是可能的!然而,我認為針對這個問題的答案很有可能沒有這么簡單,我們將在最后詳細討論這個問題。
無論如何,我相信你已經(jīng)能夠體會到了,圖靈機模型實際上是非常強有力的!
計算與圖靈機
1、什么是計算
說了這么多,雖然也許你已經(jīng)了解到了圖靈機的威力,也許還將信將疑,然而,你肯定仍然看不出來圖靈機和計算有什么關系。而實際上,圖靈機是一個理論計算機模型,它最主
要的能耐還是在于計算上!所以,下面我們就來看看什么是計算!
我可以先給出一個很摩登的對計算概念的理解:廣義上講,一個函數(shù)變化如把x 變成了f(x)就是一個計算!如果我們把一切都看作是信息,那么更精確的講,計算就是對信息的變換!如果采用這種觀點,你會發(fā)現(xiàn),其實自然界充滿了計算!如果我們把一個小球扔到地上,小球又彈起來了,那么大地就完成了一次對小球的計算。因為你完全可以把小球的運動都抽象成信息,它無非是一些比如位置、速度、形狀等等能用信息描述的東西嘛,而大地把小球彈起來就無非是對小球的這些信息進行了某種變換,因而大地就完成了一次計算!你可以把整個大地看作是一個系統(tǒng),而扔下去的小球是對這個系統(tǒng)的輸入,那么彈回來的小球就是該系統(tǒng)的輸出,因而也可以說,計算就是某個系統(tǒng)完成了一次從輸入到輸出的變換!
這樣理解不要緊,你會發(fā)現(xiàn),現(xiàn)實世界到處都是計算了!因為我們完全可以把所有的自然界存在的過程都抽象成這樣的輸入輸出系統(tǒng),所有的大自然存在的變量都看作是信息,因而計算無處不在!也的確,正是采取了這樣的觀點,國外才有可能發(fā)明什么DNA 計算機、生物計算機、量子計算機這些新鮮玩藝!因為人家把DNA 的化學反應、量子世界的波函數(shù)變換都看作是計算了,自然就會人為地把這些計算組合起來構成計算機了。然而,似乎我們的理論家們還在力圖證明關于圖靈機的某個定理呢,卻完全沒有意識到計算其實就是這樣簡單!
下面回到圖靈機!為什么說圖靈機是一個計算的裝置呢?很簡單,圖靈機也是一個會對輸入信息進行變換給出輸出信息的系統(tǒng)。比如前面說的小蟲,紙帶上的一個方格一個方格的顏色信息就是對小蟲的輸入,而小蟲所采取的行動就是它的輸出。不過這么看,你會發(fā)現(xiàn),似乎小蟲的輸出太簡單了。因為它僅僅就有那么幾種簡單的輸出動作。然而,不要忘了,復雜性來源于組合!雖然每一次小蟲的輸出動作很簡單,然而當把所有這些輸出動作組合在一起,就有可能非常復雜!比如我們可以把初始時刻的紙帶看作是輸入信息,那么經(jīng)過任意長的時間比如說100年后,小蟲通過不斷的涂抹紙帶最后留下的信息就是輸出信息了。那么小蟲完成的過程就是一次計算。事實上,在圖靈機的正規(guī)定義中,存在一個所謂的停機狀態(tài),當圖靈機一到停機狀態(tài),我們就認為它計算完畢了,因而不用費勁的等上100年。
2、計算的組合
更有意思的是,我們可以把若干個計算系統(tǒng)進行合并構成更大的計算系統(tǒng)。比如還是那個小球吧,如果往地上放了一個蹺蹺板,這樣小球掉到地上會彈起這個蹺蹺板的另一端,而蹺蹺板的另一邊可能還是一個小球,于是這個彈起的小球又會砸向另一個蹺蹺板……。
我們自然可以通過組合若干圖靈機完成更大更多的計算,如果把一個圖靈機對紙帶信息變換的結(jié)果又輸入給另一臺圖靈機,然后再輸入給別的圖靈機……,這就是把計算進行了組合!也許你還在為前面說的無限多的內(nèi)部狀態(tài),無限復雜的程序而苦惱,那么到現(xiàn)在,你不難明白,實際上我們并不需要寫出無限復雜的程序列表,而僅僅將這些圖靈機組合到一起就可以產(chǎn)生復雜的行為了。
有了圖靈機的組合,我們就能夠從最簡單的圖靈機開始構造復雜的圖靈機。那么最簡單的圖靈機是什么呢?我們知道最簡單的信息就是0和1,而最簡單的計算就是對0或1進行布爾運算。而布爾運算本質(zhì)上其實就三種:與、或、非。從最簡單的邏輯運算操作最簡單的
二進制信息出發(fā)我們其實可以構造任意的圖靈機!這點不難理解:任何圖靈機都可以把輸入、輸出信息進行01的編碼,而任何一個變換也可以最終分解為對01編碼的變換,而對01編碼的所有計算都可分解成前面說的三種運算。也許,現(xiàn)在你明白了為什么研究計算機的人都要去研究基本的布爾電路。奧秘就在于,用布爾電路可以組合出任意的圖靈機!
3、征服無限的方法
回憶你小時候是如何學會加法運算的。剛開始的時候,你僅僅會死記硬背。比如你記住了1+1=2,記住了2+4=6,……。然而無論你記住多少固定數(shù)字的運算,你都不叫學會了加法。原因很簡單,假如你記住了n 對數(shù)的加法,那么我總會拿出第n+1對數(shù)是你沒有記住的,因此你還是不會計算。原則上。自然數(shù)的個數(shù)是無窮的,所以任何兩個數(shù)的加法可能結(jié)果也是無窮的,而如果采用死記硬背的方法,我們頭腦怎么可能記住無窮數(shù)字的計算法則呢?但是隨著年齡的增長,你畢竟還是最終學會了加法運算!說來奇怪,你肯定明白其實加法運算并不需要記住所有數(shù)字的運算結(jié)果,而僅僅需要記住10以內(nèi)的任意兩個數(shù)的和,并且懂得了進位法則就可以了。
你是怎么做到的呢?假設要計算32+69的加法結(jié)果,你會把32寫到一行,把69寫到下一行,然后把他們對齊。于是你開始計算2+9=11,進一位,然后計算3+6=9,再計算9+1=10再進一位,最后,再把計算的這些每一位的結(jié)果都拼起來就是最終的答案101。這個簡單例子給我們的啟發(fā)就是:作加法的過程就是一個機械的計算過程,這里輸入就是32和69這兩個數(shù)字,輸出就是101。而你的程序規(guī)則就是具體的把任意兩個10以內(nèi)的數(shù)求和。這樣,根據(jù)固定的加法運算程序你可以計算任兩個數(shù)的加法了。
不知你發(fā)現(xiàn)了沒有,這個計算加法的方法能夠讓你找到運用有限的規(guī)則應對無限可能情況的方法!我們剛才說了,實際上自然數(shù)是無限的,這樣,所有可能的加法結(jié)果也是無限的。然而運用剛才說的運算方法,無論輸入的數(shù)字是多少,只要你把要計算的數(shù)字寫下來了,就一定能夠計算出最終的結(jié)果,而無需死記硬背所有的加法!
因而,可以說計算這個簡單的概念,是一種用有限來應對無限的方法!我們再看一個例子:假如給你一組數(shù)對:1,2 3,6 5,10 18,36,就這4對,這時問你102對應的數(shù)是多少?很顯然,如果僅僅根據(jù)你掌握的已知數(shù)對的知識,是不可能知道答案的,因為你的知識庫里面沒有存放著102對應數(shù)字的知識。然而,如果你掌握了產(chǎn)生這組數(shù)對的程序法則,也就是看到如果第一個數(shù)是x ,那么第二個數(shù)就是2x 的話,你肯定一下子就算出102對應的是204了。也就是說,你實際上運用2x 這兩個字符就記住了無限的諸如1,2 3,6 102,204所有這樣的數(shù)對。
這看起來似乎很奇怪。我怎么可能運用有限的字符來應對無限種可能呢?實際上,當沒有人問你問題的時候,你存儲的2x 什么也沒有,而當我問你102對應的是多少?我就相當于給你輸入了信息:102,而你僅僅是根據(jù)這個輸入信息102進行一系列的加工變換得到了輸出信息204。因而輸入信息就好比是原材料,而你的程序規(guī)則就是加工的方法,只有在原材料上進行加工,你才能輸出最終產(chǎn)品。
這讓我不禁想起了專家系統(tǒng)方法。其實專家系統(tǒng)就是一個大的規(guī)則庫。也就相當于存儲了很多很多的1,2 3,6 5,10這樣特殊的規(guī)則對。而無論它存儲的東西再多,總歸會是有限的,你只要找到一個它沒有存儲到的問題,它就無能為力了。因而專家系統(tǒng)就會在你問到102對應是多少的時候失敗!如何解決問題?人們想出了很多方法,就比如元規(guī)則的方法,其實元規(guī)則就相當于剛才所說的計算加法的程序,或者2x 這樣的東西。運用元規(guī)則的確可以應對無限種情況了。所以,這就是為什么你問計算機任何兩個數(shù)相加是多少,它總能給出你正確的答案的原因,雖然它不必記住所有這些加法對的信息。
然而僅僅是元規(guī)則就能解決所有問題么?
假如給你三組數(shù)對,排列成一個表:
1,2 3,6 4,8 100,200
3,9 2,6 8,24 100,300
1,4 2,8 3,12 100,400
那么問你在第6行上,3這個數(shù)字對應的是多少?我們先要找出第一行的規(guī)律是2x 沒有疑問,第二行呢?是3x ,第三行是4x ,那么第6行就應該是7x 了,因而在第6行上3
應該對應的是21了!這里跟前面不太一樣的是,雖然我們得到了每一行的規(guī)則比如第一行的2x ,但是隨著行數(shù)的增加,這個規(guī)則本身也變化了,因而第2行是3x ,第3行是4x 等等,因而我們又得到了一個規(guī)則本身的規(guī)則,即如果行數(shù)是n 的話,那么這一行的規(guī)則就是(n+1)x。我們顯然能夠根據(jù)輸入的n 和x 計算出數(shù)值。把這個道理放到專家系統(tǒng)里面,這種原理就是元規(guī)則的規(guī)則,元規(guī)則的元規(guī)則……,應該是無窮的!然而專家系統(tǒng)本身并不會自動的歸納這些規(guī)則,人必須事先把這些元規(guī)則寫到程序里,這也就是專家系統(tǒng)最大的弊端。而我們?nèi)怂坪蹩偰茉谝恍﹤€別的事件中歸納出規(guī)則。進一步問,機器可以歸納么?這就相當于說:可以為歸納方法編出程序么?這也是一個很有趣的問題,下面將要詳細討論!可以設想,假如我們找到了真正歸納的方法,那么編寫出這樣的程序,它就會一勞永逸的自己進行學習歸納了。我們完全再也不用給他編制程序和規(guī)則了。這正是人工智能的終極目標!
評論
查看更多