王榮良
思維與意識:計算思維無法繞開的話題
2016年1月28日,一則谷歌新聞刷爆朋友圈:谷歌旗下DeepMind公司研發(fā)的圍棋程序AlphaGo擊敗了法國國家圍棋隊總教練、歐洲圍棋冠軍樊麾,AlphaGo五戰(zhàn)全勝。這是人工智能領(lǐng)域的重要進展。(截至發(fā)稿,AlphaGo與李世石的圍棋大戰(zhàn)落下帷幕,人工智能以4:1贏得了勝利——編者注)
計算機和人類在棋類中的較量已不罕見,在三子棋、跳棋和國際象棋等棋類上,計算機都先后完成了對人類的挑戰(zhàn)。值得一提的是,1997年的人機大戰(zhàn),當(dāng)時IBM公司研發(fā)的超級計算機“深藍”戰(zhàn)勝了國際象棋冠軍卡斯巴羅夫。不過國際象棋的算法要比圍棋簡單得多,國際象棋中取勝只需“殺死”國王,而圍棋中則用數(shù)子或比目的方法計算勝負,并不是簡單地殺死對方棋子。
AlphaGo的獲勝震驚了圍棋界,對擁有2500多年歷史的圍棋而言,計算機在此之前從未戰(zhàn)勝過職業(yè)棋手。AlphaGo的獲勝也震驚了計算機人工智能領(lǐng)域,圍棋看起來棋盤簡單、規(guī)則不難,縱橫各19條等距離、垂直交叉的平行線,比賽雙方交替落子,目的是在棋盤上占據(jù)盡可能大的空間,但圍棋比起國際象棋的困難點在于,它要求學(xué)會察覺棋盤上布局的微妙模式,而不是僅僅計算不同棋局狀態(tài)下的權(quán)值。DeepMind公司宣稱其采用了政策網(wǎng)絡(luò)(policy network)和價值網(wǎng)絡(luò)(value network)兩種深度神經(jīng)網(wǎng)絡(luò),支持機器深度學(xué)習(xí),人工智能變得更強大了。
計算機技術(shù)正在節(jié)節(jié)逼近擁有高級智慧的人類。然而,大多數(shù)人至今仍在懷疑計算機是否真的能“看清”攝像頭前形形色色的真實世界,或者通過麥克風(fēng)“聽懂”說話聲。盡管計算機處理數(shù)據(jù)的速度極快,但對外界的感知能夠與有意識的人類一樣嗎?
“深藍”計算機可以戰(zhàn)勝國際象棋大師卡斯帕羅夫,AlphaGo可以戰(zhàn)勝歐洲圍棋冠軍樊麾,但是,這些計算機不一定能夠?qū)ξ覀兩钪辛?xí)以為常的現(xiàn)象進行合理的判斷。例如,讓計算機“看”一幅藍鯨蹲在東方明珠塔頂?shù)膱D片,它不一定能及時發(fā)現(xiàn)錯誤。而這些問題對一個學(xué)齡前兒童來說,卻不是一個難題。
這就說明,人的意識及其對應(yīng)的思維活動與計算機所采用的方法有很大的不同,計算機并不能具備意識,遠沒有達到能夠思維的程度。計算機所表現(xiàn)出來的智能,是靠人類賦予它的方法來實現(xiàn)的。
人類具有意識和思維。街上走著一位美女,男士一般都會回頭多望幾眼,這種行為往往是不由自主的,是一種本能,也是一種潛意識。這種潛意識是非常直接的,一般不經(jīng)過大腦思考,是由感知造成的第一反應(yīng)。潛意識的形成來自于人的自然屬性,是物種進化與長期文化認同后內(nèi)化的結(jié)果。當(dāng)外部環(huán)境造成的刺激直接迎合上自身內(nèi)在的需求與認同時,腦部有關(guān)神經(jīng)元放電刺激行為神經(jīng)與內(nèi)分泌神經(jīng),后面的行為便自然產(chǎn)生了,其反應(yīng)時間幾乎為零。
除了潛意識外,人類還具有后建意識,就是高層次的理性意識,這是與地區(qū)文化背景和本人知識儲備有關(guān)系的。例如,一個人在商店里買一件衣服,首先要選喜歡的顏色、式樣,這是審美問題,其次要看價格是否能承受得起、是否合身等,這里面有一整套思維模式,包括辯證取舍、價格比較、購買緣由等,到最終決定是否購買再到執(zhí)行。這一過程是理性意識支撐下的思維決策過程??梢韵胂?,人的思維決策系統(tǒng)是一個立體網(wǎng)狀結(jié)構(gòu),也可以比喻成知識體系的信息通道。當(dāng)人根據(jù)目的開始建立理性意識時,思維系統(tǒng)就高速運轉(zhuǎn),像計算機的CPU一樣開始在硬盤里搜索需要的信息,即在個人的知識體系中不斷比較篩選后建立起意識,在符合心理認同后開始執(zhí)行。這里,心理認同是很重要的一個環(huán)節(jié),當(dāng)心理不能認同時,這種意識只能成為一種一閃而過的意念,不會付諸行為。
現(xiàn)在回到計算思維。從對AlphaGo的討論可以發(fā)現(xiàn),計算機并不具備意識和思維,但AlphaGo的出現(xiàn)之所以在業(yè)界引起震驚,正是因為它采用了深度學(xué)習(xí)技術(shù),向著人類的意識與思維逼近,其表現(xiàn)更為接近人類的實際問題解決方法,盡管這與“人類級別的人工智能”還相距甚遠。而從有關(guān)人類的意識與思維的討論中,我們可以發(fā)現(xiàn),計算思維應(yīng)該是人類的思維,是一個人儲備了計算學(xué)科相關(guān)知識以后在理性意識支撐下的活動。
計算思維方法:計算思維教育的內(nèi)容
人們很難描述自己的思維。在完全清醒的時候,我們通過大腦考慮一些事情,這是在思維;當(dāng)我們睡著的時候,有些事情也仍會縈回腦際,我們把這種現(xiàn)象稱為夢境;我們也會做白日夢,是一些雜亂無章的思緒;或者有時候在我們頭腦中出現(xiàn)不能控制的一系列觀念或想法,這是不是思維,卻很難講。
杜威在《我們怎樣思維》一文中提出反省思維(reflective thinking),這種思維是對某個問題進行反復(fù)的、嚴肅的、持續(xù)不斷的深思。其一,反省思維是由一系列連續(xù)的被思考的事情組成的,反省思維是一個過程,這些事情不是偶發(fā)的,而是有前后關(guān)系的,前者事件決定后者,后者是前者正當(dāng)?shù)慕Y(jié)果,受前者的制約;其二,反省思維所涉及的事情通常不是對事物的看見、聽到、觸摸等直接觀察記錄,而是通過思考獲得的,這也符合思維間接性的特征;其三,反省思維不只是在頭腦中反映一系列的虛構(gòu)故事,而是有目的的,它必須得出一種結(jié)論,這一結(jié)論必須是通過思考得以證實。通過專心的思考,把一團亂麻似的思考弄得順理成章,把含混不明的思緒弄得一清二楚。
那么,思維是如何在大腦中形成一系列的事情,從一件事情連接到另一件事情的呢?這就需要方法。方法是人類認識客觀世界和改造客觀世界應(yīng)遵循的某種方式、途徑和程序的總和。在思維過程中運用的方法可稱為思維方法,是人們通過思維活動為實現(xiàn)特定思維目的所憑借的途徑、手段或辦法,也就是思維過程中所運用的工具和手段。例如,三角形內(nèi)角之和,我們反復(fù)測量不同形狀三角形的內(nèi)角,發(fā)現(xiàn)三個角之和約等于180度,我們可以推斷出:任意三角形的內(nèi)角和可能都等于180度。這里,大腦使用的方法是歸納法,是從個別事實推演出一般的邏輯思維方法。如果我們要嚴格證明“任意三角形的內(nèi)角和等于180度”(如下圖),需要采用演繹的證明方法,運用已知的定理,先證明“∠1=∠A”、“∠2=∠B”,從而一步一步推演證明“三角形內(nèi)角和等于180度”。
抬起頭,觀察天空,從云朵的變化可以推測天氣的變化。作為探索活動,通過觀察,然后對觀察的數(shù)據(jù)進行分析,這是經(jīng)典物理最常用的方法。例如,開普勒通過長期天文觀察和數(shù)據(jù)分析,發(fā)現(xiàn)了火星的運動規(guī)律:火星畫出一個以太陽為焦點的橢圓(開普勒第一定律);由太陽到火星的矢徑在相等時間內(nèi)畫出的面積相等(開普勒第二定律)。
回到日常生活中的一個平凡的事例:當(dāng)一個不熟悉當(dāng)?shù)氐缆返穆眯姓咦叩降缆返姆植砜跁r,猶豫不決,究竟走哪一條路才對呢?他有兩種辦法可以選擇:觀察周邊環(huán)境,作出判斷,選擇一條路徑;或者從左到右依次對每條岔路進行嘗試,發(fā)現(xiàn)錯誤,退回來探索下一個岔口,從而找到正確的路徑。第一種方法依據(jù)預(yù)判斷,有一定的運氣成分。第二種方法是一種典型的回溯搜索法,在計算機中經(jīng)常應(yīng)用,盡管可能花費更多的精力,但可以保證得到正確的或者最佳的答案。第二種方法還蘊涵了這樣一個核心思想:給出一個從左到右的搜索規(guī)則,經(jīng)過有限次的操作,一定能得到最終結(jié)果,這就是計算的思維方法。
大部分思維,特別是科學(xué)類思維,都是由以下兩種方法支持其思維活動的:一種是基本方法,即邏輯,這是推演思維活動的最基本工具,否則,人們就可評價說“思維不合邏輯”,即推演是不合理的;另一種就是其對應(yīng)的學(xué)科方法。計算思維體現(xiàn)的是機械計算,是人腦對實現(xiàn)機械計算的計算裝置及其計算實現(xiàn)過程的反映。人腦對計算實施原理與過程的思考,必定需要由計算的方法來規(guī)范,這樣,人們才能理解計算,并運用計算來設(shè)計系統(tǒng)、解決問題、指導(dǎo)人們的行為,這就是計算思維。而方法是計算思維的具體內(nèi)容表達,方法學(xué)習(xí)是計算思維教育的有效途徑。
構(gòu)造與簡潔:計算思維方法的特征
人類能夠通過文字、音樂以及計算機等信息載體把獲得的知識和經(jīng)驗儲藏在外界環(huán)境中,再以學(xué)習(xí)的形式把這些信息轉(zhuǎn)化為儲存在大腦中的記憶并加以利用。目前的計算機鮮有主動的學(xué)習(xí)功能,也不可能主動將儲藏在外界環(huán)境中的知識和經(jīng)驗轉(zhuǎn)化為可記憶的信息。
AlphaGo的出現(xiàn)之所以在業(yè)界引起震驚,還在于它具有自主學(xué)習(xí)方法的雛形。目前的計算機幾乎完全依靠機械方式把信息精確地記錄下來,而不善于利用記憶的信息自發(fā)地進行歸納推理等信息活動。因此會有這樣一種情況出現(xiàn),人們要記住一張臉,通常要比記住一個外語單詞容易,而計算機則相反,計算機識別、記憶一張人臉要比記住一個城市的電話簿還要困難,這是因為機械般的精確記憶是計算機的強項。因此,把握計算思維的方法,首先需要理解基于機械計算的方法特征。
計算思維方法的特征之一是構(gòu)造性。構(gòu)造性主要體現(xiàn)在兩個方面。
其一,方法是可以表達的,并且是準確的、無歧義的表達,能表達出明確的操作,其對應(yīng)的方法就是“形式化”,用約定的格式、文字或語法表達計算操作。形式化表達有不同的層次,在計算裝置內(nèi)部核心,用電流、電壓訊號或者字符“0”和“1”表示;在計算機開發(fā)應(yīng)用層次,人們可以用操作命令、計算機語言來表示;對于系統(tǒng)開發(fā)人員,還可以用流程圖來表達,這一層次只是用于表達開發(fā)人員的設(shè)計思想,規(guī)范設(shè)計行為。從外向內(nèi),從人向計算機,每一層次的形式化表達都可以向內(nèi)層轉(zhuǎn)換。每一層向內(nèi)層的轉(zhuǎn)換都需要經(jīng)歷抽象和形式化,即將外一層的功能描述經(jīng)抽象以后,按當(dāng)前層的格式要求形式化表達。例如,開發(fā)人員可以將用戶需求經(jīng)抽象之后用例圖或流程圖表示;計算機可以將程序設(shè)計高級語言轉(zhuǎn)換為機器語言執(zhí)行。其二,每一個操作環(huán)節(jié)構(gòu)成的操作步驟是相關(guān)的,即每一步操作都是有目的的,前一步操作為后一步操作提供依據(jù),所有操作組合在一起,完成一個特定的算法,并且是在有限次的操作中完成的。當(dāng)我們把一系列設(shè)定的操作遞交給計算機以后,計算機可以以此序列執(zhí)行,類似于人腦的思維是由一系列有序的事情組成,我們也可以說計算機也在“思維”,顯然這種思維不是真正的思維,而是計算機執(zhí)行固定的操作序列。不同的操作序列組合,實現(xiàn)了不同的算法,如枚舉法、冒泡排序法等,體現(xiàn)的是不同的計算方法和計算目標。上例中的旅行者,采用從左至右有規(guī)律地依次嘗試每一種道路的走法,并保證一定能夠得到最終解,就是典型的構(gòu)造特性。
簡潔是計算思維方法的另一特征,它也體現(xiàn)在兩個方面。其一,基本操作盡可能簡單,復(fù)雜操作可以轉(zhuǎn)化為簡單操作執(zhí)行。例如,乘法操作可以用若干個加法操作來完成。實際上,實現(xiàn)機械計算的計算機并不“聰明”,只適合做簡單的工作,只是以它的速度優(yōu)勢,通過快速處理簡單的事,來完成復(fù)雜的工作。因此,機械計算是適合做簡單操作的重復(fù)執(zhí)行,這也是計算思維的方法特征。其二,簡潔同樣體現(xiàn)在形式化表達方式上。用循環(huán)結(jié)構(gòu)表示重復(fù)執(zhí)行操作,不僅可以節(jié)省大量的表達空間,而且簡單明了,是人腦思維概括性和間接性的典型表現(xiàn)。按功能劃分模塊,是結(jié)構(gòu)化程序設(shè)計的基本思想,對寫入的程序使用邏輯結(jié)構(gòu),使得理解和修改更有效、更容易。至于面向?qū)ο蟮姆椒?,將?shù)據(jù)和操作封裝在一起,將接口與實現(xiàn)分離,可以將現(xiàn)實世界以對象的形式進行更簡潔和直觀的表達。
理解本質(zhì):計算思維方法教育的核心
計算思維是人的思維,是人指示計算機工作的思維。計算思維的方法指導(dǎo)著思維過程與走向,因此,對方法的學(xué)習(xí),是計算思維教育的有效途徑。
從計算思維對應(yīng)的計算學(xué)科來看,是源于數(shù)學(xué),同時又有工程屬性。因此,計算思維的方法可以從兩個維度描述:數(shù)學(xué)方法和工程方法。計算思維的數(shù)學(xué)方法包括抽象、構(gòu)造、遞歸、形式化等,計算思維的工程方法包括系統(tǒng)方法、分治法、結(jié)構(gòu)化方法、面向?qū)ο蠓椒ǖ取?/p>
計算是為了數(shù)據(jù)處理。從數(shù)據(jù)處理角度來看,計算思維的方法有三類:其一,物理世界與計算機世界數(shù)據(jù)轉(zhuǎn)換的方法,如用二進制數(shù)對物理世界和現(xiàn)象進行編碼以便計算處理,用可視化的方法表示各種對象等。其二,數(shù)據(jù)的管理方法,如先將信息聚焦成“庫”,再對基于“庫”所聚焦的大量信息進行管理、分析與研究。其三,數(shù)據(jù)加工的方法,如用算法的思維確定數(shù)據(jù)加工的有效步驟。
計算機原理以及相關(guān)計算方法的學(xué)習(xí),是計算思維教育的有效途徑。計算思維的方法教育不能僅停留在利用計算機解決問題上,而應(yīng)該通過方法理解人與計算機的關(guān)系。算法與計算機有著不可分割的關(guān)系,計算機無法獨立于算法而存在,算法卻不一定要依賴計算機才能存在,但離開了計算機,算法的實際作用就要大打折扣。以枚舉法為例,逐個考察了某類事件的所有可能情況,因而得出一般結(jié)論,這是枚舉法的基本教學(xué)要求,并在此基礎(chǔ)上構(gòu)造循環(huán)結(jié)構(gòu)。但是,如果不闡述枚舉法是通過犧牲時間來換取答案的全面性,學(xué)生也就沒有進一步思考的動力,包括思考計算機的速度優(yōu)勢,枚舉法的進一步優(yōu)化,等等。
計算思維的方法教育要體現(xiàn)計算的核心思想,而不能流于形式。以遞歸為例,遞歸是一個重要的概念,也是教學(xué)難點,一層層的嵌套調(diào)用會讓初學(xué)者犯暈。“從前有座山,山里有座廟,廟里有個老和尚給小和尚講故事:從前有座山,山里有座廟……”老師們通常都用這個古老的故事來幫助學(xué)生理解遞歸,這其實是對遞歸的一種誤讀,最多只是讓學(xué)生在形式上有想象,但會陷入到無限的循環(huán)之中,與計算學(xué)科解決問題能行性是不一致的。從遞歸所體現(xiàn)的核心思想來看:其一,反映了將一個復(fù)雜的問題簡單化處理方式,這反映了計算思維簡潔的特性;其二,每次簡單化后的問題表達方式與原方式是一致的,這也反映了計算思維簡潔的特性;其三,是有終止的,問題簡化到一定程度,一定是可以解決的,這反映了計算思維的構(gòu)造特性;其四,遞歸是一種漂亮的形式化表達,可以用有限的步驟描述實現(xiàn)近于無限功能的方法。最后需要說明的是,在計算學(xué)科遞歸應(yīng)用相當(dāng)廣泛,程序的自我調(diào)用只是其中之一。
結(jié)論
AlphaGo的出現(xiàn),不僅反映了計算機人工智能專家在機器學(xué)習(xí)方面的研究逼近人類智慧的努力,同時也引發(fā)了哲學(xué)家們對計算機發(fā)展到何等水平才能算是擁有意識與思維的討論。對于人類而言,在簡單記憶和機械計算方面明顯不如計算機的情況下,人們的學(xué)習(xí)重點不應(yīng)放在簡單知識的記憶和方法的模仿,而應(yīng)是通過知識與方法的學(xué)習(xí)形成思維與意識。
我們無法憑空開展計算思維教育,計算學(xué)科的基礎(chǔ)知識和基本方法是計算思維教育的基石,尤其是計算思維方法,是計算思維的一種外顯形式。所以,通過計算思維方法的教學(xué)是開展計算思維教育的有效途徑。但是,計算思維方法的學(xué)習(xí),不是計算思維教育的根本目標,而是應(yīng)該通過對方法的學(xué)習(xí),形成計算思維及相關(guān)意識。因此,在計算思維方法的教學(xué)中,一定要把握計算思維方法的特征和本質(zhì),而不是方法的形式。
在中小學(xué),與算法相關(guān)的方法教學(xué)已實施多年,計算思維的提出,對相關(guān)方法教學(xué)提出了新的要求。同時,依據(jù)不同學(xué)段學(xué)生的年齡心智特征,梳理計算思維的方法教育內(nèi)容,是一項有意義也有挑戰(zhàn)性的工作。