Level 5 — 知道 Benchmark 怎麼做Benchmarking

學會問「我怎麼知道這個數字不是雜訊」。

L5更新 Wed Aug 05 2026 08:00:00 GMT+0800 (台北標準時間)

你現在在哪

L4 給了你一堆數字。L5 問的是那個所有人都想跳過的問題:憑什麼相信它們。

這一關幾乎不燒 GPU,但它決定前面所有 GPU 值不值得。而且對你來說,它其實是回家 —— 因為這整套文化你早就有了,只是換了一個領域之後沒有人提醒你把它帶過來。

你不會靠「我的新泛函重現了我自己以前算的那組數」去投稿。你會拿 GMTKN55 這種別人建的、你動不了的測試集,跟 PBE、B3LYP 這些人人手上都有的基準線比,用事先講好的誤差指標報結果,而且你一定會被問「你的參數是不是在這個測試集上調過」。這在計算化學裡是常識,常識到沒人會特地寫出來。

麻煩的是 Cas9 計算領域沒有 GMTKN55。 沒有公認的測試集、沒有公認的 baseline、沒有公認的成功判準,於是不少 MD 論文的「驗證」就是「我們的結果與已知的結構生物學一致」。這對你是好消息:這一關要做的事就是自己組一個出來,而組 benchmark 這件事本身就是可以被檢驗、被別人重複的貢獻。

這一關結束之後,你能做一件你現在做不到的事: 寫得出一份 pre-analysis 檔案,並在跑下一條軌跡之前 git commit 它。那份檔案日後會直接變成論文的方法段,而它的時間戳會變成你在最致命那一問上的護身符。

A reliability versus validity quadrant in which the high-validity, low-reliability cell is hatched out as impossible because reliability caps the observable correlation, with the current project drawn as a vertical line of known reliability and unmeasured validity.
示意圖(向量繪製) 兩個獨立的問題,但順序不能顛倒:可靠性是效度的數學上界(ρ_obs = ρ_true·√(Rx·Ry)),所以左上格永遠是空的。右下格是反面提醒——CV 很低的量完全可以穩定地、精密地錯著,因為力場與起始結構造成的偏差每條 replica 都一樣,CV 看不見。垂直虛線是本專案目前的位置:橫軸量過了,縱軸還沒有任何量測,所以那條線是一條而不是一個點。

這關要學會什麼

  • 你將能夠分辨 reliability(換個亂數種子還在不在)與 validity(跟實驗對不對得上),並解釋為什麼前者是後者的數學上界,因此順序不能顛倒。
  • 你將能夠列出 benchmark 的四個必要零件加上 holdout,並指出三種最常見的假 benchmark 各缺哪一件。
  • 你將能夠為「排序 Cas9 變體」這個任務架出正確的 baseline 階梯,並解釋為什麼 CFD score 在這個任務上是常數。
  • 你將能夠說出你的 negative control 是什麼、預期看到什麼、以及它「成功」了代表什麼壞消息。
  • 你將能夠說出四類 ground truth 各自的偏差,並解釋計算輸出(Å、kcal/mol、接觸數)與實驗輸出(read count、indel 百分比)之間那道量綱落差為什麼是你必須自己提出並承擔的假設
  • 你將能夠用 reviewer 的眼睛讀一篇 Cas9 MD 論文:先找取樣,再找對照,最後才看結論。
  • 你將能夠回答「為什麼門檻是 10%」,而不是講一句「這是慣例」就結束。

依序讀這些

順序的邏輯只有一條,而且它有數學根據:reliability 封住了 validity 的上界,所以先問穩不穩,再問準不準。 反過來讀的人會拿一個 CV 145.5% 的量去對實驗答案,然後把「量測誤差把相關係數壓成 0」誤讀成「這個物理量沒用」。

  1. Metric 可靠性 — 先問穩不穩。衰減公式 ρobs = ρtrue · √(Rx · Ry) 是這一整關的地基,也是你手上目前最強的一張牌。
  2. Benchmark 是什麼 — 四個零件、三種假 benchmark、八個步驟。這一頁是設計文件,不是收尾工作。
  3. Ground truth 從哪來 — 答案從哪裡來、各自的偏差在哪、以及那道沒有人會替你寫的量綱落差。
  4. 怎麼讀一篇 Cas9 MD paper — 把前三頁當檢查表,拿去讀別人的論文。這是把知識變成技能最快的一步。
  5. 文獻地圖最後才讀。 在你有了判準之前,文獻地圖只是一張書單;有了判準之後,它才是一張座標圖。

三篇原始文獻(這一關的三根柱子)

2016Optimized sgRNA design to maximize activity and minimize off-target effects of CRISPR-Cas9
Doench J.G. et al. · Nature Biotechnology 34(2):184-191 doi:10.1038/nbt.3437
讀它不是為了學怎麼設計 sgRNA,是為了拿到**你在位點排序那個任務上必須打敗的那條線**。CFD score 的容忍度矩陣是這個領域事實上的 off-target baseline,CPU 上幾毫秒就跑完;在「同一條 guide、排序候選位點」上贏不過它,就得改變賣點。**但要記得它只在那個任務上是 baseline** —— 換成「排序 Cas9 變體」,它的輸入裡沒有蛋白序列,整欄是常數(見下面的通關測驗第二題)。
2015GUIDE-seq enables genome-wide profiling of off-target cleavage by CRISPR-Cas nucleases
Tsai S.Q. et al. · Nature Biotechnology 33(2):187-197 doi:10.1038/nbt.3117
讀它是為了知道「真值」實際上長什麼樣:一張位點清單加一欄 read count。看過原始輸出的格式,你才會意識到計算輸出與實驗輸出之間那道量綱落差有多寬。
2018Markov State Models: From an Art to a Science
Husic B.E. & Pande V.S. · Journal of the American Chemical Society doi:10.1021/jacs.7b12191
讀它是為了看一個相鄰領域怎麼把「憑感覺」變成「有統計檢定」。MSM 社群花了十幾年建立驗證文化,Cas9 MD 現在的處境大致相當於他們的早期,這篇是很好的路線參考。

通關檢查表

通關測驗

Reviewer:「你把 CV 高的 metric 全部丟掉,這不就是在挑對自己有利的結果嗎?」點開看參考答案

這一問很致命,而且只有一種答得漂亮的方式

CV 門檻是在看到任何實驗答案之前定的。 篩選準則來自可再現性,與 ground truth 完全獨立,所以它在邏輯上不可能是為了迎合答案而設。

要讓這個回答有牙齒,你需要一份有時間戳的 pre-analysis 檔案git commit 或 OSF 都可以),內容包含任務、資料集、主 metric、成功門檻、對照組、holdout。那份時間戳就是你在這一問上的護身符 —— 而它的成本是半天,零算力。

補一句更強的:紅燈那幾行反而是論文最有價值的部分。 只報綠燈不報紅燈,讀者無法判斷你篩掉了什麼,也就無法信任你留下的東西。整張表照登。

你要 benchmark「排序 Cas9 變體」的能力。baseline 階梯該放什麼?為什麼不能放 CFD score?點開看參考答案

因為 CFD score 的輸入裡根本沒有蛋白序列。 同一條 guide、不同的 Cas9 變體,CFD 給出的是同一個數字 —— 它在這個任務上是常數,拿它當 baseline 沒有意義。

這一階要換成兩種東西:

  1. Trivial 序列特徵 —— 突變個數、淨電荷變化、突變殘基到 DNA 的距離。這一層測的是「一個兩行程式的 heuristic 能不能做到同樣的事」。
  2. 現行主流做法 —— 平衡結合 ΔΔG(MM-PBSA/FEP 那一類)。第二種才是這條方法線真正要對照的基準。

而且順序有講究:baseline 完全不用 GPU,CPU 上幾秒鐘就跑完。所以正確的做法是先把整條 baseline 階梯跑完,看看它們在你的 panel 上能做到多好,再決定 MD 要投多少 GPU 時數才可能贏過它。這一步花不到一天,卻可能省下幾百 GPU 小時。

最後一個方法學上的建議:不要用論證取代測試 —— 把平衡結合 ΔG 當成一條正式的基準線放上同一張表,讓數據自己講話。

你的 metric 跟實驗的 Spearman 是 0.6,panel 有 8 個變體。可以寫「有顯著相關」嗎?點開看參考答案

不行。n = 8 下,ρ = 0.6 用 Fisher z 粗估的 95% 信賴區間大約是 −0.18 到 0.92 —— 跨過 0。這時候「有相關」這句話本身就是過度宣稱。

正確的敘述是: 排序方向與實驗一致,但樣本量不足以支持定量宣稱。同時要說明為什麼 n 只能這麼小:單一系統 535,265 atoms、4 replica × 約 87 ns,而可用的並行額度只有個位數。把限制歸因到算力並給出量級,比含糊帶過有說服力得多。

還要一併準備的:leave-one-out 敏感度(把每個點輪流拿掉重算,看係數跳多少)。如果拿掉一個點就從 0.6 掉到 0.2,那 0.6 這個數字不存在。而在個位數的 panel 上,不要報 ROC-AUC 或 p 值 —— AUC 在小樣本下只能取到少數幾個離散值,對單一點的移動極度敏感。正確的做法是報原始排序表,讓讀者自己看那幾個點。

你的 negative control(eSpCas9(1.1) 在 on-target 底物上)居然「成功」了 —— 流程把它判成更專一。這代表什麼?點開看參考答案

代表你的流程抓到的是一個跟任務無關的 trivial 訊號,而它在真正的案例上剛好也管用。

eSpCas9(1.1) 的機制是削弱正電溝槽對 non-target 股的靜電抓握;在完全配對的底物上沒有東西可削,物理上就該 null。如果流程還是把它排上去,那它讀到的很可能是胺基酸組成或淨電荷變化,不是專一性機制。

怎麼確認訊號來源: 把 negative control 的分數,跟一個明顯無關的變數(例如突變殘基的總電荷變化)做相關。對得上,兇手就找到了。

這時候不要往下做。 一個能無中生有的 pipeline,在真正的案例上給出的高分也不可信 —— 因為你沒辦法區分「抓到機制」與「抓到 trivial 相關」。這正是 negative control 存在的全部理由:它測的不是你的方法有多強,是你的流程會不會憑空生出差異。

為什麼跨 replica 的 CV 完全看不見力場造成的偏差?點開看參考答案

因為 CV 只看得見亂數種子造成的隨機散度。力場、水模型、離子參數、質子化狀態、起始結構造成的偏差,在所有 replica 裡都是一致的,它們整體平移了平均值,卻不增加 replica 之間的離散。

所以一個 CV 2% 的量,完全可以穩定地、精密地錯著。 這是這一關最容易被誤用的方向:把「穩」讀成「對」。可靠性是入場券,不是獎盃。

你已經有一個現成的例子: 同一套 metric、同一套腳本、同一套力場,只換起始結構,逐殘基 top-8 一致性從 Chai-1 起始的 0/8 共享、ρ ≈ −0.03,變成 5F9R 晶體起始的 3/8 共享、Jaccard 0.48、Spearman +0.77。這個位移是任何 CV 都抓不到的。

結論:可靠性分析必須是二維的。 換種子測隨機誤差,換起始結構(或換力場)測系統性誤差。只做前者,就會把兩種完全不同的病灶誤診成同一種 —— 而且會誤診到「metric 沒用」這個錯誤的方向去。

為什麼門檻是 10%?不是 15%,也不是 5%?點開看參考答案

誠實回答:10% 是借來的慣例,不是從任何 MD 理論推導出來的。 它來自分析化學與生物分析方法驗證那邊的直覺 —— 受規範的生物分析用 15%(定量下限放寬到 20%),業界常態落在 5% 到 10%。

更好的辯護方式是把門檻接到效應量。 兩組各 n 條 replica,兩組平均差值的相對標準誤約為 SErel ≈ CV · √(2/n),而要看得見訊號,效應至少要是它的三倍左右。代進 n = 4:CV 2.1% 的 BSA 可望偵測約 5% 以上的相對差異;CV 12.2% 的 protein RMSD 要差到約 26% 才看得見;CV 145.5% 的 groove 接觸計數要差到三倍以上 —— 換句話說它對變體之間的差異沒有任何解析度

這個算術把門檻的選擇從行規變成設計決策: 先問「高保真變體與 WT 之間的介面差異大概是幾個百分點」,再回頭決定哪些 metric 進得了 gate、需要幾條 replica。把門檻講成設計決策而不是行規,這一問就從弱點變成加分。

(順帶:n = 4 時樣本標準差本身的相對標準誤約四成,所以那張表只能支持分層,不能支持排名。「A 比 B 穩」在 n = 4 時講不得。)

地圖上的鄰居

這頁用到的名詞