Menü der Dokumentation
- Startseite
- Dokumentation
- Reproduzierbarkeitsprüfungen
- Paper–Code Alignment
Paper und Code: Ist die Methode implementiert?
Ein Manuskript kann Methode, Baselines und Ablationen beschreiben, während das Repository nur das Modell enthält. Machen Sie jeden Teil der Methode auffindbar und jeden Vergleich fair.
Zuletzt aktualisiert
In Ihrem Bericht
- Bereich
- Manuscript
- Prüfung
- Paper–Code Alignment
Warum das wichtig ist
Veröffentlichter Forschungscode ist oft nur ein Teil dessen, was gelaufen ist: Die Vorverarbeitung lag in einem privaten Notebook, oder die Baselines fehlen. Dann ist unklar, ob eine Abweichung von Ihren Zahlen an der Methode liegt oder an einem fehlenden Schritt.
Vergleiche verdienen besondere Sorgfalt. Henderson et al. zeigen, wie berichtete Metriken und Ergebnisse schwanken, wenn Methoden mit gängigen Baselines verglichen werden (Deep Reinforcement Learning that Matters, AAAI 2018).
So sieht gute Praxis aus
- Jeder Schritt aus dem Methodenteil hat Code, auch Vor- und Nachverarbeitung, die in Notebooks begonnen hat.
- Baselines durchlaufen dieselben Splits, dieselbe Vorverarbeitung, dasselbe Tuning-Budget und dieselben Seeds wie Ihre Methode.
- Ablationen sind aus der vollständigen Konfiguration abgeleitet und ändern je eine einzige Einstellung.
- Suchräume für Hyperparameter und die gewählten Werte liegen im Repository.
- Was sich nicht teilen lässt, etwa lizenzierte Daten oder Modelle, ist im README mit Begründung genannt.
So beheben Sie es
Teilen Sie Splits. Erzeugen Sie die Folds einmal, speichern Sie sie und lassen Sie jedes Modell dieselbe Datei lesen. In R:
set.seed(2026)
folds <- rsample::vfold_cv(cohort, v = 5, strata = outcome)
saveRDS(folds, "data/processed/cv_folds.rds")
# every model script, your method and baselines alike:
folds <- readRDS("data/processed/cv_folds.rds")Leiten Sie Ablationen aus der vollständigen Konfiguration ab, damit sich nur eine Einstellung ändert. In Python:
import copy
import yaml
with open("configs/full_model.yaml") as fh:
base = yaml.safe_load(fh)
ablations = {
"no_attention": ("model", "use_attention", False),
"no_augmentation": ("data", "augment", False),
}
for name, (section, key, value) in ablations.items():
cfg = copy.deepcopy(base)
cfg[section][key] = value # exactly one change per variant
with open(f"configs/ablation_{name}.yaml", "w") as fh:
yaml.safe_dump(cfg, fh)Dokumentieren Sie die Zuordnung. Ein Abschnitt „Bezug zum Paper“ im README nennt jeden Abschnitt und jede Abbildung mit Skript sowie alles, was nicht veröffentlicht ist.
Verwandte Themen
- Zahlen und Abbildungen zum Code zurückverfolgen
- Statistische Solidität
- Manuskript und Code gemeinsam prüfen
Diese Prüfung für Ihr Repository
Fügen Sie einer Analyse Ihr Manuskript hinzu, um Befunde und Korrekturvorschläge zu dieser Prüfung zu erhalten.