Captum · Model Interpretability for PyTorch
Meta (PyTorch team) · 程式設計
Captum 是 Meta 推出的免費開源函式庫,用來說明 PyTorch 模型的預測依據。它的歸因演算法會指出哪些輸入特徵、神經元或層次影響了某個輸出。

關於 Captum · Model Interpretability for PyTorch
About
Captum 是什麼
Captum 是一套 PyTorch 模型可解釋性函式庫,要回答的問題很具體:一個已經訓練好的網路,究竟在對什麼東西反應。名字來自拉丁文,意思是理解,工作內容也正是如此。把手上的模型交給它,套用一種歸因演算法,拿回來的數字會告訴你某個輸入特徵、某個神經元、某一層,對這次預測貢獻了多少。
真正需要它的時候,通常是模型出錯又沒人講得清原因。分類器把一張影像判成異常、推薦系統一直推同一件奇怪的商品、語言模型給出的答案信心滿滿卻毫無道理。Captum 讓你打開前向傳播看個究竟,而不是靠猜。
限制在於範圍。它是函式庫,不是應用程式。Python 和 PyTorch 要寫得順手,否則整件事很難進行,而輸出是一堆張量,得自己解讀或畫在 notebook 裡。沒有現成的雲端儀表板可開。團隊在 0.8.0 版之後就下架了 Captum Insights 視覺化介面,期待點幾下滑鼠就能看圖的人會失望。
上手步驟
- 用
pip install captum安裝,conda 使用者可改用conda install captum -c pytorch。0.9.0 版要求 Python 3.10 以上、PyTorch 2.3 以上。 - 載入訓練好的模型,切到評估模式。多數演算法不需要動到網路架構。
- 挑一種演算法,把模型傳進去。處理梯度類歸因時,
IntegratedGradients(model)通常是最先嘗試的選擇。 - 呼叫
attribute(),帶入輸入批次;若演算法需要基準,再給一個全零張量之類的參考值。 - 檢查回傳的歸因值,若要求了收斂差值就一併核對,然後把分數和輸入擺在一起畫圖。
產品資訊
快速了解 Captum · Model Interpretability for PyTorch 的定價、支援平台與效能。
適合對象
這項工具最適合的使用者、任務與情境。
使用者
- 機器學習工程師:手上已經有 PyTorch 模型在跑,遇到預測看起來不對時需要一個說得出口的答案。前提是 Python 寫得順,而且模型能在本機載入。
- 可解釋性研究者:Captum 從設計上就允許擴充,你可以實作新演算法,拿函式庫裡既有的方法當基準,再把比較結果發表出去。
- 在生產環境跑模型的應用工程師:需要向終端使用者說明為什麼看到某個推薦時,概念模組與影響力模組能拿出具體材料。
任務
- 追查錯誤預測:對出問題的樣本跑 Saliency 或 Integrated Gradients,能看出哪些像素或詞元把輸出推向錯誤類別。
- 檢查模型是否學到捷徑:FeatureAblation 會逐一移除或替換輸入區塊,從結果判斷模型依賴的是真實訊號還是背景雜訊。
- 比較神經元與層次:LayerConductance 與 NeuronConductance 針對指定層與神經元打分,懷疑某個區塊壞事時特別好用。
- 稽核訓練資料:TracIn 影響力函數可估算哪些訓練樣本對某次預測影響最大,有助於清理資料與檢視資料集。
情境
- 準備模型審查會議:把歸因圖附在幾筆具代表性的預測上,討論就能從證據開始,不必憑感覺。
- 研究大型語言模型:LLMAttribution 與 LLMGradientAttribution 兩個封裝把同一套演算法接到生成式模型的詞元層級解釋上。
- 上線前壓力測試:穩健性模組內建 FGSM 與 PGD 攻擊,可量測輸入稍微改動後預測會偏移多少。
主要功能
歸因演算法
Captum 把方法分成梯度類與擾動類兩大家族。梯度類有 Saliency、InputXGradient、IntegratedGradients、DeepLift、GradientShap、GuidedBackprop 與 Guided GradCam,擾動類有 FeatureAblation、Occlusion、ShapleyValueSampling 與 Lime。兩類放在同一個地方,結果就能互相對照:梯度法和擾動法指向同一批像素時,特徵歸因的可信度更高,帶著具體解釋進模型除錯會議,會比帶著直覺有用得多。
神經元與層次歸因
特徵歸因說的是模型看了哪裡,神經元與層次歸因說的是網路內部哪一處發生這件事。LayerConductance、LayerIntegratedGradients、LayerLRP 以及對應的神經元版本,會替指定層的活化值打分,出錯的預測因此能一路追到架構中的某個位置。
LLM 歸因封裝
LLMAttribution 與 LLMGradientAttribution 把既有演算法接到 Hugging Face 風格的語言模型上,處理詞元序列。它們會指出提示中的哪些詞元影響了生成的回覆,你也可以先把詞元組成詞或片語再評分。LLM 歸因比單純跑一次前向傳播慢得多,推論成本要先算進去。
概念與影響力分析
概念模組實作了 TCAV,做法是在活化值上訓練一個小型分類器,判斷條紋、毛髮這類概念對某個類別重不重要。影響力模組則加入 TracIn 等估計方法,用來追問哪些訓練樣本塑造了某次預測。兩者都偏研究流程,不適合臨時抽查。
穩健性測試
穩健性模組提供 FGSM、PGD、AttackComparator 與 MinParamPerturbation。你可以產生對抗樣本、並排比較不同攻擊,或搜尋能讓標籤翻轉的最小擾動。搭配歸因使用很自然:一個特徵如果同時通過梯度檢查與攻擊檢查,結論就更有份量。
解釋品質指標
失真度(infidelity)與敏感度(sensitivity)兩項指標,用來估計一組歸因值有多可靠。與其因為熱圖看起來合理就相信它,不如量化輸入被擾動時解釋與模型偏離多少,再拿不同演算法在同一筆樣本上比較。
優缺點
優點
- 不必改模型:多數演算法直接接受任何 PyTorch `nn.Module`,想解釋網路不用重新訓練或改寫結構。
- 演算法覆蓋廣:匯出超過六十個歸因類別,從 Saliency 到 LRP、Shapley 值與 TCAV,全部走同一個匯入路徑。
- 結果可驗證:IntegratedGradients 會回傳收斂差值,函式庫本身也內建失真度與敏感度指標,解釋可以被檢查,而不是只能相信。
- 原生支援多模態:同一套 API 能處理影像張量、文字詞元輸入、音訊與時間序列,跨專案的程式風格因此一致。
- 免費且授權寬鬆:BSD 3 Clause 允許用在商業程式碼裡,不必向任何人報備。
缺點
- 學習曲線偏陡:在四十多種演算法之間做選擇,得先弄懂每一種的前提假設,函式庫不會幫你判斷。
- 沒有視覺介面:Captum Insights 在 0.8.0 版後已下架,想看圖得自己寫繪圖程式。
- 部分方法吃算力:擾動類演算法與 LLM 歸因每筆樣本要跑很多次前向傳播,模型一大成本就上去了。
- 需要 PyTorch 基礎:沒有跨框架的封裝可用,PyTorch 生態以外的人拿不到入口,輸出又是原始張量。TensorFlow 或 JAX 團隊無法沿用既有的模型程式碼,不會 Python 的人則完全沒有著力點。
常見問題
Captum 用來說明 PyTorch 模型的預測。它會評估每個輸入特徵、神經元或層次對輸出的貢獻,適合除錯、模型審查,以及研究網路如何做決定。
相關內容
探索與 Captum · Model Interpretability for PyTorch 相關的工具、技能與文章。
Captum · Model Interpretability for PyTorch 替代方案
Forefront
Forefront · 程式設計Forefront 是一個用來打造開源 AI 的網頁平台。你可以用自己的資料微調主流的開源語言模型、評估它們的表現,再透過 API 執行,或匯出後自行架設。想要封閉式平台的便利、卻堅持要自己擁有模型與資料的開發者,就是這裡的目標客群。
Startkit
StartKit.AI · 程式設計Startkit 是一套用來打造 AI SaaS 與 AI 包裝產品的樣板。可以把它想成一個 AI 新創樣板,把枯燥的部分都先接好了:驗證、Stripe 與 Lemon Squeezy 付款、用量限制、交易型電子郵件,以及一套能與 OpenAI、Anthropic、Groq 或 Llama 溝通的 AI API 啟動套件。你複製儲存庫、設定價格,然後專心在產品中使用者真正願意付費的部分。它建構於 React 與 Tailwind 之上的 Next.js,所以大部分的樣板程式碼對你來說並不陌生。
Testim
Tricentis · 程式設計Testim 是專為網頁、行動與 Salesforce 應用程式打造的 AI 測試自動化平台,用來建立並執行端到端測試。它靠機器學習在介面變動時維持測試穩定,團隊因此少花時間修補壞掉的定位器。對於一款今天就能開始使用的自動化測試工具來說,這表現不算差。你透過在瀏覽器錄製動作來建立測試,需要更多控制時再補上 JavaScript。對忙碌的 QA 團隊來說,這是個可靠的選擇。
