今天講一個我差點做錯的判斷。
比賽到後期,改動的幅度越來越小。你調一個參數、送出去,排行榜回給你的分數——跟上一次一模一樣。
到小數點第三位都一樣。
直覺的結論是:這個改動沒用,換下一招。
我差一點就這樣做了。
排行榜只顯示到小數點第三位。而到了那個階段,一次合理的調整帶來的變化,很可能落在第四位。
「顯示同分」的意思是「差異小於顯示精度」,不是「沒有差異」。 這兩件事在日常生活裡幾乎等價,在這裡完全不等價。
那要怎麼看出第四位?
看同分帶內的名次。所有分數相同的隊伍會排成一串,而你在那一串裡的位置,反映的正是顯示不出來的那幾位。同樣是 0.913,帶內第 8 名跟帶內第 40 名,實際分數是不一樣的。
這件事我後來寫成了操作手冊裡的一整節,因為它很容易被誤用。
帶內名次是棘輪,不是溫度計。它只回答一個問題:這一發有沒有超過我目前的最佳?它不告訴你超過多少,也不會因為你退步而往回走——因為排行榜記的是你的最佳成績。
所以歸因永遠解不了。如果你一次改了三個地方然後名次前進,你不知道是哪一個起的作用,甚至不知道是不是有兩個互相抵銷。想要可歸因,只能一次改一個、序列化送出。慢,但那是唯一誠實的做法。
同樣的問題出現在離線測試上。
我有一組本機的驗證資料,86 個切片。用它來比較兩個做法的時候,得先知道這把尺的刻度有多粗。
實測校準出來的結論是:差距絕對值大於 0.005 才信正負號,小於 0.003 就當作在誤差範圍內。中間那段是灰色地帶。
沒有這個校準,你會把 0.002 的波動當成「有效」,然後花三天往一個其實沒方向的地方走。
同一段時間我還犯過一個更基本的錯。
我把資料按細胞大小分格,看每一格的回收率。某一格顯示只有 40.9%,我當場下了結論:這個尺寸區間有系統性問題。
隔了幾個小時,用完整的 86 片重算,那一格的真值是 70.3%。
差別在哪?我早上看的那格只有 58 筆資料。小樣本,隨機波動就能造出 30 個百分點的假象。
結構性的結論(問題出在關聯這一層)後來還是成立,但幅度整個作廢。看分格表下結論之前,先看那一格的樣本數。
三件事其實是同一件:你的量測工具有解析度,超過解析度的結論是幻覺。
三把尺,三種刻度
排行榜 ▏能看到:0.913 → 0.914 看不到:第四位(要看帶內名次)
本機 86 片 ▏能信:|Δ| > 0.005 的方向 誤差內:|Δ| < 0.003
分格表 ▏能信:n 夠大的格 假象區:n=58 那種小格
排行榜的解析度是小數第三位,本機驗證的解析度是 0.005,分格表的解析度取決於每格的樣本數。
不知道自己的解析度,就會把雜訊讀成訊號。而 AI 特別擅長替雜訊編出一個合理的解釋,你問它「為什麼這格特別低」,它一定給得出理由,而且聽起來很有道理。
明天講我在這場比賽裡犯的最大的錯,而且是我自己宣布的。