圖靈獎得主John Hopcroft:電腦科學的新方向

紫鳳發表於2012-11-23
摘要:本文是康奈爾大學計算機系工程學與應用數學教授、1986年圖靈獎獲得者John Hopcroft博士在《21世紀的計算大會》上的演講稿。演講中,他簡單概述了計算機未來的一些發展方向;接下來介紹了基於科學的要求,如何支援未來的活動;最後,回答一些經常被問到的問題,比如到底我們的科學基礎是什麼樣的。

一、個人職業生涯簡介

能夠參加今天的活動,能夠有機會跟你們來講一講電腦科學未來的發展方向,我感到非常高興。我們現在所進入的資訊時代,將是我接下來演講的背景。開始之前,請允許我簡單介紹一下我自己。

enter image description here

康奈爾大學計算機系工程學與應用數學教授,1986年圖靈獎獲得者John Hopcroft博士

1964年,我畢業於電子工程系(當時還沒有計算機系),而後受聘於普林斯頓電子工程系。很遺憾的是,當時的負責人說我被安排教授計算機的學科。因為沒有課本,我也不太清楚這個學科要講什麼。但是今天回頭看,正是教授這樣的一門課程才使我成為了一名電腦科學家。每當國家需要高階電腦科學家時,我總是列於名單之上。值得一提的是,當時的美國總統問我是否願意效力於美國科學委員會,監管美國全球研究基金會時,我才只有四十多歲。你們可以想象一下,如果我當時從事的研究工作是高能物理學的話,要獲得那樣的機會 ,可能今天我還在等待那些輩分在我之前的研究人員退休。我把這些跟我的學生講時,他們總是說,你太幸運了,因為你畢業於1964年,而現在已經是2012年了。今天,我的演講所要表達的一點就是,這個期間確實在電腦科學領域發生了一些根本性的變化,但是如果你們也能夠為自己找到一個正確的定位的話,也將會擁有一個非常美好的職業生涯。

二、演講內容概述

電腦科學經歷了很多根本性的變革。在過去三十年當中,我們關注計算機怎樣有更好的用處,包括在編譯器、系統、演算法、資料庫、程式語言等方面。而在未來,我們更多的是關注將計算機應用於哪些領域。然後你們將會涉及到跟科學文獻上的理念交流,社交網路通訊的演進,非結構資料來源當中的資訊提取等一系列應用。

我今天想要強調的是變革的驅動力,其中一部分就是關於計算和通訊技術的融合。也許通訊比計算更重要一些,因為通訊有大量的資料,數字型的資料,還有聯網的終端和感測器,都理論計算機帶來重大影響。我們需要這些理論支援我們新的方向,我們也必須更新我們計算科學的教育。

enter image description here

所以,在我的演講當中,將首先簡單的概述一下我們的未來一些發展方向;接下來介紹一下基於科學的要求,如何支援未來的活動;最後,回答一些經常被問到的問題,比如到底我們的科學基礎是什麼樣的。裡克.雷斯特(Rick Rashid)博士之前提到了大資料。我也稍微地和大家聊一下。當下,我們擁有足夠多的資訊。全球差不多有174份的報紙,但是你每天需要看這麼多的報紙嗎?這麼多大資料你可能來不及看。因此,你需要計算機程式提取這些資料,將你感興趣的資料抽取出來。那麼,這個資料的規模究竟有多大?以Facebook為例,他們每天要上傳兩億五千萬張照片。

enter image description here

電腦科學會進一步發展,將會對科學的每個領域產生影響。這是我們最近釋出的最基本的一個例子,但是我想指出的是,電腦科學家在其中發揮了非常關鍵的作用。比如在質子對撞方面,他們看了一千萬億個研究,以人的能力是不可能做這種計算的,這完全是由計算機實現的。他們從中挑出感興趣的質子。因此,這就非常好的展示了在我們所能想到的任何學科,計算科學所發生的作用。

enter image description here

三、電腦科學的發展方向

1.稀疏向量

我們知道,目前的資料庫工具是不足以捕獲、分析、研究和視覺化我們目前所面對的數量級的資料的。因此,我們必須開發更多的理論,這將是在你們事業中應該做的。比如說大型圖形,當我在上學時,可以在一張紙上畫一張圖,有20到30個象限。但是你們以後要畫的圖形,可能有上百萬個象限,還要考慮到各種各樣的組成元素,比如說波譜的分析,高維、多維減法等等。我還想指出的就是,如果你們想做研究的話,大家看一下不同學科的主題,有些主題是經常出現的,也是最基本的一個,就是我們所說的稀疏向量,他們需要六七個座標。你們會問稀疏向量為什麼是有意思的研究領域,回答就是在不同的學科都會碰到它,包括很多方面,像生物學、訊號處理方面,甚至在一些科學文獻中流動子的跟蹤。

enter image description here

比如說這是一棵蘋果樹,你要做的就是要開發一些新的方法,找到擁有非常好基因的蘋果。我們畫一個矩陣,每一個矩陣中的點代表蘋果園中的某一棵蘋果樹,而我們要找到其中我們好基因的蘋果樹。我們看一下,要畫這樣的圖譜,我們要去找到線條中我們想改善的傑出的蘋果的一些屬性,比如說更圓,更紅,這是我們喜歡的基因型別。那麼,我們如何做這一點呢?就是解決這樣一個公式。那麼你肯定會說,這沒什麼道理,因為你有更多的列和行,那麼這是基於向量的方法。如果我們想找一個稀疏的解決方案的話,這就是你們要探討的。你們會問,哪些是數學性的數量,我們可以用來解釋。比如說有兩個稀疏的解法,也就是找到這兩種型別的基因,可以帶來我們希望數學可以定義的蘋果的屬性。它們是否可以帶來等於數學屬性的這樣一個等式。這就是我們談到為什麼稀疏向量是非常重要的,因為在其他學科也能夠用到。

enter image description here

2.零知識證明

還有一點,就是要搭建相應的資料庫。在不久的將來,我們將會把一些醫療病例技術數字化,比如說中國常見的病史。那麼以後去看醫生的話,這個醫生能把我以前所有病情記錄都下載下來了,依此給我提供最好的治療。但是我並不想保險公司能夠看到我的病史去看我病例的歷史,因為這與他們無關。那麼,對於保險公司來說,他要了解的就是是否欠醫生錢。他們只需要關心是否有欠錢的行為,這個病是否被治癒,至於到底這個病人接受了什麼樣的治療方案,他們並不需要過問。其實,還存在一些研究人員,他們想研究這些資料,想獲得一些統計學方面的資訊。在這其中非常關鍵的一點就是,絕不能洩露個體的資訊。

enter image description here

還有其他相關的研究,比如說零知識證明。所謂的零知識證明就是,不需要你提供其他資訊就能夠被證明是真實的。舉個簡單的例子,我現在假設大家都會玩九宮格。我想向你證明,我知道如何寫入正確的資料,使每一個3×3的九宮格里面填入的數字等於9。那我如何證明呢?這就是零知識證明。首先我把我的答案寫到一塊硬殼板上,然後用卡紙把它們蓋上。這樣的話,你們就看不清了。下面我會讓你問我一些問題。你說給我展示一下第一行?我就會把卡紙翻過來展示一下,你就會看到,我確實知道這行的答案,但是我卻不給你任何的資訊,也就是說到底哪個數字應該放在哪個位置上。然後我又把這個數字,進行檢查3×3的的九宮格,那麼你是相信我有答案的。我想說的是,這並不是一種非常嚴苛的證明,我不能100%的證明這個答案,但是你可以觀察得到,我的卡紙,我拿起它的順序和放下它的順序不一樣,所以我知道這個答案的概率非常之高。通過你的問題,你可以看一下,可能我不知道這些答案的證據。是不是可以用這樣的方法解決更復雜的問題?

enter image description here

接下來我們來看一下,如果把三種顏色說放到這樣的方式中,令任何一列或者一行都不出現同樣的顏色,我們就可以延伸成一個大圖(Large Graphic)。首先,假設我們是在做生意,但是你有一點擔心,因為你要先付錢,才能給你展示我做出顏色的答案;而我也會擔心,如果我先給你看顏色的答案,拿不到錢怎麼辦?所以為了做好生意,該怎麼辦呢?我給大家一個很好的解決方案,就是說我能夠獲得這個答案,但是我卻不讓你知道這個答案是什麼樣的。下面我們要做的就是,將圖中每一個顏色卡,我把它們都放到信封裡面,然後將這個信封封上。這樣的話,你可以問我問題,就像在做速度遊戲一樣,你可以選一個邊緣,然後我給你兩個信封。你把這個信封開啟說:“這兩個信封裡的卡紙顏色是不一樣的。”如果我確實有這個顏色,但是我並沒有明確的告訴你,到底哪一張卡是在邊緣的哪一端,所以你還是不知道答案。如果這個答案還不能讓你信服的話,你還想看另外一個邊緣的答案的信封。然後我再給你這個信封,這個時候你就會獲得一定的先機,我不會這樣做,我會把所有的信封都扔掉,然後再重新做一個,再把我的卡片放在新的信封裡,然後你再去讓我給你一些信封去滿足某一個邊緣。也就是說我把第一次的信封和第二次的信封變成不一樣的,又混合在一起,你就不知道答案了。目的就是說,你絕對不會明白我真正的答案是什麼。所以你問了我足夠的問題,你覺得我確實已經能夠證明我知道答案的結論了。實際上你可以不用信封。

enter image description here

衍生到電腦科學應用層面,就是所謂的“加密”。我可以把這些顏色答案加密,比如說你不跟我要信封,把信封開啟,而是讓我給你加密的金鑰。如果是電腦計算的話,可以每秒產生數以幾百萬計算的邊緣。這就零知識證明的意思,幾乎每一個資料庫都會出現這樣的情況。

下面再舉個例子,是和公路、汽車相關的。我經常開車到費城,車上按了導航系統,指導我沿著紅線進入洲際公路。因為我經常在這個路上開。所以,注意到有很多的車,不走紅線路,而是走紫色的線路。我跟著這個線路走後,發現里程數更短一些。但是我的導航系統為什麼沒有指出這條紫色的路線呢?答案就是這個系統只是讓我走主路,它們不知道其他的小路。假設你們的汽車能夠記錄這樣的地理的地標資訊,並且導航系統能夠計算經緯度的話,那麼它們就能夠為你指出更好、更快、更短的路徑了。如果這個功能實現,將至少可以降低車耗油量1%。全國來說至少意味著幾千萬美元的節約。然而,事情的關鍵是,我並不想下載GPS的地理座標,因為可能這就會洩露我在哪兒工作,我停車在哪裡,今天這個時間在哪裡,這將會導致個人資訊的洩露。所以,我其實並不希望導航系統GPS記錄我的資訊。

enter image description here

3.社交網路

社會學家以前可能一次只能研究幾千個人,但現在有了社交網路,我們可以去研究幾百萬個體之間的互動。下面為大家展示一些你們可以做的事情。一個非常重要的研究方向就是,弄清楚這些社群是如何形成和演進的。早期這個領域的工作,叫做平均切割(Mean Cut)。他們會把這個圖分成一段一段,就是任何一個點都有一個平均距離的連線,他們以小圖的方式來解決。事實上,我們絕不希望去研究一個由一百萬個點組成的大圖,然後分成各有五十萬小點的小圖,那麼我們怎麼做呢?早期的研究要假設出這樣的一個社群:在這個社群的人,他們在社群內和人之間的聯絡,之間聯絡的距離比圈外的人的線要短。但其實並不是這樣的。作為個體,我在社群外有很多要連線的人,我們知道在這個社群之外存在數以億計的人,所以很有可能,我和這個社群之外的一種連線的路程其實更短,要比社群之內更短,因為我們可以看到這個社群之外存在的人的數量更多的,這就是為什麼這個概率更大。同時,我們還可以問一下,我都存在於哪些社群?因為我同時存在於多個社群。所以要做的基礎性工作就是,我剛才談到的如何找到社群。下面我舉個例子。

這張圖代表頂點之間的臨近性。大家可以看到左上角,每一個頂點都互相連線。但是在社群之間並沒有連線,如果有這樣的情況的話,你會發現,我們所說的在右邊的這樣的奇異向量,我們可以看到這些向量,把它們組成一個三維的圖,這是一個例子。也就是說,在這個社群中的所有的點,所有的人,都是和一個點連線的。那麼,也就是說即使這兩點之間,這兩個人之間沒有直接的聯絡,但是他們也間接的實現了中心的連線。所以,我們就可以使用K平均來找到這些社群。但是有一個問題,如果這些社群之間出現了重疊,比如說兩個社群之間有重疊的話,那麼我們就會看到有三個叢集,而不是兩個。也就是說有兩個是在這個象限,在座標的兩個極端點。

enter image description here

所以,我們不是說要進行“行”的奇異向量計算,而是要找到零常規向量。也就是說用這三個向量,來抽取出一個社群。我們希望找到那個最小的零常規的向量,當然這就是所有的零的一個向量。後來,我們發現了最小的0的向量是NP號的。我們剛才描述的就是如何找到網路的全球結構,這也是我們如何把它應用到一個有一百萬,甚至三百萬個點的圖。我們希望修改這個演算法,用於更多的網路。下面有一個實際的例子,展示我們都做了什麼:

假設,有三個池塘,他們互相連線,我們把一個圓片扔到了其中一個池塘裡。在我們把這個圓片扔進去之後,我們知道這個圓片掉到了哪個池塘裡,但是過了一會兒之後,我們不知道它到底落在這個池塘的哪個位置。再過一段時間,就不知道這個圓偏流到哪個池塘了。下面要做的就是進行一個比喻,找到這個奇異的向量,發現發生了什麼情況?我們做一個隨機的遊動,包括它怎麼融合起來,它聚合之後會做什麼呢。我會採取五個步驟,這些步驟有足夠的時間,在五十個大的社群覆蓋,但是並沒有覆蓋到所有的網路。這樣做是為什麼呢?就是找到一個最近的向量,就是在他的子空間裡面,我只需要五步就把這個子空間填滿了,這是非常好的辦法,就是找到相關的社群。

這裡有一些研究,目前做的當中有一個範數的向量,並不是指標性的向量,跟零一樣,需要一個門限值,就像這樣的向量的情況,你可以決定什麼時候切割這個限值,找到你的社群。實際上你並不一定想要在這樣的子空間裡找到這個向量。你最不願意做的就是找到跟這個子空間最近的一個向量。我們做什麼呢?我們可以把一個Y的範數最小化,再加上一個恆定的量,再加上子空間的角度,如果這是恆定無限的,你可以在這個子空間裡找到一個向量。如果變成0的話,一個範數的向量,你可以找到恆定的答案,得到這樣的結果。人們對一些研究問題非常感興趣,就是隨機的長度多長,需要填充的子空間,以及人在幾個社群當中。我們需要這樣的研究,這些典型例子是好的,在上百個領域做這樣的研究,這是你們以後在社群當中也可以做的。

我們跳過一下,其中有一點就是需要了解比較大的圖。這張大圖,我在上學的時候,差不多有15個頂點,可以在這個紙上畫出來,有上10頁的頂點。然後這些小圖也是很重要的,其中在你的圖上可以隨機的擦除掉其中一個頂和邊,它不會影響到你的屬性。有一系列的大圖,可以提供定例的圖例,還有一些圖形,就是選擇N個頂點,然後再將這些潛在的邊緣放到裡面,這是非常好的理論,證明了很多的定理,還有很多的書籍是關於這個圖的。

這是現實中美聯航的航路圖,在北美地區的。這個圖裡面有很多城市的頂點,城市之間有直航的邊,你可以看一下分佈的情況。通過雙範數,生成這些圖的模型。我們從一些小的頂和邊新增做起,在裡面加了一些頂和邊,我們需要一些規則,如何聯絡所有新加的邊,叫做偏好性的連線,這當然是一種隨機的,一定的概率到某種程度上,你可以得到一個叫做明律的分佈。再舉個例子,就拿這個圖來說。在我們教授課程的時候,經常讓學生到外面找一個資料庫。他們可以很容易的進行轉換,把它變成一張圖的資料庫。這個資料庫是學生拿過來,其中有2073個蛋白質,成為頂,3602個互動,屬於邊,這個裡面再進行計算,把這裡面的分量結合起來,然後變成48個獨立的頂,這是在其他蛋白裡面沒有的。其中還有179個對相互之間可以互動的。這都是我們所說的社群大小。

enter image description here

接下來,我們會編寫一個計算機程式。但是如何檢驗這個計算機的程式呢?我們把這個社群大小和社群數量乘在一起,它變成了什麼呢?在合成的成分當中,我們只是得到了899個蛋白質,還我們缺少1851個。是我這個程式有錯誤了嗎?我們執行的時間長一些,並沒有達到1000個。進一步進行推算,我們有很大的數量,1851個,他們找到的缺少的部分。也許你們很奇怪,這張圖怎麼有這麼大的組成部分和分量呢?這樣的大圖,每一個現實的圖當中,都有這樣的內容,這都是非常重要的。你們要能夠理解它怎麼形成的。在你的資料庫裡面可以做這樣的實驗,可以有不同的結果。

4.高維

我上面講的很多都是基於科學的內容來支援我們的理論。接下來,我們來看一看什麼樣的情況是針對高維的。高維和2D、3D是不一樣的。在二維、三維當中可以隨機放一些點,然後測量之間的距離。這兩個最遠的距離,比這兩個更近的地方放的更遠一些。在高維當中進行計算的重複,進行點的計算,所有的距離都是一樣的。為什麼會是這樣的情況呢?原因是是你需要一些提取座標,把它們加在一起,這兩個座標之間的距離進行平均化,會有一些數字,你會有大量的隨機的數字,我們叫做大量資料的定律。你可以得到跟我們期待的非常類似的結果,但還有很多不一樣的,就是關於高維的。

enter image description here

如果我們來看一個高維的立方體。這個體積就是一個,三個,每一個方塊加在一起,成為一個立方體。如果放到高維裡面看這個立方體,這個球體轉化成了一個叫做圓形的0。可實際上並不是這樣,在高維裡面的分佈,所有概質的質量都是高斯的情況。如果發現高維高斯的情況,它還是在最初的原點上。然後你問一下其中有多少的概率,就是它這個質量,我們把這樣概率分佈在這個球體上,你會得到0,真正的值是0。這個裡面並沒有所謂叫做質量集中的概率。另外,你找到這樣一個概率的質量,必須要向外擴充套件,這個球是叫做0值的,這是我們叫做維度的一個規則,這個裡面找不到任何一個概率的質量。因為它們下降都非常快。這個球體的質量是作為多範數的方式增長的,它並不是這種線性的變化。有兩個高斯的資料,想知道哪一個高斯產生在哪一個點上,需要做數學計算。因為這兩個環形並沒有相互集中在一起,這兩個高斯在高維裡面的情況會到達隨機點。你會注意紅色和藍色很多地方都是重疊的。如果換成這樣的地方,沒有給你顏色,你看一下,你會說,我們現在如何區別不同的高斯,有很高的概率,我們進行怎麼區別。

enter image description here

如果看一下兩個隨機點的距離,都是同一個高斯點產生的,它會有這樣一個D的開方,半徑的環面,同樣的做什麼呢?就是做類似的計算,就是半徑球體的開方,還有兩點之間的平均距離就是開方的情況。第一個隨機點先生成,然後做什麼呢?把我這些座標系統先進行調整,把它對準北極這一點,然後再生成第二個隨機點,我可以向你們保證,第二個隨機點會在我們大圓上,就是赤道的軸上,為什麼?因為所有的表面都是在赤道的地方,並沒有表面的因素。北極的三維就不是這個情況,比如10或者12的近似的計算,沒有一個合適的角度,就是2D,還有開方的時候,就能夠看到,如果有兩個高斯的話,可以來計算一下兩個高斯點之間隨機距離的計算。我們還是需要一個合適的角度,技術細節就不講了。

我在做這樣估算的時候,並不是在環面上,而是在這個圓面上,你能解決的可能是這個的一半,或者1/4,但是我們可以做得更好一點。其中就是減少這個維度,我們能做什麼呢?如果我來畫一條線,在兩個高斯中間畫一條線,這些點都放在這個線上,看發生什麼情況?因為中心兩邊的距離還是一樣的,這個裡面更加接近於放在一起。因為從這條線的距離都是高斯的噪音,可以找出來。可以通過數學計算,可以找到這些線。然後通過一個恆定的距離,就可以把兩個高斯點分開。

enter image description here

我下面要展示的就是一個基於科學的高維的資料庫的情況,比如說排位問題,比如說教職員工,學生之間的聯絡,包括對一些餐廳的點的資料進行排位。我們還有協作式的過濾,通過一些數學的理論,告訴你們哪些是好的東西,然後也可以減少這個維度。這是一系列的領域,需要我們接下來進行開發,需要新的科學來予以支援。

三、結束語

我講的非常快,希望你們,在計算科學的時期,利用大資料,還有一些感測器,社交網路的資訊進行探索。重要的一點就是電腦科學可以支援這些科學活動。到這裡,我就講完了。我希望你們記住,電腦科學正面臨一個巨大變革的時期,你們代表著未來,如果你們做得很好,能夠很好的定位自己的話,你們將會有一個非常好的職業生涯。謝謝!

原文來自:CSDN

相關文章