第3章
她的算法太作弊,我邏輯崩了
邏輯的盲區------------------------------------------。,正在給一個圖像識別模型調參。屏幕上的損失函數曲線正在緩慢下降,他的手指懸在鍵盤上方,每隔幾秒敲一次參數,節奏均勻得像心電監護儀的滴答聲。。。:教務辦公室。主題:全國高校腦力聯賽清大代表隊成員名單及首次訓練通知。。,一共八個人。計算機學院四個,心理學系四個。他的名字在計算機學院欄目的第一個。心理學系欄目的第一個——。,然后關掉郵件,回到損失函數曲線上。。?!案?。”陳默從上鋪探出頭來,頭發亂得像鳥窩,手里舉著手機,“名單出了。你和那個顧遲遲一隊。知道。你不激動嗎?為什么要激動?”
陳默認真想了想,發現自己確實找不到江渡應該激動的理由,于是把頭縮回去了。
江渡的手指繼續敲參數。
但敲錯了。
他把學習率從0.001調成了0.01。
損失函數曲線猛地跳了一下,然后開始劇烈震蕩。
江渡皺起眉。
他刪掉錯誤的參數,重新輸入。
這一次,敲對了。
首次訓練定在當天下午四點,地點是計算機學院實驗室*棟307。
江渡提前八分鐘到場。
不是三分鐘。是八分鐘。
他自己都沒有注意到這個變化。
實驗室*棟307是計算機學院最好的實驗室之一,配備了二十臺高性能工作站和一面三米寬的投影幕布。江渡經常在這里跑模型,對每一臺機器的配置都了如指從。
他選了自己常用的那臺——靠窗,主機箱安靜,顯示器色準好。
開機,輸入密碼,桌面跳出。
他開始搭建博弈策略模擬系統。這是他為腦力聯賽準備的第一個工具,一個可以模擬多種策略對抗環境的沙盒系統。代碼框架昨晚已經寫好了,現在需要填充具體的博弈模型。
手指在鍵盤上起落,機械鍵盤的青軸發出清脆的咔嗒聲,像雨點打在玻璃上。
他進入狀態很快。
快到他甚至沒有注意到——
門開了。
叮。
銀質鈴鐺的聲音。
江渡的手指停了一下。
只停了一下,大概零點三秒,然后繼續敲擊。
他沒有回頭。
“你來得挺早。”
顧遲遲的聲音從門口傳來。和那天在會議室一樣,語速不快,每個字都踩在節拍上。
腳步聲從門口移動到實驗臺。她在他旁邊的工位停下來,把什么東西放在桌面上。
兩個紙杯。
一杯冒著熱氣,一杯是常溫。
“美式,無糖。”
顧遲遲把那杯冒著熱氣的推到他桌面上,離鍵盤二十厘米的位置——不妨礙他打字,但剛好在他的余光范圍之內。
江渡低頭看了一眼咖啡,又抬頭看她。
“你怎么知道我喝美式?”
“你的圖書館借閱記錄里有三本關于咖啡烘焙的書。你的外賣訂單歷史顯示你在過去六個月里點過四十七次咖啡,其中四十二次是美式,五次是拿鐵——拿鐵全部集中在期末**周,說明你平時喝美式,壓力大時才會加奶。你宿舍桌上有一個手沖壺,沒有糖罐?!?br>她說這段話的時候,已經坐到了旁邊的工位上,打開了自己的筆記本電腦,語氣平淡得像是在念天氣預報。
江渡沉默了。
不是那種被噎住的沉默。是大腦正在運算、但運算量超出預期的沉默。
“你查了我的外賣記錄?”
“你查了我的教務系統?!?br>顧遲遲轉過頭看他,眼睛彎了彎。
“扯平了,記得嗎?”
江渡沒有再說話。
他端起那杯美式,喝了一口。
溫度剛好。不燙嘴,不涼。是她算好的。
無糖,微苦,和平時喝的一個味道。
江渡用十五分鐘演示了他的博弈策略模擬系統。
他講得很快,語速比平時快百分之二十左右。不是緊張——是他在講自己寫的代碼時,大腦的運算速度會自然加快,語言模塊跟不上,于是會不自覺地加速。
“系統預設了五種基礎博弈模型:囚徒困境、獵鹿博弈、斗雞博弈、智豬博弈和協調博弈。每種模型可以調節參與者的策略傾向參數,范圍從純理性到純隨機。系統會模擬一千輪博弈,輸出策略收益曲線和納什均衡點?!?br>他邊說邊演示。
屏幕上,代表不同策略的曲線在坐標系中延伸、交叉、分岔,像河流的支脈。數據在不斷刷新,每一輪博弈的結果都被記錄、分析、可視化。
顧遲遲安靜地聽著。
她沒有打斷他,也沒有問問題。只是看著屏幕,偶爾低下頭,在自己的筆記本電腦上敲幾個字。
江渡講完了。
“有什么問題嗎?”
“有一個。”顧遲遲說。
她站起來,走到投影幕布前,指著屏幕上的一組數據。
“第三輪模擬,你的預設是對手會選A路徑,因為A路徑的預期收益最高。這是理性人的選擇,對吧?”
“對?!?br>“但如果對手是一個高自戀型人格呢?”
江渡的手指停在觸摸板上。
顧遲遲轉過身,面對他。
“高自戀型人格在博弈中的行為模式不是收益最大化,而是自我形象最大化。如果選A能贏但贏得不夠漂亮,而選C會輸但輸的時候能讓你也不舒服——他會選C?!?br>她走回自己的工位,把筆記本電腦轉過來給江渡看。
屏幕上是一份人格行為分析報告,密密麻麻標注了十幾種人格類型在博弈場景中的非理性偏離系數。
“你的模型假設所有參與者都是理性的?!鳖欉t遲說,“但人不是。人會為了面子選虧本的選項,會因為討厭某個人而放棄最優解,會因為今天天氣不好而莫名其妙地保守。你的算法沒有這些變量。”
實驗室里很安靜。
只有服務器散熱風扇的低鳴,和遠處走廊里隱約的腳步聲。
江渡看著那份報告。
上面的數據整理得很規整,表格對齊,顏色標注清晰。每一個結論后面都附了參考文獻,格式統一,沒有一處錯漏。
她做這份報告的時間——
他快速推算了一下。昨天下午組隊名單公布,現在是第二天下午。中間只有不到二十四個小時。
“你什么時候做的這個?”
“昨晚?!鳖欉t遲把電腦轉回去,“睡不著,就順手整理了?!?br>順手。
二十幾頁的分析報告,她說順手。
江渡的手指重新落在鍵盤上。
他調出系統的代碼,光標移動到變量定義區。
然后他停下來。
因為他不知道應該加什么變量。
“面子”怎么量化?“討厭某個人”怎么建模?“天氣不好”的情緒權重是多少?
這些在他的算法體系里,從來沒有被定義過。
“我可以幫你?!?br>顧遲遲的聲音從旁邊傳來。
她已經坐回了自己的工位,端著那杯拿鐵,靠在椅背上,姿態放松。
“你告訴我邏輯怎么跑,我告訴你人在什么地方會拐彎。”
窗外梧桐葉沙沙響。
下午的陽光斜照進來,把她的輪廓鍍上一層暖**的邊。
江渡看著她。
他的大腦在進行一場高速運算。
輸入:博弈模型,非理性變量,高自戀型人格,面子權重,情緒干擾。
運算中——
系統沒有返回錯誤。
但也沒有返回正確。
返回的是一個他從未見過的狀態:待定義。
訓練結束后,陳默在食堂逮到了江渡。
“怎么樣?第一天磨合?”
江渡用筷子夾起一塊糖醋里脊,沒有回答。
陳默認其他這表情——不是不想回答,是正在處理某個復雜的內部進程,語言模塊暫時被掛起。
于是他換了個問題。
“那個顧遲遲,專業能力到底怎么樣?”
江渡嚼完嘴里的里脊,咽下去。
“強。”
只有一個字。
陳默筷子停在半空中。
他認識江渡兩年,這是第一次聽見江渡用“強”這個字評價一個同齡人。
“有多強?”
“她用一個晚上做了一份人格博弈分析報告,二十幾頁,把我在模型里預設的七個理性假設全部推翻。每一個都有數據支持,每一個都有參考文獻?!?br>江渡的語氣很平,像是在陳述一個事實。
但他的筷子在盤子邊緣敲了一下。
當。
很輕。
“然后呢?你怎么回應的?”
“我沒回應。”
“沒回應?”
“因為她說的是對的。”
陳默倒吸一口涼氣。
江渡說“你說的是對的”——這句話在他的人生中出現的頻率,大約和哈雷彗星造訪地球的頻率相當。
“所以你服了?”
“不是服。”江渡放下筷子,“是需要新的算法?!?br>他站起來,端起餐盤。
“走了?!?br>“去哪?”
“實驗室?!?br>“現在?食堂還沒吃完呢。”
江渡已經走出三步了。
陳默看著他的背影,嘆了口氣,把自己盤子里的雞腿夾過來。
反正他也不會回來吃了。
實驗室*棟307的燈亮到很晚。
江渡坐在電腦前,屏幕上是他下午演示的那個博弈模擬系統。代碼窗口開著,光標在變量定義區閃爍。
他坐了四十分鐘。
什么都沒寫。
不是寫不出來。是不知道應該寫什么。
他的人生中第一次遇到這種情況:問題很清楚,但他已有的工具庫無法解決。
需要新工具。
需要新的定義。
需要——
他的目光落在旁邊的桌面上。
那里有一個空的紙杯。
今天下午顧遲遲放咖啡的紙杯。她走的時候忘記收走了。
杯底殘留著一點點咖啡漬,干涸后形成一圈深褐色的環形痕跡。
江渡拿起紙杯,看了看杯底。
然后他發現杯托上有一行字。
用黑色水筆寫的,字跡很細,像是故意寫得很小。
他湊近了看。
上面寫著:
“如果你在凌晨看到這行字——
說明你又熬夜了。
明天早上七點零三分,食堂見。
——GCC”
江渡握著紙杯,坐了很久。
GCC。
顧遲遲。
窗外夜色濃重,梧桐樹的黑影在風里搖晃。
他打開代碼窗口。
光標還在閃爍。
他敲下了第一行字。
不是代碼。
是注釋。
// 非理性變量定義區:待補充。來源:GCC
保存。
關閉。
關機。
然后他看了一眼時間。
凌晨一點十二分。
明天早上七點零三分。
他應該不去。
他的作息表里沒有“和隊友吃早餐”這一項。
但他拿起手機,打開了鬧鐘應用。
手指懸在屏幕上,停了很久。
然后他設了一個新鬧鐘。
時間:6:45。
標簽:空白。
沒有輸入任何文字。
但也沒有刪除。
(第三章 完)
陳默認真想了想,發現自己確實找不到江渡應該激動的理由,于是把頭縮回去了。
江渡的手指繼續敲參數。
但敲錯了。
他把學習率從0.001調成了0.01。
損失函數曲線猛地跳了一下,然后開始劇烈震蕩。
江渡皺起眉。
他刪掉錯誤的參數,重新輸入。
這一次,敲對了。
首次訓練定在當天下午四點,地點是計算機學院實驗室*棟307。
江渡提前八分鐘到場。
不是三分鐘。是八分鐘。
他自己都沒有注意到這個變化。
實驗室*棟307是計算機學院最好的實驗室之一,配備了二十臺高性能工作站和一面三米寬的投影幕布。江渡經常在這里跑模型,對每一臺機器的配置都了如指從。
他選了自己常用的那臺——靠窗,主機箱安靜,顯示器色準好。
開機,輸入密碼,桌面跳出。
他開始搭建博弈策略模擬系統。這是他為腦力聯賽準備的第一個工具,一個可以模擬多種策略對抗環境的沙盒系統。代碼框架昨晚已經寫好了,現在需要填充具體的博弈模型。
手指在鍵盤上起落,機械鍵盤的青軸發出清脆的咔嗒聲,像雨點打在玻璃上。
他進入狀態很快。
快到他甚至沒有注意到——
門開了。
叮。
銀質鈴鐺的聲音。
江渡的手指停了一下。
只停了一下,大概零點三秒,然后繼續敲擊。
他沒有回頭。
“你來得挺早。”
顧遲遲的聲音從門口傳來。和那天在會議室一樣,語速不快,每個字都踩在節拍上。
腳步聲從門口移動到實驗臺。她在他旁邊的工位停下來,把什么東西放在桌面上。
兩個紙杯。
一杯冒著熱氣,一杯是常溫。
“美式,無糖。”
顧遲遲把那杯冒著熱氣的推到他桌面上,離鍵盤二十厘米的位置——不妨礙他打字,但剛好在他的余光范圍之內。
江渡低頭看了一眼咖啡,又抬頭看她。
“你怎么知道我喝美式?”
“你的圖書館借閱記錄里有三本關于咖啡烘焙的書。你的外賣訂單歷史顯示你在過去六個月里點過四十七次咖啡,其中四十二次是美式,五次是拿鐵——拿鐵全部集中在期末**周,說明你平時喝美式,壓力大時才會加奶。你宿舍桌上有一個手沖壺,沒有糖罐?!?br>她說這段話的時候,已經坐到了旁邊的工位上,打開了自己的筆記本電腦,語氣平淡得像是在念天氣預報。
江渡沉默了。
不是那種被噎住的沉默。是大腦正在運算、但運算量超出預期的沉默。
“你查了我的外賣記錄?”
“你查了我的教務系統?!?br>顧遲遲轉過頭看他,眼睛彎了彎。
“扯平了,記得嗎?”
江渡沒有再說話。
他端起那杯美式,喝了一口。
溫度剛好。不燙嘴,不涼。是她算好的。
無糖,微苦,和平時喝的一個味道。
江渡用十五分鐘演示了他的博弈策略模擬系統。
他講得很快,語速比平時快百分之二十左右。不是緊張——是他在講自己寫的代碼時,大腦的運算速度會自然加快,語言模塊跟不上,于是會不自覺地加速。
“系統預設了五種基礎博弈模型:囚徒困境、獵鹿博弈、斗雞博弈、智豬博弈和協調博弈。每種模型可以調節參與者的策略傾向參數,范圍從純理性到純隨機。系統會模擬一千輪博弈,輸出策略收益曲線和納什均衡點?!?br>他邊說邊演示。
屏幕上,代表不同策略的曲線在坐標系中延伸、交叉、分岔,像河流的支脈。數據在不斷刷新,每一輪博弈的結果都被記錄、分析、可視化。
顧遲遲安靜地聽著。
她沒有打斷他,也沒有問問題。只是看著屏幕,偶爾低下頭,在自己的筆記本電腦上敲幾個字。
江渡講完了。
“有什么問題嗎?”
“有一個。”顧遲遲說。
她站起來,走到投影幕布前,指著屏幕上的一組數據。
“第三輪模擬,你的預設是對手會選A路徑,因為A路徑的預期收益最高。這是理性人的選擇,對吧?”
“對?!?br>“但如果對手是一個高自戀型人格呢?”
江渡的手指停在觸摸板上。
顧遲遲轉過身,面對他。
“高自戀型人格在博弈中的行為模式不是收益最大化,而是自我形象最大化。如果選A能贏但贏得不夠漂亮,而選C會輸但輸的時候能讓你也不舒服——他會選C?!?br>她走回自己的工位,把筆記本電腦轉過來給江渡看。
屏幕上是一份人格行為分析報告,密密麻麻標注了十幾種人格類型在博弈場景中的非理性偏離系數。
“你的模型假設所有參與者都是理性的?!鳖欉t遲說,“但人不是。人會為了面子選虧本的選項,會因為討厭某個人而放棄最優解,會因為今天天氣不好而莫名其妙地保守。你的算法沒有這些變量。”
實驗室里很安靜。
只有服務器散熱風扇的低鳴,和遠處走廊里隱約的腳步聲。
江渡看著那份報告。
上面的數據整理得很規整,表格對齊,顏色標注清晰。每一個結論后面都附了參考文獻,格式統一,沒有一處錯漏。
她做這份報告的時間——
他快速推算了一下。昨天下午組隊名單公布,現在是第二天下午。中間只有不到二十四個小時。
“你什么時候做的這個?”
“昨晚?!鳖欉t遲把電腦轉回去,“睡不著,就順手整理了?!?br>順手。
二十幾頁的分析報告,她說順手。
江渡的手指重新落在鍵盤上。
他調出系統的代碼,光標移動到變量定義區。
然后他停下來。
因為他不知道應該加什么變量。
“面子”怎么量化?“討厭某個人”怎么建模?“天氣不好”的情緒權重是多少?
這些在他的算法體系里,從來沒有被定義過。
“我可以幫你?!?br>顧遲遲的聲音從旁邊傳來。
她已經坐回了自己的工位,端著那杯拿鐵,靠在椅背上,姿態放松。
“你告訴我邏輯怎么跑,我告訴你人在什么地方會拐彎。”
窗外梧桐葉沙沙響。
下午的陽光斜照進來,把她的輪廓鍍上一層暖**的邊。
江渡看著她。
他的大腦在進行一場高速運算。
輸入:博弈模型,非理性變量,高自戀型人格,面子權重,情緒干擾。
運算中——
系統沒有返回錯誤。
但也沒有返回正確。
返回的是一個他從未見過的狀態:待定義。
訓練結束后,陳默在食堂逮到了江渡。
“怎么樣?第一天磨合?”
江渡用筷子夾起一塊糖醋里脊,沒有回答。
陳默認其他這表情——不是不想回答,是正在處理某個復雜的內部進程,語言模塊暫時被掛起。
于是他換了個問題。
“那個顧遲遲,專業能力到底怎么樣?”
江渡嚼完嘴里的里脊,咽下去。
“強。”
只有一個字。
陳默筷子停在半空中。
他認識江渡兩年,這是第一次聽見江渡用“強”這個字評價一個同齡人。
“有多強?”
“她用一個晚上做了一份人格博弈分析報告,二十幾頁,把我在模型里預設的七個理性假設全部推翻。每一個都有數據支持,每一個都有參考文獻?!?br>江渡的語氣很平,像是在陳述一個事實。
但他的筷子在盤子邊緣敲了一下。
當。
很輕。
“然后呢?你怎么回應的?”
“我沒回應。”
“沒回應?”
“因為她說的是對的。”
陳默倒吸一口涼氣。
江渡說“你說的是對的”——這句話在他的人生中出現的頻率,大約和哈雷彗星造訪地球的頻率相當。
“所以你服了?”
“不是服。”江渡放下筷子,“是需要新的算法?!?br>他站起來,端起餐盤。
“走了?!?br>“去哪?”
“實驗室?!?br>“現在?食堂還沒吃完呢。”
江渡已經走出三步了。
陳默看著他的背影,嘆了口氣,把自己盤子里的雞腿夾過來。
反正他也不會回來吃了。
實驗室*棟307的燈亮到很晚。
江渡坐在電腦前,屏幕上是他下午演示的那個博弈模擬系統。代碼窗口開著,光標在變量定義區閃爍。
他坐了四十分鐘。
什么都沒寫。
不是寫不出來。是不知道應該寫什么。
他的人生中第一次遇到這種情況:問題很清楚,但他已有的工具庫無法解決。
需要新工具。
需要新的定義。
需要——
他的目光落在旁邊的桌面上。
那里有一個空的紙杯。
今天下午顧遲遲放咖啡的紙杯。她走的時候忘記收走了。
杯底殘留著一點點咖啡漬,干涸后形成一圈深褐色的環形痕跡。
江渡拿起紙杯,看了看杯底。
然后他發現杯托上有一行字。
用黑色水筆寫的,字跡很細,像是故意寫得很小。
他湊近了看。
上面寫著:
“如果你在凌晨看到這行字——
說明你又熬夜了。
明天早上七點零三分,食堂見。
——GCC”
江渡握著紙杯,坐了很久。
GCC。
顧遲遲。
窗外夜色濃重,梧桐樹的黑影在風里搖晃。
他打開代碼窗口。
光標還在閃爍。
他敲下了第一行字。
不是代碼。
是注釋。
// 非理性變量定義區:待補充。來源:GCC
保存。
關閉。
關機。
然后他看了一眼時間。
凌晨一點十二分。
明天早上七點零三分。
他應該不去。
他的作息表里沒有“和隊友吃早餐”這一項。
但他拿起手機,打開了鬧鐘應用。
手指懸在屏幕上,停了很久。
然后他設了一個新鬧鐘。
時間:6:45。
標簽:空白。
沒有輸入任何文字。
但也沒有刪除。
(第三章 完)