胞時代來臨:用深度學(xué)習(xí)預(yù)測未知藥物的單細(xì)胞響應(yīng))
當(dāng) ChatGPT 通過大規(guī)模預(yù)訓(xùn)練學(xué)會生成自然語言時一個更讓人好奇的問題擺在生物信息學(xué)者面前我們能不能構(gòu)建一個“細(xì)胞版大模型”給定一個細(xì)胞的基因表達(dá)狀態(tài)再給定一種從未見過的藥物分子就能預(yù)測這個細(xì)胞在藥物作用下會走向增殖、凋亡還是耐藥這個想法聽上去很科幻但它正是“虛擬細(xì)胞Virtual Cell”研究想要回答的問題。關(guān)于虛擬細(xì)胞不同團(tuán)隊有過不同的定義。有人強(qiáng)調(diào)“器官級數(shù)字孿生”有人強(qiáng)調(diào)“高精度分子模擬”也有人把它等同于“把已知的生物通路全部寫進(jìn)計算機(jī)模型”。但最近一篇發(fā)表在 Nature Machine Intelligence 上的研究把視角拉回到一個非常具體、也非常難的任務(wù)上未知藥物的單細(xì)胞響應(yīng)預(yù)測。這篇論文的核心是提出一個新的框架目標(biāo)是讓模型在面對訓(xùn)練階段根本沒有見過的藥物時仍然能夠比較可靠地預(yù)測單細(xì)胞層面的轉(zhuǎn)錄組響應(yīng)。這篇文章不打算只復(fù)述論文摘要。我會從“為什么這個任務(wù)很難”“虛擬細(xì)胞框架到底要解決什么問題”“這類框架通常會有哪些核心模塊”“你如果自己想做這個方向應(yīng)該怎么設(shè)計實驗、評估結(jié)果、避開哪些坑”幾個層面展開。也就是說比起“這篇論文很厲害”我更想講清楚它厲害在哪一步以及作為技術(shù)人你能從這套思路里拿到什么可遷移的東西。這個主題有一個特別值得注意的背景單細(xì)胞測序技術(shù)已經(jīng)在過去十年積累了海量數(shù)據(jù)但數(shù)據(jù)的“可解釋利用”遠(yuǎn)沒有跟上“數(shù)據(jù)產(chǎn)出”的速度。原因很簡單測序給我們的是一張又一張靜態(tài)快照而藥物響應(yīng)本質(zhì)上是動態(tài)的、多細(xì)胞協(xié)作的、涉及大量基因調(diào)控變化的過程。要讓模型學(xué)習(xí)這種復(fù)雜映射單靠傳統(tǒng)統(tǒng)計方法根本不夠必須把深度學(xué)習(xí)、圖神經(jīng)網(wǎng)絡(luò)、預(yù)訓(xùn)練表征、遷移學(xué)習(xí)這些技術(shù)整合到一起。這正是“框架”這兩個字的真正價值所在。1. 這篇文章真正要解決的問題先問一個最直接的問題為什么要花這么大力氣去預(yù)測“未知藥物”對單細(xì)胞的響應(yīng)如果你做過藥物篩選或藥理學(xué)相關(guān)研究應(yīng)該知道傳統(tǒng)路線的成本有多高。一個候選化合物進(jìn)入細(xì)胞實驗之前通常要經(jīng)過靶點預(yù)測、體外活性篩選、劑量反應(yīng)測試等步驟每一步都要消耗大量的樣本、時間和試劑。更麻煩的是很多新藥分子在合成出來之后我們只知道它的化學(xué)結(jié)構(gòu)并不清楚它在真實細(xì)胞里會激活哪條通路、殺傷哪類細(xì)胞、產(chǎn)生什么樣的毒性。如果能在實驗前用計算模型給出一個“預(yù)測細(xì)胞響應(yīng)排序”就能顯著縮小實驗驗證的范圍。但這里的難點是“未知藥物”。大部分已有的預(yù)測模型采用的是“記憶式”策略訓(xùn)練時見過某幾種藥物測試時也只在這幾種藥物上評估。這種做法在真實藥物研發(fā)中很難用因為新藥的結(jié)構(gòu)往往不在訓(xùn)練集里。分子可以有無數(shù)種組合變化模型如果不能對未見過的分子做外推那預(yù)測能力就只剩下一張漂亮但無用的排行榜。另一個痛點來自單細(xì)胞數(shù)據(jù)本身。單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)有強(qiáng)烈的技術(shù)噪聲、批次效應(yīng)、測序深度差異并且表達(dá)矩陣稀疏性很高。同樣是藥物處理不同細(xì)胞類型可能給出完全相反的反應(yīng)同一個癌細(xì)胞株里有一部分亞群會凋亡另一部分亞群反而會上調(diào)耐藥基因。如果把所有細(xì)胞混在一起求平均等于把最關(guān)鍵的信息抹掉了。所以只有“單細(xì)胞”級別的預(yù)測才能真正反映腫瘤異質(zhì)性和藥物敏感性的復(fù)雜關(guān)系。因此這篇論文被關(guān)注核心原因不是它堆了多少層網(wǎng)絡(luò)而是它把研究問題定義得很清晰構(gòu)建一個可泛化的、能響應(yīng)“未知藥物輸入”的單細(xì)胞預(yù)測框架。這個定義本身就是對虛擬細(xì)胞研究的一次收斂從“我們要做很大的虛擬細(xì)胞”變成“我們先把其中一個真正有價值、也可驗證的子問題做扎實”。2. 虛擬細(xì)胞是什么為什么現(xiàn)在能談“虛擬細(xì)胞”不是某個具體軟件而是一類計算建模目標(biāo)的統(tǒng)稱。它的終極形態(tài)可以描述為用分子層面的數(shù)據(jù)構(gòu)建一個細(xì)胞的計算模型使得輸入某個初始狀態(tài)和外部擾動就能預(yù)測細(xì)胞的后續(xù)狀態(tài)變化。可以把它類比成天氣預(yù)報。氣象學(xué)家不需要控制每一顆空氣分子而是把大氣離散成網(wǎng)格用物理方程擬合空氣、水汽、溫度的演化規(guī)律從而預(yù)報天氣。虛擬細(xì)胞的邏輯類似把細(xì)胞離散成基因調(diào)控網(wǎng)絡(luò)、代謝通路、表觀修飾等可計算的模塊用數(shù)據(jù)驅(qū)動的方式擬合“細(xì)胞狀態(tài)”的演進(jìn)。過去幾十年生物學(xué)界對細(xì)胞行為的建模主要依賴兩類方法一類是機(jī)制模型mechanistic model比如把某個信號通路用常微分方程描述。這種模型可解釋性強(qiáng)但需要大量人工設(shè)定的參數(shù)而且只覆蓋特定通路很難擴(kuò)展到全基因組范圍。另一類是統(tǒng)計模型和機(jī)器學(xué)習(xí)模型比如用傳統(tǒng)分類器根據(jù)基因表達(dá)區(qū)分藥物處理組和對照組。這類模型能做預(yù)測但往往只是黑箱打分缺乏對細(xì)胞狀態(tài)內(nèi)部變化的深層理解。虛擬細(xì)胞路線真正興起得益于三個條件同時成熟單細(xì)胞多組學(xué)技術(shù)讓“細(xì)胞狀態(tài)”可以被高分辨率觀測深度學(xué)習(xí)框架讓高維稀疏數(shù)據(jù)建模成為可操作工程大規(guī)模預(yù)訓(xùn)練模型讓大家相信“底層規(guī)律可以從數(shù)據(jù)中涌現(xiàn)”。換句話說現(xiàn)在談虛擬細(xì)胞不是單純的理論升級而是技術(shù)工具鏈剛好走到了這一步。“虛擬細(xì)胞”和“單細(xì)胞響應(yīng)預(yù)測框架”的關(guān)系可以這樣理解前者是長期藍(lán)圖后者是藍(lán)圖里一塊必須落地的地基。真正的虛擬細(xì)胞應(yīng)該能回答一系列問題包括轉(zhuǎn)錄調(diào)控、代謝變化、細(xì)胞通訊、空間組織、擾動響應(yīng)等等。而“藥物擾動后細(xì)胞會怎么變”是其中最貼近實際應(yīng)用、也最容易用數(shù)據(jù)驗證的一個子任務(wù)。把這個問題解決清楚虛擬細(xì)胞才不是一個空泛口號。3. 單細(xì)胞響應(yīng)預(yù)測的技術(shù)難點做這類任務(wù)第一反應(yīng)可能是直接用神經(jīng)網(wǎng)絡(luò)擬合藥物分子和基因表達(dá)之間的映射不就行了但實際操作時會遇到一系列非常具體的技術(shù)障礙。3.1 藥物如何表示藥物分子不能直接喂進(jìn)神經(jīng)網(wǎng)絡(luò)必須轉(zhuǎn)成計算模型能理解的表示。常見方案包括分子指紋、分子圖、SMILES 字符串等。分子指紋把結(jié)構(gòu)轉(zhuǎn)成固定長度的 0/1 向量簡單但丟失拓?fù)湫畔⒎肿訄D保留原子和化學(xué)鍵的連接關(guān)系適合圖神經(jīng)網(wǎng)絡(luò)處理SMILES 字符串可以借助文本模型學(xué)習(xí)語言式表征。不同表示方式直接影響模型對“未知藥物”的泛化能力。有的框架采用多模態(tài)特征融合讓模型同時從多個表示中學(xué)習(xí)這也是近期比較被認(rèn)可的工程方向。3.2 細(xì)胞狀態(tài)的表示單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)經(jīng)過質(zhì)量控制、標(biāo)準(zhǔn)化、對數(shù)變換后會形成一個“細(xì)胞 × 基因”的矩陣。這個矩陣動輒數(shù)萬基因但大多數(shù)基因在單個細(xì)胞里并不表達(dá)造成高度稀疏。一個模型如果想要理解細(xì)胞狀態(tài)通常需要先做一個降維或特征提取步驟要么用 PCA、要么用自編碼器要么用目前很火的單細(xì)胞基礎(chǔ)模型把基因表達(dá)映射成細(xì)胞嵌入。問題在于不同數(shù)據(jù)集之間因為協(xié)議、實驗室、樣本來源不同會有嚴(yán)重批次效應(yīng)如果不做整合模型很容易學(xué)到“哪個樣本來的”而不是“藥物處理導(dǎo)致的差異”。3.3 響應(yīng)的定義和標(biāo)簽很多公開數(shù)據(jù)集只包含處理組和對照組并沒有“每個基因應(yīng)該變化多少”的標(biāo)準(zhǔn)答案。常見做法是用對照組作為基線計算處理組的差異表達(dá)基因然后把預(yù)測目標(biāo)定義為“基因表達(dá)的變化量”或“是否顯著變化”。這聽起來簡單但處理組和對照組通常不是同一批細(xì)胞批次效應(yīng)會混入差異信號。更嚴(yán)格的設(shè)計是使用同一細(xì)胞系的配對數(shù)據(jù)或者加入對照樣本作為條件輸入讓模型顯式學(xué)習(xí)藥物擾動帶來的增量。3.4 未知藥物的外推這是整個任務(wù)最難、也是最有價值的地方。訓(xùn)練集中有 100 種藥物測試集中出現(xiàn) 5 種從未見過的新藥模型看到的是完全陌生的分子結(jié)構(gòu)。它不能靠記憶答案必須學(xué)到“分子結(jié)構(gòu)特征與細(xì)胞狀態(tài)變化之間的底層規(guī)律”。這樣跨分布泛化能力本質(zhì)上是對模型表征學(xué)習(xí)能力的考驗也直接關(guān)系到框架是否有實用價值。4. 這個新框架的核心設(shè)計思路從題目和這類方法的一般設(shè)計邏輯推斷該框架至少會包含幾個關(guān)鍵模塊單細(xì)胞基礎(chǔ)模型、藥物表示模塊、擾動條件生成模塊、評估與校準(zhǔn)模塊。這是一種很典型的“虛擬細(xì)胞”框架架構(gòu)每個模塊解決一個具體問題。4.1 單細(xì)胞基礎(chǔ)模型先學(xué)會讀懂細(xì)胞要讓框架理解未知藥物的響應(yīng)第一步不是預(yù)測而是先讓模型知道“一個細(xì)胞正常狀態(tài)下長什么樣”。這通常通過大規(guī)模預(yù)訓(xùn)練實現(xiàn)用大量無標(biāo)簽單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)訓(xùn)練一個自編碼器或掩碼語言模型讓模型學(xué)習(xí)基因之間的共表達(dá)模式、細(xì)胞類型之間的差異、以及不同狀態(tài)下細(xì)胞嵌入的分布規(guī)律。這個預(yù)訓(xùn)練步驟非常關(guān)鍵。它相當(dāng)于給框架建立一套“細(xì)胞語言模型”。有了這套語言模型后續(xù)預(yù)測藥物響應(yīng)時模型不是從零開始而是在已經(jīng)理解細(xì)胞基本語法的基礎(chǔ)上學(xué)習(xí)“藥物擾動”這個特殊語法。單細(xì)胞基礎(chǔ)模型近兩年發(fā)展很快有基于 Transformer 的也有基于圖神經(jīng)網(wǎng)絡(luò)的還有用擴(kuò)散模型做生成式建模的。無論具體結(jié)構(gòu)如何目標(biāo)都是一致的把高維稀疏基因表達(dá)變成低維、稠密、有生物學(xué)意義的細(xì)胞嵌入。4.2 藥物分子表征模塊讓模型理解化學(xué)藥物分子表征模塊負(fù)責(zé)把化學(xué)結(jié)構(gòu)轉(zhuǎn)成模型可以處理的向量。對于預(yù)測響應(yīng)的框架來說這個模塊與生物模塊必須形成聯(lián)合特征空間否則就會出現(xiàn)“化學(xué)特征學(xué)得好但細(xì)胞響應(yīng)預(yù)測不準(zhǔn)”的割裂問題。高質(zhì)量的藥物表征通常需要結(jié)合多個學(xué)科知識化學(xué)結(jié)構(gòu)決定分子性質(zhì)、拓?fù)浣Y(jié)構(gòu)影響靶點結(jié)合、物理化學(xué)性質(zhì)決定吸收分布代謝等參數(shù)。因此一個負(fù)責(zé)任的框架不會只用一種藥物特征而是讓模型在不同特征之間做注意力融合或?qū)Ρ葘W(xué)習(xí)幫助模型在訓(xùn)練中學(xué)會關(guān)注與細(xì)胞響應(yīng)最相關(guān)的化學(xué)信息。4.3 擾動條件生成模塊預(yù)測“會發(fā)生什么”在拿到細(xì)胞狀態(tài)嵌入和藥物分子表征之后核心預(yù)測模塊就要工作了。它需要輸出一個“未來的細(xì)胞狀態(tài)”嵌入或者直接輸出基因表達(dá)變化量。如果框架采用生成式路線它會用條件變分自編碼器或擴(kuò)散模型在給定條件下采樣可能的響應(yīng)分布如果采用判別式路線它會直接預(yù)測差異表達(dá)基因集合或基因表達(dá)變化均值。條件生成的價值在于它能夠表達(dá)“不確定性”。同一個藥物作用于同一個基因背景下的細(xì)胞結(jié)果也不是單一的有些細(xì)胞會響應(yīng)有些不響應(yīng)有些走向不同命運(yùn)。輸出一個分布比輸出一個點估計更符合生物學(xué)現(xiàn)實。4.4 評估與校準(zhǔn)模塊確保預(yù)測可信虛擬細(xì)胞框架如果沒有一套嚴(yán)格評估流程很容易變成“自我感覺良好的花架子”。新框架大概率會在評估上花大量心思尤其強(qiáng)調(diào)“未知藥物”的測試協(xié)議訓(xùn)練集與測試集的藥物結(jié)構(gòu)不能高度相似最好用骨架聚類來劃分評估指標(biāo)要兼顧預(yù)測精度、排序能力和不確定性校準(zhǔn)。這樣就避免模型通過化學(xué)相似性“間接記憶”測試集藥物。這種模塊化設(shè)計值得每一個想進(jìn)入這個領(lǐng)域的人借鑒。不要一上來就追求一個端到端的大黑箱而是把任務(wù)拆成“理解細(xì)胞”“理解藥物”“學(xué)習(xí)擾動規(guī)律”“驗證預(yù)測可信度”四個子問題每個子問題獨立設(shè)計、獨立評估最后再通過聯(lián)合訓(xùn)練串起來。這種做法在工程上也更可控。5. 一個可以落地的框架原型思路如果你被這套想法吸引也想在自己的數(shù)據(jù)上做實驗下面給出一個通用最小實現(xiàn)思路。這些代碼不是原論文復(fù)現(xiàn)而是把“單細(xì)胞響應(yīng)預(yù)測框架”的常見流程拆成可運(yùn)行的結(jié)構(gòu)方便你理解工程實現(xiàn)要點。5.1 環(huán)境準(zhǔn)備與依賴工作環(huán)境建議使用 Python 3.9 以上版本核心依賴包括pip install scanpy anndata scikit-learn torch pytorch-lightning版本不寫死因為各項目環(huán)境差異較大。scanpy用于單細(xì)胞數(shù)據(jù)讀取和預(yù)處理anndata管理數(shù)據(jù)結(jié)構(gòu)torch和pytorch-lightning負(fù)責(zé)模型訓(xùn)練。如果要用 Transformer 或圖神經(jīng)網(wǎng)絡(luò)再按需安裝對應(yīng)擴(kuò)展庫即可。5.2 單細(xì)胞數(shù)據(jù)預(yù)處理先做標(biāo)準(zhǔn)化、篩選高變基因、批次整合再劃分訓(xùn)練集和測試集。注意劃分單位是“藥物”不是“細(xì)胞”否則會導(dǎo)致嚴(yán)重的數(shù)據(jù)泄漏讓模型看似很強(qiáng)大、實則在作弊。import scanpy as sc import numpy as np from sklearn.model_selection import GroupShuffleSplit # 讀取 h5ad 格式的單細(xì)胞數(shù)據(jù) adata sc.read_h5ad(your_single_cell_dataset.h5ad) # 基礎(chǔ)質(zhì)量控制和預(yù)處理 sc.pp.filter_cells(adata, min_genes200) sc.pp.filter_genes(adata, min_cells3) sc.pp.normalize_total(adata, target_sum1e4) sc.pp.log1p(adata) # 篩選高變基因保留用于模型的輸入特征 sc.pp.highly_variable_genes(adata, n_top_genes2000, flavorseurat_v3) adata adata[:, adata.var[highly_variable]] # 按藥物分組劃分?jǐn)?shù)據(jù)訓(xùn)練集藥物與測試集藥物完全不相交 splitter GroupShuffleSplit(n_splits1, test_size0.2, random_state42) train_idx, test_idx next(splitter.split(adata.X, groupsadata.obs[drug_id])) train_adata adata[train_idx].copy() test_adata adata[test_idx].copy()這一步有兩點需要特別強(qiáng)調(diào)第一drug_id必須是藥物唯一標(biāo)識不包含濃度、批次等信息第二劃分之后需要檢查訓(xùn)練集和測試集藥物是否有結(jié)構(gòu)重疊如果兩個藥物骨架非常相似測試評估的可信度會降低。5.3 構(gòu)建藥物特征與細(xì)胞特征融合模型下面這個示例展示一個非常簡化的預(yù)測模型輸入是一個藥物的 Morgan 指紋向量和一個細(xì)胞的基因表達(dá)向量輸出是該細(xì)胞在藥物處理后的基因表達(dá)變化量預(yù)測。實際框架里細(xì)胞基因表達(dá)往往會先經(jīng)過預(yù)訓(xùn)練的單細(xì)胞基礎(chǔ)模型轉(zhuǎn)成低維嵌入這里為了演示直接用高變基因表達(dá)作為輸入。import torch import torch.nn as nn class SingleCellDrugResponsePredictor(nn.Module): def __init__(self, cell_dim, drug_dim, hidden_dim256): super().__init__() # 細(xì)胞表達(dá)編碼器 self.cell_encoder nn.Sequential( nn.Linear(cell_dim, hidden_dim), nn.BatchNorm1d(hidden_dim), nn.ReLU(), ) # 藥物特征編碼器 self.drug_encoder nn.Sequential( nn.Linear(drug_dim, hidden_dim), nn.BatchNorm1d(hidden_dim), nn.ReLU(), ) # 融合后預(yù)測基因表達(dá)變化量 self.predictor nn.Sequential( nn.Linear(hidden_dim * 2, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, cell_dim), ) def forward(self, cell_expr, drug_fp): cell_h self.cell_encoder(cell_expr) drug_h self.drug_encoder(drug_fp) fused torch.cat([cell_h, drug_h], dim-1) return self.predictor(fused)模型結(jié)構(gòu)本身不復(fù)雜真正重要的是訓(xùn)練時如何處理響應(yīng)標(biāo)簽。響應(yīng)標(biāo)簽可以定義為“藥物處理組的平均表達(dá) - 對照組平均表達(dá)”也可以定義為配對樣本的差異。用配對數(shù)據(jù)時要注意同一個藥物、同一個細(xì)胞系的處理組和對照組才能這樣算否則差異信號里會混入批次噪聲。5.4 訓(xùn)練與評估流程import pytorch_lightning as pl import torch.nn.functional as F from torch.utils.data import DataLoader, TensorDataset class LitResponsePredictor(pl.LightningModule): def __init__(self, model, lr1e-3): super().__init__() self.model model self.lr lr def training_step(self, batch, batch_idx): cell_expr, drug_fp, target batch pred self.model(cell_expr, drug_fp) loss F.mse_loss(pred, target) self.log(train_loss, loss) return loss def validation_step(self, batch, batch_idx): cell_expr, drug_fp, target batch pred self.model(cell_expr, drug_fp) loss F.mse_loss(pred, target) self.log(val_loss, loss) return loss def configure_optimizers(self): return torch.optim.Adam(self.model.parameters(), lrself.lr)評估不能只看整體 MSE還要分維度看已知藥物上的表現(xiàn)、未知藥物上的表現(xiàn)、不同細(xì)胞類型上的表現(xiàn)、對高頻基因和低頻基因的表現(xiàn)。一個只對已知藥物有效、對未知藥物失效的框架在這個任務(wù)里沒有實際價值。合理的評估協(xié)議應(yīng)該是主結(jié)果直接在未知藥物測試集上報告再對比已知藥物的結(jié)果差異這個差異也能反映模型的泛化能力。5.5 配置管理與實驗記錄實驗配置建議使用 YAML 文件把數(shù)據(jù)路徑、超參數(shù)、模型結(jié)構(gòu)、訓(xùn)練策略這些都沉淀下來方便復(fù)現(xiàn)與協(xié)作。data: path: your_single_cell_dataset.h5ad cell_feature_dim: 2000 drug_feature: morgan_fingerprint drug_dim: 1024 test_ratio: 0.2 model: hidden_dim: 256 dropout: 0.1 train: batch_size: 128 max_epochs: 50 learning_rate: 0.001 gpu: 1 evaluation: metrics: [mse, pearson, spearman] split_by: drug_id這種配置文件看似簡單卻能在團(tuán)隊協(xié)作和論文復(fù)現(xiàn)中省下大量時間。很多項目跑不出好結(jié)果不是因為模型不行而是因為實驗記錄混亂不確定超參數(shù)和數(shù)據(jù)版本。6. 如何評估一個虛擬細(xì)胞框架好不好評估標(biāo)準(zhǔn)這件事看起來只是技術(shù)細(xì)節(jié)但實際上決定了整個領(lǐng)域的研究質(zhì)量。一個框架如果宣稱“預(yù)測藥物響應(yīng)很準(zhǔn)”你首先要問它是怎么劃分訓(xùn)練集和測試集的當(dāng)前比較合理的評估層級可以分成三層。第一層是“已知藥物可復(fù)現(xiàn)”。測試集里的藥物在訓(xùn)練集中出現(xiàn)過模型只需要記憶藥物與細(xì)胞響應(yīng)的映射關(guān)系就能做到不錯的效果。這層評估主要驗證模型是否有足夠的擬合能力不能說明泛化能力。第二層是“未知藥物可泛化”。測試集藥物與訓(xùn)練集藥物在分子結(jié)構(gòu)上有一定差異模型必須利用分子表征來推斷。這個難度明顯更高也是最接近真實藥物研發(fā)場景的評估方式。從當(dāng)前領(lǐng)域進(jìn)展來看已有的公開方法對這個層級的預(yù)測能力還在持續(xù)提升中距離完美外推還有很大差距。第三層是“跨數(shù)據(jù)集、跨平臺可遷移”。在 A 實驗室的數(shù)據(jù)上訓(xùn)練到 B 實驗室的獨立數(shù)據(jù)集上測試。這是對框架魯棒性最嚴(yán)格的檢驗也是最容易被忽視的。單細(xì)胞數(shù)據(jù)批次效應(yīng)嚴(yán)重如果框架在這個層級上仍然保持較強(qiáng)預(yù)測能力說明它學(xué)到的可能真的是生物學(xué)規(guī)律而不是數(shù)據(jù)集里的偽相關(guān)信號。評估指標(biāo)方面任務(wù)不同會有差異。回歸任務(wù)常用 Pearson 相關(guān)系數(shù)和 Spearman 相關(guān)系數(shù)看預(yù)測基因變化量與真實變化量的相關(guān)程度分類任務(wù)常用 AUROC 和 PR-AUC看區(qū)分“響應(yīng)/不響應(yīng)”的能力。近年越來越多論文強(qiáng)調(diào)“不確定性校準(zhǔn)”希望模型在輸出預(yù)測時同時告訴研究者“這個預(yù)測我有多大把握”。對于實際實驗驗證來說一個經(jīng)過良好校準(zhǔn)的不確定性分?jǐn)?shù)往往比點到平均值的精確預(yù)測更有指導(dǎo)價值。對讀者來說看到論文時不要被大詞匯迷惑先看評估協(xié)議。如果一張圖表只展示了已知藥物上的表現(xiàn)那只能說明模型有學(xué)習(xí)能力不能說明它解決了未知藥物預(yù)測問題如果模型在結(jié)構(gòu)和生物機(jī)制上都沒有任何可解釋的輸出那它作為“虛擬細(xì)胞”的說法也要打折扣。7. 常見問題與排查方法在你的實際復(fù)現(xiàn)和實驗過程中大概率會遇到下面這些問題。這里整理一個簡要的排查表。問題現(xiàn)象可能原因排查方式解決方案模型在訓(xùn)練集上預(yù)測很準(zhǔn)測試集上效果崩盤數(shù)據(jù)劃分時不按藥物分組造成數(shù)據(jù)泄漏檢查測試集訓(xùn)練集的藥物是否有重疊嚴(yán)格按藥物 ID 分組劃分使用 scaffold 聚類確保分子結(jié)構(gòu)差異未知藥物表現(xiàn)遠(yuǎn)低于已知藥物模型過于依賴記憶沒有學(xué)到化學(xué)結(jié)構(gòu)與響應(yīng)的關(guān)系對比已知/未知藥物分組結(jié)果查看模型是否主要依賴細(xì)胞特征引入預(yù)訓(xùn)練藥物表征使用對比學(xué)習(xí)約束藥物特征與細(xì)胞響應(yīng)對齊預(yù)測結(jié)果充滿隨機(jī)噪聲重復(fù)運(yùn)行差異大單細(xì)胞測序數(shù)據(jù)批次效應(yīng)嚴(yán)重標(biāo)簽本身噪聲大按批次可視化樣本分布檢查對照組與處理組的均值差異增加批次整合步驟使用配對樣本計算響應(yīng)標(biāo)簽訓(xùn)練時啟用固定隨機(jī)種子模型輸出接近均值無法捕捉不同細(xì)胞的異質(zhì)性模型容量不足或訓(xùn)練標(biāo)簽被過度平均化查看每個細(xì)胞預(yù)測值的方差檢查損失曲線增加模型容量引入條件生成模型或者在特征層加入細(xì)胞類型信息預(yù)處理后基因數(shù)量非常大訓(xùn)練速度極慢沒有做高變基因篩選或特征選擇查看輸入維度檢查內(nèi)存占用用highly_variable_genes降維或采用預(yù)訓(xùn)練細(xì)胞嵌入替代原始表達(dá)復(fù)現(xiàn)論文時結(jié)果對不上數(shù)據(jù)版本、預(yù)處理流程、隨機(jī)種子不一致核對數(shù)據(jù)下載版本記錄每一步預(yù)處理參數(shù)建立完整的配置文件把數(shù)據(jù)版本、預(yù)處理步驟、模型超參數(shù)全部固定下來這些問題里最隱蔽的是數(shù)據(jù)泄漏。許多看起來效果拔群的模型最后被發(fā)現(xiàn)在數(shù)據(jù)劃分上把同一個藥物的不同批次分別放進(jìn)了訓(xùn)練集和測試集導(dǎo)致模型表面上是“預(yù)測未知藥物”實際上是在“回憶同藥物的相似樣本”。這個問題在每個論文復(fù)現(xiàn)前都應(yīng)該先檢查一遍。8. 工程實踐與科研建議如果你準(zhǔn)備在團(tuán)隊或?qū)嶒炇依飭印疤摂M細(xì)胞”相關(guān)方向下面這些工程層面的建議非常值得注意。8.1 數(shù)據(jù)版本管理比模型結(jié)構(gòu)更重要單細(xì)胞數(shù)據(jù)動輒幾十 GB預(yù)處理后還會產(chǎn)生多個中間版本。如果不用類似dvc或wandb這類工具管理數(shù)據(jù)版本和實驗記錄幾個月后你可能根本說不清某個模型是用哪份數(shù)據(jù)訓(xùn)練出來的。建議從第一天開始就把“數(shù)據(jù)版本 預(yù)處理代碼 模型配置 實驗結(jié)果”綁定在一起這能極大減少無效返工。8.2 先跑通小規(guī)模基線再升級模型復(fù)雜度不要一上來就追求超大預(yù)訓(xùn)練模型。建議先用一個簡單 MLP 或 GNN 在小規(guī)模數(shù)據(jù)上跑通全流程確保數(shù)據(jù)預(yù)處理、標(biāo)簽構(gòu)建、評估協(xié)議都是正確的再去升級基礎(chǔ)模型。這個道理在很多深度學(xué)習(xí)項目里都適用但在單細(xì)胞響應(yīng)預(yù)測里尤其重要因為數(shù)據(jù)管線極長、坑點極多一旦出問題你很難判斷是數(shù)據(jù)問題還是模型問題。8.3 批次效應(yīng)是最大的隱性風(fēng)險單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)的批次效應(yīng)往往比藥物響應(yīng)信號本身更強(qiáng)。很多模型在訓(xùn)練集上表現(xiàn)好、測試集上崩潰原因不是模型不夠強(qiáng)而是它把批次信息當(dāng)成了響應(yīng)信號。從工程角度建議在建模前先做批次整合可視化看看處理組和對照組是否能在 UMAP 上明顯區(qū)分區(qū)分方向是否符合生物學(xué)預(yù)期。如果處理組內(nèi)部都分成多個小簇那大概率是批次效應(yīng)主導(dǎo)了差異。8.4 生物可解釋性不是可選項虛擬細(xì)胞框架如果要真正服務(wù)藥物研發(fā)就不能只輸出一個數(shù)字。研究者需要知道模型關(guān)注了哪些基因這些基因是否落到了已知的信號通路里預(yù)測結(jié)果能否被已有的生物學(xué)知識解釋。可以在模型中加入注意力機(jī)制或者用 SHAP、集成梯度等方法分析模型輸入的重要性。如果某個藥物預(yù)測響應(yīng)很強(qiáng)的基因集合全是未知功能基因那模型可能學(xué)到了某種新的生物學(xué)機(jī)制也可能是在擬合噪聲需要做實驗驗證才能判斷。8.5 算力資源要有梯度規(guī)劃單細(xì)胞數(shù)據(jù)規(guī)模大藥物響應(yīng)框架通常需要多輪實驗。不是每一次實驗都要用最大模型、最大數(shù)據(jù)集。建議先做消融實驗用部分?jǐn)?shù)據(jù)驗證某個模塊是否真的有幫助確認(rèn)之后再擴(kuò)展到全數(shù)據(jù)。這樣可以節(jié)省大量算力成本也讓實驗周期更可控。8.6 多團(tuán)隊協(xié)作時的接口統(tǒng)一虛擬細(xì)胞是一個高度跨學(xué)科方向通常需要生物實驗團(tuán)隊、生物信息團(tuán)隊、算法團(tuán)隊協(xié)作。團(tuán)隊之間的數(shù)據(jù)格式、基因命名標(biāo)準(zhǔn)、藥物 ID 體系、標(biāo)簽定義如果不統(tǒng)一會產(chǎn)生大量溝通成本。建議把數(shù)據(jù)接口定義成項目文檔的一部分例如統(tǒng)一使用 Ensembl ID 表示基因、使用 InChI Key 表示藥物分子避免因為命名不一致導(dǎo)致后續(xù)無法對齊。9. 總結(jié)與后續(xù)學(xué)習(xí)方向回到文章開頭的問題我們能不能構(gòu)建一個“細(xì)胞版大模型”讓它預(yù)測未知藥物對單細(xì)胞的影響從這篇 Nature Machine Intelligence 研究看答案是“正在成為可能”但前提是必須把任務(wù)定義清楚、把評估協(xié)議設(shè)計嚴(yán)格、把工程實踐做扎實。這篇文章真正想表達(dá)的判斷是虛擬細(xì)胞的價值不在于短期內(nèi)造出一個“完整細(xì)胞模擬器”而在于把細(xì)胞科學(xué)中的復(fù)雜問題轉(zhuǎn)化為可計算、可驗證、可迭代的框架。而“未知藥物單細(xì)胞響應(yīng)預(yù)測”正是這個框架里最值得優(yōu)先突破的方向之一。它既與真實藥物研發(fā)場景直接相關(guān)又不像“全細(xì)胞模擬”那樣遙不可及是一個既有挑戰(zhàn)、又能看到進(jìn)展的好問題。如果你對這個方向感興趣下一步可以按這個順序自學(xué)第一熟悉單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)的讀取、預(yù)處理和可視化重點理解批次效應(yīng)和數(shù)據(jù)劃分方法第二掌握藥物分子表征的常用手段建議從 Morgan 指紋和圖神經(jīng)網(wǎng)絡(luò)開始第三閱讀近年單細(xì)胞基礎(chǔ)模型相關(guān)論文理解嵌入和預(yù)訓(xùn)練思想如何應(yīng)用在細(xì)胞數(shù)據(jù)上第四自己動手跑通一個最小預(yù)測流程再針對未知藥物泛化這個難點設(shè)計實驗、做多組對照。做這個方向很容易在一堆復(fù)雜模型和數(shù)據(jù)細(xì)節(jié)里迷失。但記住一條主線框架設(shè)計的目標(biāo)始終是回答“如果給模型一種從未見過的藥物它能不能幫我們理解細(xì)胞會怎么反應(yīng)”。所有模塊、數(shù)據(jù)和算力都是為這個目標(biāo)服務(wù)的。建議把本文提到的評估協(xié)議、數(shù)據(jù)劃分原則、工程管理方案收藏起來。等你自己真的復(fù)現(xiàn)一個虛擬細(xì)胞模型時再回頭看這些問題會有完全不同的體會。