在傳統藥物發現中,虛擬篩選通常仰賴既有化合物庫、docking 與打分函數來鑑定潛在 hit;然而,這類流程有兩個根本限制。第一,它本質上是在既有分子庫中搜尋,因此很難真正探索龐大而未知的新化學空間;第二,它的效率與成功率常受限於資料庫覆蓋度與 scoring function 本身的偏差。正因如此,近年的 AI-based structure-based drug design(SBDD)逐漸從「挑選分子」走向「直接生成分子」,希望能根據蛋白質結合口袋的三維結構,直接設計新的 ligand。Schneuing 等人提出的 DiffSBDD,正是這個方向中極具代表性的工作。它以 diffusion model 為核心,將蛋白質口袋作為條件資訊,在三維空間中同步生成 ligand 的原子類型與座標;因此,它的目標不只是產生化學上可行的小分子,而是產生能在特定 pocket 中呈現合理 binding pose 與 interaction pattern 的候選配體。

從方法本質來看,DiffSBDD 屬於條件式的 3D generative model。在前向 diffusion 過程中,模型會逐步對真實 ligand 加入 Gaussian noise,使原本有意義的分子幾何逐漸退化成近似隨機的點雲;而在反向過程中,模型則學習如何從這些帶噪表示中一步步去除雜訊,重建出合理的分子結構。由於在生成新樣本時並不知道真實的原始資料,因此反向 transition 無法直接以解析形式求得,DiffSBDD 的作法是訓練一個神經網路,輸入當前帶噪的 ligand、protein pocket 以及時間步 t,直接預測其中包含的 noise,並以此逐步回推出較乾淨的分子表示。訓練 loss 的核心其實就是預測 noise 與真實 noise 之間的均方誤差,因此模型學到的不是一個靜態結構模板,而是一套如何在蛋白質幾何條件下逐步辨識並移除雜訊的生成規則。

也就是說,訓練時先有一個真實資料 z0,再經過 forward diffusion 加噪成 zt。因為訓練時我們自己加的 noise ε 是知道的,所以就可以要求模型 ϕθ去預測它。整個 loss 就是在懲罰模型預測的 noise和真正加進去的 noise 之間差多少。

在網路架構上,DiffSBDD 採用 SE(3)-equivariant GNN 作為 denoising network。它將 ligand 與 protein pocket 都表示為圖結構,其中 node 對應 atom,edge 代表原子之間的鄰近或相互作用關係 (如左圖)。GNN 本身非常適合分子問題,因為分子天然就是圖,而且 atom 並沒有固定順序,因此模型還必須具有排列等變性 ( permutation equivariance):若只是把 atom 編號重排,模型的輸出也應隨之等價重排,而不應把它當成另一個分子。DiffSBDD 在 message passing 過程中同時更新 atom features 與 ligand 座標,而這些更新規則只依賴相對距離與相對位置,因此當整個系統被一起旋轉或平移時,輸出也會以相同方式變換。這確保模型真正學到的是 ligand–pocket 的幾何關係,而不是特定座標系下的圖樣。至於 pocket,則作為固定條件參與訊息傳遞,但本身座標不被更新,藉此維持穩定的 3D 結構背景。
因為 DiffSBDD 要在同一個網路中同時處理 ligand 與 protein,所以作者還設計了共同的節點表示空間。具體而言,ligand 的 atom types 與 protein 的 atom/residue types 會先分別經過不同的可學習 MLP,投影到同一個 joint node embedding space。這樣做的目的不是把兩者混為一談,而是讓原本類別系統不同的 ligand 與 pocket node,能夠在同一個 GNN 中彼此比較、交換訊息並共同建模。作者也曾測試較粗粒化的 protein representation,例如只保留每個胺基酸的 Cα 原子,以降低計算量;但整體結果顯示,這種 coarse-grained 表示多半不如 full-atom model。這個結果其實很合理,因為 pocket 的局部化學環境、氫鍵供受體分布、疏水表面與立體障礙,很多都發生在原子層級,過早粗化會犧牲太多與 binding 直接相關的細節。

這篇工作之所以特別重要,不只是因為它把 diffusion model 用在 protein–ligand generation,更因為作者非常明確地處理了這類模型在三維幾何中必須面對的對稱性問題。作者特別區分 E(3) 與 SE(3):E(3) 包含所有剛體變換,也就是 rotation、translation 與 reflection;SE(3) 則只包含 rotation 與 translation,而不包含 reflection。DiffSBDD 選擇 SE(3)-equivariance,而不是更「完整」的 E(3)-equivariance,關鍵理由不是少做一件事,而是要保留對手性的辨識能力。這在蛋白–配體系統中特別關鍵,因為蛋白質本身是手性環境,鏡像異構物即使整體形狀看起來非常相似,實際上的結合模式、活性乃至毒性都可能截然不同。若模型把 reflection 也當成等價操作,就等於把 enantiomers 視為無差別,這在藥物設計上顯然是不可接受的(圖以抗憂鬱劑citalopram為例)。
作者對這件事給出了一個很清楚的數學要求:如果將 ligand 與 pocket 整體施加同一個旋轉 R 與平移 t,模型對 ligand 的條件機率應保持不變,也就是
p(Rx(L) + t∣Rx(P) + t) = p(x(L)∣x(P))
它的物理意義是,改變觀察座標系不應改變模型對 binding compatibility 的判斷。換句話說,把整個蛋白–配體系統一起旋轉 90 度、翻個方向,或平移到空間另一側,都不應讓模型突然改變對這個 ligand 是否適合該 pocket 的判斷。模型應該學到的是 ligand 與 pocket 之間的相對幾何關係,而不是某一個特定座標系中的擺放樣式。這就是 likelihood 不變性的核心思想,也是三維結構生成模型若要具備物理合理性所必須滿足的條件。

不過,這裡有一個重要細節:diffusion framework 中常用的 isotropic Gaussian noise,本身對各個方向一視同仁,因此它天然與 rotation 相容;若只看分布形式,甚至連 reflection 也不會破壞它。也就是說,單從 Gaussian diffusion 的前向與基本 transition 結構來看,模型其實很容易滿足 O(3) 層級的對稱性。但真正困難的地方在於,藥物分子不是抽象點雲,而是具有手性、化學鍵結與局部立體特徵的實體。因此,若只依賴 isotropic Gaussian 的對稱性,模型很可能會把鏡像分子也視為等價,進而抹去 biologically relevant chirality。DiffSBDD 的貢獻之一,就是在保留 rotation 與 translation 等變性的同時,刻意不讓 reflection 變成不可區分的對稱操作。

DiffSBDD 採用的基本 EGNN layer。它描述的是:每一層 l 中,每個節點 i 的特徵 hi 和 座標 xi 要怎麼根據鄰居節點 j 的資訊一起更新。對每一對節點 i,j,先建立一個從 j 傳到 i 的訊息 mij。aij是邊特徵,可理解成 bond type、是否屬於同一類圖、或其他 pair-wise conditioning 資訊。ϕe 通常是一個 MLP,功能就是把「兩個節點彼此之間現在的關係」編碼成 message。hil+1 是一個整合過周圍環境的新特徵。每個鄰居 j 都會對節點 i 施加一個可學習的“幾何推拉作用”,最後把這些作用全部加總,得到 xi 的新位置。
平移等變性的處理在這篇文中也很值得注意。對分子系統來說,真正重要的是相對位置,而不是其在三維空間中的絕對座標;但若神經網路直接吃原始座標,就可能不小心把「這個系統在空間的哪裡」也學進去。為了避免這種問題,作者把整個 diffusion 與 sampling 過程限制在 center-of-mass 為零的子空間,也就是在每次 likelihood 計算與 denoising 前,先扣除系統的質心。如此一來,模型所接收到的主要就是 pocket 與 ligand 之間的相對幾何,而非絕對位置。這個處理看似只是技術細節,但其實非常關鍵,因為若沒有這一步,translation equivariance 並不會自動成立,模型就可能錯把座標系本身當成有意義的訊號。另一方面,為了讓模型能區分鏡像構型,作者在座標更新中加入依賴 cross product 的項,使反向過程對 reflection 保持敏感。簡單來說,DiffSBDD 不只是要「懂空間」,還要「懂手性」。

這一項用了 cross product。而 cross product 最大的特徵就是:它是 pseudo-vector。在一般 rotation 下,它會像普通向量一樣正常旋轉;但在 reflection 下,它會多出一個負號,也就是會翻轉方向。兩個幾何排列如果只是旋轉或平移後相同,那它們應該被視為等價;但如果它們互為鏡像,模型就應該能看出差別。
在條件生成的設計上,作者提出了兩種主要模式。第一種是 DiffSBDD-cond,也就是在 reverse diffusion 的每一步,都把固定的 protein pocket 當作顯式條件輸入。這代表模型每次做去噪時,都會同時看到一個隨時間改變的 noisy ligand,以及一個固定不變的 pocket 點雲,並據此判斷下一步該如何更新 ligand。第二種是 DiffSBDD-joint,它不是在每一步直接做條件生成,而是先學習 ligand–pocket pair 的 joint distribution,之後在 sampling 時固定 target pocket,再像 inpainting 一樣把對應的 ligand 補出來。兩者的差別,在於前者把 pocket 視為每一步都顯式提供的背景條件,後者則更像是先學整個系統的統計結構,再在推論時將其中一部分固定。值得注意的是,作者後續比較發現,兩種 conditioning 方式的差距其實不大,真正顯著的提升主要來自 diffusion-based 3D generation 這個整體框架,而不是某一種條件化技巧本身。

作者接著從多個角度評估 DiffSBDD 生成出來的分子是否真的像真實 binder,以及它相較於既有 SBDD 模型到底有何優勢。比較對象包括 Pocket2Mol、ResGen、PocketFlow 與 DeepICL 等 autoregressive 或其他生成方法;評估指標則涵蓋 docking/Vina score、與 reference ligand 的相似度,以及 ring system 的合理性。整體結果顯示,DiffSBDD 與 Pocket2Mol 生成分子的 docking score 大致都分布在真實 ligand 附近,表示它們學到的並不是完全偏離真實 bioactive chemistry 的空間。不過,DiffSBDD 的分布明顯更寬:它既會產生更多較差的分子,也會產生更多高分尾端候選。這一點非常重要,因為在真正的藥物設計裡,研究者通常不是在意平均值最好,而是在意能否從大量候選中找到少數特別強的 hit。從這個角度來看,能夠提供更多高分尾端樣本的模型,反而更符合實際 hit discovery 的需求。

縱軸是 Vina score difference。從圖的脈絡看,這個差值可理解為「生成分子的 Vina score 減去 reference ligand 的 Vina score」。因為 Vina 越負通常代表預測結合越好。
不過,作者也很坦率地指出,資料集本身會顯著影響這些評估結果。例如在 Binding MOAD 上,模型生成分子的平均 docking score 通常低於真實 reference ligand;但這不必然意味模型失敗,而更可能反映資料集特性。其一,Binding MOAD 的訓練資料較少,模型較難完整學習;其二,MOAD 中的 reference ligands 多半是實驗上確認過、結合能力較強且較成熟的真實 binder,因此本來就比較難被超越。文中提到,reference molecules 在 synthetic/CrossDocked-like dataset 的平均 Vina score 約為 −7.68,而在 Binding MOAD 則約為 −9.17;後者更負,也意味平均結合更強。這提醒我們,當某個模型在 CrossDocked 上看似較容易追平甚至超越 reference ligand 時,未必代表它真的比較厲害,也可能只是因為該資料集本身較鬆散、較 noisy 或 reference 本來就不如 MOAD 中那麼強。

從化學結構特徵來看,DiffSBDD 生成分子在五元環與六元環的比例上,與天然 ligand 頗為接近,這是合理而正面的結果,因為真實藥物與 bioactive molecules 中本來就非常常見這兩類環系。然而,模型仍存在一些偏差,例如過小的環或過大的環比例偏高,顯示它雖然已學到不少合理化學特徵,但在 ring topology 的分布上仍不夠精確。這也說明,DiffSBDD 並非已完全掌握藥化規則,而是達到一個很有潛力、但仍需後處理與篩選配合的狀態。
DiffSBDD 的另一個亮點,是它不只是模仿已知 binder,而有機會把天然但不夠 drug-like 的 ligand 轉化成更適合藥物開發的分子。作者以 PDB: 6c0b 為例說明,該 target 的 reference ligand 是一條長脂肪酸。這類分子雖然可能對受體有結合能力,但從藥物設計角度看通常不理想,因為它具有太多 rotatable bonds,分子過於柔軟,結合時需要付出較大的 entropy penalty;此外,其 hydrogen bond donor/acceptor 數量有限,可形成的極性交互作用不足,往往主要依賴較模糊的疏水接觸。文中指出,這個天然 ligand 的 QED 僅為 0.36,而模型生成的候選分子 QED 可提升至 0.87。這類優化往往體現在加入芳香環、降低 rotatable bonds 數量,亦即藥化中很熟悉的 rigidification 與 aromatic optimization。這表示 DiffSBDD 並不只是重現原始 ligand,而是能在某些案例中朝更 drug-like 的方向重新組織結構。
更進一步地,DiffSBDD 並不只適合做全新的 de novo generation,它在實務上更有價值的地方,其實是對 inpainting 任務的支援。在影像領域,inpainting 指的是已知周圍資訊、補出缺失區域;在分子設計中,則可以理解為固定一部分已知重要的結構,讓模型補出其餘部分。這樣的設定自然可以涵蓋 fragment growing、scaffold decoration、scaffold hopping、fragment linking 等任務,也就是藥化中最常見的「局部保留、局部優化」。技術上,作者使用的是一種 replacement method:透過任意定義的 binary mask,指定哪些原子保留、哪些原子生成。在每一個 denoising step 中,固定原子不是直接塞回乾淨結構,而是先取其對應的 forward-noised representation,再用它替換模型當前生成結果中的對應節點。如此一來,固定部分與生成部分始終處在相同噪音尺度下,避免產生不一致的條件輸入。

然而,只靠 replacement 仍可能引入近似誤差,使固定區域與新生成區域之間出現不協調,例如分子骨架斷裂、linker 幾何不合理,或整體在 pocket 中擺位不佳。為了緩解這個問題,作者引入了 resampling 策略。它的概念並不複雜:在每個 denoising step 中,不是做完一次 t→t−1 就直接往下走,而是讓目前的 latent representation 在這個噪音層級附近反覆經歷局部的加噪與去噪,等於給固定部分與生成部分更多機會彼此磨合。作者在 DiffSBDD-joint 的實驗中使用每步 r=10 次 resampling,以提升 inpainting 的穩定性與一致性。相較於像 Tripp 等人提出的 particle filtering 那種更複雜、需要在每一步偏重較合理 sample 的方法,DiffSBDD 採用的是較簡潔但務實的做法。
這種設計的實務意義其實很大。因為有了 mask-based inpainting,同一個 DiffSBDD 模型不需要為 fragment growing、linker design、scaffold hopping 各自重新整理 task-specific dataset,也不需要額外訓練多個專用模型。過去許多方法為了處理不同任務,往往得事先人工定義 fragment、linker 或 scaffold 類型,再建立相對應資料集與訓練流程;這不僅繁瑣,也容易引入人為偏見。相較之下,DiffSBDD 直接學的是一般 protein–ligand pair 的整體分布,因此只要在推論時指定 pocket、給定固定的 molecular context 與 mask,同一個模型就能切換到不同的設計問題。這種泛化能力,正是 diffusion-based SBDD 在應用面上最吸引人的地方之一。
作者還觀察到,若固定的 substructure 本身已與 pocket 高度互補,最終生成分子的 docking score 往往會更好。這非常合理,因為高品質 fragment 等於已提供了一個好的局部起點,模型只需要延伸與修飾,而不是完全從零開始猜測整個結構。更有意思的是,雖然 DiffSBDD 並不是專門為 fragment linking 訓練的模型,但它透過 diffusion 加上 inpainting 所達成的效果,卻已接近專用的 DiffLinker。這意味著一個通用的 3D diffusion model,只要搭配合適的 sampling 策略與條件設定,就可能統一處理許多原本需要不同專用模型的藥物設計任務。
即便如此,作者並沒有把 diffusion-based de novo drug design 描繪成已完全成熟的解法。相反地,他們很清楚地承認:完全自由的 de novo generation 依然很困難。從零開始時,模型容易走向雖然新奇、卻不現實的化學空間,生成難合成、缺乏可驗證性、或整體 quality 不穩定的結構。因此,這篇文真正強調的不是無限制的自由生成,而是 constrained design。當模型保留一部分 realistic substructures,例如已知 fragment、已知 scaffold,或曾被合成過的局部骨架時,最終生成結果通常會更可靠,也更符合真實藥化流程。這點其實非常重要,因為在真正的 lead optimization 中,大多數情況本來就不是從零開始設計,而是在既有 hit 的基礎上逐步修改 potency、selectivity、PK、solubility 與 synthetic accessibility。
若再結合實際使用經驗來看,這個結論其實也相當合理。以我先前用 DiffSBDD 嘗試生成 USP7 inhibitor 的經驗為例,inpainting 比完全 de novo generation 更穩定,這和本文的結論一致:當模型保留一部分已知合理的結構背景時,生成品質通常會更可靠,也更容易留在可信的化學空間中。不過,我只看二十個左右的 candidates,沒有立刻出現比原始分子更好的 hit,不過也不應該太快解讀成方法失敗。更可能的解釋是,真正高品質的候選往往位於分布尾端,需要更大的 sampling 規模、更好的後續 ranking,甚至多輪 noising/denoising 之後,才比較有機會被撈出來。
總結來說,DiffSBDD 的價值不只是「把 diffusion model 拿來生成 ligand」,而是提出了一個兼顧幾何、手性、條件生成與任務泛化的統一框架。



Schneuing, A., Harris, C., Du, Y., Didi, K., Jamasb, A., Igashov, I., Du, W., Gomes, C., Blundell, T. L., Lio, P., Welling, M., Bronstein, M., & Correia, B. (2024). Structure-based drug design with equivariant diffusion models. Nature Computational Science, 4, 899–909. https://doi.org/10.1038/s43588-024-00737-x












