對抗瘟疫的唯一辦法,就是正直。
--〈瘟疫〉,卡繆著,嚴慧瑩譯
你認為我能給出答案嗎?圍棋本來就沒有答案,我要怎麼給你?答案必須你自己去尋找。雖然沒有答案,但努力尋找答案的過程就是圍棋。
--〈突圍思考〉,曹薰鉉著,盧鴻金譯,由作者引述其孕育出三位第一人、可被尊稱為現代圍棋之父的瀨越憲作老師之言
前日晚間送客,與友人 Y/T 的晚餐,總覺得聊起許多關於這專案的想法,比起過去這兩個月寫作文章來得更順暢些。這寫作力退化,或者美其名為轉化,也是頗為抱歉的事情。但對於參賽題目本身,有些想法沒有詳聊,總是沒有完結這場馬拉松的感受。所以趁著結語,一定要來說明一番。
引開賽日的段落:
寫作力求教學意義的技術文章於我,一直有一個窒塞的感受,最近接觸到有人描述(抱歉,也不確定原典出自何處了),寫作只能對應到讀者的主觀時間感受而序列化(serialization)自己的材料,豁然開朗。大前年的拙作予焦啦系列花了非常多的力氣,先求技術上達到可接受的程度,於開賽前又重新整理程式碼,將完全非線性的開發、除錯經驗收編乾淨,好不容易才能夠理出一個順暢的敘事,於 DeltaPathogen,完全沒有這個餘裕。
沒有餘裕是一種說法。回首這三十天乃至於一年半,實際上有沒有能力呢?恐怕也沒有。
回想過去在公司做事情、倡議、導入技術、宣揚想法的時候,往往以作為受眾的同事並不清楚「事情的複雜性」為破題手段,或者更生動點強調,「我們在半導體裡面做 CI/CD 就是會面對更多的複雜性」。應該可以算是一種老化,因為現在的我覺得這些事情都不需要講了,不只是講了沒有用,就算講了有用,難道這些敘述有什麼資訊量嗎?不如說,所有的事情本來就都很複雜,那麼既然是恆真句句意的子集合,那有什麼好說的呢?每想到這一點,就更沉默一些。
然而,從資訊流動的基本形式來講,我們還是會很簡單的依附媒體的能耐。既然事物的關係可能非常複雜,那我們總是用節點和連線來展示各種概念或流程,真的能夠打遍天下嗎?書寫文句,能夠構築出各種概念之間的連結嗎?甚至有激進的理論認為心智以語言思考,但是嘗試過寫作的人就知道,難道使用這些句子段落還原我們腦中所想是那麼容易的事情嗎?
然後這些媒體終究又都需要經過讀者的檢驗,而讀者用來檢驗資訊的方式受限於單維時間,所以需要將邏輯重新從一球義大利麵梳理回到剛出廠的毛線球一樣。遷就媒體與時間,本身就是寫作的一部份。但這畢竟不是很令人舒服的一件事,既有的筆記軟體也雖然有強大的現代資訊技術撐腰,卻也沒有挑戰這個假設。超文件(Hypertext)也僅有擴增一點點。
於是,當我看到 heptabase 這間新創的使命時候,幾乎無法維持我顎關節的機能。可以說,我從來也沒有看過一篇繁體中文文章有這麼多霸氣能夠洩漏出來。可惜我的常識不足,還是最近看到「為什麼高斯希望他的墓碑刻上正十七邊型」這篇,才發現原來 hepta-
是希臘字的 7 的字根。第七基地,很有趣。
知道這個線上服務已經是在準備鐵人賽左右的時間,所以它並沒有實際改變我的知識管理流程。呃,說得好像有一樣?在 ChatGPT 出來之前,我準備鐵人賽的方法都很單純,預跑期兩年到六個月不等的時間,總之看到什麼、想到什麼就以日記的形式(而非分類)直接記在 HACKMD,然後因為鐵人賽的節奏很固定,所以有提前規劃的話也可以累積足夠多東西就開始就大綱和個別參賽日的主題開始寫。HACKMD 的好用主要是,它不太彰顯自己,你甚至可以只把它當成是 Windows 最早的那個記事本,但有雲端應用程式的好處。ChatGPT 出來之後,其實我自己是變得更笨了,好比祖先學會用火之後就變得軟弱了一樣。
總之,雖然我沒有用過 heptabase 的服務,但就憑主辦人有那樣霸氣的志向,以及他為了知識傳遞媒介下過的工夫,我就認為我有責任幫忙傳播這個工具,以及我們習慣的資訊媒介可以有很不一樣的樣貌的這個點子本身。而給我自己的挑戰則是,下一個專案,就應該試試看使用這個工具來整理自己的思緒和收集資料。也許它無法真的駕馭我以及我合作的人們所面對的複雜性?也許過去我宣稱的複雜性只是我拒絕好好學習工具、好好整理資訊的藉口?
就像創辦人自己展示在自己的部落格的那樣,他在建立這樣的知識管理系統之前,自己就已經是個能夠將意念表達得很清楚的人。也許他的團隊能夠將他們的知識整理術複製給予世人,促進更多意念的交流與表達,算是大語言模型時代另闢蹊徑的作法吧。
如同已經展示在系列文演進過程中的那樣,打著先射箭再畫靶的主意,但由於那箭遲遲不出,靶也就越畫越保守。其實開賽的時間點也隱約意識到這點,所以也預先打了預防針而沒有說得太過。但這裡,就算不做驗屍報告,也當作是留給未來的自己延續專案的資料,描述一下哪些目標沒有顧及。這和第四天的過程中拋棄的點子類似,同樣的主題不會再重複。大致上從抽象度高的目標到低排序。
由於沒有看過大型桌遊設計和大型電玩系統設計的樣貌,所以只能夠以自己在這次的經驗來投射到棋類遊戲上面。這又應該分兩個部份:系統設計部份是傳統軟體工程的範圍,機器學習部份則是從零開始採掘出有遊戲邏輯概念的代理人。
前者,會被人月神話描述的一切現實力量支配,但大致上,如果是小型桌遊的話,甚至像另外一串本屆參賽的聖胡安,應該是不需要擴展團隊尺度到那個程度。雖然以我這次鐵人賽的軌跡,開發時間跨度很長,但如果可以有其他角色(人類,或期望未來的其他 LLM-based 代理人)分工負責收斂規格的話,開發時間應該可以控制在一個 man-month 之內。對未來看好的部份在,光以現在 ChatGPT 的能耐看來,它從遊戲邏輯翻譯出來的程式碼都蠻直接可以產生出可用的原型,在這個專案裡的例子包含隨機地圖生成以及 UI 生成,所以如果 chatgpt-o1 那種強化思維鏈的作法能夠把成本更省的做出來的話,局部區塊的小程式應該都很容易。但是,如果桌遊設計的團隊本身就很小,很難想像會有資金配置短期 recruiter 直接投入這個作業。那如果是兼差打工的,或者像我這種當興趣的志願者,那這樣就會拖沓開發,比找桌遊咖遊玩測試還要更久又更貴。
後者,就有更多不可控制性。按價碼看也許有可能會更貴。而且因為現在是高度熱潮或者是正要開始去熱潮的時期,不太確定強化學習技能的人未來會怎麼流動。另外,AlphaZero vs. Katago 的對比也很值得參考。前者是在黑暗中打火石迸出的火花,但後者是一套電力系統,顧及圍棋這個遊戲的更多實際需求,也設置了可以擴展的模式讓模型能夠越來越強。以任何小型桌遊的設計團隊來說,要為了開發中的遊戲達成後者,應該是不切實際之舉;但如果只能夠用教科書上的知識去開發強化迴圈,會不會造成許多沉沒成本呢?
總之,這個目標不太可能。都還不需要論及桌遊的競技屬性之外的那些美術、劇情、體驗之類的元素,就算只論競技性強的,上述兩個資訊技能人員的準備和合作,就可能蠻困難。除非有人不需要該團隊支付的錢,自己又有時間可以貢獻,然後品質又好。但這種永動機......不切實際。
有個天造地設的機會,就是深顏色工作室恰好在年中宣佈疫途的規則更新,原本這剛好是變體研究的機會,但無奈主要目標遲遲尚未搞定,沒有辦法分心研究變體。我心中的榜樣是,用 AlphaZero 重新想像西洋棋一文。
撇除掉 DeltaPathogen 自己專案進度的問題,變體研究的困難之處是,遊戲系統部份的配套要足夠好。如果先前的設計足夠有彈性的話,那麼也許在規則改動(也就是系統因應改動)的時候就可以花費較少時間。但是所有軟體工程都一樣,如果為了未來的彈性推敲太久,那麼時程就更有機會延宕,甚至可能掉入過早的最佳化的陷阱。但這件事情令人猶豫的地方就和良好的策略遊戲一樣,實在是難以權衡,尤其是想到架構不相容的時候未來完全改不動程式碼的那種痛苦。
以疫途第三版規則更新為例,兩個更新項目分述如下:
setup_generator
都有些改動,而且改動之後,從前生成過的 sgf 檔也都無法使用。雖然生成也不花時間,但是變體研究,總該能夠輕鬆切換不同體系並加以比較,如果相容性差異存在,那會讓交叉比對的環境顯得困難。要改還是可以改,但總得來說還是時間問題和各種主觀偏好造成我維持使用二版規則的現狀。
BTW,我相信設計師大大應該也會看。針對設置階段的疫病標記,一、二、三版的改動,想必很是頭痛?是否考慮過一種家規,就是人界、冥界劃分出來之後,讓一個玩家喊標記數量,另一個玩家決定要玩疫病或是醫療方?
人類文明的成就來自合作,但那些合作始自人類個體的智慧,這智慧能夠廣泛地理解事象與抽象概念。
AlphaZero,一個汎用的強化學習演算法,也在多數遊戲成功奪取最強人類的桂冠。它會是 AGI 的一個跳板嗎?這牽涉到汎用與特化的競爭想像。不確定將棋和西洋棋社群後來怎麼樣,但圍棋的部份由開源的 KataGo 接過聖火,持續向著圍棋最深處的真理強化中(能否抵達神的境界,以收斂率來看,是不太可能),其中也還是多引入了一些為了圍棋特化的資訊。但更簡單的問題是,如果真的這麼強的話,為什麼沒有其他遊戲被它征服?另外也有一個反面例子,是 Hatetrix 世界紀錄保持團隊的心路歷程提到,
When we first started on this project, we had a very clear idea of what we thought a winning strategy would be: A Monte Carlo simulation, powered by Machine Learning! Just like they do in AlphaGo and the more generalized AlphaZero. Surely someone had already written an implementation and all we had to do was write an emulator, hook it up to a nebulous AlphaZero implementation and emerge with a world record. How long could it take? Two weeks? ...
... Using knewjade’s heuristic, we generated ten thousand more MCTS games (the best of which scored 20 points), fed them to the model, and let it cook for two weeks. The resulting model was somehow worse than our training data, scoring at most 17. Which meant our poor model was just never going to rise above its training data. Not with the meager resources we could provide it. AlphaHATETRIS was officially dead.
順帶一題,我非常建議讀者閱讀上面連結的 Hatetrix 的故事。真的非常有趣。
在整理 SGF 的時候,我看到該規格的流水號,前面已經有許多遊戲。我就在想,如果有一個更通用的訓練過程,比方說我可以餵 SGF 的 spec 和各個遊戲的規則給 transformer-based 的新式模型,它會不會因為一口氣掌握了一些現代人類最喜歡的抽象棋類遊戲,而促使它有更強的發展?就像 DeepMind 這份研究發現一次學 9 款遊戲的代理人在各個遊戲環境都表現得比較好一樣?還是汎用有其限度,像是慣用手顯然維持了一部份的腦區分工平衡?
在 Day12 提到了 AlphaZero 與過去的強化學習演算法沒有太多對話。環境回饋值的這個概念也幾乎被無視了。但是並非所有需要以強化(或說,自我監督式)學習的任務,都如同圍棋一般均勻。圍棋美則美矣,既然是人類已經無法擊敗代理人的時代,我們也該認清征服它並不是終點的這個事實。我們知道終點不在無窮遠處,但我們已經出發的里程數相比於總路程可能仍然是零。所謂終點,不是那些 AI 巨頭為了撐起熱潮而穢土轉生的 AGI 概念,而是更謙卑,也更可能在可控制程度的通用遊戲智慧,GGP。就算以 GGP 的範圍來講,AlphaZero 也不像是最終解答,儘管論文是那樣修辭的。
但這個專案的目標仍然不是以挑戰 AlphaZero 的可用性為主。別人能夠用這套征服三大經典遊戲,而我不能征服疫途,可能有很多因素。要挑戰 AlphaZero 的可用性的話,必須做出更多的分析和有效的實驗。也許實際上可以?如果不行的話,我能不能提出一些什麼理論,同時指出哪些遊戲也不可能用 AlphaZero 演算法來訓練?考量到可以支配的時間和資源,這種題目,還是慢慢等時間會不會給出答案。
Yann LeCun 前陣子在自己的 X 上面說,「比起 RL,我更偏好 MPC,因為 RL 需要消耗非常可觀的資源才有辦法學會新的任務。」MPC 是 Model Predictive Control 的縮寫,但我於此完全不熟悉。也許是個延伸研究項目?
系列文中應該已經緩慢釋放著漸漸理解到無法達標的失落感。本節也跟這個歷程直接有關。
什麼早期停止(early stop),什麼遊玩測試(play test),都是說起來很通用,但是也得費好一番功夫搭建的東西。問題是,我為什麼需要自己架呢?的確,我沒有去找有否通用的強化學習框架可以當作基礎讓我搭建,也許有?我不確定。
追根究底還是收集對局資料與訓練時間高度失衡(大概是 80~20:1)。難道不能再收集快一點嗎?這可能全然是資源問題。過去這幾週我慣用的作法是用三個 container 開啟三組的伺服器以及雙方代理人,都跑在 CPU 上。可能是我設定沒有搞定,讓 CUDA process 時不時有排他性,沒辦法全部都用 GPU 跑。曾經有一次最激進,使用一個 nvidia-cuda container 跑 GPU 的模擬對局加上另外三個 CPU 對局,結果直接熱當。計算資源啊,這還是蠻硬的需求。
除了核心的卷積層,整個代理人行為還包含一些狀態機的操作。應該要使用類似 Executorch之類的框架先把模型轉換成可以連結的 C++,然後其他遊戲相關的狀態機都用 C++ 重寫去驅動,理論上可以再快一點點。
光靠電競筆電,也很難再癡心妄想其他新一點的結構,像是用 transformer 去讀 SGF 是很有趣的題目。
昨天也展示過的,現在支援的系統是沒有辦法提供整套的遊玩體驗,這實在是非常可惜。週末友人來訪的機會,久違地再感受到布局的緊張感,還有玩家將如何展開棋局的信念。沒有辦法呈現那部份實在可惜。
要實作這個功能的話,還是需要早期規劃,關於怎麼應對那個不對稱性。現在如果重做的話,我應該會比較清楚怎麼做了。
啊,網頁完全是一門專業,實在很抱歉在很多前後端工程師出沒的 ITHome 胡亂詠唱直接上陣。真的沒有什麼基礎(大學修的網頁設計課程還在用 jsp...),更不用說框架的使用。
我覺得網頁最挑戰之處在於如何掌握所有的非同步行為,同時又能夠搞定自己需要的邏輯。所以,就只是一個試玩 Rust web-actix 的小經驗。也畢竟不會 scale,效能什麼的就日後再說吧?
理論上,規則是絕對優先的。規範、法律、禮儀。策略則是在遊戲還能夠進行之時,由規則所允許的、玩家推進遊戲狀態的手段。
跳脫了一般的遊戲之後,隨著團體規模越來越大、交互的事件越來越複雜,規則與策略的這條界線則逐漸模糊。普遍的社會,沒有神權,人們必須自己負擔系統的維護,也就因此會導入超規則:那些能夠修改規則的規則。所以策略可以加諸於規則,規則又回頭影響策略,跨越從數分鐘的會議到數世紀的憲法維護的時間尺度,也跨越數公尺的兩人約會距離到數萬公里(對,提醒未來的讀者,現在我們還不是星際文明)的空間尺度。
但當我們再將鏡頭從普遍的社會逐漸拉回遊戲,我們也會發現那條線其實很模糊。經典的例子當然是圍棋的各種死活判定(感謝 marsgoat 大大在探討征子的文章中提及)的複雜程度與各種規則之間的歧異度。更近也更現代一點的例子,可以舉七月的時候 PTT 桌遊版的這篇文章,原文部份引述
...(前略,舉兩款遊戲委由玩家進行初始地圖設置,但是有可能設置出有 bug 的現象)
這兩款遊戲的設計師的態度都是,玩家可以商定一下,稍微調整地圖,確保遊戲是正常而有
趣的。畢竟,這只是遊戲設置的一部分而已。但我想應該有人跟我一樣,覺得既然放地圖有玩家決策的成分,就應該屬於遊戲過程一部分
了吧?與其暴力更改玩家的決定,從規則上除Bug豈不是更好?我在英國這邊倒是有人質疑,既然玩家知道地圖這樣放有問題,為什麼有玩家會要刻意讓地
圖出Bug/不好玩?就算增加規則能確保遊戲「可以玩」,卻不能確保它「好玩」。為了大家
有良好遊戲體驗而達成共識修改地圖,不是理所當然嗎?大家是怎麼看,設置地圖算是遊戲過程的一部分嗎?
推文的反應也是很有趣,這裡就不一一列舉了。重點是,其實,就算只是遊戲,但是規則集合要能夠定義得像這個世界一樣無懈可擊,還真的不容易。
無論如何,回到訓練代理人的角度,我們真的能夠完全仰賴策略的學習嗎?應該說,訓練出來的模型如果總是想要選定違規的策略,該怎麼處理?應該給予它比敗局更高的懲罰嗎?還是只能使用其他程式在旁輔助?這整個系列文我問了很多開放問題,所以也許已經將我的疑問的意義稀釋得差不多了,但其實若說這個段落的疑問,就是這個系列文的原點,也是完全沒有錯的。這直接導致了相比於 AlphaZero 多一個輸出部位(策略、盤面價值之外的合法性)的設計。而且,這是很深的疑惑,但現在的我已經沒有辦法描述得更好,所以請恕我直接引述我在開發日誌中的雜記:
2023/08/26
回顧先前在 The Crew 專案進行的探索(實在不敢稱研究),小型 network 要習得一個非常簡單的規則(如王牌已定的基礎 trick-taking)也是非常困難的事情。當時的實驗結果是,在一萬局的遊戲裡面,所有代理人無腦地進行牌局,仍會有少數違規出牌的現象,這是無法原諒的。當我宣稱一個代理人能夠習得一款遊戲,我希望的是它至少能夠確實執行規則所允許的範圍,且絕不會超出規則禁止的範圍。若它無法自行習得,則必然需要額外的附屬邏輯,位居代理人與環境之間,過濾代理人的不合理行為;當時找的幾篇 trick-taking 遊戲代理人論文,看起來都實作了這個部份的邏輯。
這個思考,又涉及到規則的嚴格程度。如果偶爾放槍、相公,不需要判死刑,那麼為何要求代理人做到這個程度?因為雖然神經網路是號稱能夠學習的,但是在環境中動態學習往往需要其他手段介入,因此通常我們會使用訓練完成的模型。我們暫且稱呼這樣使用的模型為靜態運作,而有能力總是從環境的反應來學習(調整自身權重)的模型為動態運作。如果一個靜態運作的模型必須在嚴格的賽局內運作,那麼,為了確保它的競爭強度,我們或許會將之設置為在每個場合下必然執行最強手段的行為模式;在這樣的模式下,要是有時它認定的最強手段是違反規則的,那麼它將會使得賽局的進行中止,以它自身不可恢復的違規負告終。回頭檢視動態運作的可能性,它的硬體則未必有能力針對一個案例適當地調整自己的內容。
(話又說回來,這些模型也沒有能力自己調整自己的內容。神經網路的機器學習領域充斥模糊的用語與概念,大量從自然語言借用,以至於非常擬人。模型本身只是一堆數據,它之所以能夠被用以推論執行,仍然需要仰賴一連串的運算框架、系統後端才有可能。至於其訓練,則代表前端與包裝層,需有既定數值機制,大致不脫 backward propagation 的 gradient 相關方法去更新權重,這個部份,能夠算是模型自己嗎?實際上都是造物者的人類加以實作的結果。)
所以其實相關的研究,在我心裡已經卡在這個結上良久。當然可以將核心決策自任何遊戲當中抽離出來,並只讓代理人負責那個部份;然而,這麼一來就代表任何代理人訓練的週邊框架都得包含人的介入(Human in the loop)。一旦非得到那個地步不可,那麼一個好的遊戲對象就無法被訓練出來。所有遊戲的代理人都還是會一樣困難於訓練。我們需要非常高的抽象層級。最理想的代理人境界應該是,它能夠至少在 tabletop simulator 上面玩任何遊戲;它會的遊戲,他可以依照不同人數、順序、起始狀態去進行;它不會的遊戲,它可以自己閱讀規則(!)、詢問同桌的玩家(不限於人,也可能有完成度更高的代理人)釋疑。這是最理想的境界,化約主義讓我們有一種感覺,似乎我們能夠靠著解決各種遊戲再組合起來,去達到那個境界,但這個直覺本身是值得質疑的。數百萬滴水可以構成湖泊,但數百萬支夾子不可能變成舉重機;在理想的遊戲代理人這個向度上,目前為止的個別突破,包含 AlphaZero,是水滴還是夾子?
想像羽生善治永世七冠,他在習得西洋棋並且達到大師等級的路上,他的路途顯然比一般大師順遂些,至少他不曾針對西洋棋那樣深入訓練。也就是說,將棋的訓練,在他的腦迴路之中,必然有些內部結構(embeddings),對於西洋棋也是能夠使用的。除非數位電腦的類神經網路缺乏了類比的神經系統人腦之中的某些關鍵機制,並且那些機制對於這種兼用的智慧至關重要,否則我們沒有道理認定一樣的路徑不能夠像 CNN 網路在電腦視覺達成普遍視覺能力那樣,用以養成一個通用的遊戲代理人。誠然,我們都聽說了 DeepMind 的 AlphaZero,但它本身還不是上述的理想遊戲代理人,否則我們應該早就聽說它很容易地被用來當作遊戲複雜度的指標、遊戲設計師的絕佳輔助、玩家的替代方案等等用途。
對於疫途,對於 The Crew,對於未來的各種圍棋變體研究,我應該要將自己的戰場定在哪一個層級呢?不打假球,我認為代理人應該要能夠自己學會規則。接下來可以預見一個分歧。如果規則的學習與策略的學習能夠訓練起來,那當然沒問題;但是若當真無法在一個神經網路當中學好,那麼有可能我並未提供一個適當的架構;在嘗試過足夠多神經網路架構之後,如果還是無法取得好的結果,那麼就越來越有信心,這個問題很有可能是類神經網路的根本性缺陷。屆時,就有另外一個研究方向可以好好探究了:規則與策略有何不同?這是否另類的第一系統與第二系統之分?
曾經聽過一個語言老師說過,初期學習外語不是去理解,而是應該去熟悉。單以這次疫途的實驗,ResNet 結構的使用,大致上看起來對於規則的習得並無困難,還算準確;只是像昨天展示的模型推論一樣,也還是有非法著點有超過 2% 的重要性。實務上,還是會另外實作像是 Query 之類的機制來確保只有合法著點會進入棋局的歷史之中,所以嚴格來說我並沒有更認真檢驗這件事情。也就是說,實務上這類的訓練其實沒有必要擔心規則的學習嗎?但這卻又是弔詭的。如果我可以直接 program 神經網路的權重的話,應該可以做出一些 if-else 效果的東西,那麼關於遵守規則與否,就只有成功和違規兩種結果;但是神經網路的訓練或是驗證曲線,卻又顯示它是全然數值性的,沒有什麼瞬間是突然有了全有全無的理解。
進一步講,如果人腦神經網路與人工類神經網路沒有太大的根本差異的話,有沒有可能,這就是為什麼我們有時候也會闖紅燈?也許這就是為什麼,即使是職業將棋棋士,也可能會二歩反則?因為在那個當下,他認為歩打是一手好棋?
註:多數讀者應該不了解將棋規則。將棋比象棋和西洋棋豐富的一個地方在,擒獲的死子可以變成自己的傘兵,適當時機時,可以空降回盤面。然而,棋盤上每一行只允許一枚步兵。違反這個規則的步兵空降,稱作二歩反則。
規則本身的意義,算上變體的可能,以及策略如何在其中延展、如何有時候強到足以覆寫對規則的認知(有時規則太不直覺、容易讓人玩錯之類),作為一個玩家,在這一層細細品味,也是一種本分吧。有些問題,終究只能擱置,讓它慢慢結痂,也許等待復原之後再去感受新的起伏。
儘管這個專案受益於 ChatGPT 老師的幫助甚大,但我認為程式碼是很特殊的一種知識、少數可以非常受益於作為知識搜尋引擎的大語言模型的領域。假設我是做生物技術,或者做化學工程,由於實驗的時間尺度較大、物理操作成份較重,所以驗證生成出來的言論真實與否顯得更困難;更有甚者,開放的程式碼在網路空間俯拾即是,都已經成為 LLM 絕佳的訓練素材,所以它們理所當然也應該要更了解程式碼相關的知識。如果是文科法科,那更是一種魔鬼的誘惑:平日的作業充斥論文,只要幾個鍵的敲擊就能夠生成完畢,何等方便,但它的論述理據又是那樣的模糊不可盡信。
以結果來說,總是對近十年的 AI 發展發表反對意見而臭名昭彰的 Gary Marcus 的許多言論,對我來說非常有說服力。剛好近期有一篇 IEEE Spectrum 的訪談,只用很小篇幅打他關於生成式 AI 風險的新書。主持人也問得出「你一邊說 AI 很笨、沒辦法用(doesn't work),又一邊說它很危險,這邏輯有一致嗎?」這種尖銳的問題,不是托球殺球式的訪問。
無論如何,在 GPT 崛起、他開始大力反對 LLM 相關的過度熱潮之前,他其實就評論過 AlphaZero 了。作為一個大量引用且試圖復現其成功的專案,不引述它的概念就顯得有所欠缺了。標題是「天生性(Innateness)、AlphaZero、以及人工智慧」,以下節錄主要論點:
a
),天生內建的資料表示型態(r
),天生內建的知識(k
),以及最後是經驗(e
)。Gary 與 Yann LeCun(深度學習的先驅)曾在紐約大學對談,其中兩人一個最大的爭論點就是 a/r/k 的成份有多重。Yann 是主張 Gary 認為應該要有的那些 r
都幾乎不需要。Gary 評論,Yann 的意見很像洛克的經驗主義,主張只要靠經驗(後天輸入的資料)就足夠。a
/r
/k
都不是 0。而且,蒙地卡羅樹搜尋,顯然也不是從自我對局學會的,而是研究者設計在這一套方法裡面的。遍布整個網路的卷積層的參數,也不是從資料學來的。這些都屬於 a
/r
/k
的一部份。以上是對於強化學習龍頭(至少是 2017 年當時)DeepMind 最直接批判的部份。是包裝上而非成果上的批判。如果 AlphaZero 的論文可以不使用那些修辭,並且誠實地羅列出一個科學家對於所呈現的研究的極限之認知,我想 Gary Marcus 應該不至於這樣開砲。後續(對應到原論文第五章,天生結構之探討),他將砲口轉向 Yann LeCun 在紐約大學的對談否定他提出的十點必要天生結構。後面與本專案的追求就較無關係了。
同場共賽,也是有緣。今年與遊戲相關的題目竟然也不少,我所訂閱的有
都是行家出手。也預祝三位大大順利完賽,並且完成期望的目的。
感謝 ITHome 再次提供平台主辦這樣的活動。現代文明與資訊技術密不可分的現在,這樣的活動挑戰著各個子領域的作者、催生連結與思考,壯大社群。
感謝公司(晶心科技),讓我能夠以均衡的節奏生活,儘管持續提供世界級的挑戰性給予作為工程人員的我,也不至於將我的全副心神消耗到無法支撐自己有興趣的專案。除了盡本分於上班時間貢獻之外,在這裡略盡工商的棉薄之力,讓 ITHome 的邦友知道,我們是有能力提供 Meta 他們所需的特製運算晶片的團隊,在 RISC-V 社群當中持續競合。打著公司的名號參賽,這是第三次了,自有一種完成的感覺。再引申一些工商好了,也兼拉開這個系列文的主題與我們日常業務的距離:我所屬的計算加速研發處,有著客製化指令擴充(Andes Custom Extension)和人工智慧解決方案(AndesAIRE: Andes AI Runs Everywhere)兩大擴充,其中前者是機密且獨特的的軟硬整合套件與服務,後者則包含硬體加速器 IP(AnDLA)、神經網路函式庫(NN Library,github 有開源版本)以及涵蓋模型最佳化工具(NNPilot)的神經網路開發套件包(NN SDK)。本來曾經提及將訓練成果延伸到這套工具上的可能性,但因為沒訓練出好東西來,也就沒有必要了,有點可惜。
也感謝桌遊社成員,尤其是同是第一代晶心壯士的隊友的HelloWorld,繁體中文圈的 Debugger 第一把交椅、同時也是比我還要罩的桌遊社副社長。在我缺席社課半年以上衝刺這個專案的過程還是和大家一起同樂,實在感謝。
感謝深顏色工作室設計這一款好遊戲!真的很有趣,無論勝負,也無論局中或旁觀。桌遊一般來說有策略性、重開性之類的指標供人評論,如果有一個讓人若有所思性的話,我想我可以給疫途 5/5。雖然有點抱歉,沒有成功征服你們這款遊戲,變得像是來蹭的,而且在這結論裡面,提圍棋的次數甚至比疫途多。另外就是先前提過的,希望之後有機會的話,可以喝個咖啡聊聊天,因為我實在對於桌遊設計團隊很好奇,如果我的系列文或是我所展示的什麼也令你們好奇的話,就再好不過了。
也感謝友人 J,仍然每日能夠平均挑出一個錯字,實在厲害。也希望這一個月的專案總結報告還能夠帶來一點娛樂。感謝友人 Y/T,帶我入坑,以及在系列文尾聲最疲勞時遠來作客。
感謝兩位隊員響應這次的報名,希望你們除了獲得了你們開賽前想要的東西,也在旅程中或結束後能夠發現其他驚喜。
最後,感謝老婆的照看和打點。
這個專案沒有達成預定的目標,所以這個系列文分享了一個失敗的 Side Project 可能會有的樣貌。技術、應用、心態、決策、呈現手法等等面向,有時過於簡陋,有時又無謂地繁瑣。就是不過度修飾的樣子,用字譴詞、文章結構也不追求形式化。撇除這一切手段,甚至也撕去疫途遊戲作為主體的那層厚殼,我想表達出,一名遊戲玩家對於規則與策略所衍生出的棋局空間的終極的好奇心。
這種好奇心,不可能不謙卑。我想像,狂妄的人仍會在屬於自己的遊戲當中度過謙卑的時刻。比方說,我不喜歡馬斯克的形象,但我可以很輕鬆想像馬斯克在與工程師一起睡倉庫的時候,沉靜下來閱讀、分析工程問題簡報的情境。在前日友人 Y/T 面前,我的真心話是,
「先前每次賽後結語,都嘛說自己很謙卑的學習,但心裡當然都還是覺得『幹我超屌』,但這次,除了謙卑之外沒有別的。」
根本不是低調謙卑才能讓失敗不那麼丟臉的問題,而是就算在另外一條好運(壞運?)矇到目標的世界線,我也知道一切都是運氣使然。結論是這個專案,幾乎無一物為我所有。簡單點評,
另外,在這樣的時間點,這樣的世局,能夠做 Side Project,是多麼奢侈的一件事。倘若我是烏克蘭人、黎巴嫩人,甚至就算我是以色列人或俄羅斯人,都不太可能有這閒情。在這樣的市場生態,在人們的注意力被各式新穎的科技(或,陳舊但能有效綁架人腦的科技)競拍的時代,還能夠有一款抽象的遊戲可以讓人慢慢拆解、分析、試圖以 AI 破解......這形象若自比為淋著冬雨的石頭恐怕太有禪意,但至少也像是一叢柏油裂縫中伸出來的雜草,自然地存在於格格不入的環境裡。又,是怎麼樣的好運,能夠讓人好整以暇地花去三十天(或更多),做一件事情呢?
既然也說到小草。某政治人物過去常被嘲弄為加蔥大師,加蔥...加蔥可偉大了!有無提味相差可大了!於我這專案卻像是,上述都是好食材,原可想像高明廚人將之烹煮成為美味料理,無奈只有我這樣的手段,只能吃頓粗飽、不拉肚子就姑且滿足。
謙卑於棋局空間之遼闊,謙卑於策略選擇、玩家互動等交織出的複雜關係,謙卑於前人奠基下來的所有技術內容,謙卑於興起的 LLM 技術(所以尊稱 ChatGPT 老師)。單以遊戲,或者就算是以圍棋來說,當真是佛教常用的比喻,「如恆河沙數」。你看著盤面,思索著,你知道你的理解並不完全,你知道以橫向剖面來觀察的話所有的變化都有它的勝負成敗,所有的變化都存在那個世界之中,而你沒有時間遍數那些變化。未知總是無處不在。也許路平教授也會稱讚當今的宇宙學家,說他們說暗能量/暗物質的仍屬未知這種說法充滿了智慧?好奇心與謙卑,然後就是敬畏。桌遊社與宇宙學社似乎也沒有差別了,遊戲的策略縱深沒有重力束縛,漂浮在真空之中既顯自由又往往無助。知道自己無法窮盡,就連井字遊戲,也都還存有有趣的變數。
也許到了這一個結尾的瞬間我才算是真正切題:佛心分享的 Side Project。佛心在大家慣用語裡面當然是一種詼諧的、給予寬厚無私的分享的人的一種讚嘆,主辦單位當然也是這樣使用的。然而,若我們回歸到佛心一詞它可以蘊含的宗教性的意味,卻是這裡的主題可以呼應的。不是指恆河沙數或是須彌山,那只是在名為說法的程式片段中用來初始化變數的 float f = INF
之類的語法罷了。當「我」茫然於棋盤的時候,終究會撿出一個著點落子,然而,在那些茫然的時候,腦或者是其他機制的運算,卻不在「我」的控制之中;較充實一點的狀況,也許是身心狀態絕佳,或是棋逢敵手,總之完全沉浸在棋盤的世界之中,「我」也不存在了,解析外部訊號與分析出意義的部份既非「我」在經手,所有平常「我」在意的事情也都淡化甚至消失了。如果主體不是我,而是抽象來說可以稱之為棋局的疫途、蓋亞計畫、圍棋、麻將、社團、家族、公司乃至於人生,那也許「我」和「對手」也可以看作是棋局的一部份,「我」成為系統的一種內力,要分析也可以,不分析也不見得整個關於系統的理論或是系統本身會出什麼問題。大概可以說,從遊戲破除我執?也許是一種有趣的切入點,在專案系列文尾聲偷偷地和主題共鳴一番。
總之,讚嘆遊戲!能夠研究遊戲,即使只是這樣業餘為之,即使遺憾處處,也是幸福得很了。儘管如今地緣政治、新興科技、關鍵資源的各種組合,嚴肅思考起來,都加總著風險,讓一個個平穩的明天越來越稀薄......但棋局還沒結束,棋還是得一手一手下。
最後引述當今世界圍棋 ELO 排名第一人申真諝的訪談之發言:
Bluespot(藍圈圈)是AI向人類推薦的,贏棋概率最高的一手棋。但是之上,分明有什麼東西。
我最近終於領悟了勝負不是圍棋的一切。現在我更注重一盤棋的過程。
對局前我的狀態是否足夠集中於一盤棋?
對局中我有沒有下輕率的一手棋?
局面有利時,我有沒有自滿?
局面不利時,我有沒有早早放棄了?
出現了失誤時,我有沒有努力扳轉局面?
總之,我對圍棋有了敬畏之心。(參見訪談申真諝:AI讓人類跳出藩籬,追求更深奧的圍棋藝術)
from ptt。
恭喜完賽!太神啦~
居然能夠被大大訂閱真是小弟的榮幸
什麼話,這是我要說的。您的系列文讓人收穫良多!
比方說此前我不知道可以用 Horizon Effect 來描述我遭遇到的困境,也從來沒想過型勢判斷需要用哪些演算法,也完全沒聽過 Morphology。而且顯然同是圍棋愛好者呢!
下班之餘拼文章很操,加油!