Con l'obiettivo di aumentare la riproducibilità e consentire ad altri di sviluppare più facilmente il lavoro pubblicato, presentiamo una lista di controllo per la completezza del codice ML. L'elenco di controllo della completezza del codice ML valuta l'archivio del codice in base agli script e agli artefatti forniti in esso.
introduzione
L'anno scorso, Joel Pino ha pubblicato una lista di controllo sulla riproducibilità per facilitare la ricerca riproducibile presentata alle principali conferenze OA (NeurIPS, ICML,…). La maggior parte degli elementi della lista di controllo si concentra sui componenti del documento. Un elemento in questa lista di controllo è "fornire un collegamento al codice sorgente", ma a parte questo, sono state fatte poche raccomandazioni.
Le migliori pratiche sono state riassunte nell'elenco di controllo della completezza del codice ML, che ora fa parte del processo ufficiale di invio del codice NeurIPS 2020 e sarà disponibile per l'uso da parte dei revisori come meglio credono.
Lista di controllo completezza MLML
L'elenco di controllo della completezza del codice M controlla l'archivio codici per:
- Dipendenze: il repository contiene informazioni sulle dipendenze o istruzioni su come configurare l'ambiente?
- Scenari di addestramento - Il repository contiene un modo per addestrare/adattare i modelli descritti nel documento?
- Scenari di valutazione: il repository contiene uno script per il calcolo delle prestazioni dei modelli addestrati o per l'esecuzione di esperimenti sui modelli?
- Modelli preaddestrati: il repository fornisce l'accesso gratuito ai pesi dei modelli preaddestrati?
- Risultati: il repository contiene una tabella/grafico dei risultati principali e uno script per riprodurre tali risultati?
Ogni repository può ricevere da 0 (ha nessuno) a 5 (ha tutti) tick. Maggiori informazioni sui criteri per ogni elemento possono essere trovate nel repository Github.
Qual è la prova che gli elementi della lista di controllo contribuiscono a repository più utili?
La comunità generalmente usa le stelle di GitHub come proxy per l'utilità del repository. Pertanto, i repository con un punteggio più alto nell'elenco di controllo della completezza ML dovrebbero avere anche più stelle GitHub. Per testare questa ipotesi, sono stati presentati 884 repository GitHub come implementazioni ufficiali nei documenti NeurIPS 2019. Un sottoinsieme del 25% di questi 884 repository è stato selezionato casualmente e controllato manualmente nell'elenco di controllo della completezza del machine learning. Hanno raggruppato questo esempio di repository GitHub NeurIPS 2019 in base al numero di tick presenti nell'elenco di controllo della completezza del codice ML e hanno mappato le stelle mediane di GitHub in ciascun gruppo. Il risultato è qui sotto:
I repository NeurIPS 2019 con 0 caselle di controllo avevano una mediana di 1,5 stelle su GitHub. Al contrario, i repository con 5 caselle di controllo avevano una mediana di 196,5 stelle GitHub. Solo il 9% dei repo aveva 5 tick e la maggior parte dei repo (70%) aveva 3 tick o meno. È stato eseguito il test della somma dei ranghi di Wilcoxon e ha scoperto che il numero di stelle nella classe 5 tick è significativamente (p.value <1e-4) più alto rispetto a tutte le altre classi tranne 5 contro 4 (dove p.value è il confine). a 0,015). Puoi vedere i dati e il codice per questa figura nel repository Github.
Per verificare se questa relazione si estende in modo più ampio, è stato creato uno script per automatizzare il calcolo di una lista di controllo dal repository README e dal codice associato. Abbiamo quindi rianalizzato l'intero set di 884 repository NeurIPS 2019, nonché il set più ampio di 8926 repository di codice per tutti gli articoli ML pubblicati nel 2019. In entrambi i casi, gli specialisti hanno ottenuto un risultato qualitativamente identico con stelle mediane che aumentano monotonamente dalle zecche in modo statisticamente significativo (p.value <1e-4). Infine, utilizzando una robusta regressione lineare, abbiamo riscontrato che modelli e risultati preaddestrati hanno il maggiore impatto positivo sulle stelle di GitHub.
Questa è considerata una prova utile dagli analisti che incoraggiare i ricercatori a includere tutti i componenti richiesti dall'elenco di controllo della completezza del machine learning porterà a repository più utili e che il punteggio nell'elenco di controllo indica presentazioni di migliore qualità.
Attualmente, gli esperti non affermano che i 5 elementi della lista di controllo proposti siano l'unico o addirittura il fattore più significativo nella popolarità del repository. Altri fattori possono influenzare la popolarità, come: dimensione del contributo scientifico, marketing (ad esempio post di blog e post di Twitter), documentazione (README completi, tutorial e documentazione API), qualità del codice e lavoro precedente.
Alcuni esempi di repository NeurIPS 2019 con 5 caselle di controllo:
Gli esperti riconoscono che, sebbene abbiano cercato di rendere la lista di controllo il più generale possibile, potrebbe non essere completamente applicabile a tutti i tipi di documenti, ad esempio, teorici o insiemi di documenti. Tuttavia, anche se lo scopo principale dell'articolo è rappresentare un set di dati, può comunque trarre vantaggio dal rilascio di modelli di base, inclusi scenari di addestramento, scenari di valutazione e risultati.
Inizia a usare
Per rendere più facile per revisori e utenti capire cosa c'è nel repository e per gli esperti valutarlo correttamente, viene fornita una raccolta di best practice per scrivere file README.md, definire dipendenze e rilasciare modelli, set di dati e risultati pre-addestrati. Ti consigliamo di definire chiaramente questi 5 elementi nel tuo repository e di collegarli a qualsiasi risorsa esterna come documenti e classifiche per fornire più contesto e chiarezza per i tuoi utenti. Queste sono le linee guida ufficiali per inviare un codice a NeurIPS 2020.