陶哲軒IMO演講全文:一次性解決一千個問題,AI讓數學擺脫蠻力計算
机器之心發表於2024-08-29
在探索「數學之美」的路上,人工智慧到底走到哪一步了?說到這個話題,可能沒人比數學家陶哲軒更懂。他幾乎是最常用 AI 輔助證明的數學家之一,還在今年的 AI 數學奧林匹克競賽(AIMO 進步獎)擔任了顧問委員。 最近,在 IMO 2024 的一場演講中,陶哲軒全面回顧和展望了計算機與人工智慧在數學研究中應用正規化的演變。影片連結:https://www.youtube.com/watch?v=e049IoFBnLA為期一個小時的演講中,他從早期計算工具討論到現代機器學習和形式化證明助手的演變過程,還著重介紹了最近取得的突破和麵臨的挑戰。陶哲軒強調,雖然人工智慧在數學領域的作用越來越大,但人類的洞察力和創造力對於在該領域取得有意義的進展仍然至關重要。謝謝!回到 IMO 我很開心,在 IMO 的那段時間是我一生中最快樂的時光之一。現在回想起來,仍然覺得很美好。我希望大家都能玩得開心,無論你是否取得了好成績,不僅僅是在比賽中,在社交活動中也是如此。我的演講主題是人工智慧,更廣泛地說,是如何用計算機輔助數學。你們都聽說過人工智慧以及它如何改變一切。今年早些時候,DeepMind 釋出了一款新產品 AlphaGeometry。因此,這場演講我將更多地討論這些工具如何開始改變數學研究。數學研究不同於數學競賽,解決一個問題不止需要 3 個小時,而是需要幾個月。有時,你解決不了問題,就必須改變問題。雖然在技巧上有一些重疊,但這與數學競賽絕對不同。因此,AI 的加入太令人興奮了,而且具備變革性。但另一方面,這也是一種連續性。我們使用計算機和機器進行數學運算已經有很長一段時間了。即使做數學的方式和性質正在發生變化,但我們實際上是沿襲了機器輔助的悠久傳統。那麼,有個問題:我們使用機器進行數學運算有多久了?答案是數千年。這是羅馬人用來做數學運算的機器,它不是很靈巧。計算機呢?我們用計算機做數學題有多久了?大約有 300 到 400 年。有點奇怪吧,因為現代計算機直到 20 世紀 30 年代和 40 年代才出現。在此之前,計算機並不是電子的,而是機械的,再之前,它們是「人類」。「計算機」實際上是一種職業,是「計算的人」。這是世界大戰期間的「計算機叢集」,用來計算彈道等等。這些計算機通常都是女孩,因為男人們的工作是打仗。還有一些程式設計師,他們負責告訴女孩們該做什麼。那時計算能力的基本單位和 CPU 無關。所以,一千個女孩這樣工作一小時,能完成多少計算量?正如我所說,我們使用計算機的歷史可以追溯到 18 世紀甚至更早。在那個時代,計算機最基本的用途就是建立表格。我上高中時還在課程中學習如何使用這些已被淘汰的表格。當然,現在我們有了計算器和電腦。現在我們仍然使用表格。在數學研究中,我們依賴表格,即使現在叫它們資料庫,但本質上是一個東西。數學領域的許多重要成果都是透過數論中的表格首次發現的。數論中最基本的成果之一叫做素數理論。Legendre 和 Gauss 發現了它,雖然無法證明這一點,但他們推測這是真的。在數論中有一個非常核心的問題,叫做伯金 - 斯旺頓模猜想((Birch and Swinnerton-Dyer),我想在這裡談談。這個猜想也是透過大量的表格發現的。現在,包括我在內的很多數學家都在使用一個表格,叫做「整數序列線上百科全書」(Online Encyclopedia of Integar Sequences,OEIS)。也許你也會遇到它,你可能會認出很多整數序列。比如我告訴你 1,1,2,3,5,8,13 這個序列,OEIS 就是一個包含數十萬個類似序列的資料庫。很多時候,數學家在研究一個問題時,都會涉及到一些數字的自然序列。例如,也許有一個取決於 n 的空間序列,你可以計算出這些數字中的前五六個或前十個,然後將其放入 OEIS 中進行比較。如果你運氣好的話,這個序列已經被別人放在那裡了。它可能來自於一個完全不同的來源,比如是對其他數學問題的研究。這就給了你一個很大的線索 —— 兩個問題之間存在著聯絡,許多研究都是這樣產生的。表格就是我們最早使用計算機的方法之一。當你想到用計算機來做數學題時,你會想到數值運算,它是可持續計算的正式名稱。你想要做一個非常龐大的計算,就需要做很多很多的算術運算。把它輸出給計算機,我們從上世紀 20 年代就開始做了。也許第一個真正進行科學計算的人是 Hendrick Lorentz。他的任務是建一個巨大的像辦公室一樣的東西,他們想知道水流的內部是怎麼回事,所以他們必須建立一些流體方程模型。他用了一大堆人類計算機來解決這個問題,且不得不發明了浮點運算來完成這項工作。他意識到,想讓很多人快速完成大量計算,應該用浮點來表示大量不同大小的數字。當然,我們現在用計算機來建模各種事物,比如解決大量線性方程或偏微分方程,做一些商業計算。它還可以解決代數問題,許多幾何題原則上也都可以透過科學計算來解決。不幸的是,一旦它的計算規模增加,其複雜性就會變成指數級。因此,直到最近,用計算機代數軟體蠻力解決這些問題還不太可行。但現在有了人工智慧系統,這件事也許就更有希望了。另一種已變得相當強大的科學計算是所謂的 SAT 求解器。它們基本上可以解決邏輯難題。比如,如果你有 10 個陳述或者 1000 個陳述都是真的或假的,而你知道,如果第 3 個陳述是真的,第 6 個陳述是真的,那麼第 7 個陳述一定是假的。如果給你一大堆這樣的限制條件,SAT 求解器就會嘗試接受所有這些資訊,然後總結:你能證明這些句子的某種組合嗎?SAT 求解器還有一個更花哨的版本,叫做 SMT 求解器。在這裡,你還會有一些變數 x、y 和 z,你還會假設一些法則。但不幸的是,它們的規模也非常大,根本無法很好地擴充套件。同樣,解決這些問題的時間和複雜度也會呈指數級增長。一旦超過 1000 個左右的命題,就很難在任何合理的時間內執行這些。但它們實際上可以解決一些問題。比如最近的一個成功案例,如圖所示,可能只有計算機才能解決,我認為只憑一個人根本解出不來。這就是所謂的畢達哥拉斯三元組問題,在大型計算機伺服器計算之前,這個問題一直沒有解決。問題是,你把自然數染成兩種顏色:紅色或藍色,但無論你如何給這兩個自然數著色,其中一種顏色都必須包含一個畢達哥拉斯三元組 A、B、C 三個數。現在我們知道了,事實上並不需要窮舉,只需要查到 7824。這個證明需要 7 個 CPU-year 計算。他們生成了 200 兆位元組,後來被壓縮到 68 千兆位元組。這就是我們利用計算機進行大量案例分析的一種方式。但近年來,我們開始用更有創意的方式使用計算機。因此,有三種方式可以利用計算機進行數學運算。我覺得我真的很興奮,尤其是當它們相互結合,並與更經典的資料庫 —— 表格和符號計算,這種科學計算結合在一起的時候。首先,我們利用機器學習和較新的網路來發現新的聯絡,並找出不同型別數學之間的關聯方式,而這些方式是人類無法看到或不太可能看到的。尤其是大型語言模型,某種意義上說,它是機器學習的大型版本,是一種可以使用自然語言的演算法,比如 ChatGPT 等。它們可以生成可能的證明、解決問題的方法,這些方法有時有效,有時無效。在我之後的演講中,你會看到更多這樣的例子。不過,還有另一種技術剛剛被日常數學家所使用,這就是所謂的形式化證明輔助。計算機語言是用來編寫可執行程式碼的,而形式化輔助證明則是用來檢查事物的語言,用來檢查某個論證是否真實,是否能從資料中得出結論。這些語言使用起來相當煩人,而現在它們變得越來越容易上手了。它們促進了許多有趣的數學專案,如果沒有這些證明輔助工具,這些專案是不可能完成的,而且它們將來會與我在這裡介紹的其他工具結合得非常好。所以,我想談談使用機器和計算機輔助數學研究的新成果。從證明輔助開始吧。是的,歷史上第一個真正意義上的計算機輔助證明可能是四色定理的證明,即「任何一張地圖,只用四種顏色,就能讓相鄰的國家染上不同的顏色」。1976 年那時,還沒有輔助證明。實際上,當時做的尚不能稱之為計算機證明。如今,這是一個需要大量計算的證明,其中一半由計算機完成,一半由人類完成。他們證明四色定理的方法是:你基本上可以歸納出國家的數量,並證明如果你有一個龐大的地圖,其中有一些國家的子圖,那麼就會產生一個大約有 1000 到 2000 個特殊子圖的列表。其中有一些工作他們可以透過計算機完成,但也不得不手工將每張圖表輸入程式並進行檢查。這項任務實際上是由人工計算機完成的,其中一位作者的女兒不得不花上幾個小時手動檢查。工作非常繁瑣,而且過程並不完美。有很多小錯誤,他們不得不更新表格。因此,這並不是現代計算機證明的標準,計算機可驗證的證明是在九十年代才出現的,當時只用了 700 多個圖就得到了一個更簡單的證明。但現在,所有需要檢查的東西,都可以透過一種非常精確的方式找到屬性列表。你可以用你喜歡的計算機語言(C 或 Python 或其他語言)編寫程式碼,用幾頁紙和幾百行程式碼就能檢查出來,幾分鐘就能搞定。然後再實際檢查它是否完全正確,並提供一個一直到數學公理的證明。從證明首次出現,到我們可以用計算機完全驗證,這中間有一個巨大的鴻溝。另一個有名的例子是開普勒猜想。說起來非常簡單。即如何在三維空間中最有效地堆疊球體,以最大限度地填充空間。如下展示了一種「三角形」的堆積方式,它看起來就像水果店裡堆著的橘子一樣。還有一種對偶的立方堆積方式。兩種堆積方式的密度是相同的,都約為 74%。問題是,開普勒猜想,這個難題困擾了數學家幾個世紀。二維空間的最佳堆積並不難證明。但擴充到 24 維度,我們直到最近才得出答案,烏克蘭女數學家 Viazovska 最近解決了這個問題。有一種證明開普勒猜想的策略,雖然堆疊的球的數量是無限的,但我們可以先試著把它簡化成一個有限的問題,用電腦來處理。匈牙利數學家 Tóth 在 50 年代提出了一個重要的想法,即將開普勒猜想的證明轉化為一個有限的組合問題。每次堆積時,空間會被細分成一些稱為「沃羅諾伊區域」的多面體。這些區域是透過找出哪些點更接近某個球體而不是其他球體來確定的。可以透過計算「沃羅諾伊區域」的體積等屬性,進一步得知球體在空間中的排列密度。因此,如果你能算出這些多面體的體積在平均上如何變化,那麼就可以估算堆積密度的最大值。你還可以嘗試找出這些多面體之間的關係,比如,如果一個多面體非常大,可能會導致附近的多面體非常小。因此,你可以試著找到一些不等式,基於這些不等式,進行線性規劃等數學運算,最後得出了一個正確的值。然而,儘管許多人嘗試了這種方法,有些甚至聲稱成功了,但沒有一個被公認為是正式的證明。這個問題最終首先由 Thomas Hales 和他的合作伙伴 Ferguson 解決了。他基本上採用了與前人相同的策略,但在技術層面做了很多調整,比如他沒有直接計算多面體體積,而是發明了一種評分系統,透過對每個單元進行科學評分來最佳化計算。這些評分基於體積並進行了微調,目標是透過線性不等式約束不同單元的得分,最終計算出密度的最大值,從而得出開普勒猜想在三維中的答案。這種方法非常靈活,但也因為過於靈活,導致有太多變數,比如設定評分的方法等。這也把問題搞得更復雜了。Hales 和 Ferguson 意識到,一旦計算函式的最小值時出了問題,就得改變得分函式,從頭再來。但這樣一來,所有已經檢查過的工作都得重做。於是,評分系統變得越來越複雜。他們在這方面的工作持續了將近十年,每改一次都需要花費數月來調整。Hales 在一篇文章中曾寫道:「這種不斷調整的做法並不受同行們歡迎。每當我在學術會議上展示自己的新成果,我總是在展示不同函式的最小值。而且更糟糕的是,新函式與我之前的論文不完全相容,因此我不得不回去修改和補充早期的工作。」當然儘管如此,他們最終還是證明出來了開普勒猜想在三維中的答案。起初,他們並不打算用計算機輔助證明,但隨著專案越來越複雜,他們不可避免地越來越多用到計算機。按照當時的標準,這個證明的規模極為龐大。到 1998 年,整個證明包括了 250 頁的筆記以及 3GB 的計算機程式和資料。同時,使用計算機導致 Thomas Hales 的論文難以透過審查。Hales 把論文提交給了數學頂級期刊之一《數學年刊》(Annals of Mathematics),整個審稿過程持續了四年,審稿委員會包括 12 名審稿人。最終,他們表示 99% 地確定證明是正確的,但無法完全確認其中的所有計算。出於這種不確定性,編輯們採取了非常罕見的做法,發表了論文,並附上了一個來自編輯的保留說明,提醒讀者有未完全驗證的部分。不過後來,這個保留說明被移除了。當時,關於計算機輔助證明是否可以被視為真正的數學證明存在相當大的爭議。即使在論文發表後,仍有一些數學家質疑這是否真正構成一個完整的證明。這可能是第一個用計算機輔助數學證明的大事件。這促使數學家們開始推動如何將證明過程完全形式化。Thomas Hales 因此建立了一個專案 ——「Flyspeck」,基於已有的計算機語言,他帶領團隊構建了一種適用於數學證明的語言,來形式化他的開普勒猜想證明。起初,他估計這一過程需要 20 年,但在 21 位合作者的幫助下,他在 12 年內完成了,並在 2014 年正式發表。如今,我們對「Flyspeck」充滿信心。即便整個過程非常艱難,在過去的幾年中,我們仍在逐漸摸索出一種更好的工作流程來形式化證明。彼得・朔爾策(Peter Scholze)是一位非常傑出的年輕數學家,曾獲得菲爾茲獎,他因許多成就而聞名,其中之一就是他創造了一個極具潛力的數學領域,稱為「凝聚態數學(Condensed Mathematics)」。這個領域結合了代數、範疇論等工具,應用於泛函分析的理論,如度量空間等。在泛函分析中,傳統上比較抗拒代數方法的應用,但凝聚數學原則上可以用代數方法解決一些關於函式空間的某些問題。朔爾策建立了「凝聚群」和「凝聚向量空間」這一整套理論。他的主要觀點是,我們在研究生課程中學習的函式空間的範疇是不正確的,或者說並非具備最佳性質的自然範疇。然而,這套理論中有一個非常重要的消失定理需要證明,儘管朔爾策沒有詳細解釋其中的符號和術語。朔爾策的凝聚數學理論中有一個非常難的消滅定理(vanishing theorem),涉及某個範疇論群的計算。這個消失定理是他理論的基礎,如果無法證明該定理,那麼凝聚數學的框架就無法發揮其應有的潛力。他在部落格中寫道:自己花了一整年時間,深陷於證明這個定理的過程中,幾乎因此而瘋狂。最終,他把推理寫在了紙上,但沒有人敢詳細檢視其中的細節。因此,他仍然對這個定理存有疑慮。他指出,如果這個凝聚數學的表述能有效應用於泛函分析領域,那麼它的意義將極為重要。然而,他也表示,99.9% 的確定性仍然不夠,因為這一工作的主題具有極其基礎性的作用。他說:「他很高興看到世界各地有許多學習小組在討論相關競賽事件,但他們都沒有深入到這個定理的證明部分。」他表示,這趟數學旅程並不是很有趣。他還強調,這可能是他最重要的一項工作,因此必須確保其正確性。他很希望將這個定理用更現代的語言進行形式化。他使用一種叫做 Lean 的 Preface 語言。Lean 是近年來得到廣泛開發的語言,背後有一個眾包的數學庫開發團隊。越深入和高階的數學領域證明就越顯得繁瑣,尤其是像這種高深的數學領域,使用 Lean 可以幫助更加簡潔地形式化複雜的證明過程。數學庫已經發展成為一個核心資源,它已經證明了許多中間結果。你在本科數學課程中可能會看到的一些基礎內容,比如基礎微積分、群論或拓撲學的基本概念等,都已經被形式化。因此,Lean 提供了一個堅實的基礎,讓你不必從數學公理重新開始,而是從大致相當於本科數學教育的水平出發。儘管與更高階的數學研究還有很大差距,但這一基礎已經能大大幫助複雜數學問題的形式化過程。為了形式化這個定理,他們不得不新增許多額外的內容,因為 Lean 的數學庫目前仍不完整。在數學的許多領域裡,比如同調代數理論和層理論,還需要被加入到這個庫中。這些高階數學工具對於更復雜的數學證明是必要的,但 Lean 目前的庫還沒有完全覆蓋這些內容,因此需要繼續擴充套件以支援更廣泛的數學領域。在 EMEA 專案中,僅用了 18 個月,他們就能夠能用 Lean 自動化地證明這一定理,Lean 的證明基本上是正確的。他們還找到了一些簡化方法。有些步驟用程式碼實現起來太難,因此他們被迫尋找一些捷徑。這個專案帶來的是長遠的價值。首先,他們極大地豐富了 Lean 的數學庫,能夠處理大量的抽象代數了。那些為支援該專案而構建的軟體,後續的專案也在用。例如,EMEA 專案中衍生出了一種名為「藍圖」的工具。想象一下,要直接形式化一個長達 50 頁的證明,確實很痛苦。你需要在腦海中保持整個證明的連貫性。 「藍圖」的介面為此,我們找到了正確的工作流程:首先為這個大型證明編寫一個「藍圖」,它將證明分解成了數百個小步驟。每個步驟都可以單獨形式化,然後將它們組合起來。你首先編寫這個「藍圖」,你的團隊成員可以分別處理不同部分。這種拆分還讓我們得到了一點啟示:如果想以人類的方式閱讀數學證明,「藍圖」是最佳選擇。目前,人們正在致力於將這份長達數萬行的形式化證明轉換回人類可讀的形式。為此,已經開發了一些新工具。例如,你可以將 Lean 的格式轉換成人類可讀的形式。這裡有一個拓撲問題的例子。這裡的所有文字都是計算機根據形式化證明自動生成的,看起來和一個人類寫出來的沒什麼差別。它同樣使用數學語言,但它的互動性更強。你可以點選任何位置,它會告訴你你當前處於哪個位置,假設是什麼,你要證明什麼,變數是什麼。如果某個步驟太簡略,你可以展開,它會解釋每個詞的來源。如果你願意,還可以一直深入探索每一個細節。我覺得這是一個很棒的想法。我相信未來的教材會以這種互動的形式編寫。你先對它們進行形式化,然後就可以製作出更加互動的教材,內部內容也會更加靈活多樣。受此啟發,我自己也開始了一個形式化的專案。去年,我與其他幾個人一起解決了一個關於組合產物的問題。這個證明大約有 33 頁,我們在相對較短的時間內完成了它的形式化,可能依然是最快形式化的研究論文。用了三週時間,團隊有 20 人左右,利用了所有已經開發出來的藍圖工具完成了這一切。總的來說,這種方法讓證明過程更加開放和協作化。而且你還能獲得很多漂亮的視覺化圖表。正如我之前提到的,第一步是把你的大定理拆解成許多小部分。我們有一個定理,稱為 PFR,接下來我們會解釋為什麼。在這張圖的底部,有一個表示「宇宙」的小氣泡。然後我們引入了所有這些其他陳述,比如說某個證明必須依賴於之前的幾個陳述,而這些陳述又依賴於更早的陳述。因此,形成了一個依賴圖,圖中的不同顏色表示這些陳述是否已形式化。綠色的氣泡表示這個陳述已經在你的形式化語言中得到了正式證明 ;藍色的氣泡表示這個陳述還沒有形式化,但已經準備好進行形式化,因為所有定義都已經就位。而白色氣泡表示,連陳述都還沒有被形式化,需要有人把陳述寫出來。因此,這就形成了一棵任務樹。這個專案的妙處在於,你可以讓所有人獨立合作,處理任務圖中的不同部分。每個小氣泡對應一個陳述,而你不需要理解整個證明,只需處理你負責的那一部分就可以了。比如,這個問題是一個常見選擇題,但參與的人中有機率論領域的專家,也有一些根本不是數學家的人。他們是計算機程式設計師,但非常擅長解決這類小型謎題。所以每個人都挑選了一個他們覺得自己能處理的小氣泡,並完成了它。最後,我們在三週內完成了整個專案,這真的是一個非常令人興奮的專案。在數學領域,我們通常不會與這麼多人合作,通常一個團隊最多也就五個人左右。這是由於合作大型專案時,團隊中每個人的數學水平都要值得信任。需要確保他們的工作都是正確的,並且達到一定的質量標準。但這一般不太可能。但用 Lean 編譯器做這種專案,它可以自動檢查。上傳無法編譯的內容會被編譯器拒絕。因此,你可以與從未見過面的人透過 Lean 合作。我在這個過程中遇到了很多人,也為在 Lean 社群遇到的夥伴寫了不少推薦信。擅長 Lean 的專家可以專注於將專案的一部分轉化為 Lean,不太熟悉 Lean 的數學家可以繼續原來的工作,將用 Lean 將其程式化的工作留給其他人。雖然 Lean 不能做到完全精確。如果你懂這門語言,AI 給出答案是可讀的,但它看起來有點單薄並且不太符合常規。但它可以把任務分解,有一些人可以從宏觀角度審視整個專案,有的人可以專注於自己擅長的一小部分。我認為這種研究方式在數學領域將越來越常見。使用這些工具仍然挺痛苦的。雖然這些工具正在降低門檻,變得對使用者更友好,但我們仍然需要具備一些程式設計專業知識,比如改格式比手算要多花 10 倍的時間。另一方面,比如圖中的定理中有一個數字 12,在證明過程中想要把這個 12 改成 11。但是這樣必須重寫整個證明,或者一個一個地把 12 剪下貼上成 11。但當我們將其程式化後,這個效率大大提高了,把 12 更改為 11 只花了幾天時間。只把某處的 12 改成了 11,編譯器自動在五個類似的地方報錯了。像這類工作已經不需要親自處理了,我們直接針對它做最佳化。因此,對於一些特定的數學研究,透過程式化的方法實際比傳統方法更快。目前,也有相當多這種用計算機輔助的大型數學證明專案正在進行。其中最引人矚目的應數 Kevin Buzzard 正在用 Lean 證明費馬大定理,他剛剛獲得了一筆鉅額資助。他表示,完成這項工作的主要工作大概需要五年時間,實際上,該專案已經開始取得進展。下面來談談機器學習對數學領域的應用,我先跳過用機器學習來解偏微分方程的話題,談談機器學習的另一個應用。數學中的「紐結理論」(Knot Theory)是一個相當有趣的領域。它是眾多的數學領域的交匯處。 2021 年,Alex Davies 等人透過機器學習擴充了對「紐結理論」的新認知。從本質來看,一個結是一個在空間中閉合的環狀或曲線。如果能夠透過連續的變形,將一個結平滑地轉換為另一個結,且在整個過程中結不穿越自身,那麼這兩個結在數學上被認為是「同胚」的。這種連續變形的過程,確保了結的拓撲性質得以保持,也就是說,在拓撲學的視角下,它們的型別是等價的。我們可以透過機器學習來自動地識別結的性質,並對其變化的過程進行一些分析,例如,對不同型別的結進行分類,或者預測結的性質,比如它們的形態是否穩定,或者預測它可能轉變成什麼新形狀。這些知識可以擴充套件到材料科學、生物學等等領域,從而為這些領域帶來新的見解和解決方案。「紐結理論」中的核心問題之一便是判斷兩個結是否具有等價性。面對兩個結,我們是否能夠找到一種方式,將一個結變換為另一個?通常,我們透過「結不變數」來解決這個問題。「結不變數」往往是一系列數字或多項式,它們與結的結構緊密相關,並且在結的任何連續變換下都保持恆定。換言之,這些數值或多項式的不變性為我們提供了一種可靠的判斷標準:如果兩個結的「結不變數」不相等,那麼這兩個結就不可能是等價的。這是一種判斷結等價的定量方法。「結不變數」也有多種型別,其中一種稱為「signature」。它透過一種特定的計數方法。首先,將結展平,然後計算交叉點的數量,區分哪些線段是相互跨越的,哪些是相互位於下方的。基於這些交叉點的資訊,我們可以構造一個特定的矩陣。透過進一步的數學處理,我們得到一個名為「signature」的整數。此外,還有一些著名的多項式也是「結不變數」,如「瓊斯多項式」(Jones polynomial)和「霍姆費利多項式」(HOMFLY-PT polynomial)。不過,在此我就不深入討論這些內容了。這些多項式、不變數為我們提供了深入理解結的複雜性和多樣性的有力工具。此外,還有一種判斷標準,名為「雙曲不變數」(hyperbolic invariants)。它源於幾何學。你可以取結的補集,被稱為雙曲空間(hyperbolic space)。這種空間帶有特定的幾何結構,具備距離的概念,並且可以度量體積和其他一些不變數,它是實數或複數,可以用來判斷兩個結是否等價。 表格中展示了 1991 年由 Hildebrand 和 J. Weeks 進行的關於結的雙曲不變數的研究。這裡列出了一系列關於結的假設,包括雙曲體積、同調尖頂形狀等等,它們涉及實數和複數。然而,沒人知道這兩者之間有什麼聯絡。因此,有兩種獨立的方式來生成關於結的統計資料,但它們之間沒有關聯。直到最近,人們才開始使用機器學習來解決這個問題。他們建立了數百萬個結的資料庫,並用這些資料訓練了一個神經網路。結果發現,訓練後的神經網路,可以根據所有的雙曲幾何不變數來預測簽名,大約 90% 的時候它可以猜對。這就形成了一個黑箱,它能夠告訴你這些幾何不變數中某處隱藏了簽名的資訊,但卻不能解釋這個黑箱的內部原理。不過這仍然有用,因為一旦有了這個黑箱,你就可以進行實驗。接下來他們進行了顯著性分析。這種分析的原理是黑箱接收大約 20 個不同的輸入,而輸出是一個簽名那麼你可以透過改變每一個輸入,來觀察輸出的變化機率。20 個輸入中只有 3 個對輸出起了重要作用,其他 17 個幾乎沒有影響,而且這 3 個也不是他們最初預期的。比如,他們本以為體積會很重要,但結果顯示體積幾乎無關緊要。三個重要的輸入是長程平移和子午線平移的實數部分和複數部分。一旦他們確定了最重要的輸入就可以直接繪製簽名與這三個輸入之間的關係圖,然後用人的視覺網路,而不是神經網路來觀察其中的明顯模式。透過觀察這些圖,他們可以提出一些關於問題的猜想。儘管他們最初的猜想是錯誤的,但他們重新利用神經網路,證明了這個猜想的錯誤性,並根據錯誤之處進行了修正,最終得出了正確的猜想,成功解釋了這個現象。一旦他們得出正確的陳述,他們就能夠證明這一點,說明為什麼簽名與這些特定的不變數有如此密切的關係。我認為這展示了機器學習在數學中的一個應用方式,它並不直接幫你解決問題,但能提供很多有用的提示,指引你去尋找關鍵的聯絡,不過最終還是需要人類來做出真正的關聯。最後,我們來談談大型語言模型,它們是最引人注目、也最為人所知的。神經網路已經存在了 20 年左右,而大型語言模型大約在 5 年左右就已經出現了,但直到最近,它們的輸出才接近人類水平。你們可能都聽說過 GPT-4,這是 ChatGPT 的一個模型。非常著名的是,當 GPT-4 釋出時,有一篇論文描述了它的能力。研究人員給它輸入了 2022 年國際數學奧林匹克(IMO)的一道題,是一個稍微簡化的版本。如果你研究過 2022 年的 IMO 題目,你會發現它不是完全相同的形式,這是一個簡化版本。不過 GPT-4 給出了完整且正確的解答,它確實解決了一道 IMO 的題目。但其實這是他們挑出來的。他們測試了數百道國際數學奧林匹克(IMO)級別的問題,成功率大概只有 1%。所以雖然這道特定的問題能夠被解決,但他們必須以正確的方式來格式化問題才能得到解答。不過,儘管如此,這依然相當令人驚歎。另一個有意思的是,某些人類覺得困難的事情,AI 可能可以輕鬆完成。而人類覺得容易的事情,AI 卻常常難以處理。這是一種非常不同的解決問題方式。有研究人員曾讓模型做一個簡單的算術計算,像是 7×4 + 8×8。模型只是根據輸入猜測最可能的輸出,結果它猜的答案是 120。然後它停頓了一下,說:「也許我應該解釋一下為什麼是 120。」於是它逐步展開解答,但當它一步一步進行計算時,實際上得出了正確的答案 ——92,而不是它最初猜的 120。如果你接著問:「等等,你之前說答案是 120。」 它會回覆:「哦,那是個筆誤,抱歉,正確答案是 92。」所以它們並不是透過從基本原理推匯出答案,而是每一步都在猜測接下來最自然的輸出是什麼。令人驚訝的是,有時候這種方法有效,但很多時候卻不奏效。而如何讓它們變得更加準確,仍然是一個正在進行的研究課題。所以,人們正在嘗試各種方法來改進這些模型。你可以將這些語言模型與其他更可靠的軟體連線起來。實際上,接下來的演示中你會看到一個大型語言模型與其他工具連線的案例。在這種情況下,你不需要自己進行計算,而是將計算外包給 Python。不過你還可以做另一件事,強制語言模型只生成正確的答案,方法是讓它們輸出特定的程式語言格式。如果程式碼不能編譯,你就把它返回給 AI,讓 AI 重新嘗試。或者你也可以直接教它一些解決問題的技巧,比如我用來解決國際數學奧林匹克(IMO)問題的技巧,像是嘗試簡單例子、反證法,或者一步一步地證明等等。人們正在嘗試各種各樣的方法。雖然目前我們還遠遠沒有能夠解決大多數數學奧賽問題,更別提數學研究問題了,但我們確實在不斷取得進展。除了能夠直接解決問題外,AI 還可以作為某種靈感來源。實際上,我自己也使用過這些模型,並嘗試各種問題。我曾遇到一個難題,嘗試了幾種方法都沒有成功。於是,作為實驗,我向 GPT 詢問它會建議使用哪些其他技術來解決這個問題。它給了我一個包含 10 種技術的列表,其中大概有五種是我已經試過但明顯無用的方法,還有幾種也不太有幫助。但其中有一種技術我沒有嘗試過,那就是對這個特定問題使用生成函式。當它提出這個建議時,我意識到這確實是正確的方向,但我之前忽略了。所以,作為一個可以交流的人,它還是有一定用處的。雖然現在並不是特別出色,但也並非完全無用。另一個已經變得非常有用的 AI 輔助型別是用於證明輔助的工具。正如我所說,寫正式的證明是一項非常繁瑣的任務,就像任何非常嚴苛的計算機語言一樣,你必須確保語法完全正確,如果你漏掉一步,它就無法編譯。現在有一些工具,比如我用過的 GitHub Copilot。你可以寫下證明的一半,然後它會試著猜測下一行應該是什麼。在大約 20% 的情況下,Copilot 會猜出接近正確的內容,然後你可以選擇接受它的建議。比如,在一個例項中,我正嘗試證明某個命題,灰色部分是 Copilot 建議的程式碼。結果發現第一行沒什麼用,但第二行卻上解決了這個問題。所以,你不能完全依賴它的輸入,因為它不一定能編譯成功。但如果你大致瞭解程式碼的工作方式,它可以為你節省很多時間。這些工具正在不斷改進。現在,如果證明只有一兩行,它們可能能夠自動完成。還有一些實驗在進行中,嘗試讓 AI 生成證明,接著將其反饋給編譯器,如果編譯出錯,再把錯誤資訊傳回 AI。可以看到,這種方法可以處理大約四到五行的證明。當然,一個完整的大型證明通常有數萬行,因此我們還遠沒有達到能夠立刻將證明完全形式化的水平。但即便如此,它已經成為一個相當有用的工具了。我們現在處於什麼階段?有人希望在未來幾年內,我們能夠直接使用計算機來解決數學問題。我認為距離這個目標,還有很長的路要走。對於一些細分領域中的問題,我們可以構建一個 AI 專家。但它們並不完全可靠。因此,至少在接下來的幾年裡,AI 將大機率扮演一個輔助的角色。除了我們熟知的那種 AI 輔助「蠻力計算」之外,我認為還有一個特別令人興奮的方向。儘管目前還沒有真正成功,但是 AI 已經非常擅長生成猜想。我們已經看到了一些例子,AI 已經可以推測兩個統計資料之間的聯絡。所以現在我們寄希望於建立龐大的資料集,將大量資料「喂」給 AI,然後它們就會自動生成各種數學物件間的聯絡。其實這還並沒有實現,我們還不清楚如何做到這一點。當然,我們還沒做出那種大體量的資料集。但我認為 AI 能生成數學猜想在將來很有可能成為現實。證明數學定理是一個艱難、持久的過程。我們現在一次只能解決一個問題,如果效率夠高,也許你也可以同時解決兩三個問題。但是當我們有了 AI,可以一次性處理 1000 個類似的問題。你可以直接告訴 AI:「嘗試用這種方法解決這 1000 個問題」,我們再檢查結果,可能其中 35% 的問題已經用這種方式解決了。此外,我能夠將相似的問題綜合起來一併解決。這種方法允許我們對整個問題集進行探索,而不是孤立地逐個擊破。這是目前無法做到的,因為它可能需要幾十年的時間,透過幾十篇論文,用各種技術慢慢弄清楚。目前,我們仍然需要證明老式的定理。因為我們還沒找到引導 AI 自動證明的方法。但是憑藉未來強大的 AI 能力,你將真的可以開始以一種真正前所未有的規模進行數學運算,未來將會非常激動人心。