天天看點

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

大資料技術叢書 點選檢視第二章 點選檢視第三章 Greenplum:從大資料戰略到實作

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

]

馮 雷 姚延棟 高小明 楊 瑜 著

第1章 ABC:人工智能、大資料和雲計算

人工智能(Artif?icial Intelligence,AI)、大資料(Big Data)和雲計算(Cloud Computing)是目前最受關注的技術,業内常常取這三個技術英文名的首字母将其合稱為ABC。最近10年,資本和媒體對這三種技術的熱度按時間排序依次為:雲計算、大資料和人工智能。事實上,若按照技術出現的時間排序,結果正好相反,人工智能出現最早,大資料其次,雲計算則出現得最晚。由于每種技術都能應用于各個領域,是以人們可以從不同的角度分别解讀每種技術。作為同時在研發和使用這三種技術的機構負責人,作者将嘗試從大資料的角度解釋ABC的關系,并且闡述這三種技術對于企業、機構和人類社會的重要性。

1.1 再談雲計算

我們在《Cloud Foundry:從數字化戰略到實作》一書中曾詳細讨論過雲計算的定義、機理和技術驅動的新商業模式,這裡不再重複。作為P層雲技術的領先企業和研發團隊,我們也在該書中分享了關于P層雲存在的必要性和由其帶來的雲計算的新高潮的觀點。這裡将着重讨論自《Cloud Foundry:從數字化戰略到實作》出版至今P層雲的新發展以及對于大資料系統的影響。

1.1.1 雲計算由南向轉為北向

因為地圖中一般把上面标記為北,是以在戰略決策讨論中,一般把從下往上看的視角稱為北向,從上往下看的視角稱為南向。在軟體棧中,P層雲在I層雲的上面,是以由P層雲向I層雲看齊叫作南向,由I層雲向P層雲看齊叫作北向。在一個正确的時間點選擇一個正确的視角是戰略成功的關鍵。

在Cloud Foundry産品出現和Pivotal公司成立之前,整個雲計算行業是南向的。雲計算行業的研發集聚在I層雲,包括虛拟機、虛拟機動态遷移、網絡虛拟化、軟體定義的存儲乃至整個軟體定義的資料中心。分析師雖然提出了P層雲,但是大部分雲廠商把P層雲看作I層雲的一個工具集或者服務抽象層,沒有一個雲廠商真正釋出過一款獨立的P層雲産品能夠相容其他雲廠商的I層雲服務。

Cloud Foundry第一次作為一個獨立的PaaS雲産品由VMWare提出,但是早期也隻朝南向vSphere産品看齊。一直到Pivotal公司獨立于VMWare公司運作以後,行業才看到了Cloud Foundry成為一個獨立的PaaS雲産品的決心,之後又看到了Cloud Foundry在AWS、Azure和谷歌雲等各大雲廠商上的相容。即便如此,分析師在和作者交流的過程中還是會問:“前面的I層雲巨頭都有類似的一個P層雲的功能集,Pivotal公司作為一個雲計算的新玩家如何在PaaS雲市場勝出?”在作者看來,雖然同為PaaS雲産品,但Cloud Foundry的視角卻是和其他雲廠商的P層雲産品完全相反。這就像在PC興起的年代,雖然每個大型機廠商都有自己的作業系統,但是微軟作為一個新公司發明的DOS和Windows作業系統卻因為視角的轉變最終獲得勝出的機會。

從南向轉變到北向的雲計算行業趨勢在2018年變得明朗起來。Pivotal公司的Cloud Foundry産品在500強企業數字化轉型中不斷得到認可。Pivotal公司也在2018年4月成功登入紐交所,被分析師稱為“PaaS第一股”。更為明顯的迹象是各個雲廠商研發明顯由I層雲向P層雲遷移。P層雲的新技術Kubernetes和背後的CNCF(Cloud Native Computing Foundation)基金會的熱度空前高漲。前不久,作者應Linux基金會(也是CNCF和Cloud Foundry Foundation的母基金會)邀請參加開放雲服務産業專題讨論,探讨如何引導産業将I層雲做得更加開放和标準,以迎接P層雲的興起。Pivotal公司的Cloud Foundry和Greenplum系統作為P層雲上軟體的典範來驗證I層雲的開放和标準化程度。在Cloud Foundry和Greenplum出現的早期,主要由Pivotal公司和其社群來完成這兩個P層雲産品在各個I層雲上的适配。Linux基金會号召所有雲廠商開放和支援I層雲的标準,使得P層雲産品的适配更加容易和無障礙。這也充分說明了雲計算從P層雲向I層雲相容的南向視角開始轉變為由I層雲向P層雲适配的北向視角。

1.1.2 P層雲的精細化發展

Cloud Foundry和Pivotal公司的成功以及IBM大手筆收購Redhat的舉措,使得P層雲的熱度空前高漲。最近5年,Docker、Kubernetes和Cloud Foundry技術生态圈不斷擴充北向視角的P層雲,技術不斷細化,目前已經形成了如下涵蓋容器服務、應用服務和函數服務的架構:

  • 在容器技術層面,代表性技術主要有Cloud Foundry為主導的Garden容器技術和Docker

    容器技術。在容器編排技術方面,除了Cloud Foundry,以谷歌為代表的Kubernetes(縮寫為K8s)技術逐漸盛行。在Pivotal公司發行的Cloud Foundry 2.0中也融入了Kubernetes和Docker容器,并且聯合谷歌公司和兄弟公司VMWare釋出了Pivotal容器服務(Pivotal Container Service,PKS)。

  • 在應用服務技術層面,Pivotal Cloud Foundry 2.0把原來的1.0版的PaaS應用服務釋出成為Pivotal Application Service(縮寫為PAS),繼續為開發者提供透明的應用全生命周期管理。
  • 在函數服務方面,亞馬遜最近推出的Lambda服務最終成就了函數即服務(Function as a Servivce,FaaS)。在FaaS基礎上,AWS等雲計算服務以比伺服器更細粒度的服務和對應的計費被業界稱為無伺服器計算(Serverless Computing)。随後,谷歌在Knative的基礎上推出了谷歌的無伺服器計算。Pivotal公司在Knative的基礎上推

    出了Pivotal函數服務(Pivotal Function Service,PFS),PFS也是Pivotal Cloud Foundry 2.0的組成部分。

綜上所述,P層雲目前的技術構成可以用圖1-1表示。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

這裡之是以要剖析P層雲的層次,是為了幫助讀者了解大資料系統在雲中部署的實際情況和最新的趨勢。

1.1.3 大資料系統在雲中部署不斷朝南上移

大資料的技術發展動力和商業賦能将在後面的章節展開讨論,本節将讨論雲計算技術的發展對Greenplum和Hadoop這樣的大資料系統的部署的影響。在圖1-1中,大資料系統可以運作在雲計算資料中心的裸機硬體、I層雲或者P層雲的容器服務上。

1)将大資料系統直接運作在硬體上面。因為大資料軟體本身的機制,一個好的大資料系統能滿足雲計算定義:計算資源可以随業務增長的需求而彈性增長。具體細節将在下一節中闡述。國内的公有雲廠商為政府和企業提供專有雲服務,為其專門部署屬于他們自己的硬體環境。

2)将大資料系統運作在公有雲或者私有雲的IaaS上面。不少公有雲上的Hadoop服務就屬于這類情況。

3)将大資料系統運作在PaaS雲的容器服務上面。截至本書完稿時,Pivotal和阿裡雲等主流雲計算廠商都認為将Greenplum運作在容器層可以有效減輕大資料系統的運維工作。是以,不少公有雲服務商喜歡把大資料系統劃為P層雲服務。

現在,主流雲計算廠商都支援以上三種形式的大資料系統的部署。當企業将大資料系統部署不斷從硬體和I層雲向北遷移至P層雲的時候,雲計算系統管理和排程的資源粒度更細,大資料系統部署的成本優勢和靈活程度也不斷提升。另外,因為P層雲的容器的标準化,使得大資料系統更容易實作跨雲部署。這種北向遷移的變化表面看沒有什麼特别之處,事實上這标志着大資料系統開始走向平民化。在後面的章節會談到,在算力和存儲資源提升的基礎上,大資料系統模型的準确程度也有所提升。在雲計算出現之前,小企業投資和管理上百台伺服器組成的大資料系統是不敢想象的。公有雲按資源使用量收費的模式,使得小企業運作大資料系統成為可能。例如,不少企業在一個季度結束的時候,在公有雲上申請幾百台伺服器和内置的大資料服務,将這些計算資源開啟數周來計算自己的企業資料,以獲得對自己企業的商業洞察。P層雲帶來的更加精細的計費方式和更加标準的服務方式,使得企業可以在整個網際網路上快速獲得大資料系統營運所需要的資源。雲計算從早期I層雲的跑馬圈地轉變到P層雲的應用和分析結果導向的精耕細作,這種精益化運作意味着這項技術走向成熟。

1.2 大資料

雲計算是個概念清晰的新技術,相比之下,大資料則是在量變到質變的過程中突然火爆起來的。大資料可以看作是一系列技術和商業實踐的集合,是以業界對于大資料的定義可謂豐富。如同在《Cloud Foundry:從數字化戰略到實作》一書中解讀雲計算那樣,作者仍将通過剖析技術背後産業變遷的驅動力的方式來解讀大資料。

知名咨詢公司Gartner指出,數字宇宙在不斷膨脹。谷歌首席經濟學家範裡安也指出:“從人類文明誕生到2003年,一共創造了5ET的資料,而現在幾乎每兩天就能創造這麼多資料。”早在2012年,作者和易安信(EMC)聯邦的大資料産品上司人讨論PC時代如何向雲計算時代跨越時,就談及大資料産業發展趨勢以及我們應該建立怎樣的技術。

1.2.1 從CRUD到CRAP

在PC時代,計算機主要用于流程的自動化,因為在流程的各個環節都會産生大量事務(Transaction),計算機的資料系統主要用于對這些事務記錄進行操作。假設我們要為一所學校建立一個學生管理系統。當一個學生被錄取,系統就需要記錄這樣一個事務,為此需要建立(Create)一條學生記錄,記錄學生的一些資訊,例如身份證号、性别、年齡、籍貫和錄取分數等。當該名學生到學校報到的時候,我們可能需要更新(Update)相關的記錄(比如,學籍管理字段用于記錄學生報到時間,此時就需要把這條字段更新到最新的報到日期)。如果報到後有人獲得授權查詢該學生的錄取分數,則可以從資料庫系統中擷取(Retrieve)該學生的記錄。因為系統的存儲容量有限,是以當系統飽和的時候,就會删除(Delete)一些過去的記錄。簡言之,記錄的上述操作可歸結為建立(Create)、擷取(Retrieve)、更新(Update)和删除(Delete)的組合,取英文首字母的縮寫叫作CRUD。關系資料庫管理系統(RDBMS)的關鍵就是保證事務操作的原子性(Atomicity)、一緻性(Consistency)、隔離性(Isolation)和持久性(Durability),取四個英文單詞的首字母叫作ACID屬性(我們會在後面詳細介紹ACID屬性)。目前,讀者隻要記住ACID是保證記錄的CRUD操作不出現任何錯誤的重要性質即可。這個工作聽上去容易,但考慮到多個使用者産生的事務同時操作一條記錄,以及像銀行這樣要確定任何一筆事務都實作零差錯(不然使用者賬戶餘額可能出現差錯)的情況,事情就不那麼簡單了。Oracle資料庫、IBM的DB2資料庫和微軟的SQL Server資料庫就是靠卓越的ACID能力成為PC時代偉大的産品。

随着資料記錄的數量與日俱增,一些企業開始對曆史記錄進行資料挖掘,以擷取有價值的資訊。比如,美國的學校非常關心自己的生源和學生就業之間的關系。如果說GRE分數越高的學生就業越好,那麼是否應該提高錄取的GRE分數?反之,是否可以在錄取條件中降低GRE的錄取分數?這些帶着預設問題的報表操作就叫作商業智能(Business Intelligence,BI),它其實和人工智能開始接近。在BI上嘗到甜頭的企業,在清理事務資料系統的記錄的時候會把它們導入到另外一個叫作資料倉庫(Data Warehousing)的資料管理系統,以備後續BI操作之用。此外,如果在事務資料系統中運作BI操作,會導緻事務資料系統性能急劇下降,進而影響正常業務應用。舉個例子,一個學生入學的時候,教務處希望更新該學生學籍,而前面一個BI操作正在生成所有畢業生的GRE成績和就業機關起薪的報表,那麼更新學籍的操作就會等待很長時間才能執行。是以,需要建立一個專門針對BI的資料倉庫系統以便讓事務系統的運作不受幹擾。當事務系統接近存儲極限的時候,可以把部分老資料導入到資料倉庫,以免丢失有價值的曆史資料。由此,資料倉庫系統出現了兩個很有意思的操作:曆史資料追加(Append)操作和報表處理(Process)操作。當然,資料倉庫系統依然需要建立(Create)和擷取(Retrieve)操作。但是,因為資料倉庫中的資料記錄都是有價值的,是以資料倉庫中的删除(Delete)操作會減少,即使執行删除,記錄也會被備份到更加低速、廉價的存儲媒體上而不是真正被删除。此外,更新(Update)操作在資料倉庫裡面也被減少,因為曆史記錄是有價值的,是以當一條記錄被更新時候,系統隻是追加了一條新的記錄,而不是将原記錄替換為新記錄。例如,使用者每次更新密碼的時候,系統會在資料倉庫系統裡面追加老密碼的記錄,以備後續檢查(預防使用者重設密碼或者在使用者忘記新密碼的時候作為額外途徑進行認證)。因為曆史記錄的價值在BI系統中被逐漸發現,是以資料系統的建立(Create)、擷取(Retrieve)、更新(Update)和删除(Delete)為主的CRUD操作慢慢轉為建立(Create)、擷取(Retrieve)、追加(Append)和處理(Process)為主的CRAP操作(CRAP是四個操作的英文首字母)。伴随着資料倉庫技術的發展帶來資料量的上升和資料處理速度提升的要求,工業界對于資料處理技術的要求也不斷提升,于是大規模并行計算(Massively Parallel Processing,MPP)技術應運而生。

1.2.2 MPP(大規模并行計算)

原來專注于事務的資料庫管理系統主要涉及針對單條記錄的CRUD操作。因為資料倉庫的出現,BI(甚至早期的AI)算法開始整表整表地掃描所有資料。為了提高資料的處理速度,在PC時代人們不再挑戰單個大型機的性能極限,取而代之的是利用一個PC叢集來提高計算性能。人類面臨複雜問題的時候,分而治之是常用政策,MPP是典型的分而治之政策的産物。為了幫助讀者了解分而治之的政策,我們來解析一個快速排序算法的設計,無論讀者是否有計算機專業背景,了解這種方法背後的設計原則都是有益的。

快速排序算法問題陳述:假設給定任意一組無序的和不定數量的數,例如{0,50,24,9,23,7,35,17},我們要讓計算機找到一個步驟(算法)将這堆數從小到大依次排列。

快速排序算法描述:采用分而治之政策的快速排序算法就是在中間位置挑選一個數(即樞數,英文為Pivot),比樞數小的數移到其左邊,比樞數大的數則移到其右邊。然後,依次對左邊的一組數和右邊的一組數分别再進行快速排序。如果我們挑選23作為第一趟排序的樞數,那麼第一趟排序後的結果為:

{0,9,7,17},23,{54,24,35}

讀者可以自己嘗試對左右兩組數繼續做第二趟排序。注意,這時,本來對一堆數排序變成了對兩堆數分别排序,第二趟排序後就有四堆數需要排序,這就是一個不斷分而治之的過程。

同樣地,并行計算也不是新理論,隻是在BI業務場景下它有獨特的适用之處。随着資料量越來越大,BI業務的結果傳回速度越來越慢。作者從幾個世界級公司的大資料團隊那裡了解到,得出一個市場活動的報表常常需要幾天乃至數周。可見,提高處理(Process)的速度已成為關鍵。MPP的分而治之政策就是把資料均勻分布到一群PC上,然後讓每台機器同時工作進行處理。舉個簡單的例子,我們要找出雙十一活動中消費金額最高的顧客給予獎勵。假設我們把雙十一的消費記錄導入資料倉庫并均勻分布在資料倉庫的10台PC伺服器上。隻要同時對這10台伺服器上的資料進行掃描,每台伺服器分别傳回消費金額最高的顧客記錄,然後對比這10台伺服器各自傳回的消費金額最高的顧客記錄,最終找到獲獎的顧客。這種方式的掃描速度接近單台伺服器速度的10倍。如果企業還是覺得這個速度不夠快,那麼可以把資料倉庫擴大到100台等同的PC伺服器,速度可以再快10倍。當然,實際情況沒有這麼簡單,因為在這個例子中,10台伺服器隻要交換一次資料就可以解決問題。喜歡挑戰的讀者可以考慮一下如何計算消費記錄的中數,就會發現10台伺服器之間交換的資料量要大很多。當然,現在Greenplum中有大量的技術可以用于處理這些複雜場景下的系統性能。熱愛技術的讀者可以在後續章節領略到Greenplum中大量展現匠人精神的性能設計方式。一個技術産品是一系列設計藝術的集合,它需要人才、時間群組織文化的沉澱。

随着大資料的爆發,産業趨勢拉動資料倉庫技術朝大資料平台的方向發展。産業需要資料倉庫産品擁抱開源、雲計算和人工智能等新趨勢。Greenplum和Teradata等夥伴們一直在演進,Greenplum因為Pivotal的第三平台戰略的要求,演進速度非常快,這些将在後續章節闡述。值得一提的是,市場迫切需要一個資料倉庫以外的MPP資料引擎,以處理資料倉庫結構化資料以外的半結構化資料。典型的場景是Google的搜尋,它需要處理大量半結構化的Web文本。為此,Google提出了MapReduce并行計算和Google檔案系統(Google File System,GFS)。Google雖然發表了論文,但是并沒有提供軟體和源代碼。于是,社群裡熱心的粉絲們啟動了一個Hadoop項目,實作了類似的Hadoop MapReduce和Hadoop檔案系統(Hadoop File System,HDFS)。Greenplum為了支援Hadoop社群,把Greenplum的并行SQL執行引擎和HDFS結合,建立了Hadoop生态内的HAWQ項目。HAWQ的研發工作主要在Pivotal中國研發中心内部完成,并且在2018年成為Apache的頂級開源項目。

除了結構化資料和半結構化資料的MPP,Pivotal中國研發中心還對其他特定場景資料的并行計算進行了探索。Pivotal上海研發團隊曾發起Open-MPI項目,探索基于開放高速消息傳遞接口的并行化以計算社交網絡圖譜資料。這樣的探索最終不一定都會取得商業上的成功,但是對于一個意圖成為MPP計算行業意見領袖的機構來說是必須的。基于這種探索精神,Greenplum和HAWQ産品創造了行業中很多從無到有的創新點。

1.2.3 大資料系統

在Greenplum和Hadoop出現之前,資料倉庫和BI有兩大局限性:一是系統的成本太高;二是BI需要結合人為判斷才能産生商業意義。

首先來說成本的問題。假設一個四年制高校每年有8萬名在校生(即每年有2萬名新生),那麼事務系統隻要存儲8萬個學生相關的記錄。但是,為了保留過去20年間所有學生的記錄,資料倉庫系統需要保留過去16年畢業生的32萬個記錄。在存儲價格昂貴的PC時代(讀者可以回憶一下,當時容量為32MB的可以下載下傳8首MP3的U盤要賣200多元),成本數倍于業務系統但又不是剛需的資料倉庫系統對于大部分企業來說是高階玩家的裝備。更為糟糕的是,不少早期的資料産品建立在封閉的硬體和軟體之上。硬體方面,資料倉庫都有專用存儲系統,這些存儲的價格是通用磁盤或者快閃存儲價格的數倍到十餘倍。同時,軟體系統也是封閉的,圍繞軟體系統開發更多BI工具或者高階的AI算法非常困難。加上當時BI應用普遍被認為非剛需應用,使得大部分企業很難看到投入産出比(ROI),導緻進一步禁锢了大資料的價值。

其次來看BI需要人為判斷的問題。BI生成了很多報表,但是這些報表要靠公司的決策者來解讀。依靠直覺的人為判斷會浪費決策者大量時間。盡管決策者擅長分析解讀資料并工作勤奮,但BI的真正問題在于隻有在決策者提出一個問題後才會生成報表。例如,一名校董提出希望了解學生的GRE成績和就業薪水的關系,資料倉庫工程部門才會生成相應的報表。但是,決策者們更希望計算機的資料系統能夠覆寫他們的盲點。如果一個計算機系統能夠自動發現GRE分數高和就業起薪高的人群在二維空間分布圖上聚集度高的規律并能自動提醒決策者,那麼這樣的資料倉庫系統才能真正幫助到決策者(實際上,這裡隐含了一個叫作聚類的非監督學習的人工智能算法)。是以,産業界開始由BI向AI遷移,但是AI比起BI需要更多的算力、更多的廉價資料存儲和更開放的軟體系統。

開源Hadoop和Greenplum解決了這兩個進入大資料時代的絆腳石。首先,Hadoop和Greenplum是開放源代碼的,這使得專用的資料倉庫可以接受更多高階算法的改進。例如,技術人員在Greenplum上面建立了一套叫作MADLib的人工智能和機器學習的庫函數,企業可以在自己的資料上面應用很多高階的機器學習算法,其中包括我們上面提到的非監督學習的算法,這意味着大資料系統可以找出更多靠人類直覺無法發現的智能和關聯關系。MADLib最早是由Greenplum和加州伯克利大學聯合開發的,Pivotal成立以後,将MADLib

完全開源給Apache,使其于2017年成為Apache的頂級開源項目。同樣,Hadoop也建立了一套機器學習的庫函數Spark ML,它的邏輯和MADLib幾乎是平行的。

其次,Hadoop和Greenplum都建立在通用的伺服器存儲上,也就是說,大資料系統的存儲和讀者家用電腦的存儲是一樣的。那麼,Hadoop和Greenplum是如何利用普通硬碟達到專用存儲的可靠性和性能的?無論是普通硬碟還是專用儲存設備,其本質都是通過相關的軟體和硬體備援來實作存儲的性能和可靠性的。Hadoop和Greenplum隻是把這些軟體的邏輯上移到伺服器層次(Tier)。因為大資料系統需要對資料整遍整遍地讀取,硬碟很容易損壞,是以Hadoop和Greenplum采用備援方式解決這個問題,即把一個資料塊同時拷貝在2~3台伺服器上(有些沒有安全感的公司甚至拷貝到5~7台伺服器上)。如圖1-2所示,檔案塊1、2、3同時在三台伺服器上存有兩個拷貝。伺服器A上有檔案塊1和3,伺服器B上有檔案塊2和3,伺服器C上有檔案塊1和2。這樣做的好處是,任何一台伺服器損壞時都不必擔心,因為它上面的檔案塊必然在其他兩台伺服器上有備份。假設伺服器C損壞,其硬碟上的檔案塊1和2丢失,此時插入一台新的伺服器D,就可以從伺服器A上恢複檔案塊1,從伺服器B上恢複檔案塊2,最終伺服器D重構了檔案塊1和檔案塊2,進而完美取代了原來的伺服器C。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

資料備援的另一個好處就是可以實作資料本地性(Data Locality)。并行計算的一個關鍵瓶頸是資料移動,而通過資料備援可以實作在本地移動資料的效果。仍以圖1-2為例,如果一個計算任務需要掃描檔案塊1,而伺服器A正忙于其他任務。這時候因為伺服器C上有檔案塊1的備援,就可以把這個計算任務分派到伺服器C。假設沒有伺服器C上的備援備份,那麼隻能從伺服器A上拷貝資料塊1,在這種情況下,有大量時間不是用于計算檔案塊1,而是等待資料塊1從伺服器A拷貝C,造成大量的時間浪費。

因為Hadoop系統和Greenplum系統的開源和開放以及使用通用硬體建構大資料系統,進而極大降低了大資料系統建設和使用的門檻。加之很多學術機構和頂級公司已經用它們的專用系統通過大資料在機器學習和人工智能上取得成功,強烈的示範效應使大資料風靡全球。大部分中大型企業都開始考慮通過大資料系統增強自己的競争力。

1.2.4 當大資料遇到雲計算

前面談到,大資料系統雲上北向遷移的趨勢很難阻擋。雲計算除了帶來更低的營運成本,也帶來了更低的存儲價格和可以伸縮的計算資源。這一趨勢的推動力來自第三代平台,而第三代平台是CPU、存儲和網絡的産能不斷更新過程中由量變到質變的産物。但是,大資料系統上雲也有兩個核心的技術問題要解決:1)提供适應于雲計算的運維環境;2)按照雲上存儲環境進行适配。

首先,我們來看雲計算對于大資料運維的影響。一個軟體系統運維的簡便性與否會極大影響軟體的推廣。公有雲的一個優勢就是把系統運維的複雜性留給了雲廠商,而給使用者提供了一個不需要專業人員即可運維的環境。以淘寶網為例,淘寶店主不需要太多教育訓練就可以在淘寶網上開設并營運自己的網店。相比之下,傳統線下的企業大資料系統則需要專業團隊來維護,而Hadoop系統的運維尤其複雜。對于500強企業來說,可以招聘一個運維團隊來運維這個系統;但對于中小企業來說,運維複雜性帶來的成本增加遠大于軟體許可費下降帶來的成本節省。Gartner在2017年釋出的技術成熟度曲線指出,Hadoop系統運維的複雜性将使得Hadoop系統在到達“生産成熟期”之前直接過時。當大資料遇到雲計算以後,獲得了一個新的契機,那就是可以通過雲上可運維性的改善讓中小企業像運維淘寶網店一樣運維自己的大資料系統。類似于Snowflake的一批資料産品開始朝雲上可維護性這個方向發力,開源Greenplum在阿裡雲等公有雲平台上的釋出也降低了産品部署和運維的複雜性。

其次,我們再看雲計算存儲對于大資料的影響。雲上的存儲分為塊(Block)存儲和對象(Object)存儲。前者通常依賴Dell EMC這樣的存儲系統保障,它的優點是快速和可靠,缺點是成本高昂。對象存儲(例如亞馬遜的S3)的特點是價格低廉,但計算通路速度相對較慢。在《Cloud Foundry:從數字化戰略到實作》中我們說過,雲計算通過軟體和硬體的分離實作了軟體的永生能力,而傳統的大資料系統可以直接通路本地的存儲。是以,雲上的共享塊存儲環境與傳統大資料系統的本地存儲環境存在一定沖突。大資料系統上雲需要解決計算主體和存儲主體分離的問題。另外,雲上的對象存儲因為廉價、可靠等優勢存放了各種不同的資料源。除了半結構化的文本資料,也有大量的圖檔、音頻和視訊資料。是以,大資料系統上雲也要支援對更多資料源的處理。在雲上,Greenplum提供了新技術來通路S3檔案系統内的半結構化資料,在後面的章節中将讨論這一點。對于雲上的圖檔和視訊等資料,因為存儲和計算系統需要對相應的機器學習算法進行特殊調優,是以催生了Google的TensorFlow等産品。

1.3 人工智能

人工智能是計算機科學的一個分支,它的主要研究目标是用計算機程式來表示人類智能。這個詞最早是在1956年的達特茅斯會議上正式提出的。在達特茅斯會議正式提出“人工智能”這個概念之前,圖靈和早期的計算機科學家一般用“機器智能”這個詞。需要強調的是,人工智能是建立在計算機之上。不管人工智能應用多麼美妙和複雜,在圖靈眼裡都是圖靈機上的一個程式(或者叫作可計算數,具體參考1.5節)。人工智能課程的主要目的是學習建立在模型之上的算法。這些算法和其他計算機領域的算法并無太大差別,隻是這類算法專注在如圖1-3所示的智能主體(Intelligent Agent)裡面的模型。在人工智能領域,計算機科學家們試圖建立模型使得智能主體能夠觀察周圍環境并做出行動,就像人類的行為那樣。

最近5年,由于智能主體模型在無人駕駛、聊天機器人和計算機視覺識别等應用的準确率的提升,人工智能的應用熱度也随之提升。AlphaGo等棋類對弈讓人工智能被公衆津津樂道,因為計算資源和計算能力的提升,在限定時間内,對弈模型比人類棋手更具優勢,這也引發了很多關于人工智能的讨論。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

1.3.1 模型化方法

要了解AI和智能主體,我們要先了解模型化的研究方式。模型之是以讓人覺得神奇,是因為很多模型本身是基于經驗的,很多時候我們并沒有深究實體和計算機等領域的很多模型背後的邏輯。以我們熟知的自由落體運動為例,我們可以為球體在斜塔自由下落建立一個數學模型。在亞裡士多德的年代,這個模型被認為是和物體的品質有關系的,是以建構的模型可能如下:

h = c + α×m + β×t + γ×t2

其中,h是下落高度,m是物體品質,c,α,β,γ是未定參數,t是時間。

其實,模型的構造是門藝術,依賴于構造者。但是,亞裡士多德并沒有驗證他的模型。按照現在的科學方法,我們至少需要四組以上(h,t)的測驗資料來校準四個未定參數。如果資料足夠準确,我們會發現c = 0,α = 0,β = 0,γ≈5。讀者可能會問,為何不構造一個和t3相關的系數?答案還是因為模型是門藝術,跟構造者的直覺有關。例如,伽利略認為自由落體的下降時間和品質無關,是以他會直接從模型裡去除α×m這一項。讀到這裡,讀者可能已經感覺到,如果我們測試得到的(h,t)的資料足夠多,不管哪個模型的參數調校出來的公式都接近h = 5t2。假設讀者沒有安全感,在模型裡面加入了其他變量,隻要測試足夠多的資料,仍将發現這些變量的系數都接近于0。通過這個例子,讀者也可以直覺感受到“大”資料量有助于提高模型的準确度。

到此為止,可能很多人滿足了h = 5t2的經驗公式。但是,仍有好奇的讀者會繼續追問為什麼結果是這樣?背後的邏輯是什麼?在後面關于人與AI的讨論中,作者會區分人的兩類知識:經驗和邏輯。目前為止,這隻是一個經驗知識。但牛頓對這個問題深究了下去,最終奠定了牛頓三定律和萬有引力在内的古典力學體系。學過中學實體的讀者都知道,自由落體背後的邏輯是因為距離(h)、加速度(a)和時間(t)之間存在以下動力學關系:

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

另外,根據萬有引力定律

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

,加速度

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

在牛頓力學體系内,我們解釋了經驗公式

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

,并且可以精确計算出加速度(a)。站在牛頓力學的高度,我們可以通過邏輯推斷出前面的自由落體模型。但是,我們很快又發現萬有引力F = GMm/r2仍舊是個經驗模型,目前并沒有一個更高層次的模型可以通過邏輯推斷出萬有引力模型。就這樣,在一層層邏輯化自己的經驗知識的過程中,聰明的讀者會把自己的知識拓展至已知知識的邊界。在已知知識邊界外的創新,可以用來邏輯化很多我們現有的經驗知識。當然,還存在另外一種情況,邊界外的創新也可能會指出經驗知識的局限性,例如麥克斯韋電磁學指出了光速不依賴參考系,進而幫助我們發現已知的牛頓力學的不足。

了解了模型化的科學方法以後,讀者就很容易了解AI就是圍繞智能主體建立模型,在這些形形色色的模型背後,有着不同的派别和研究方法。在推理(Reasoning)背後,建立了一種叫作目标樹(Goal Tree)的模型;在機器學習背後,則模拟人的大腦的神經元放電機制建立了一種叫作神經網絡(Neural Networks)的模型。考慮到最新一輪AI的熱度很大程度上是由神經網絡和深度學習帶動的,是以我們在這裡簡單介紹一下神經網絡模型的設計靈感,讀者可以從中體會科學模型背後的藝術。

神經網絡用于模拟人的神經元的決策機制,是以我們先來看一下人的神經元的結構。人的單個神經元如圖1-4所示,樹突(Dendrite)

會接受信号輸入,然後在軸突(Axon)産生一個脈沖輸出到神經末梢(Axon Terminal),進而輸入給下一個神經元。我們可以認為人腦是神經元的集合,雖然無數神經元的協同工作涉及無數細節,但是人工神經網絡模型隻要抓住一些基本的細節就夠了。

在圖1-5中,我們對這個神經元進行簡單的模型模拟,建立一個接受兩個特性(X1,X2)的輸入後産出一個輸出的人工智能神經元。為幫助讀者更直覺地了解這個模組化過程,我們不妨把X1設為蕃茄的顔色:紅色為1,青色為0;把X2設為蕃茄的硬度:軟的為1,硬的為0。紅色并且已經軟的蕃茄是成熟的,可以食用(可否食用作為輸出)。我們把可以食用記為1,不能食用記為0。我們的目标是設計一個數學模型來模拟和訓練這個神經元以實作識别成熟可食用的蕃茄的目标。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

我們認為這個神經元對顔色輸入敏感,是以給X1配置設定一個較大的權重(Weight1),不妨記為50;這個神經元對于硬度的敏感性稍弱,是以X2的權重(Weight2)記為40;這個神經元隻有在輸入信号高于門檻值(Threshold)60的時候才開始放電并輸出脈沖(1),否則保持安靜(0)。為此,我們選擇S函數(也稱為Sigmond函數)作為一個神經元工作函數:

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

讀者可以為兩個特性分别取不同的輸入值,當兩個輸入變量都為1的時候,輸出大體為1。兩個變量在其他輸入情況下,輸出接近0。我們根據已知的輸入和輸出訓練了這個模型的參數:Weight1、Weight2和Threshold。這個訓練好的神經元基本能達到識别可食用蕃茄的目的。讀者可能會好奇為何要給輸入乘上權重(Weight1和Weight2)?為何要選擇一個門檻值(Threshold)?這是為了更好地模拟生物神經元的工作原理。讀者可能還會好奇為何選擇Sigmond函數作為神經元函數?簡單地說,這是為了友善計算調優參數并減少計算工作量。具體來說,1974年,Paul Werbos在他的哈佛大學博士畢業論文中選擇了這個神經元函數,在神經網絡模型中首先使用了反向傳播算法。在此之前,人工神經網絡因為計算量巨大,在闵斯基以後的很長一段時間内停滞不前。神經網絡在20世紀80年代出現了一個小熱潮,但是到20世紀90年代熱度又下降了很多,甚至麻省理工學院的人工智能課程中差點删除神經網絡部分的内容。2012年,多倫多大學的Geoffrey Hinton教授使用了有6000萬個參數的神經網絡在圖像識别中取得巨大成功,這當然離不開當今時代的算力的提升(在1.4節中會繼續讨論雲計算的出現使得原來無法想象的神經網絡訓練變成可能)。Hinton也是以被認為是深度學習的創始者,并成為谷歌大腦研發的關鍵人物(也曾任教于卡内基·梅隆大學)。至于如何把圖像處理後輸入到擁有數以萬計神經元的網絡進行識别,讀者可以參考Hinton的工作。

因為在圖像識别、語音識别、文本翻譯等領域的突破,出現了最近一輪建立在神經網絡上的機器學習和深度學習的熱潮,對AI我們應該持有什麼樣的預期?為此,我們有必要回顧一下AI的曆史。曆史總是會重複自己,回顧AI曆史能夠幫助商業決策者做出正确的預期和決策。

1.3.2 AI的發展史

自遠古時代,人類一直希望能夠創造一種類似于人類智能的機器,将人類從乏味的重複勞動中解放出來。直到1936年,計算機科學的鼻祖圖靈發表了名為《論可計算數》的論文,機器模拟人類智能的哲學話題才轉變成一個可以像數學學科那樣被論證的課題。在論文中,圖靈構造了假想的機器來模仿人類。電影《模仿遊戲》講述的就是圖靈如何構造假想的機器(計算機)來模仿人類的故事。在那個時代,人工智能的概念還沒有提出,人們更多地使用“機器智能”這個詞來讨論計算機帶來的智能。簡單地說,圖靈的論文證明了機器可以模仿人類智能,是以今天的無人駕駛、聊天機器人、棋類對弈和計算機視覺識别等應用都是圖靈預見的,雖然他那時并沒有足夠的硬體條件測試這些應用。讀者如果想深入探讨計算機是否可以模仿所有人類的活動,可以參考1.5.1節中關于AI和人的讨論。

在圖靈提出圖靈機後,多個機構便開始設計真正意義上的遵循通用圖靈機模型架構的存儲程式計算機(Stored-program Computer)。雖然第一台存儲程式計算機(後文稱作現代計算機)是誰先發明的至今仍有争議,但是影響較大的是馮·諾依曼提出的EDVAC(Electronic Discrete Variable Automatic Computer)。馮·諾依曼在後來也确認現代計算機的核心設計思想是受到通用圖靈機的啟發。現代計算機發明以後,各種應用如雨後春筍一樣蓬勃發展,但是真正把人工智能作為一個應用方向提出來還是在1956年的達特茅斯會議。

在20世紀40年代末現代計算機被發明後,從20世紀50年代開始,各個領域都開始關于“思考機器”(Thinking Machines)的讨論。各個領域的用詞和方法的不同帶來了很多混淆。于是,達特茅斯學院(Dartmouth College)年輕的助理教授麥卡錫(John McCarthy)

決定召集一個會議澄清思考機器這個話題。召集這樣的會議需要贊助,聰明的麥卡錫找到了他在IBM公司的朋友羅切斯特(Nathaniel Rochester)和在普林斯頓大學的朋友闵斯基(Marvin Minsky)以及大師香農一起在1955年寫了一份項目倡議。在倡議中,他使用了人工智能(Artif?icial Intelligence)這個詞,避免和已經有的“思考機器”一詞混淆。這裡值得一提的是闵斯基,麥卡錫和闵斯基後來在麻省理工學院上司了AI實驗室,成就了麻省理工學院在人工智能領域首屈一指的地位。會議在1956年舉行,這裡必須提到另外兩位短期的參會者,來自卡内基·梅隆大學的紐厄爾(Alan Newell)和司馬賀(Hubert Simon)。他們雖然隻呆了一個禮拜,但是他們的報告中公布的一款程式“邏輯理論家”(Logic Theorist)代表了人工智能的另外一條路線。因為紐厄爾和司馬賀的奠基工作,卡内基·梅隆大學成為人工智能的另一個重鎮。至于其他參會人員和他們之間的趣聞,讀者可以參考《東方早報》在人工智能60周年的報道以及相關的著作。

1.3.3 對AI應用的正确預期

達特茅斯會議的意義在于确立了“人工智能”(AI)作為計算機科學的一個研究領域,自那以後,AI在機器視覺、自然語言處理、無人駕駛等領域取得了長足發展。但是,“人工智能”這個概念常常被過度消費。過去,美國的學者用這個概念來申請政府研究經費,今天有不少公司用這個概念來從資本市場募資。但實際上,AI的進展并不像很多人預言的那樣樂觀。就棋類對弈而言,司馬賀在20世紀50年代末就預言計算機能打敗人類,但沒有實作;20世紀60年代末,麥卡錫打賭說計算機将在10年内打敗人類,結果他輸了;國際象棋程式深藍在“限定時間内”勝出人類直到20世紀90年代末才實作。圍棋程式AlphaGo在“限定時間内”勝出人類則是在2017年實作的。闵斯基在20世紀80年代末預言,二十年内可以解決自然語言處理問題,時至今日,各種AI應用在自然語言處理方面尚有極大差距。如今的“無人駕駛”在商用中實際上更多起到“輔助駕駛”的作用,因為在實際的使用中仍出現過意外情況,從保證行車安全的角度,尚不能實作真正的“無人駕駛”。

人工智能最近一次的持續升溫是被包括大資料和雲計算在内的軟硬體技術持續發展使得很多應用得以落地而驅動的(我們将在1.4節中讨論ABC的關系)。從曆史經驗來看,也許是由于大衆媒體和科幻電影的影響,AI界有種過于樂觀的傾向。但實際上,我們對于AI模型的精度應該抱有十分謹慎的态度,因為我們建構的神經網絡在内的很多AI模型本質上還是經驗模型,并不是一個嚴格的邏輯證明。這些模型的精度比起古典力學模型精度還差了很多。即使是古典力學模型,在微觀量子世界也是失效的,是以對于這些模型的使用範圍也要持謹慎态度。當然,我們也不能對建立在經驗模型上的AI應用持過度懷疑的态度,因為我們的大部分知識來自經驗,事實證明,這些知識也是實用的。是以,AI是一個在不斷前進的領域。

人工智能另外一個層面的讨論是機器能否超越人類?這個問題是令我們對于人工智能感到不安的原因。從計算機發明的第一天,圖靈和其他偉大的數學家們就已經對這個話題進行過深入的讨論。與大衆傳媒不同,數學家和計算機科學家們對這個問題的讨論是深層次的數學和邏輯層面的讨論。1.5節将着重讨論AI和人的關系,有決心探究這一問題的讀者可以參考這一節。

1.4 ABC之間的關系

前面已經解釋了ABC的概念,這裡我們來讨論一下ABC之間的重要内在關系以及這些内在關系帶來的可以賦能于商業的巨大技術産能。從技術角度上看,ABC之間有以下兩層重要關系:

1)大量資料輸入到大資料系統,進而改善大資料系統裡建立的機器學習模型。

2)雲計算提供的算力使得普通機構也可以在今天用大資料系統計算大量資料進而獲得AI能力。

先看第一層關系。谷歌研究院的F. Pereira、P. Norvig和A. Halevy發表了一篇文章《資料的奇效》,解釋了如何通過大量資料提高機器學習模型的準确率。早在谷歌之前,微軟研究院的Michele Banko和Eric Brill在他們的論文《擴充到非常非常大文本來去除自然語言歧義》中,展示了使用海量資料後各個機器模型的準确率都有大幅度提高,如圖1-6所示。這一結論為機器學習和人工智能的問題求解指出了一個新方向:用大量資料和大資料計算來提高人工智能。對比一下自然語言翻譯在最近10年因為利用大資料和計算所帶來的進展,讀者就能感覺到這種力量。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

再看第二層關系。雲計算帶來的巨大好處就是提供商品化的計算資源,以前隻有政府機構和大型企業才能擁有的巨大計算資源,現在可以被一個創業公司所擁有。這個從量變到質變的過程使得我們可以重新審視一些計算機行業的難題。計算資源的豐富使得大資料技術能夠以更低的門檻被使用。雲計算平民化了大資料技術,使得大資料技術被企業廣泛采用,企業也利用大資料養成了保管資料的習慣,把資料當作未被開采的資源。大資料的普及給人工智能的分支—機器學習帶來了意想不到的驚喜。

綜合前面讨論的ABC的内在含義,目前的機器學習、人工智能可以朝着以下兩個方向前進:

1)設計新的機器學習模型,在前人的模型上有所創新,改進模型效果。

2)使用已有的機器學習模型,但是利用前人所沒有的資料量和雲計算帶來的計算能力來改進模型效果。

谷歌公司的Norvig曾經說過“我們沒有更好的算法,但是有更多的資料”。顯然,Norvig鼓勵按第二種方法進行創新,當然,這不意味着用第一種方法創新不重要。但需要指出的是,第一種方法的創新門檻要遠高于第二種,除了世界頂級的機構,普通機構很難擁有相應的資金、人才及配套的管理和文化來支撐第一種創新方法。第二種方法對于傳統的機構也是可以重複和實踐的,按照已經有的方法論、成功案例和人才教育訓練可以實作基于大資料和機器學習的高階數字化轉型。

前面讨論的ABC的關系可以總結成圖1-7。雲計算從量變到質變帶來前所未有和平民化的計算資源。企業和網際網路在數字化應用方面産生了大量的資料。這些資料和計算能力使得大資料技術普及到普通機構,而這些機構利用大資料來建立和改善現有的機器學習模型,帶來更好的人工智能成效。

到目前為止的讨論嚴格限制在技術的演進上。下一章将在商業層面繼續讨論圖1-7中大資料、模型和應用之間的關系,着重分析商業決策者如何利用在大資料系統上的AI機會來改善自己的數字應用,以鞏固競争優勢。

AI帶來的社會影響可能超過前三次技術革命。随着科技和商業不斷推動AI技術前進,AI和人之間的關系是技術領袖、商業領袖和政策制定者們不得不思考的問題。前面關于AI和人的關系的大部分讨論都沒有系統化和邏輯化,因而不是一個學術讨論,1.5節則會在邱奇和圖靈的學術讨論上回顧并延伸到AI和人的讨論。這部分讨論非常硬科學,可以作為選讀内容。但是對于那些有興趣深入思考AI技術和人類關系的讀者或者希望跳出AI架構内應用創新而成為系統創新者的讀者,啃啃這根硬骨頭定有“會當淩絕頂,一覽衆山小”的感覺。

1.5 AI和人

我們在2016年編寫和出版《Cloud Foundry:從數字化戰略到實作》時,預測了P層雲在降低數字化門檻後,數字世界将呈現爆發式的發展。目前,ABC的發展以及各行各業對ABC的擁抱印證了我們的預測,ABC中的人工智能應用在中國又一次火爆。無獨有偶,美國電視劇《西部世界》第二季的第一集一經播出就引起熱議。一時間,人和人工智能這個話題又重新被辯論。為此,在本書中,我們有必要對此進行深入探讨,希望為讀者打開一個認識這個世界的新視窗。另外,作為一個頂級研究機構,這些考量也是必須的,因為我們要確定自己的研究工作能夠創造一個更好的未來而非相反。

1.5.1 經驗與邏輯

在讨論人和人工智能的關系及其差别之前,我們先看看人類知識的構成。作者并沒有哲學專業背景,這裡介紹的概念不一定能和哲學概念一一對應,具有哲學專業背景的讀者可以建立一個對照轉換。

作者認為,人的知識由經驗和邏輯兩個層面構成。第一類知識是邏輯知識,可以通過分析得出新知識。下面是典型的邏輯知識:

1)所有人都會死,蘇格拉底是人,是以蘇格拉底會死。

2)根據勾股定理,直角三角形的三邊關系滿足

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

(其中x和y是兩條直角邊,z是斜邊)。如果三角形的兩條直角邊長度分别是3和4,那麼根據勾股定理可以得到z的長度是5。

另一類知識就是經驗知識。經驗通常是沒有經過邏輯推理或者無法通過邏輯推理而根據過去的經驗建立起來的知識。下面是兩個過去的經驗知識:

1)“地球是宇宙的中心”在哥白尼之前一直是人類社會的基本經驗知識。

2)“地球是平的”在哥倫布之前一直是大部分人的經驗知識。

3)太陽從東邊升起,到今天為止還是大部分人的經驗知識。

要觀察人的知識體系的建立過程,可以觀察小孩子的學習過程。如果把一個算盤豎起來給小孩子玩,小孩子可能會把珠子往上撥,然後珠子會掉下去。但是孩子會重複,因為他們不知道珠子總是會往下掉。為什麼大人不再重複這個動作?因為學過實體的大人從邏輯上會知道珠子會因重力的作用往下掉,沒有學過實體的人根據過去的經驗也會知道這樣做珠子會往下掉,是以不會做無用功。蘋果為何總是從樹上掉下來?在牛頓發明萬有引力定律之前,這對于所有人來說都是經驗知識。在萬有引力定律發明以後,對于知曉力學的人則是邏輯知識,對于不知曉力學的人依然是經驗知識。

學過實體的讀者先不要得意,因為經驗和邏輯的關系不是絕對的,而是相對的。邏輯知識到一定層次不能再往下推理的時候,人又會依賴經驗(有時候甚至是直覺或情感)。有時候,人懶得推理,也會停留在經驗知識層面上。讀者也不要笑話“懶得推理”這個行為,因為人類沉澱下來的經驗知識實在太多,如果要試圖邏輯化所有的經驗知識,在人有限的生命裡是很難完成的。這就是極端聰明的人在無法邏輯化他們想邏輯化的知識的時候,他們的幽默感會訴諸一些最基本的經驗(以表示無奈)。後面在介紹機器(計算機或者人工智能)的時候,我們會看到很多不可計算數,這是有限的人腦和機器在無極限的知識體系面前表現出的一種無奈。

為了解釋邏輯和經驗的相對性,我們再來回顧一下萬有引力定律的建立過程。萬有引力定律和牛頓三定律主要是用來解釋開普勒觀察到的天體運動規律(圖1-8所示是用古典力學解釋的開普勒觀察到的太陽系各大行星的天體運動)。萬有引力定律和牛頓三定律本身是基于一系列假設的一個數學模型,有效拟合了開普勒觀察到的天體運動。這種處理方法和神經網絡模型一樣,都是把标注過的資料集合輸入模型,調整模型的參數以拟合這些資料集。牛頓三定律和萬有引力定律的參數經過拟合以後,物體間的作用力變量(F)和距離變量(r)系數關系是-2(也就是平方成反比)。所有學習過實體的人對這個結果不會有太多質疑,但是哲學家們則需要經過邏輯化才能認可這個結果。是以他們會問,為何系數是-2,而不是-1.999999…9(中間間隔足夠多的9)或者-2.00000…01(中間間隔足夠多的0)?這樣的系數一樣能夠拟合所有可以觀察到的資料。當然,牛頓選擇-2而不是那兩個長數字主要是為了處理友善,或者他相信簡單的總是好的(作者沒有機會用混有吳語口音的美式英語和牛頓的皇家口音英語隔着時空對話,但“簡單是好”是大部分做模型的人的一個情感選擇而不是邏輯選擇)。當然,牛頓沒有心情和這些哲學家費一番口舌,他的回答有點類似于“你們拿去用,一定屢試不爽,有問題再回來找我。”事實上,哲學家們對于牛頓萬有引力定律在内的古典力學體系的質疑是有一定道理的,因為後來古典力學在描述微觀世界的時候不再成立(這時就需要量子力學了)。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

如果把古典力學運用到原子核和它的電子,我們無法解釋為何電子不掉進原子核,這就意味着古典力學的模型無法對某些資料進行拟合。經過不斷的探索,實體學家們建立了量子力學。和古典實體不同,量子力學的模型有很大一部分建立在機率基礎上。例如,在量子力學中,人們無法預測電子在原子核外的固定位置,隻能預測它出現在某個位置的機率。圖1-9描述了氫原子的電子的波動方程。軌道的顔色深淺代表了電子出現的機率。

綜合前面的讨論,萬有引力實際上是根據人類在更高層次和更廣範圍的觀察得到的經驗總結。蘋果下落對于沒有學過實體的人而言是經驗知識,而對于學習過實體的人而言,他們的知識雖然在邏輯上往上走了一層,但最終還是要依賴于一個經驗數學模型(這個模型的參數不是通過邏輯推理出來的,而是根據過去資料比對出來的一個經驗值。現在人工智能領域的模型正是這種情況)。

作者具有理學和經濟兩個學科背景,是以對文科和理科的交叉、融合深有體會,因為當我們的認知達到一定邊界的時候所做的模型和假設不得不訴諸于情感(或者直覺),就像牛頓為了簡潔選擇-2作為模型裡面距離的系數,歐幾裡得的平行公理訴諸于世界是方方正正的情感(後面會詳細讨論)。當然,文藝青年也不要總是陷入情感中,因為大部分的感性認知遠沒有到人類認知的邊界,它們很容易邏輯化而上升到另外一個高度的感性認知。(這可能也是一些知名高校會要求理科生必須選修一定數量的文科課程才能畢業,文科生也必須要選修一定數量的理科課程才能畢業的原因。大家熟悉的太極拳和五禽戲也蘊含着這樣的道理,前者是一套陰陽平衡邏輯,後者是一套樸素的希望像猛禽一樣強健的情感表達。)實際上,作者想說的是,讀者可以審視一下自己的知識系統,邏輯和内化它們是非常耗神的,是以大部分知識還處于非常樸素的經驗層面。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

雖然文/理科學生受到的邏輯和經驗的訓練可能不太一樣,但是AI和人比起來如何呢?從上一節對機器學習的讨論中看到,因為強大的計算能力,機器學習看上去要勝人一籌。例如,在判斷貸款申請的風險系數時,AI能夠把所有人的所有貸款曆史讀一遍來調校風險控制模型的參數,進而利用這些經驗參數來判斷目前一筆申請的風險。任何一個有豐富經驗的貸款專員也隻能根據自己過去看到過的壞賬貸款的模糊圖景來判斷目前交易的風險。

如果說人算不過AI,那麼人在邏輯推理方面是否比AI高出一等呢?我們需要在一個更為廣闊的數學和計算機的知識體系架構下讨論這個問題。

1.5.2 公理化的邏輯系統

上一節談到了人類的經驗知識是分層次的。我們總結一下蘋果落地的兩個層次。第一個層次,因為我們看到蘋果總是往下落地,沒有往上飛過,是以我們認為蘋果是落地的;第二個層次,我們建立牛頓古典力學模型,因為物體受力要朝受力方向加速前進,是以蘋果脫離樹枝以後,受到地心引力作用要朝地表方向前進。在這個層面,古典力學的很多模型的選擇(例如,萬有引力和距離平方成反比;再例如,不同參考系下,時間流逝是一樣的)也是基于經驗的。人類把知識一層層往上邏輯化到認知邊界,依賴幾個感性的假設便建立了一個認知體系。

很多偉大的科學家則從相反的角度來考慮:能否依賴幾個基本的公理假設(感性選擇)來建立整套認知體系?從歐幾裡得到希爾伯特,哲學、數學和實體學科的先賢們分别對幾何知識和代數知識進行邏輯化。在這個過程中,人類開始構想,能否讓機器從幾個公理和規則出發,通過計算推演列出所有人類知識?這一構想直接導緻了以圖靈機為代表的機器智能的産生。圖靈在他的經典論文《論可計算數》中構造了一個機器(後人稱為圖靈機)來模仿人類數學工作者。學術界普遍認為實體計算機的發明是受到圖靈機的啟發。馮·諾依曼等人在發明實體計算機後,給原本清貧的數學從業人員創造了高薪的程式設計崗位。我們在前面談到,今天的AI技術建立在計算機之上。從理論上講,AI學科隻是圖靈機系統的一個模型化算法子集。在這個子集裡面讨論AI和人的關系必然是不完整的,是以在讨論AI和人的關系時,我們需要再往上追溯到公理化數學的過程。正是在這個過程中,邱奇、圖靈和哥德爾等人對于機器和人的探讨遠比今天大衆對這個話題的讨論深入。

第一個建立公理化的邏輯系統是歐幾裡得的《幾何原本》。如果追溯到數學的源頭,歐幾裡得是個不得不提的人。他的著作《幾何原本》對于人類影響非常深刻,據說《幾何原本》在西方的發行量僅次于《聖經》。歐幾裡得的整個幾何體系建立在如下5條公理之上:

1)過相異兩點,能作且隻能作一直線(直線公理)。

2)線段(有限直線)可以任意地延長。

3)以任一點為圓心、任意長為半徑,可作一個圓(圓公理)。

4)凡是直角都相等(角公理)。

5)兩直線被第三條直線所截,如果同側兩内角和小于兩個直角,則兩直線會在該側相交(平行公理)。

其中,第五條公理可以用另一種方式表述為:在一平面内,過直線外一點,可作且隻可作一條直線與此直線平行。

歐幾裡得平面幾何(歐氏幾何)的所有定理可以最終追溯到這五個公理,是以這五個公理構成了歐氏幾何的邊界。作者在開始學習這些公理的時候也難以了解邊界這個問題,後來也就放棄追問歐幾裡得為何如此定義這五個公理。後來我才知道,很多學霸都不喜歡歐幾裡得的看上去像“主觀臆斷”定義出來的第五公理。其中,俄羅斯人羅巴切夫斯基(後面簡稱羅氏)認為第五公理應該可以通過前面四個公理推導出來。為了推導這個公理,羅氏使用了反證法。在反證法中的第一步,他假設“過直線外一點有兩條平行線”,然後試圖通過這個反證假設來結合前面4條公理推導出邏輯沖突。如果推導出沖突,那麼假設錯誤。但是,羅氏基于他的假設并沒有推導出任何沖突,反而推導出一個和歐氏幾何完全平行的幾何體系—羅氏幾何體系,也就是雙曲幾何。為幫助讀者直覺地了解羅氏雙曲幾何,圖1-10給出了一個圖形,這是一個三角形位于一個雙曲抛物面上,另外右下方有兩條在歐氏幾何中應平行的分流線。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

羅氏幾何體系完全不同于歐式幾何,開創了非歐幾何的先河。一方面,這意味着歐幾裡得的選擇并不是随意的,他必須選擇第五公理才能建立起歐氏幾何體系。另一方面,這也意味着羅氏可能惹上了和哥白尼一樣的大麻煩。羅氏理論标志着兩個幾何世界的出現:一個是歐氏幾何描述的方方正正的世界,另外一個是羅氏幾何描述的彎彎曲曲的世界。由于颠覆了當時大衆廣為認知的體系,羅氏的理論是以遭到很多非議,他個人也遭受了很多不公正待遇。這時,羅氏向另外一位學霸、有“數學王子”之稱的高斯求助,希望高斯能夠公開支援他的理論。高斯雖然提供了很多力所能及的幫助,但是最終沒有公開站出來支援多個幾何體系的存在。盡管高斯自己也感覺到第五公理的選擇不是唯一的,但是他深知公衆面對具有颠覆性的新事物時的恐懼。(這裡插一句,其實某種程度上今天對于AI的恐懼也隻是曆史重制。)

羅氏的晚年在不幸中度過,他的理論一直沒有公開得到支援。直到1868年,意大利數學家貝爾特拉米發表了一篇著名論文《非歐幾何解釋的嘗試》,證明非歐幾何可以在歐幾裡得空間的曲面(例如拟球曲,pseudosphere)上實作。也就是說,非歐幾何命題可以“翻譯”成相應的歐氏幾何命題,如果歐氏幾何沒有沖突,非歐幾何也自然沒有沖突。直到這時,長期無人問津的非歐幾何才開始獲得學術界的普遍關注并被深入研究,羅巴切夫斯基的獨創性研究也由此得到學術界的高度評價和一緻贊美,他本人則被後人贊譽為“幾何學中的哥白尼”。

自貝爾特拉米解除了非歐幾何的束縛以後,來自德國哥廷根大學的高斯和黎曼對非歐幾何進行了大刀闊斧的拓展。黎曼對于歐式幾何的第五公理做了另外一個相反的假定:過直線外一點,不能做直線和已知直線不相交。由此産生了非歐幾何的另一個分支—橢圓幾何。關于高斯和黎曼在非歐幾何領域的突破性進展,可以參考陳省身先生1987年發表的演講《什麼是幾何學》。

總結來說,通過對歐幾裡得第五公理做出的不同假設,最終衍生出三種邏輯自洽的幾何學:羅氏幾何、歐式幾何和黎曼幾何。在三種幾何中,垂直于同一線段的兩條直線如圖1-11所示。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

到這裡,讀者可能會問:計算機(人工智能)和幾何有何關系?因為非歐幾何的公理化體系的讨論,激發了自然數算數體系公理化的類似讨論,進而推動圖靈機定義的出現。這裡我們還要介紹哥廷根大學的另外一位學霸—希爾伯特。在高斯和黎曼之後,非歐幾何在哥廷根大學盛行,影響了不少數學家。哥廷根大學迎來了希爾伯特,希爾伯特提出了公理化幾何體系并出版了《幾何基礎》。整個體系從一組公理出發,層層推導。希爾伯特的公理化方式也标志着數學方式開始轉移到現代的公理系統。公理系統可以擺脫現實世界,就像非歐幾何的不同第五公理可以創造出不同于生活直覺的幾何世界。如果說幾何學是探讨幾何元素的關系,那麼點、直線、平面等可以用桌子、椅子等物體所取代。更為重要的是,在希爾伯特的概念裡面,一個從公理系統構造出來的完整的數學系統應該具有以下特性:

  • 獨立性:系統裡的各個公理互相獨立,任何一個公理都不能從其他公理推導出來。例如歐幾裡得的第五公理并不能從其他四個公理推導出來。
  • 一緻性:從公理出發,不能推導出兩個互相沖突的定理。假設B是A的反命題,則不能從公理系統中同時推導出A和B成立。
  • 完備性:從公理出發,可以推導出所有真命題。假設B和A是反命題,但是從公理系統不能證明A或者B,那麼系統是不完備的。因為A和它的反命題都可能是正确的,不完備的系統像知識世界存在黑洞一樣,讓人不安。
  • 可判定性:即給定一個數學命題,是否可以從公理出發,通過有限計算步驟來判定這個命題的可證明性。這個可以列舉的計算步驟就是現在所說的算法(Algorithm)。

完備性和可判定性可能會讓人混淆。如果一個系統是不完備的,那麼存在命題不可被證明。可判斷性則探讨是否能找到一個步驟,計算出一個命題能否被證明。

希爾伯特的偉大之處在于使公理化系統的思考方法影響到代數體系。在1900年8月舉行的國際數學家大會上,希爾伯特将可判定性問題列為當時數學面臨的23個問題中的第10位。這個問題被描述為:“是否可以推導出一個過程(算法),通過有限步驟判定不定方程(也叫丢番圖方程)是否存在有整數解的命題?”希爾伯特的座右銘是“我們必須知道,我們必将知道。”是以,在他眼裡,無論不定方程是否有解,都應該存在一個判定過程來判定它是否可以被證明。例如,費馬方程

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

作為一種特定形式的不定方程,在數學家們試圖證明命題“費馬方程在自然數n > 2的情況下不存在整數解”之前,希望有個判定過程(算法)來判定它是否可以被證明。

事實上,費馬定理的證明花費了數學家300年的努力,幸運的是它是可證明的。從費馬定理證明史這個例子可以看到,代數命題通用判定過程(算法)的意義重大。要讨論通用的可判定性,首先需要清晰地定義什麼是算法。為此,邱奇和圖靈分别提出了不同構造和定義。圖靈構造了圖靈機,算法就定義在圖靈機的操作之上。下一節将讨論圖靈構造圖靈機的過程,但是很遺憾,圖靈也證明了基于自然數算術的公理化體系的通用判斷過程并不存在。

1.5.3 圖靈機和可計算數

圖靈的論文《可計算數及其在可判定性問題上的應用》(《On Computable Numbers,with an Application to the Entscheidungsproblem》)發表于1936年,在這篇論文中,他構造了一個圖靈機來計算可計算數,證明希爾伯特提出的通用可判定性方法不存在。

圖靈機的具體構造可以參考圖靈的論文,這篇論文閱讀起來非常晦澀。但如果要了解他的構思或者靈感,那麼閱讀他的論文是最直接的方式。圖靈不是我們同時代的人,要推測圖靈的構造靈感非常困難,但是讀者可以像作者這樣通過閱讀到的文字和聽到的故事去隔空對話這位偉人,推敲他的靈感來源。電影《模仿遊戲》詳細地介紹了他的生平,據曆史學家估計,圖靈因為破解德國的恩尼格瑪密碼機(Enigma Machine)而拯救了1400萬英國人。在破解恩尼格瑪密碼機的時候,圖靈沉浸在密碼學之中。密碼學就是将一組數字按照某種規則讓機器變成另外一組數字。接收方可以根據一個反向規則讓機器将其變成原文。舉個簡單的例子,10多年前為了讓我的信件不被家長偷看,我曾構造過一個簡單的加密方法:把所有的英文字元換成英文字元表的下一個字元,接收者把每個英文字元換成字元表的前一個字元即可以重構原文。舉一個更加複雜的例子,計算機科學一般用兩位數字01,02,…26來表示英文字母A,B,…Z,用00表示空格。這樣,一個關于聚會的時間和地點的文字消息就可以轉化為一串數字。接收者收到這串數字後,把每兩位數字轉換成對應的字母,就可以還原出文字消息了。把一個句子通過一個機器邏輯映射成一個數字非常有意思,例如ICU可以映射成090321。圖靈在破解恩尼格瑪密碼機的時候可能深谙其中的樂趣。

《Cloud Foundry:從數字化戰略到實作》一書的第1章曾回顧香農資訊論為代表的數字世界的崛起。我們談到了馮·諾伊曼為何建議香農在他的資訊論中采用實體學中熵的概念,但是我們并沒有仔細讨論後面的哲學,這裡可以再繼續深入讨論一下。實體學家和數學家都隐隐約約感覺到物質和能量背後存在的資訊(數字)世界,那麼我們能否用數字世界來描述實體世界?香農和奈奎斯特獨創了資訊論。在他們兩位開天辟地的工作成果下,我們可以通過一個機器把圖像、音頻編碼成一組數字。于是,我們今天可以用二進制編輯器打開任何一台計算機上的圖檔或者音頻,其實它們隻是一串0和1編碼。這些0和1的字元串對應了一個數的二進制表示,是以它還是一個數。圖靈在從事密碼破譯工作的時候,有機會去美國的貝爾實驗室協調英美兩國的合作。他在貝爾實驗室遇到了兩位大師(可見人生結交高品質的朋友多麼重要)。作者猜測圖靈從兩位大師制作的編解碼機器中大受啟發,将他對世界萬物都是數的信念往前推進了一步:如果說人的五官能夠感受到的世間萬物都可以用機器轉換成數字來表示,那麼人的思考過程是否也能用機器轉換成數字來表示?為幫助讀者了解圖靈的這個構思,可以用iPhone手機上的Siri語音助手來類比。Siri是一個能思考和分析的程式,如果你用一個二進制編輯器打開它,它也是一個用二進制0和1表示的數。但是Siri對應成iPhone這個機器(本質上就是一個圖靈機)上的一個數字後,在機器上的運作就能起到人工智能的效果。通過這個例子,讀者也可以看到數字化是人類前進的一個新方向,相比人類在工程和實體領域的幾千年的研究,數字世界的探讨從圖靈等人在20世紀40年代開辟這個話題算起,到今天才經曆了幾十年。

圖靈的論文詳細介紹了圖靈機的構造和定義在圖靈機上的可計算數。如果讀者覺得論文太難懂,可以參考《圖靈的秘密》一書,該書做了非常詳細的注解。圖靈用極其簡單的抽象機器來模拟一個數學工作者。一個數學工作者腦子裡面有個思考狀态(上下文),他在紙上掃描到下一個字元的時候腦子裡會産生一個狀态,然後可能在紙上移動位置寫下一個符号,不斷重複這個過程。圖靈機的構造就是這麼簡單,圖1-12就是圖靈機的一個大緻描述。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

圖靈機在無限長的紙帶上移動,每次移動讀取一個符号(數字用二進制表示),然後圖靈機的内部狀态進行改變,并決定圖靈機下一個移動的位置。圖靈在論文中給出的一個例子是列印一個分數1/3。這個圖靈機很簡單:列印1個0往右移動一格,然後再往後移動一格,留出一個空格做可能的符号标記,然後再列印一個1并往右移動一格,之後,圖靈機再往右移動一格進而留出一個空格作為可能的符号标記。之後以此類推。以上過程可以用表1-1所示的狀态切換表來表示。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

寫過程式的讀者會發現,這有非常經典的彙程式設計式的味道。機器列印出來的紙帶如

圖1-13所示(早期的軟體工程師應該有使用穿孔紙帶的經曆)。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

把這個紙帶标記為小數點後的二進制數字(0.010101…),讀者可以用級數求和,其結果等價于1/3。讀者可能有兩個疑問:1)二進制表示對數字計算機的産生有極大幫助,那麼圖靈是如何突發奇想地想到用二進制來表示圖靈機?2)圖靈為何隻讨論0到1之間的實數?這兩個問題的确非常重要,因為這涉及我們對人和機器之間的互補和競争關系的讨論:機器到底是否會取代人?我們在下一節中再展開讨論,這裡暫時聚焦在圖靈機上。

這個圖靈機隻做一件事情,就是表示一個可計算數1/3。為了達到舉一反三的目的,我們可以把表1-1中的b和k的順序更換一下,進而創造另外一個計算2/3的圖靈機。表格如表1-2所示。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

它的紙帶如圖1-14所示,其中1和0的順序與數1/3紙帶中1和0的順序正好相反。

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

我們現在了解了圖靈機的定義和運作機制,能夠用圖靈機計算的數叫作可計算數。目前,得到了兩個表格表示的不同圖靈機,分别用來計算可計算數1/3和2/3。寫過程式的人可以把這兩個表當作兩個程式,以友善了解後面的内容。如果圖靈隻是用假想的機器來編碼可計算數,那與香農和奈奎斯特的成果沒有任何可比性,因為兩位大師已經用機器把圖像、聲音等信号用機器編碼成數字。但是圖靈往前走了一步,他不僅把數字編碼成特定的圖靈機,還把特定的圖靈機編碼成通用的圖靈機。讀者可簡單地了解為圖靈創造了一個通用的機器,在這個機器裡面,上面的兩個圖靈機(可以簡單了解成上面的表1-1和表1-2)也可以編碼成兩個可計算數(程式),這意味着(理論上)通用計算機的誕生。對于數學領域的人而言,世界上已經存在計算機了。把表1-1表示的計算1/3的程式和表1-2表示的計算2/3的程式輸入到這個通用計算機,就會輸出對應的紙帶:圖1-13和圖1-14。香農和奈奎斯特的編解碼機器也可以在這台通用圖靈機上運作。用今天的事物來類比,就是把微信程式、地圖程式、Siri程式輸入到iPhone這個通用計算機上執行。普遍被認為具有人工智能的Siri,從這個意義上說隻是圖靈機上的一個可計算數而已。對圖靈的這個通用計算機的構造有興趣的讀者可以閱讀他的論文或者有注解的《圖靈的秘密》一書。

提出通用計算機以後,圖靈就開始為他假想出來的計算機編寫程式。圖靈當然也關心如何在實體世界創造出一台實體計算機,但是這需要獲得大量實體世界的資源、聚集團隊和持續執行才能實作。最終,馮·諾依曼實作了這個目标,但作者不認為第一台可存儲程式計算機是馮·諾依曼一個人創造的,而應該是他和他的團隊一起創造出來的。

數字是數,信号是數,程式也是數,世界萬物都是數。自從第一台假想計算機和第一台實體計算機誕生以後,再加上香農和奈奎斯特把實體世界的信号編碼成數字,數字技術開始蓬勃發展,進入了《Cloud Foundry:從數字化戰略到實作》一書所談到的大型機、PC機和雲計算機時代。一批數學、實體工作者後來轉變成為能編寫程式的軟體開發人員。從計算機發明到現在短短六七十年,開發人員編寫出各種各樣的程式,不少程式帶有人工智能或機器學習的數學模型,涉及虛拟現實、無人駕駛、人臉識别、語音助理等領域。由于程式功能越來越強大,人們開始擔心:“人工智能程式會不會全面取代人類?”

1.5.4 認知邊界上的考量

人工智能是否會取代人類這個問題,實際上涉及對于認知的無窮邊界的考量:圖靈機能表達的帶有人工智能模型的可計算數(程式)無窮大,人的思考過程也無窮大,哪個無窮大更大?面對這個問題,大部分人會困惑“兩個無窮大的數還能區分大小?”是以,這裡有必要重新了解一下數。數有兩個讓人最頭疼的問題:無窮問題和無理問題。據說知名的數學家、集合論的創始人康托爾(Cantor)就因為沉溺于數的無窮問題而得了躁狂型抑郁症。作者無意将這種痛苦帶給讀者,但是對于思考AI是否要取代人的讀者,這個是繞不過去的坎。

自然數集、有理數集合和無理數集合在有限情況下非常容易了解,但是在無限的情況下很多屬性會發生變化。我們看下面兩個集合(N為自然數):

  • 自然數集合A{1,2,3,4,...,2N}
  • 偶數集合B{2,4,,...,2N}

在N是個有限的數的情況下,集合A的元素的元素數(叫作基)是集合B的基的兩倍。但是,當N無窮大的時候,兩個集合的勢(無限集合的基)就相等了。為什麼呢?從偶數集中拿出一個2,從自然數集合中拿出1,再從偶數集中拿出4,從自然數集中拿出2,如此進行下去,可以用無窮自然數集1對1數的無窮集合叫作“可數”。一個無窮集合如果是可數的,那麼就說它們的基和自然數集A相等。讀者可以嘗試證明一下無窮有理數集合也是可數的,隻要把集合元素順序的寫法寫得可數。具體做法就是把分子分母之和等于1,2,3,4的自然數一一列舉如下:

有理數集合C{1/1,1/2,2/1,1/3,2/2,3/1…}

讀者可能興緻勃勃地把這個可數的數的證明推廣到實數集,但是康托爾用對角論證法證明了實數集合是不可數的。康托爾的證明激發了圖靈隻讨論[0,1]區間的二進制形式的數,而使用二進制對實際計算機的發明産生極大的幫助。這裡簡單介紹一下這個證明方法,具體證明方法可以參考維基百科。假設我們數完了所有的[0,1]之間的實數r1,r2,舉個象征性的排列例子如下(來自維基百科):

r1 = 0 . 5 1 0 5 1 1 0 …

r2 = 0 . 4 1 3 2 0 4 3 …

r3 = 0 . 8 2 4 5 0 2 6 …

r4 = 0 . 2 3 3 0 1 2 6 …

r5 = 0 . 4 1 0 7 2 4 6 …

r6 = 0 . 9 9 3 7 8 3 8 …

r7 = 0 . 0 1 0 5 1 3 5 …

我們現在把所有無理數數完了。我們創造一個新的超越數,它的第k位取自上面數字rk的小數點後的第k個位并加1,如果遇到9變成0,是以這個新數就是0.6251346...它和上述的數都不一樣,是以它不在這個可數數清單中,可得出實數集是不可數的結論。這個證明帶來另外一個非常有意思的結論:同樣是無窮,實數集合的無窮要比自然數集合的無窮更大。如果把自然數集合的勢記為aleph-0(康托爾把它叫作超限數并用俄文字母标記為?0),因為康托爾想計算實數集的勢,于是他引入了[0,1]區間的二進制形式的數和集合論。他嘗試用小數點後無限位二進制數的0和1的交替的記法去對應實數裡面的元素。為幫助讀者了解,列舉幾個數如下:

0.0000000…

0.1000000…

0.0100000…

0.1100000…

0.0010000…

0.1010000…

0.0110000…

0.1110000…

如果我們把1當作?一樣的标記,學過子集的讀者肯定覺得這個标記和列舉含3個元素{0,1,2}集合的所有子集的記法很相似:

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

将這個二進制小數清單無窮列舉下去,那麼對應的子集表也可以無窮列舉下去。這些二進制形式的小數對應所有[0,1]區間的實數,而表格第五列中子集的清單也等同于無窮自然集的子集。因為一個含有N個元素(基為N)的集合的子集數目為2N,無窮自然數子集的數目就是

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

,這個數也就是實數集合的勢。康托爾猜測

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

就是下一個超限數aleph1(x1),中間不存在其他超限數,也叫連續統假設(這是希爾伯特提出的23個問題中的第一個問題)。

因為康托爾的工作,我們知道了實數集與可數數集同樣是無窮大,但是實數集更大。圖靈發明了圖靈機和定義在其上的可計算數,是以圖靈自然要考慮:“可計算數對應了可數數還是整個實數集?”遺憾的是,圖靈證明了可計算數雖然包含無理數中的代數數(例如

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

這樣的代數方程的解)和部分超越數(例如π和e),但它是可數的。可數數的勢aleph0(x0)遠小于實數集合的勢aleph1 =

帶你讀《Greenplum:從大資料戰略到實作》之一:ABC:人工智能、大資料和雲計算第1章 ABC:人工智能、大資料和雲計算

。而世間萬物都是數,且大部分數都是實數,實數中的大部分超越數都無法用圖靈機表示。這意味着什麼?第一個選擇是我們拒絕承認不可計算的實數的存在,這就等同于我們構造了不存在的數;第二個選擇是我們承認它們的存在,圖靈機無法表達一個随機生成的無理數。那麼人腦是否有個思考過程能對應一個無限、無理的數?圖靈和邱奇恰恰認為人腦不能完成這個工作,這就是他們提出的邱奇-圖靈論題。這個論題可以簡單地表述為:“凡是人類能夠執行的算法,圖靈機也可以。”用其等價的逆反命題來說是:“如果算法過程是圖靈機不能解的,人類也不能解。”到這裡,讀者可以清晰地知道,這個是論題,它并不能被證明。人工智能是否能夠取代人,本質上也依賴于這個論題是否正确。在作者眼裡,這個論題就像幾何的五個公理或者實體學裡面的能量守恒定律一樣,是我們公理化的認知邊界。

到這裡,讀者已經看到圖靈機上能表達的可計算數是無窮的,但是有個更大的實數無窮是圖靈機無法表達的。這兩個極限的差别表現出圖靈機的解決問題的範疇是有局限的。舉個例子來說,我們不能發明一個程式檢查另外一個程式的錯誤。一個錯誤的程式會使圖靈機進入失控狀态,計算過程會進入到一個表格裡面不存在的狀态(m-config)。回到希爾伯特可判定性的讨論,圖靈試圖構造一個圖靈機,從希爾伯特的《數學原理》中的幾個公理和規則出發,讓圖靈機列舉出所有可證明的公式。但是,圖靈證明了這樣的圖靈機不存在。根據邱奇-圖靈論題,人類數學工作者也找不到一個思考過程判斷一個公式的可證明性。

圖靈接下來讨論了一系列人和機器智能的問題。在1950年的Mind雜志上,圖靈就人工智能這個話題發表了另外一篇論文“Computing Machinery and Intelligence”。在這篇論文中,他提出了“機器能夠思考嗎?”這個問題。他認為思考和機器(讀者可以認為AI)的定義過于模糊,為此給出了知名的圖靈測試來回答這個問題。在圖靈測試中,被測試者(人)在一個黑暗的屋子裡面與一台機器或一個人進行對話(那個年代采用文本方式,現在則可以更新到語音方式),若被測試者無法區分對話的是人還是機器,則可以稱機器通過了圖靈測試。這也是電影《機械姬》的故事情節的基礎。

我們如何看待邱奇-圖靈論題決定了我們怎麼看待人和AI之間的關系。為幫助讀者了解邱奇-圖靈論題,作者嘗試用通俗易懂的語言來表述。圖靈機在某個狀态下觀察一個符号,然後切換到下一個狀态,這個行為和我們人類數學工作者幾乎一樣。差别在于,邱奇和圖靈認為機器的狀态是有限的,類似于我們建構的表1-1的行狀态是有限的。圖靈認為,如果人腦有無限的狀态,必然因為有些狀态無限接近而造成混亂。但是作者認為“人的思想可以支援一個無窮狀态”,因為我們對人的意識了解得并不清楚,證明數學不完備性的數學家哥德爾也表示了類似的觀點。但是,機器智能或者人工智能的産生,極大地解放了人類在可計算數範圍内求解問題的速度。機器智能的誕生似乎加速了人類對于數字世界中未知領域的探索。隻是,我們對于新生事物的直覺反應總是恐懼,對機器智能的興起也有類似的反應。圖靈認為人類在上個世紀末不再會抵觸和反對機器思考。但是到了今天,我們還是因為不了解或無法掌控機器智能而感到恐懼或不安,過度的恐懼和不安又有可能限制我們充分利用機器智能的長處,進而錯過對于機器智能以外的世界的探索。

我們今天感受到的數字世界,存在一定的公理和論題上的邊界。在這個邊界裡面也有黑洞,原因是不完備性;我們沒有一條快速路徑來鑒别黑洞,是因為不可判定性。但是,如果你和作者一樣認為人的意識格局相比圖靈機具有無限性,那麼應該持續地去拓展這個邊界。在拓展或者重構這個邊界的時候,有些黑洞或許會消失,或許可以找到一條路徑鑒别黑洞。就像希爾伯特說的:“我們必須知道;我們必将知道。”

繼續閱讀