Kaleidophon/deep-significance

Enabling easy statistical significance testing for deep neural networks.

deep-significance

它是什麼: 一個 Python 庫,幫助研究人員與工程師使用統計顯著性檢驗來正確比較深度學習模型的表現,而不是僅僅比較平均分數。

為何重要: 深度神經網絡對隨機種子、超參數及其他隨機因素極度敏感。單次執行的分數可能具有誤導性。此套件提供嚴謹的統計方法,以判斷一個模型是否真的優於另一個模型,還是差異僅出於偶然。

主要功能:

  • 幾乎隨機序 (ASO): 一種現代顯著性檢驗,比較整個分數分佈,而不僅是均值。它回傳一個置信度分數(eps_min),表示一個模型在多大程度上優於另一個模型。
  • 經典檢驗: 用於基於 p 值的假設檢驗的自助法(bootstrap)與置換-隨機化檢驗。
  • 多重比較校正: Bonferroni 校正,用於處理在多個資料集或模型對上進行檢驗的情況。
  • 樣本量分析: 工具用於估算獲得可靠結論所需的執行次數。
  • 相容性: 與 NumPy、PyTorch、TensorFlow 和 JAX 數組相容。

運作原理(簡化版):

  • 你提供兩組分數(例如,多次執行模型 A 和模型 B 的結果)。
  • aso() 函數比較分佈並回傳一個值 eps_min。如果 eps_min < 0.5,則模型 A 更好;數值越低,你越有信心。
  • 對於多個模型,multi_aso() 會產生成對比較的矩陣。

使用情境:

  • 在多個隨機種子下將新模型與基線模型進行比較。
  • 在多個資料集上評估模型,同時避免假陽性。
  • 基於每個樣本的分數(例如,每個測試樣本的預測)比較模型。
  • 確定在給定置信水準下需要多少次實驗執行。

目標使用者: 機器學習研究人員、實務者,以及任何需要嚴謹評估與比較神經網絡模型的人。

限制(來自 README): 此套件無法保證在所有情境下都優越;它是一個支持結論的工具,而非萬能藥。它也假設你有數次執行或樣本可供比較。

使用範例:

from deepsig import aso
import numpy as np

# 模擬兩個模型的分數
model_a_scores = np.random.normal(0.9, 0.8, 5)
model_b_scores = np.random.normal(0, 1, 5)

# 比較
eps_min = aso(model_a_scores, model_b_scores)
# 如果 eps_min < 0.5,模型 A 更好

總而言之: deep-significance 為你提供了統計上可靠的方法來回答這個問題:「我的模型真的更好嗎?」

相關

  • 專案
  • 專案
  • 專案
  • 專案