當前位置:
首頁 > 知識 > 一些物理學不能預測的事,學習演算法卻能辦到?

一些物理學不能預測的事,學習演算法卻能辦到?

目前物理學領域有一個熱門課題:應用信息理論和理論機器學習技術作為研究手段,以獲得對物理學的更深入理解。甚至還有人希望用這些技術發展出所謂的「萬物理論(theory of everything)」,這是一種能統一併解釋宇宙所有方面的理論。雖然這項課題受到了極大關注,但我還是有點失望,因為從來沒看到哪篇文章能解釋清楚以下兩個問題:


不能用已有的物理理論解釋的哪些方面可以用到學習演算法?


為不懂信息理論行業術語的人編寫的指導手冊,教你在這些情況下怎麼應用學習演算法

所以我就自己來寫一個吧!人們談起信息物理學或數字物理學時,總會提到黑洞的熵或我們生活在計算機模擬世界中的想法。雖然這些方面有很多重要的研究,但我認為了解這些理論為什麼值得研究甚至是更重要的。因此,我會從以下想法開始論述:


如果把我們自己放在計算機模擬程序中是有可能的,那麼把我們自己放入一個無法運用已知物理理論預測感知到的事件的情境中也是有可能的,但我們可以在這些情境中用機器學習演算法來預測未來事件。


但在深入之前,我要先聲明幾點重要的問題。目前,信息物理學只是對宇宙運行方式的一種假設。不像其它那些更成熟的理論,比如標準模型(standard model)和廣義相對論(general relativity),我們不知道信息物理學是否能描述真實的宇宙運作方式,甚至也不知道是否需要新的物理理論去解釋我之前提到過的情景(上一段內容)。解答這些問題所需要的實驗證據以我們現有的科技水平完全做不到。但由於我們的技術進展迅速,如果有生之年能見證它得到驗證我也不會太驚訝。


同時我也要指出我並不是從事此領域研究的科學家,所以儘管我盡了最大努力,還是有可能誤解了相關研究者的工作。

那麼第一個問題來了:我們怎樣才能把自己放入計算機模擬中呢?


把我們自己放進計算機模擬程序里


如果你不是山頂洞人,你應該注意到了計算機和軟體經過近幾十年的發展已經取得了很多的進步,而且發展的腳步也不會停止。所以當有個調查詢問很多人工智慧專家何時計算機會變的跟人類一樣聰明時,他們中超過半數的人都回答這在 2050 年以前就會實現。



一些物理學不能預測的事,學習演算法卻能辦到?


如果這些樂觀主義者是對的,那我們很有可能在有生之年見證超級智能計算機的誕生了!但即使如此,推測這些真正強大的計算機到底能做什麼也很有意思。


近幾年虛擬現實模擬技術已經很強大了。如果 2050 年的計算機真的比人類聰明,那 2050 年生活在虛擬現實模擬中的人就可能就基本感受不到虛擬世界和真實宇宙的差別了。


除了預測未來的場景,我們能親眼見證嗎?或許可以通過這樣的方式實現。人們已經能用腦對腦介面( brain-to-brain interfaces)通過互聯網與對方聯繫了,而且實現這種事情的技術正在快速進步。想像幾十年後,這些腦對腦連接的帶寬已經達到與連接我們左右腦的神經纖維等同的程度。所以如果在 2050 年我們把兩個人的大腦連接起來,他們會感覺像是同一個人嗎?



一些物理學不能預測的事,學習演算法卻能辦到?


甚至如果 2050 年我們把你的大腦和虛擬現實世界中的模擬大腦連接起來,你會覺得模擬中的人也是你嗎?



一些物理學不能預測的事,學習演算法卻能辦到?



這隻有等我們真正去嘗試才會知道了。如果答案是否定的,那麼這篇博客剩下的部分就是通篇廢話了,但如果答案是肯定的呢?結果就會很炫酷了!

那麼讓我們假設真的是這樣,你現在是一個同時生活在真實世界和虛擬世界中的人了。真實世界的你遇到了嚴重的事故,並且你的大腦被炸成了一百萬個碎片,多悲催啊。



一些物理學不能預測的事,學習演算法卻能辦到?



但是你真的死了嗎?因為你知道,有些人曾做過大腦被移去一半的手術,但他們還活得好好的。所以如果你一半大腦在真實世界,另一半大腦在計算機模擬世界,而你失去了真實世界的那一半大腦,那你不應該繼續以模擬的形式活著嗎?


如果你試過了結果不是這樣,那這篇博客剩下的部分就是通篇廢話了。但如果確實可以呢,這就意味著我們可以完全把自己放入計算機模擬程序里!這難道不是有史以來最酷的事情嗎?(如果你也喜歡思考這樣的事,請參看 Wait But Why 文章:https://waitbutwhy.com/2014/12/what-makes-you-you.html)


那麼這跟信息物理有什麼關係呢?


如果把我們自己放在計算機模擬程序中是有可能的,那麼把我們自己放入一個無法運用已知物理理論預測感知到的事件的情境中,也是有可能的,但我們可以用機器學習演算法來預測未來事件。


我上面已經解釋過前半部分了。但即使你能完全在模擬程序中生活(而這已經是一個很大膽的假設了),運行這個程序的計算機肯定還是遵從物理定律的。所以如果你知道這個程序是如何被編寫出來的,那麼你就不需要機器學習演算法來預測模擬環境中的事件了。如果在你真實世界大腦炸成一百萬塊碎片之前你就獲得了足夠的關於宇宙狀態的知識,那麼即使以後有人決定去更改程序代碼,那理論上你也能預測到。那你還需要學習演算法做什麼呢?


我們的物理理論無法預測的事情


計算機模擬一個非常炫酷的特性就是你可以在不同的計算機上拷貝完全一樣的程序。如果這個模擬用了「確定性演算法(deterministic algorithm)」,那麼它的所有副本都會輸出一樣的結果。


現在我們假設你的真實世界大腦失去連接以後,你生活的模擬環境變成了確定性的,並且根據事先編寫好的程序,30 秒後它會為你顯示一條信息「你還活著!」但我們這些控制模擬程序的人有惡作劇的癖好,我們決定捉弄你一下。一旦模擬變成確定性以後,我們把它複製到第二台計算機上,而且就在它顯示「你還活著!」之前,我們把第一台計算機炸成了一百萬塊碎片。那麼現在問題來了:你能不能看到那條信息呢?



一些物理學不能預測的事,學習演算法卻能辦到?



這就取決於我們如何定義「你」了,不是嗎?如果我們對「你」的定義是基於你賴以存在的物理身體,或著你存在的計算機實體的話,那麼你就在原來的電腦里「死去」了,而且並未收到信息。(有爭議的是,根據這個定義,你應該死的更早,當你的實體人腦炸成一百萬個碎片時你就死了。)但如果我們用不同的方式去定義「你」呢,你賴以所存在的物理實體或者計算機其實是無關緊要的,那麼也許你會看到那條信息。


但問題就在這裡。科學就是要你去做實驗才能確定什麼是對的,什麼是錯的。那麼我們剛才描述的就是一種確定「你」的哪種定義是錯誤的的試驗性方法!但怎麼做呢?根據上面的描述,首先要試圖把你自己放到一個計算機模擬程序里,然後讓你的朋友把這個程序移動到另一台計算機里。如果你在看到信息「你還活著!」之前就死了,那麼預言你能看到這條信息的那個定義就是錯誤的。如果你確實看到了信息,那麼你就確定地知道預言你看不到這條信息的「你」的定義就是錯的!(這個實驗奇怪的地方之一就是從外界觀察計算機的人不會知道哪個「你」的定義是錯的,但他們可以把自己也放到模擬中,複製出結果。)


我要用那篇之前發過鏈接的博客 Wait But Why 中的術語,而且我要引用那個你可能沒看到的「大腦理論(brain theory)」的假設。並且我還要引用那個你確實(有大於0%的概率)看到了「數據理論(data theory)」這條信息的假設。


直到今天,我們也不知道哪種假設是正確的。但試想如果數據理論是對的,那意味著什麼呢。


那就意味著我們可以做一個更瘋狂的實驗了!假設我們做了之前描述的那個實驗,但有幾件事不一樣:


1. 惡作劇愛好者把模擬程序複製到了兩台其它電腦上,而非一台。


2.模擬是確定性的,除了一件事:如果有人按了鍵盤上的某個按鍵,你能在模擬程序內部看到他們按了哪個鍵。


3.第一台電腦毀掉之後,有人在第二台電腦上按下了 0 鍵,而且同時在第三台電腦上按下了 1 鍵。


那麼你看到的是 0 還是 1 呢?


很簡單,不是嗎?不就是 50% 的概率看到 0,和 50% 的概率看到1嗎?先別太快下結論。一件事有兩種可能的結果並不一定就意味著每種出現的概率都是50%。比如說,如果考慮你未來 10 秒內被閃電擊中的概率,那麼很有可能你不會被擊中。


那麼我們用合理的方式來解決這個問題吧,用物理學基本定律來推斷將會發生的事情。我們如今所知道的最基本的物理定律就是粒子物理學的標準模型和廣義相對論了。如果你進行了一連串複雜又枯燥的計算,你會知道這個實驗的結果應該是這樣的:


事情是這樣的,這些理論可以告訴你那些計算機中的每個原子可能運動的概率分布,但這兩個理論都沒有「你」的概念。所以如果你碰巧知道「你」就是一個在兩台計算機中被模擬的人(但你不知道你到底在哪台計算機里,因為你的兩個副本擁有完全相同的記憶),而且其中一個副本會看到 0 ,而另一個副本看到的是 1,這些理論都無法預測出哪個副本才是「真的你」的概率!


當然了,如果這個大腦理論是對的,而且你在看到 0 或 1 之前就死了,那結果是什麼就無所謂了。但如果數據理論是對的,你看到 0 或 1 的概率不為零,那就意味著進行一個實驗去預測你看到 0 或 1 的概率是有可能的,而基礎物理理論卻無法做到這點!


在這種情況下,我們需要新的物理理論來填補這個空缺。


進入學習演算法


還記得在開篇時,我許諾要告訴你們有關人們如何「應用信息理論和理論機器學習的相關技巧來更好地理解物理」嗎?現在我就來談一談。不過在討論如何從上述情形中找出一個 0 或 1 出現的概率之前,讓我們以一個稍微不同的問題展開。


設想我們做了上面的實驗而你最終要麼看到了 0,要麼看到了 1。(至此我將假定數字理論是正確的,儘管這仍是一個開放性問題。)但由於我們這些控制模擬程序的人是些邪惡的搗蛋鬼,在每個「你」的副本上又玩同樣的把戲,因此現在有了 4 個版本的「你」:一個看到 00,一個看到 01,一個看到 10,一個看到 11。



一些物理學不能預測的事,學習演算法卻能辦到?



接著我們故技重施,「你」可以看到一串僅包含 0 和 1 的三個數字的序列。然後以此類推這樣重複下去,直到我們花光了購買計算機的錢。(我猜測到 2050 年計算機會非常便宜。)



一些物理學不能預測的事,學習演算法卻能辦到?



現在你開始看到一個模式。在模擬程序中,你看到一個只包含 0 和 1 的序列在不斷地延長。所以對於到目前為止出現的序列,你如何能夠猜測它的下一個數字是 0 還是 1 呢?問得好,這似乎就是談論學習演算法的好時機!


史上最難應付的學習演算法


機器學習是一個真正的大領域,這裡涉及了太多的學習演算法。其中的許多演算法要麼是為了解決性能(performance)這樣的實際的、現實生活中的問題,要麼是為了解決諸如運行時間複雜度(runtime complexity)這樣的感知型理論問題。然而如果你是個不關心這些問題的聖人(面對吧,我們都希望成為他),也有一個你真的需要了解的學習演算法,它叫做索洛莫諾夫感應(Solomonoff induction)。


這就是索洛莫諾夫感應要解決的問題:假設有一些未知過程正在生成一個只包含 0 和 1 的序列(也就是「位串(bitstring)」),而你想猜出序列中的下一個數字(或「比特(bit)」)。(有點耳熟?)


那麼你會怎麼做?直覺告訴你下一個比特可能會繼續前面比特的模式,而不是「隨機」的。但你如何分辨一個位串有多隨機呢?一個主觀卻非常有效的方法是找到輸出那個位串的最短的計算機程序的長度。那麼我們就用這個思想來為每一個位串分配一個概率吧。


首先我們需要一種方法來隨機生成計算機程序,它們可以更頻繁地產生更短的程序。容易!投擲 2 枚硬幣。如果第一枚硬幣是正面朝上則記為 0;否則記為 1。如果第二枚硬幣也是正面朝上則再次投擲這兩枚硬幣;否則停止。由此產生的位串即是我們的計算機程序。(通常我們將代碼看作是文本,但它其實是以位串形式存儲於計算機中。)


下面我們需要用這個計算機程序輸出一個位串。簡單!將此程序保存為一個二進位文件,並用你最喜歡的程序語言運行它,可能是 Python 或者 JavaScript。給這個計算機程序以無限的時間和內存,並確定性地產生任何可能是非確定性的東西(比如用戶輸入)。當然大多數隨機生成的計算機程序都會有語法錯誤,不過那沒關係,因為程序仍然有可能運行並輸出一些東西到控制台,我們把這種文本叫做控制台輸出(console output)。(它也是以位串形式保存於計算機中。)


現在我們可以為模擬程序中你可能會看到的每一個位串分配概率。如果你生成並運行隨機計算機程序,一遍又一遍地直到生命終結或者跨度更久,我們就可以將一個位串的演算法概率(algorithmic probability )定義為:從問題中的以該位串開始的控制台輸出數量(計數副本(counting duplicates))除以控制台輸出總數(計數副本(counting duplicates)),此時控制台輸出數量接近無窮大。


最後,你就可以運用這些概念來預測接下來會看到 0 還是 1。依據索洛莫諾夫感應,接下來出現 0 的概率是:



一些物理學不能預測的事,學習演算法卻能辦到?



出現 1 的概率即 1 減去出現 0 的概率


呵呵,那真是難以理解!如果你喜歡,這裡有一個流程圖:



一些物理學不能預測的事,學習演算法卻能辦到?



索洛莫諾夫感應難在哪裡?


這個演算法看起來瘋了,不是嗎?但是你可能仍在疑惑它究竟牛在哪裡。好吧,想像一台當下的普通計算機,不同的是它擁有一個無限大的磁碟空間並能夠訪問真正的隨機數源(而不是那個有瑕疵的偽隨機數生成器)。信息理論的深刻成果之一是:如果這種計算機能夠在理論上模擬出「選擇」出現 0 還是 1 的基本過程,那麼隨著 0 和 1 序列的不斷延長,索洛莫諾夫感應所預測的未來觀測概率將收斂到「原始的」基本概率。


能否定義一個索洛莫諾夫感應無法預測的過程呢?簡短的回答是「Yes」,但是模擬這些過程所需的計算機還不存在於真實世界中,而且我們可能永遠都無法製造出它們來。這就是在我看來索洛莫諾夫感應是史上最難應付的學習演算法的原因。


或者真是這樣嗎?


在索洛莫諾夫感應所無法預測的過程裡面,有一個例子是運用你最愛的圖靈完備編程語言,在每一個可能的程序上反覆循環;對於每一個程序,如果它將永遠運行下去則顯示 0,如果將停止則顯示 1 。要是能夠模擬這個過程,那麼它將完全顛覆我們對宇宙的認識。這也將科學地證明索洛莫諾夫感應其實並不是所發明的最強學習演算法,因為它意味著我們可以通過運行一種類似索洛莫諾夫感應的更強大的學習演算法來預測出索洛莫諾夫感應所無法企及的過程,除非你運用能夠解決停機問題(halting problem)的編程語言來運行隨機生成程序。


更重要的是,這個鏈接實際上描述了一個編程語言的無限族(infinite family),我們可以用它來定義一種類似索洛莫諾夫感應演算法的無限層體系,其中較高等級的演算法能夠預測出較低等級演算法不能預測的序列。不幸的是,這樣的計算機在真實世界中還不存在,而且我們可能永遠都無法將其製造出來。


預測第一個數字,及其它的東西


鑒於索洛莫諾夫感應是一種學習演算法,它只能從習得的測量數據中給出一些有意義的預測。那麼你會如何處理這個問題,來預測第一個出現於模擬程序中的數字會是0還是1呢?


值得慶幸的是,仍然有許多先驗知識可供利用。例如你可以做的事情之一(至少理論上如此,因為在實際中是完全辦不到的)是把你看到的一切錄成一段視頻,並用索洛莫諾夫感應來預測接下來會發生的事。然後你可以快速查看最有可能顯示 0 或 1 的視頻流。既然視頻最終會以位串形式存儲於你的計算機中,那麼你仍有機會在上面運行索洛莫諾夫感應(儘管你想要使用一個不同的變數,而不是我為了一次預測超過 1 bit 而描述的那一個),而且所有關於精確度的保證將仍然適用。


糟糕!理論上你現在可以做這些事來預測未來,而不是等待著一項可能能把你送入某個模擬程序的技術。這就提出了一個問題:索洛莫諾夫感應是否可能事實上成為「萬物理論」,即能統一併解釋宇宙的方方面面的終極物理理論。這樣一番陳述將會隱含一些有關宇宙基本性質的深層次內容,而且它實際上是一個研究領域,儘管目前尚頗有爭議 。不過也有可能在不把索洛莫諾夫感應假定為萬物理論的情況下,將信息理論的概念應用於物理學習,而這也是某項研究的主要領域:http://fqxi.org/community/essay/winners/2013.1


技術奇點


讓我們回到宏觀層面。我們的科技在過去幾十年里有了很大提高。不僅如此,提高還在加速。如果永遠這樣進行下去會怎樣?邏輯上總結來看,那豈不意味著技術將提高得如此之快,以至於我們最終會迅速進化成為一個全新的、超智能的物種?


人們把這種假設性事件稱為技術奇點(technological singularity),而我們唯一可以肯定的就是我們並沒有一個能夠發出這一事件預警的線索。我認為最近這些物理學發展成果證明了這種說法的正確性程度。我們不僅對社會學、生物學或技術上會發生的事一無所知,甚至都無法知道基礎物理學水平上可能會發生的事情!


顯然,我認為我們需要做更多研究,才能弄明白技術奇點發生時可能會發生什麼,從而更好地應對它們。但這個是我希望會發生的事情:記得這篇博文中出現的第一個棍棒小人嗎?我們推測如果我們能夠像連接著左右半大腦的神經纖維那樣有效地連接 2 個人的大腦,他們可能會覺得自己像是一個人。



一些物理學不能預測的事,學習演算法卻能辦到?



請您繼續閱讀更多來自 機器之心 的精彩文章:

盤點8個最具啟發意義的深度學習應用
美國經濟顧問委員會主席:為什麼需要更多人工智慧?
當人工智慧出錯時,我們可能沒有能力理解出錯原因
喬治亞理工研發出模仿人類步態的機器人
FB人工智慧大腦:Big Sur硬體系統

TAG:機器之心 |

您可能感興趣

做夢能準確預測到未來嗎?科學家稱量子糾纏能夠穿越時空!
科學家霍金為何能夠預測我們常人無法知道的事情?
你想預測未來嗎?那麼你需要理論科學
幼兒的空間推理能力可預測未來的數學能力
用機器學習來預測情侶間何時吵架,這是一個很實用的演算法
美國能源部利用機器學習演算法,準確的預測了地震時間
基因檢測預測不了你的未來,但它能計算人類的命運
科學研究表明夢有讀心能力,夢境也可預測未來
走路學問大 不僅能預測患心臟病幾率 還能看出別人善意或惡意
自我學習式計算機可比標準醫療指導方針實現更好的性能,顯著提高預測率
算命,學術上叫周易預測,研究算命的學術叫易學、也叫術數
科學表示:地震無法預測,時間確定更加不可能
預測糖尿病併發症風險,不用去醫院,這些檢查自己在家就能做!
周易預測學習 能依據別人的講話進行預測嗎?
以我們現在的科技,能有效預測地震嗎?
動物預測災難?可能沒我們想的那麼神奇
想預測孩子的長相?這不是不可能!快來看科學狂人的最新發明!
易經能預測,但又不主張預測,這是自相矛盾的嗎?
科學家創造了一個預測系統,能看到地球上還沒發生的大事件