Domanda:
È opportuno menzionare che gli autori si sono rifiutati di fornire esempi di codice quando richiesto?
Coconut
2020-04-27 06:41:02 UTC
view on stackexchange narkive permalink

Lavoro in un sottocampo dell'informatica. C'è stato un documento recente (2020) che è stato pubblicato in una conferenza rispettabile che ha affermato di ottenere prestazioni all'avanguardia su un set di dati specifico. Questo set di dati è un set di dati caldo e il mio gruppo di ricerca ha molti documenti su quello specifico set di dati (migliorando lo stato dell'arte). Ho chiesto agli autori molto gentilmente se possono condividere i loro esempi di codice per il loro algoritmo abbastanza complicato, a cui hanno rifiutato e mi hanno detto che non è disponibile.

Uno dei miei colleghi ha impiegato 2 settimane per codificare l'algoritmo e verificarne le prestazioni, nonché le prestazioni dichiarate. Nel frattempo, abbiamo raggiunto un nuovo passo avanti nel set di dati e raggiunto un nuovo stato dell'arte. Attualmente stiamo scrivendo una bozza.

Ora, non posso fare a meno di rimanere con l'amaro in bocca da tutta questa esperienza. Non vedo perché non condividano il loro codice, specialmente se rivendicano uno stato dell'arte su un set di dati molto importante. La maggior parte dei documenti deve essere confrontata in una certa misura con lo stato dell'arte, e quindi essenzialmente stanno rallentando tutti i ricercatori in questo campo specifico per ricreare il proprio lavoro prima di pubblicare la propria ricerca.

Ora la mia domanda è: sarebbe consigliabile aggiungere una nota che l'implementazione del LORO algoritmo è la nostra implementazione e che li abbiamo contattati per il loro codice e hanno rifiutato?

Si chiama crisi di replicazione.Niente a che vedere con te in particolare.Tutti lo stanno affrontando
@SSimon: poiché il collega è stato in grado di codificare l'algoritmo dalla descrizione nel documento e di verificarne le prestazioni, questo * non * è un esempio della crisi della replica.(Che non sia ancora carino (TM) è un'altra domanda IMHO)
Allora perché l'ha chiesto?
@SSimon: se anche io non sono gentile (con il collega di OP): perché il collega di OP voleva saltare il lavoro per replicare il documento.Voleva solo ripetere il calcolo.Quindi, si può dire che il collega di OP avrebbe contribuito alla crisi della replica (la parte in cui le repliche non vengono eseguite) ma fortunatamente le circostanze le hanno impedite.
@cbeleitesunhappywithSX: Non penso sia una fortuna quando qualcuno è costretto a passare 2 settimane per codificare un algoritmo con cui avrebbe potuto semplicemente essere sul giornale."saltare il lavoro" non è appropriato qui.Stai dicendo che è brutto quando i documenti contengono codice o prove?Il revisore dovrebbe sempre ricreare i dettagli dei documenti invece di controllarli?
@user111388: Non dico che sia un male se un foglio contiene codice.Lo apprezzo.Ma allo stesso tempo mi rendo conto che in pratica ridurrà ulteriormente la quantità di verifica di detti documenti.Il secondo commento è ancora molto nel contesto delle crisi di replicazione: sapendo che * c'è * una crisi di replicazione, penso sia una fortuna che un documento sia stato accuratamente verificato, anche se questa non era l'intenzione originale del gruppo di OP.Uno dei motivi principali alla base della crisi della replicazione è che viene eseguita troppo poca replica.Quelle 2 settimane di lavoro devono essere adeguatamente apprezzate!Sono molto di più
... di qualcosa che avrebbe potuto essere ottenuto utilizzando il codice dell'altro gruppo.Hai ragione, però, che avere il codice disponibile non dovrebbe impedire a una persona di verificare correttamente il documento.Cioè, è ancora meglio se il codice è disponibile e si impiegano 2 settimane per verificarlo.Ma: il gruppo di OP ora ha fatto qualcosa che potremmo chiamare una verifica in cieco, cioè senza accesso al codice.La verifica con il codice disponibile sarebbe già un bel passo avanti rispetto a ciò che è usuale nel mio campo, ma non la considereremmo una verifica indipendente.
@user111388: forse per riassumere ciò che dice @ cbleites: è buono quando un documento rende disponibile il suo codice.È * anche * prezioso, in un modo molto diverso, avere re-implementazioni indipendenti di un algoritmo.
Una volta ho chiesto ad alcuni autori di un articolo il codice sorgente perché il loro articolo affermava di aver implementato una versione funzionale del loro nuovo algoritmo.Dopo un sacco di avanti e indietro hanno condiviso con riluttanza il loro codice e non ha funzionato _at all_.Il loro algoritmo era valido, però, e dopo averlo implementato da zero, il codice _my_ ha funzionato.Quindi è del tutto possibile che il loro codice abbia problemi che preferirebbero non condividere.
Qualunque cosa accada qui, metti la tua implementazione su github (o repo simile, ad esempio zenodo) con una licenza appropriata e lascia che tutti gli altri la vedano e la usino.
Se hai ricevuto il codice, dovresti verificarlo comunque, quindi non è un grosso problema.
Quando si intraprende un'attività, è spesso utile porsi la domanda: "Cosa voglio ottenere facendo questo?"In questo caso, sembra che tu sia infastidito dall'altra squadra di ricerca e vorresti infliggere loro un po 'di dolore sociale per non essere "giocatori di squadra" e vuoi usare la tua carta per raggiungere questo obiettivo.Credo che mettendoli in una luce negativa corri il rischio di farti sembrare meschino, non perché li critichi, ma perché usi la tua carta per farlo.Penso che il potenziale di autolesionismo qui sia troppo grande per intraprendere questo percorso.
Non una risposta alla tua domanda, ma dirò che ci sono ragioni al di fuori del controllo degli autori per queste cose.Lavoro nei laboratori nazionali.Spesso abbiamo sponsor governativi che * vogliono * che pubblichiamo documenti (condividere il lavoro è buono), ma abbiamo un processo di revisione pluriennale per qualsiasi codice che rilasciamo al pubblico (le politiche del governo non sono sempre precise).È strano, ma facciamo del nostro meglio per caratterizzare adeguatamente i nostri algoritmi nei nostri documenti!
Diciassette risposte:
#1
+123
lighthouse keeper
2020-04-27 12:52:16 UTC
view on stackexchange narkive permalink

sarebbe consigliabile aggiungere una nota che l'implementazione del LORO algoritmo è la nostra implementazione

Assolutamente sì. Ciò fornisce un contesto importante per la tua sperimentazione e, come tale, è un'informazione preziosa per il lettore.

Ancora meglio, potresti rendere la tua implementazione del loro algoritmo pubblicamente disponibile, in modo che i futuri gruppi di autori non incontrino lo stesso situazione come hai fatto tu (e citerò il tuo articolo).

e che abbiamo contattato loro per il loro codice e hanno rifiutato?

Questo è il domanda più delicata da porre. Sarebbe sicuramente legittimo farlo, poiché rappresenterebbe la situazione in modo accurato. Ma una simile affermazione ha un'implicazione sociale, ovvero che gli autori appaiono in una luce leggermente negativa (forse giustamente). Procedi con cautela.

Forse si potrebbe esprimerlo con voce passiva per alleviare il tono accusatorio: "Il codice non è stato ottenuto".
@henning--reinstateMonica ed è così che le cose diventano vaghe e inutili.Non è necessario dire tutto, ma quando vuoi dirlo, dì com'è in modo educato.Posso anche vederlo creare dubbi nel lettore ("non potrebbero semplicemente inviare un'e-mail? Quanto è difficile") simile a come assegnerò la priorità ai documenti senza errori di battitura perché a prima vista sembrano avere maggiori possibilità di non esseresbagliato o banale.
L'ho già visto prima, specialmente in argomenti caldi.Il documento diceva qualcosa del genere che usano la propria implementazione per fornire un punto di riferimento per il metodo X, poiché il codice non era disponibile pubblicamente o su richiesta.Penso che qualcosa sulla falsariga di "Il codice non era disponibile" non sia affatto vago.Si sono anche assicurati di indicare qualsiasi implementazione o dettaglio dei parametri che dovevano impostare e se è stato dato un valore per quei parametri nella pubblicazione originale o come hanno determinato i valori dei parametri da utilizzare.
Rendi pubblicamente disponibile la tua implementazione del loro algoritmo.Pertanto, l'altro gruppo può verificare la tua implementazione rispetto al proprio codice.Se hai commesso un errore, il che rende il loro algoritmo pessimo (le cose possono succedere), possono avvisarti ed evidenziare il problema.Il motivo per cui l'altro gruppo non rende disponibile il proprio codice può essere molto, afferma Hanlons Razer.I lettori del documento possono trarre le proprie conclusioni dalla tua re-implementazione dell'algoritmo dell'altro gruppo.
@Luc La voce passiva viene spesso utilizzata per evitare accuse.Si tratta di omettere un fatto, ma questo fatto non è probabilmente rilevante mentre il fatto che il codice non possa essere ottenuto lo è.Ci sono molte, molte ragioni per ottenere il codice potrebbe non essere semplice come inviare un'e-mail ed evidenziare che si trattava di un netto rifiuto probabilmente non aiuta nessuno mentre getta gli altri ricercatori in una luce un po 'negativa.
Penso che tu possa essere chiaro senza essere troppo puntuale."Il codice originale non è ancora disponibile", "Non siamo stati in grado di ottenere il codice originale.".Particolarmente utile se lasci aperta la porta alla successiva pubblicazione del codice, presumi la buona fede, ecc.
Ditelo così com'è: "Il codice per il foglio X non è disponibile e non è stato fornito dagli autori su richiesta".Questo non è accusatorio, è un'informazione preziosa per il lettore (che potrebbe anche essere interessato a ottenere il codice) e non suppone nulla sul motivo per cui gli autori hanno rifiutato, se avessero una buona ragione o meno per rifiutare, ecc. Se la tua comunitàpensa che sia inaccettabile scrivere questo, sono loro il problema.
@Luc Il significato rilevante è "i bug sono nostri".La parte omessa è "L'autore si è rifiutato di condividere il proprio codice".Puoi discutere se dovrebbe essere menzionato che non hanno condiviso il codice, ma dovresti almeno affermare che hai usato il tuo codice, specialmente quando potrebbe contenere bug (o correzioni di bug) che il codice originale non aveva.
#2
+83
Graham
2020-04-27 17:23:44 UTC
view on stackexchange narkive permalink

In qualità di ingegnere del software, darò un'opinione dissenziente.

Il codice sorgente non è un algoritmo. È una versione "specchio polveroso" di qualcosa che si spera sia l'algoritmo che intendevano e che si spera funzioni correttamente. Poiché il software è software e i programmatori sono umani, ci sono molti modi in cui quelle parti "si spera" potrebbero non essere come previsto. È anche possibile (anche se improbabile) che il miglioramento percepito possa derivare da una caratteristica non intenzionale dell'implementazione e / o che il miglioramento percepito possa essere il risultato di un compromesso di implementazione che ha effetti deleteri altrove.

In termini scientifici generali, l'algoritmo è l'ipotesi che stai testando; e il codice sorgente è la vetreria di laboratorio, i circuiti stampati, l'interferometro o qualsiasi altra attrezzatura che useresti per testare l'ipotesi. Un principio generale della scienza è che la riproduzione dei risultati deve essere indipendente . Ciò significa che non basta fare in modo che una seconda persona esegua alla cieca gli stessi test sulla stessa vetreria con le stesse bottiglie di reagenti, ma un team completamente separato riproduce quei risultati dai primi principi per confermarli. Il test indipendente di un'ipotesi è ciò che lo sposta da una semplice ipotesi a una teoria solida.

Implementando l'algoritmo in modo indipendente, hai svolto un ruolo scientifico vitale nel riprodurre i risultati originali. Se gli autori originali ti avessero semplicemente fornito il codice sorgente, non ci sarebbe stata la riproduzione e il test dell'algoritmo. Se ti avessero fornito il codice sorgente, potresti anche considerare la fotocopia del giornale come "la riproduzione dei loro risultati". :)

Ti piacerebbe portare avanti lo stato dell'arte, ed è fantastico: dimostra che sei ambizioso nel tuo campo. Ma verificare indipendentemente un'ipotesi per poterla chiamare una "teoria" non è una perdita di tempo, e rallentare per mettere in atto queste basi non è qualcosa che dovrebbe lasciarti di cattivo gusto se la "scienza" fa parte di " informatica "è reale. Altrimenti non stai facendo scienza, stai facendo l'hacking; che è prezioso a modo suo, ma non è scienza.

Penso che sia meglio condividere il codice sorgente per aiutare in una comunità di ricerca costruttiva, ma sono d'accordo con te.Per ogni scritto ben scritto deve essere possibile derivare un'implementazione che ottenga gli stessi risultati.Se questo è concepibile, il codice sorgente non è obbligatorio, ma un'aggiunta simpatica e utile.
In almeno alcune sotto-comunità di CS, dove gli algoritmi vengono confrontati in pratica su alcuni set di benchmark rilevanti, è ben compreso che i risultati dei documenti che descrivono nuovi algoritmi non sono effettivamente riproducibili ogni volta che vengono riportati i tempi di calcolo (che è spesso il principalediscussione).Quindi, ci si concentra sull'assicurare la ripetibilità degli esperimenti con valutazioni di ripetibilità di articoli da parte di comitati indipendenti utilizzando le implementazioni fornite dall'autore.Quindi, mentre la riproducibilità sarebbe ottima da avere, implementazioni costruite da studenti laureati realizzate con centinaia di ...
... una decisione di progettazione troppo precisa per metterla sul foglio probabilmente non sarà mai abbastanza comparabile.Sebbene da un punto di vista scientifico questa non sia ovviamente una buona situazione, tali comunità continuano il loro lavoro a causa della mancanza di alternative.
Retroattivamente, dopo che la riproduzione è risultata positiva in questo caso (uff!), È bello averla.Il problema più grande è il caso in cui i risultati non possono essere riprodotti e senza l'implementazione originale è difficile o addirittura impossibile definire cosa è successo.
@lighthousekeeper Non sono in disaccordo quando ciò accade.(Questo è "quando", non "se" - siamo tutti fallibili!) Ma a meno che non inizi la riproduzione dai principi primi, rischi che i tuoi risultati siano influenzati da ciò che ottieni dall'altra squadra.
Offtopico, ma: quale potrebbe essere il valore dei * loro * documenti se non hanno prove?Il codice sorgente funzionante è anche una prova della correttezza del loro algoritmo.
Il codice sorgente è solitamente l'unica descrizione completa dell'algoritmo.I documenti forniscono una struttura dell'algoritmo e discutono alcuni dettagli chiave, ma raramente forniscono dettagli sufficienti per la piena riproducibilità.Dopo tutto, chi vuole leggere decine di pagine di prosa, quando le stesse informazioni sono disponibili in una forma più leggibile nel codice sorgente.Inoltre, l'algoritmo pubblicato potrebbe non essere nemmeno quello da implementare.È abbastanza comune avere un set di dettagli che migliora l'algoritmo nell'analisi teorica e un altro set che lo rende migliore nel mondo reale.
@peterh-ReinstateMonica No, i * risultati * del codice sorgente sono la prova che il tuo algoritmo * potrebbe * essere corretto."Prova" è la parola sbagliata.Per quanto riguarda il valore delle loro carte, Alan Turing non ha mai avuto una Universal Turing Machine su cui eseguire il suo lavoro, e Rudolf Kalman non aveva un computer per eseguire i filtri di Kalman in tempo reale.Ad un livello più elementare, puoi dimostrare perfettamente gli algoritmi per elenchi collegati o tipi di bolle su carta o su una lavagna: so di averlo fatto per le interviste.Ecco perché questa è informatica * scienza * e non solo hacking.
@JouniSirén Chiunque pensi che il codice sorgente sia una descrizione completa di qualsiasi cosa non dovrebbe descriversi come uno scienziato o un programmatore, perché dimostra una mancanza di competenza sia nella scienza che nella codifica.Il fatto che tu menzioni le differenze di implementazione dovrebbe essere un indicatore molto chiaro del motivo per cui il documento deve esistere e del motivo per cui l'algoritmo deve essere reso disponibile per essere riprodotto, perché quei problemi di implementazione sono ciò che ti ucciderà nei casi d'angolo.(Nel controllo in tempo reale, ciò potrebbe significare letteralmente uccidere, a proposito.)
Se il programma fornisce soluzioni corrette per nuovi input arbitrari, è molto significativo.Quindi non sono d'accordo.
@einpoklum Il punto è che * l'algoritmo * fornisce soluzioni corrette.Il * programma * è (si spera!) Un'implementazione di quell'algoritmo.Se il programma sta facendo qualcosa che il documento non ha descritto, allora l'autore sta (quasi per definizione) o lavora in malafede quando si tratta di condividere con la comunità o non ha scritto correttamente il suo articolo, e i risultati e il documento dovrebbero essererifiutato per la pubblicazione.
@Graham Non sono assolutamente d'accordo con questa risposta.Un tentativo di * replicare * i risultati di qualcun altro * deve * mettere in dubbio i loro risultati se fallisce.Questo aspetto vitale della replica è gravemente danneggiato dal fatto che il codice utilizzato per produrre i risultati sia tenuto segreto e degrada seriamente il valore di una replica fallita.Peggio ancora, scoraggia i tentativi di replica aumentando lo sforzo richiesto per replicare inutilmente i risultati.Ciò rende i risultati originali molto meno utili e affidabili perché sono deliberatamente resi più difficili da falsificare.
@DavidSchwartz Nel frattempo, sul pianeta Terra, l'informatica riguarda l'algoritmo, non il codice.La revisione tra pari, sebbene fallibile, è progettata per rilevare gli errori.Non ci si lamenta che gli scopritori del bosone di Higgs stiano danneggiando i tentativi di replicare i risultati perché non hanno fornito grandi collisori di adroni a coloro che lo desiderano.Un'implementazione che è di pessima qualità ma che dimostra validamente che un nuovo concetto è ancora una buona scienza (informatica).
Ci sono molte ragioni legittime per cui il codice sorgente potrebbe non essere disponibile: il programmatore potrebbe essersi laureato e non è disponibile per ripulire il codice per la distribuzione, il codice potrebbe essere andato perso, la fonte di finanziamento del ricercatore potrebbe limitare la pubblicazione del codice, ilgli autori potrebbero non avere il tempo di supportare gli altri nel tentativo di utilizzare il loro codice, o potrebbero semplicemente avere una visione del mondo diversa secondo cui non sono obbligati a fornire codice per aiutare altri ricercatori a competere con loro, ecc.
@Graham Il codice sorgente è l'unica descrizione completa dell'algoritmo utilizzato per ottenere i risultati.L'algoritmo pubblicato nel documento è correlato, ma spesso è un algoritmo diverso che esiste per uno scopo diverso.Ad esempio, lo scopo dell'algoritmo pubblicato potrebbe essere quello di dimostrare i limiti asintotici.In questi casi, le modifiche che rendono l'algoritmo 1000 volte più lento ma il log log n volte più veloce sono certamente un buon compromesso.
@JouniSiren Temo che non ci sia alcuna parte di ciò che è corretto.Se i risultati sono stati ottenuti con un algoritmo diverso, allora l'articolo come minimo assoluto *** deve spiegare in dettaglio le differenze tra l'algoritmo pubblicato e l'implementazione pratica, e i compromessi inerenti a tali differenze.Questi compromessi sono una parte fondamentale di per sé.Non discuto che sia utile avere il codice sorgente, ma se la carta ha un valore, allora il codice sorgente può essere scritto dalla carta.Se non può, l'autore dell'articolo è un ciarlatano incompetente.
@Graham Hai aspettative irrealistiche.Lo scopo di un articolo è descrivere i risultati chiave e le idee chiave dietro di essi al pubblico di destinazione della rivista / conferenza.C'è spesso un limite di pagine rigoroso per mantenere leggibili i documenti evitando dettagli non necessari.Potrebbero esserci supplementi o risorse esterne che descrivono i dettagli.Per gli algoritmi, il codice sorgente è il formato preferito, perché è più breve e più leggibile e contiene meno errori rispetto a una descrizione in prosa degli stessi dettagli.
@Eric se si potesse includere una copia del grande collisore di adroni in una rapida e-mail, sarebbe educato offrirsi di farlo.
@Eric: il codice avrebbe dovuto essere reso disponibile.Non ha senso pulire il codice per la distribuzione, non farlo in modo da avere tempo per perderlo in seguito, nessun obbligo implicito di fornire aiuto.Per quanto riguarda le fonti di finanziamento, non sono a conoscenza di alcuna fonte che limiti la distribuzione del codice.Basta scaricare il dannato codice su una piattaforma di hosting pubblica e collegarlo dalla piattaforma.Non farlo è semplicemente negligenza.
@a3nm Sei il benvenuto alle tue opinioni, ma ti preghiamo di riconoscere che è quello che sono.Non esiste alcun requisito per pubblicare il codice sorgente.Ho sicuramente riscontrato situazioni in cui i risultati sono stati impediti dal rilascio pubblico (e ho pubblicato una domanda qui su di essi).
#3
+11
Wolfgang Bangerth
2020-04-27 07:49:06 UTC
view on stackexchange narkive permalink

Puoi, e forse dovresti, per chiarire la tua posizione che pensi che i codici accademici dovrebbero essere condivisi se ciò è fattibile. Molti scienziati concorderanno sul fatto che la condivisione dei codici porta a una scienza migliore perché rende più facile replicare la ricerca e anche trovare errori.

Allo stesso tempo, non tutti si sentono così e ti capita di aver trovato qualcuno di quella opinione. Descriverli pubblicamente come "arretrati" e "non disposti a rendere più facile per gli altri replicare le loro scoperte" può essere eticamente la cosa giusta da fare se credi nel software aperto, ma potrebbe anche sfregarli nel modo sbagliato e creare "un cattivo gusto "in bocca per usare la tua frase.

Quindi la domanda è: quanto vuoi insistere per principio e quanto vuoi potenzialmente alienare uno dei tuoi colleghi? Questa domanda probabilmente dipende da dove sei tu e dove ti trovi nelle tue rispettive carriere.

Sono d'accordo.Penso che in molti ambienti sia anche possibile che il codice non sia stato condiviso a causa di regolamenti interni.Ad esempio, gli autori potrebbero lavorare in un'azienda che consente loro di pubblicare progressi generali nella conoscenza (ad esempio un algoritmo migliorato) ma controlla più rigorosamente il codice sorgente (oi set di dati utilizzati).La pubblicazione non è puramente accademica.Solo il 6% dei relatori delle prime due conferenze AI condivide il codice.https://www.sciencemag.org/news/2018/02/missing-data-hinder-replication-artificial-intelligence-studies
@TomAnderson: Sì, ottimo punto.
#4
+6
cbeleites unhappy with SX
2020-04-27 15:49:11 UTC
view on stackexchange narkive permalink

Il mio consiglio è di ottenere il massimo dalla situazione così com'è: hai eseguito una replica adeguata dalla descrizione nel documento (invece di "solo" eseguire il loro codice) e verificato le loro affermazioni. Pubblica questo come tale: questo è un vero lavoro scientifico.

Nel tuo interesse, non vorrei menzionare che non hai eseguito questa replica interamente di tua spontanea volontà.


TLDR:

Sono pienamente d'accordo che non è bello (TM) non condividere il codice (vedi anche sotto).

Secondo quanto descrivi, tuttavia, questa indisponibilità del codice ha portato a ulteriori progressi scientifici rispetto a quelli che avresti avuto il codice a tua disposizione:
hai verificato le loro affermazioni implementando da zero l'algoritmo descritto in il loro documento senza alcun accesso al loro codice. È scientificamente rilevante descriverlo nel tuo articolo poiché significa che fornisci il livello di riproduzione successivo più alto rispetto a "solo" eseguire il loro codice sui tuoi computer: hai anche verificato che la descrizione nel documento è sufficiente per riprodurre le affermazioni.

IMHO questo è particolarmente importante poiché abbiamo una crisi di riproducibilità in molti campi.

La condivisione del codice aiuta con quella che sarebbe chiamata ripetibilità nel mio campo (chimica analitica), ma la riproduzione o la replica di uno studio / articolo è più di questo.

Sì, la condivisione del codice è utile poiché consente di risparmiare un sacco di lavoro per coloro che non vogliono replicare, è spesso il modo più semplice per descrivere in modo univoco quali calcoli sono stati eseguiti ed è anche molto utile nel rintracciare idee sbagliate da parte del lettore. Tuttavia, se la condivisione del codice porta tutti (o troppi) a saltare lo sforzo messo in una corretta riproduzione / replica, potrebbe essere controproducente. la crisi della riproducibilità.

Quindi, sono un po 'combattuto:

  • Il loro non condividere il codice non è bello.
  • Dire che hai eseguito l'implementazione da zero solo perché il codice non era disponibile significa anche ammettere da parte tua che salteresti una verifica più approfondita di quel documento se avessi una scelta. Inoltre non è carino.

La situazione ideale sarebbe stata se il gruppo di OP avesse effettuato una verifica completa dell'articolo e avesse avuto accesso al codice degli autori dell'articolo.

Personalmente, non alluderei a nessuna ragione non scientifica per affrontare la riproduzione di quel documento.

Qui uso "non carino" per indicare un comportamento meno che ideale (per il progresso scientifico) ma è anche chiaramente all'interno della gamma consentita di comportamento. Per essere chiari, non voglio costringere nessuno a riprodurre gli studi di altri gruppi. Allo stesso tempo, se tutti i gruppi negano di fare questo tipo di "compiti a casa", aumenta il rischio di crisi di replicazione.


Ci sono livelli di non condivisione che considero definitivamente problematici dal punto di vista scientifico di vista:

  • I tuoi sforzi adeguati non possono riprodurre le affermazioni e gli autori si rifiutano di guidarti (sia condividendo il codice o guardando il tuo codice e dicendoti cosa deve essere fatto diversamente)
  • Affermano nel documento che condivideranno il codice, o le linee guida della rivista stabiliscono che lo condivideranno ma rifiutano.

Finora, la domanda no indicare uno qualsiasi di questi punti.


Per entrare in sintonia con la risposta di Anonymous Physicist: ho lavorato in un istituto di ricerca dove la linea molto ufficiale era che né il codice né i dati sono pubblicati con il documento ("sono disponibili su ragionevole richiesta" era la formulazione ufficiale) - che mi sarebbe piaciuto non solo mostrare il mio codice di ricerca, ma metterlo sotto una licenza aperta non aveva alcuna importanza.
Quindi, se fossi stato l'autore di detto articolo, avresti ottenuto una cortese risposta che non posso darti il ​​codice senza il permesso amministrativo ufficiale, e potresti contattare il direttore a riguardo. Tuttavia, posso facilmente immaginare istituti che specificano che chi viene contattato per la condivisione del codice deve rispondere in senso negativo senza creare ulteriore lavoro al vertice aziendale ...

Da questa esperienza: se critichi gli autori per non aver inviato il codice, assicurati di attribuire la colpa alle persone corrette.

"Allo stesso tempo, se tutti i gruppi negano di fare questo tipo di" compiti a casa ", aumenta il rischio di crisi di replicazione".Una differenza importante nell'informatica, rispetto ad altre discipline, è che lo sforzo per la replica è minimo se gli autori originali forniscono il loro codice e dati (con documentazione adeguata).In buone conferenze e riviste, sta diventando una pratica sempre più comune che gli autori siano tenuti a farlo.
@lighthousekeeper: Ma questa non è una replica completa: lo sforzo è minimo se e e solo se usano quel codice senza controllare se il foglio contiene una descrizione sufficiente di quel codice.Sì, qui possono esserci differenze specifiche del campo (il mio campo, la chimica analitica guarda alla ripetibilità, riproducibilità e replicabilità a livelli di crescente difficoltà e indipendenza. Per noi, è molto importante non chiamare una replica ciò che è solo una ripetizione).Sono pienamente d'accordo con te a) che se gli autori fossero tenuti a condividere, sarebbe una grave violazione se non lo fanno eb) che uno dovrebbe funzionare ...
... verso la richiesta di questo ancora di più.Ma a meno che la pubblicazione non fosse soggetta a tali requisiti, non è carino, ma non è una cattiva condotta accademica e OP non può criticare questo se non come opinione politica (che è bello e lodevole, ma non contenuto scientifico del loro articolo).
#5
+6
DCTLib
2020-04-27 19:33:46 UTC
view on stackexchange narkive permalink

Senza sapere perché gli autori hanno rifiutato, è un po 'difficile dire se gli altri autori fossero "gentili" o "cattivi".

Ci sono alcune insidie ​​legali e istituzionali quando si tratta di condividere codice. Ad esempio, l'università può avere il diritto di verificare se i risultati concreti della ricerca contengono materiale brevettabile. Agli autori potrebbe essere vietato condividere il loro codice se questo controllo è in corso.

Quindi suggerisco di evitare di mettere una luce negativa su questa interazione, se possibile. Tuttavia, è importante che il lettore sappia che hai scritto la tua implementazione. Ed è importante anche per il revisore, poiché il revisore potrebbe pensare che l'altro approccio sia inutilmente scadente perché non è stato implementato bene.

Molti articoli hanno un'appendice che non verrà pubblicata con il resto della carta. Potresti aggiungere una nota per i revisori che la condivisione del codice con te è stata rifiutata per motivi sconosciuti, quindi dovevi implementare la tua versione. Se vuoi menzionare nella parte principale del documento perché non hai utilizzato l'implementazione originale dell'altro approccio, potresti menzionare che non era disponibile, quindi hai implementato la tua versione e ti sei assicurato che hai prestato la stessa attenzione in entrambe le implementazioni per non perdere importanti ottimizzazioni.

#6
+4
mjt
2020-04-27 16:08:16 UTC
view on stackexchange narkive permalink

Non vedo perché non condividano il loro codice, specialmente se rivendicano uno stato dell'arte su un set di dati molto importante.

Ipoteticamente , si può creare software che non può essere distribuito legalmente in base alla legge sul copyright.

Se possiedo un libro posso scrivere note su di esso e cancellare le sezioni quanto voglio, ma posso " t distribuire copie del mio libro modificato. Allo stesso modo, se voglio estendere una libreria Matlab protetta da copyright in un modo che gli autori non avevano previsto, posso copiare e incollare da essa e modificarla quanto mi piace per il mio uso personale, ma non posso distribuire il risultante lavoro derivato .

Se vuoi assumere la buona fede, potresti presumere una ragione benigna simile da parte loro.

Ovviamente, un cinico lo farebbe diciamo che gli autori sono ricompensati per aver strappato più documenti possibili da un lavoro, e se ci sono ovvi documenti successivi (come ovvie modifiche o test su altri set di dati) non rilasciare il codice finché non hai scritto quei documenti il comportamento premiato dai loro paymaster.

È abbastanza facile creare un software che non può essere ridistribuito legalmente: collegare tra loro librerie open source che hanno licenze incompatibili.Vedi https://opensource.org/licenses;è ampiamente noto che GPLv2 è incompatibile con GPLv3
Questa risposta affronta giustamente una domanda minore contenuta nel PO.Tuttavia, la domanda principale dell'ultima riga è "sarebbe consigliabile aggiungere una nota che l'implementazione del LORO algoritmo è la nostra implementazione, e che abbiamo contattato loro per il loro codice e hanno rifiutato?".Sarebbe utile se potessi affrontare anche quest'ultimo punto.
#7
+4
nabla
2020-04-27 16:53:57 UTC
view on stackexchange narkive permalink

Con le informazioni fornite, non è possibile valutare la motivazione degli autori originali. In qualità di frequente editore di codice scientifico open source, posso pensare a diversi.

  1. Non volevano che nessuno replicasse i loro risultati usando il loro codice, poiché volevano fare più pubblicazioni da esso (certamente non carino, ma visto prima).
  2. Il loro codice non era in grado di essere utilizzato da qualcun altro (PhD-ware) e non hanno la forza lavoro per ripulirlo.
  3. Fanno uso di librerie proprietarie o hanno problemi di licenza interna, non consentendo loro di condividere il codice.
  4. Semplicemente non vogliono essere disturbati dagli inevitabili problemi di supporto tecnico, che viene fornito con la fornitura di un codice ad altre persone.

E l'elenco potrebbe essere continuato.

Puoi agire solo con le informazioni a portata di mano, e cioè, che al momento il codice non esiste in forma aperta. Fortunatamente, sei stato in grado di riprodurre i risultati e ora sei libero di pubblicare la tua implementazione insieme al tuo articolo, invitando gli utenti a citare il tuo articolo, oltre a quello originale. Dopotutto, hai realizzato un lavoro scientifico significativo, che ora dovrebbe essere accreditato.

Non devi essere irriverente nel tuo articolo. Scrivi quello che hai fatto e non quello che gli altri non hanno fatto. Si può notare che:

L'implementazione delineata in questo articolo riproduce la performance dell'autore A, citato nel rif. [UN]. La presente implementazione può essere ottenuta da XX, consentendo un'ulteriore convalida indipendente.

#8
+2
Anonymous Physicist
2020-04-27 10:30:19 UTC
view on stackexchange narkive permalink

A meno che l'argomento della tua ricerca non sia il software open source, il tuo articolo di giornale non è il posto giusto per criticare i tuoi colleghi per non aver rilasciato il loro codice sorgente. Gli articoli su riviste e conferenze dovrebbero riguardare la conoscenza che hai creato, non la tua opinione sui tuoi colleghi.

Prima di criticare i tuoi colleghi in qualsiasi luogo, dovresti considerare se rilasciare la fonte è un'opzione ragionevole per loro. Potrebbero esserci restrizioni legali di cui non sei a conoscenza o un processo amministrativo molto scomodo.

La revisione tra pari è un ottimo momento per incoraggiare la trasparenza.

Una dichiarazione del tipo "Nonostante la nostra richiesta, l'implementazione originale dell'algoritmo non ci è stata resa disponibile".non è un'opinione, ma un fatto, e potrebbe essere rilevante per spiegare perché è stato necessario reimplementare l'algoritmo (possibilmente con risultati diversi).Le persone potrebbero comunque essere scontente.
@lighthousekeeper Il tuo fatto è ancora una critica e chiaramente implica un'opinione.Suggerirei "Abbiamo reimplementato l'algoritmo" come formulazione più appropriata.La richiesta è irrilevante.
"Abbiamo reimplementato l'algoritmo" potrebbe sollevare la questione del perché è stata eseguita una reimplementazione.OP sembra trovarsi nella comoda situazione in cui entrambe le implementazioni producono gli stessi risultati.Se i risultati sarebbero stati diversi, sarebbe necessario giustificare ciò che si è fatto per capire la causa delle differenze.Se l'implementazione originale non fosse disponibile, sarebbe necessario affermare esattamente questo.La richiesta sarebbe pertinente, perché significa più iniziativa da parte degli autori che dire semplicemente "non era disponibile".
Personalmente, per quanto mi riguarda, se il tuo codice non può essere rilasciato per scopi legali, il tuo articolo non può essere pubblicato.Penso che una dichiarazione passiva che afferma semplicemente i fatti "Abbiamo reimplementato l'algoritmo poiché non è stato possibile ottenere il codice originale", come suggerito da @henning sopra è la strada da percorrere.
@lighthousekeeper: è un fatto, ma non un fatto scientifico.La mia opinione politica è che il codice prodotto con denaro pubblico dovrebbe essere disponibile al pubblico.Ma a meno che non ci sia una ragione * dura * per cui avrebbero dovuto mostrare il loro codice (ad esempio le linee guida del giornale che lo dicono, o anche il documento che lo dice) mi asterrei dal giudicarli contro i miei standard più elevati.
@cbeleites Parte della metodologia scientifica è spiegare perché hai fatto le cose che hai fatto.In questa luce, il punto non è giudicare, ma spiegare perché era necessaria una reimplementazione e, in caso di riproduzione fallita, spiegare perché non è stato possibile ottenere ulteriori approfondimenti sui motivi del fallimento della riproduzione.
@lighthousekeeper Non è necessario spiegare perché hai fatto qualcosa se non è rilevante per le conclusioni.Il che in questo caso è altamente probabile.La domanda non dice nulla sulla riproduzione.
@AnonymousPhysicist Allora potrebbe essere una differenza specifica del campo.In informatica, la logica è una parte importante della scrittura scientifica.OP afferma di aver "verificato la prestazione dichiarata".Apparentemente hanno escogitato un algoritmo diverso che produce prestazioni migliori rispetto a quello reimplementato, quindi è fondamentale che le prestazioni dell'algoritmo originale siano state riportate correttamente.
@lighthousekeeper Quello che stai suggerendo non è una motivazione per le conclusioni.Mi stanco di questa discussione.
In informatica, dovresti spiegare la logica della tua metodologia.
@lighthousekeeper: potremmo leggere la situazione descritta in modo diverso (e solo OP potrà dire chi l'ha letta correttamente): capisco dalla domanda che il gruppo di OP ha un nuovo, migliore algoritmo.Meglio di quella carta che costituisce lo stato dell'arte.Per dimostrarlo, si è scoperto che non solo dovevano ripetere, ma anche replicare l'algoritmo di quel documento.Cosa che hanno fatto con successo.Cioèabbiamo 2 progressi scientifici 1. il loro nuovo algoritmo e 2. una verifica dell'articolo precedente.
@cbeleites L'angolo di verifica è un bel modo per far girare positivamente la necessità di una reimplementazione (+1 per la tua risposta).Ma sfortunatamente, in molti sottocampi di CS, una replica non sarà considerata di per sé un grande progresso.
@lighthousekeeper: :-) Allora speriamo che il nuovo documento di OP con una sezione "verifica dello stato dell'arte" aiuti a far percepire la verifica tanto importante quanto è.(C'è un lato di me che pensa che sia un cattivo stato se la verifica è un avanzamento piuttosto che un lavoro ingrato che non dovrebbe essere saltato) (FYI, ho anche votato positivamente la tua risposta)
#9
+1
Basile Starynkevitch
2020-04-29 14:23:18 UTC
view on stackexchange narkive permalink

È opportuno menzionare che gli autori si sono rifiutati di fornire esempi di codice quando richiesto?

Lavoro in un sottocampo dell'informatica. C'è stato un documento recente (2020) pubblicato in una conferenza rispettabile che affermava di ottenere prestazioni all'avanguardia su un set di dati specifico.

Ci sono diversi problemi.

FWIW, sono un ingegnere di ricerca semi-accademico in Francia, lavoro presso CEA LIST in un laboratorio di sicurezza informatica, dove sviluppo Bismon (una GPLv3 + software finanziato da due progetti H2020: CHARIOT e DECODER e descritto in questa bozza di rapporto)

  • come è stato finanziato il lavoro descritto nel documento? se l'agenzia di finanziamento è militare (ad es. DARPA) i contratti di finanziamento potrebbero richiedere pubblicazioni accademiche ma non consentire alcuna pubblicazione del codice o del set di dati. Anche i finanziamenti di H2020 possono vietare la pubblicazione di dati o semplicemente ottenere il permesso di pubblicare i dati o il codice può richiedere molto lavoro burocratico che di solito è noioso per qualsiasi accademico.

  • chi possiede quel set di dati e come è stato finanziato? Se il set di dati fosse difficile da raccogliere (pensa ai dati biologici, ad esempio relativi a Covid19 o ai dati relativi all'industria nucleare) potresti non essere in grado di accedervi

  • ci sono problemi di privacy o problemi di dati personali? Normative come il GDPR sono quindi altamente pertinente

  • quale sistema legale e diritto d'autore si applicano sia ai dati che ai campioni di codice? Leggi anche il testo di Jean Tirole lavoro, in particolare il suo articolo con Josh Lerner su semplice economia dell'open source . Si noti che anche i libri e gli articoli di Shoshana Zuboff (ad esempio Big Other: Surveillance Capitalism and the Prospects of an Information Civilization ) sono rilevanti.

  • il set di dati o il codice potrebbe essere una risorsa per future borse di ricerca.

Nota che il mondo accademico è un piccolo mondo (leggi anche il numero di Ershov e, cosa più importante, il numero di Erdös). Menzionare in un documento scritto formale che alcuni autori si sono rifiutati di fornire esempi di codice potrebbe ritorcersi contro e potrebbe avere un impatto negativo sulla tua carriera accademica nei prossimi anni. La pratica comune è duplice: menzionare nelle sezioni di riconoscimento le persone e la loro istituzione che ti hanno fornito codice e dati.

Se la pubblicazione del codice o del set di dati non era stata precedentemente ed esplicitamente menzionata nelle borse di ricerca che finanziano il lavoro , è probabile che potresti non ottenerlo facilmente. Ho preso l'abitudine di menzionare (almeno nelle note a piè di pagina) queste cose nella maggior parte delle proposte di assegni di ricerca a cui ho contribuito per iscritto.

Per esperienza personale, ottenendo il permesso, all'interno del contesto professionale, di pubblicare del codice come aperto source o un set di dati come open data è molto noioso e stressante (e quasi impossibile dopo l'inizio del lavoro). Dovresti menzionare queste cose per iscritto nelle proposte di ricerca e nelle sovvenzioni.

non esiste un pranzo gratis

Vedi anche questi diapositive e il progetto RefPerSys. Finora, il finanziamento è il problema principale.

In Europa, ITEA3 e BDVA e HorizonEurope potrebbero fornire interessanti contatti. Dovresti trovare l'equivalente al tuo posto.

Numero di Ershov?O il numero Erdos?
Si spera che gli autori scrivano nel documento "questo set di dati non è disponibile a causa dei finanziamenti militari" ..
No, scrivere che richiede l'approvazione dei militari e ottenere tale approvazione richiede giorni di lavoro a tempo pieno
E allora?Quindi gli autori dovrebbero considerare parte del loro lavoro migliorare quel documento ottenendo l'approvazione per questa frase.Qual è lo scopo di questa regola (non è consentito scrivere su un foglio per quali motivi i dati non sono disponibili) comunque?
#10
  0
pjamshidi
2020-04-29 23:49:54 UTC
view on stackexchange narkive permalink

Sarebbe molto utile per la comunità se chiarissi di aver implementato la tua versione dell'algoritmo e fornissi i dettagli dei parametri (se presenti) nel materiale supplementare o nella tua impostazione sperimentale. Probabilmente non hai bisogno di approfondire il motivo per cui hai implementato altri algoritmi, i lettori possono indovinare cosa è successo! Sarebbe anche molto utile per la comunità se tu potessi anche pubblicare la tua implementazione in modo che altri possano risparmiare tempo per il loro confronto, e ovviamente il tuo articolo diventa più visibile come risultato. So che questa è una vera lotta per i ricercatori per implementare il lavoro di altri e le conferenze (e i revisori) stanno diventando più vigili per assicurarsi che gli autori forniscano non solo il codice ma anche qualsiasi altra informazione come dati e parametri per garantire la replicabilità del lavoro . Si spera, un giorno, di raggiungere un punto in cui le nostre pubblicazioni servono come giustificazione per il risultato chiave del nostro lavoro, che è il codice che scriviamo.

#11
  0
shmuel
2020-04-29 22:01:25 UTC
view on stackexchange narkive permalink

Riconosci la fonte dell'algoritmo, con gratitudine, afferma che il codice non è basato sul codice precedente e non lamentarti del fatto che il codice precedente non era disponibile. Come altri hanno sottolineato, potrebbero non avere l'autorità legale per darti il ​​codice originale, e in ogni caso il nuovo codice serve come conferma indipendente dell'algoritmo.

#12
  0
XavierStuvw
2020-04-27 18:56:37 UTC
view on stackexchange narkive permalink

Apprezzo il cattivo gusto che hai in bocca, ma per favore mettiti nei panni di un lettore interessato alla ricerca come risultato distillato di una metodologia al netto di imbarazzi e incidenti .

In una nota che l'implementazione del loro algoritmo è la tua implementazione

Mi aspetto di sì. Dovresti specificare in che misura il tuo lavoro è originale e in che modo differisce / attinge da qualsiasi cosa tu sappia. Si tratta di rendere giustizia al lavoro svolto da qualsiasi altro studioso, per quanto antipatico possa essere, a ciascuno il suo.

Inoltre, spostando l'attenzione sull'argomento, può essere utile tenere a mente le (tentativi di tracciare) distinzioni tra

  • replica

come discusso in https: / /plato.stanford.edu/entries/scientific-reproducibility/#ReplRepeReprScieResu prendendo in prestito dalle riflessioni nelle scienze sociali.

In una nota che hai contattato per il loro codice e hanno rifiutato

Qui è il momento di rendere giustizia al proprio impegno e alla propria situazione lavorativa. Semmai, non vorrei affermare altro che qualcosa come

Quel codice sorgente non è disponibile [ a noi] (quel signore, comunicazione personale)

Niente aggettivi, niente avverbi in ogni caso. Nessuna attribuzione di colpa, solo un evento, documentabile se mai necessario. Se il codice finisce per essere disponibile in un secondo momento, si tratta di problemi di comunicazione o di cattivo tempismo.

Il lettore apprezzerà gli sforzi per far progredire lo stato del gioco da parte loro e da parte tua.
Almeno, come arbitro sarei felice così. I miei due centesimi Felice di essere corretto.

#13
  0
Trusly
2020-04-29 07:39:38 UTC
view on stackexchange narkive permalink

L'intera fornitura del codice sorgente della faccenda cartacea è stata discussa a morte su questo sito e altrove, quindi non ne parlerò molto. Sono d'accordo con te sul fatto che avrebbero dovuto fornire la fonte, e comunque dovrebbe essere richiesta dalle riviste. Detto questo, attualmente non lo è. Sarebbe bello se ti aiutassero a riprodurre il loro lavoro, ma non è necessario.

Se avessi scoperto che quando prendi le loro istruzioni alla lettera i risultati non sono riproducibili, avresti motivo di scrivere all'editore della rivista e l'onere sarebbe su di loro per dimostrare che le loro scoperte sono legittime. Tuttavia, sembra che tu [r amico] sia stato in grado di riprodurlo senza il loro aiuto, vorresti solo che fosse più facile. Abbastanza giusto, ma difficilmente puoi pretendere che facciano di tutto per semplificarti la vita.

Se intendi distribuire il codice che hai scritto, non c'è niente di sbagliato in questo ed è un'ottima idea. Non allegherei un piccolo manifesto dicendo che gli autori sono stati degli idioti inutili e che hai scritto questo prova il tuo punto. Sebbene sia vero e tu sia nei tuoi diritti, ti farà sembrare cattivo. Vale la pena spiegare che la tua implementazione è indipendente e non basata sul codice originale, in modo da non confondere i lettori, ma non è necessario approfondire il motivo per cui non hanno condiviso o chi è in colpa: non sono questioni fatto attinente alla ricerca stessa. Puoi dire qualcosa come "questo codice è un'implementazione indipendente dell'algoritmo in Smith et al. 2020, scritto senza accesso all'implementazione degli autori". Quest'ultimo pezzo che puoi mettere a punto a seconda di quanto fine ti senti di mettere su di esso. Ma, ancora una volta, meno dici quanto non ti piace che gli autori non condividano il codice con te, meglio è (a lungo termine).

Non vedo perché non condividano il loro codice, specialmente se rivendicano uno stato dell'arte su un set di dati molto importante. La maggior parte dei documenti deve essere confrontata con lo stato dell'arte in una certa misura, e quindi essenzialmente stanno rallentando tutti i ricercatori in questo campo specifico per ricreare il proprio lavoro prima di pubblicare la propria ricerca.

Ci possono essere molte ragioni, non tutte nefaste.

  • Se il giornale non richiede codice, a condizione che sia un lavoro extra e inefficiente.
  • Dovresti documentare come altre persone possono crearlo ed eseguirlo sul proprio computer, cosa che può richiedere un lavoro extra e forse non è un problema per il tuo sistema.
  • In generale il codice non è così utile se non portabile, mentre l'algoritmo è già portabile.
  • Solo perché forniscono il codice non significa che sarà utile per te . Potrebbe essere in una lingua che non conosci.
  • Il codice potrebbe essere disordinato e forse non hanno voglia di invitare domande inutili. Può sembrare dubbio, ma immagina che ti sia stato chiesto di fornire ogni singola bozza e disegno di tovagliolo, e poi le persone ti hanno fatto spiegare pensieri casuali che erano stati annotati a margine e sono stati comunque abbandonati in seguito.
  • Ogni volta che fornisci codice , tutti i tipi di persone iniziano a chiederti aiuto per questioni che a volte sono a malapena connesse al lavoro stesso. Mentre dovresti essere disponibile a rispondere alle domande sul tuo lavoro, rispondere alle domande richiede tempo. Se il diario non lo richiedeva, perché creare lavoro aggiuntivo per te stesso?

A dire il vero, appoggio le riviste che richiedono la divulgazione del codice sorgente per lo stesso motivo per cui ci si aspetta che gli sperimentatori non dicano solo il nome della sostanza chimica che hanno usato, ma forniscano il fornitore, il numero di documenti antichi che non esistono più, il codice di vecchi documenti può spesso non essere eseguibile). Ma alla fine della giornata, è solo un problema se i risultati sono un artefatto dello specifico reagente / implementazione che hai usato. Se il protocollo funziona bene con qualsiasi reagente e se l'algoritmo non è difficile da implementare correttamente, non è davvero un grosso problema.

#14
  0
vdaghan
2020-04-28 04:19:26 UTC
view on stackexchange narkive permalink

Alcune divagazioni - solo per fornire un'altra prospettiva - prima della risposta.

Posso condividere la mia esperienza come "utente" per occasioni simili. CS non è il mio campo e non posso riscrivere ogni singolo algoritmo che afferma di essere un "miglioramento drastico" (avviso spoiler: la maggior parte non lo è). Semplicemente non ho tempo e gli algoritmi di forza bruta di solito funzionano per me. Generalmente. Ma se avessi avuto accesso a detti algoritmi (leggi: codice effettivo), li avrei usati e questo sarebbe un enorme abilitatore per la mia ricerca futura.

Alcune risposte / commenti affermano, approssimativamente, di utilizzare lo stesso codice non è riproduzione. Per CS, questo potrebbe essere vero in una certa misura, non lo sostengo nemmeno. Ma la vera preoccupazione qui è la riproduzione? Apprezzo l'usabilità più della pura riproduzione di algoritmi.

Ci sono altri campi (come il mio, le scienze dello sport) che potrebbero utilizzare un po 'di "aiuto". Non prenderla in modo sbagliato, molto probabilmente posso codificare io stesso il codice all'avanguardia, dato l'algoritmo. Ma semplicemente non vale il mio tempo. Perché un potenziale (e molto piccolo nelle mie esperienze passate) miglioramento della velocità di esecuzione / impronta di memoria non giustifica il lavoro più sul mio codice proof-of-concept già funzionante che affrontare il problema successivo sulla mia lista.

Ci sono molti articoli che propongono vari algoritmi, ma non si preoccupa nemmeno di spiegarli correttamente.

Tornando alla tua domanda:

La mia domanda è, sarebbe è consigliabile aggiungere una nota che l'implementazione del LORO algoritmo è la nostra implementazione e che abbiamo contattato loro per il loro codice e hanno rifiutato?

Decisamente consigliabile per la prima parte, poiché è pura riproduzione cieca del loro algoritmo e aggiunge valore alla ricerca di entrambe le parti. **

Per il loro rifiuto: come puoi essere sicuro che il loro algoritmo proposto non fosse il prodotto di una conversazione all'ora di pranzo e che non fosse mai stato realizzato in codice vero e proprio fino a quando non l'hai fatto? Come puoi essere sicuro che le loro cifre sulle prestazioni dichiarate non siano state fabbricate? Ti fidi semplicemente dei ricercatori? E se la tua implementazione non avesse verificato la superiorità del loro algoritmo? Lo pubblicheresti comunque o cederesti all ' appello all'autorità? Controllereste -rigorosamente- se il loro codice corrisponde alla loro spiegazione dell'algoritmo: cioè non c'è niente nella manica?

Credo che queste domande siano il motivo per cui il loro rifiuto lascia l'amaro in bocca; non sono le 2 settimane del tuo collega.

Che sia in una pubblicazione / presentazione o nella tua cerchia, penso che tu debba alla scienza rendere pubbliche queste informazioni. Quest'ultima sembra meno rischiosa se sei non "ancora ben consolidato" però.

#15
  0
dusa
2020-07-30 19:36:38 UTC
view on stackexchange narkive permalink

Ciò potrebbe avere a che fare con le norme o i partner del laboratorio. Sono uno scienziato informatico che lavora su problemi con un obiettivo medico, nessuno dei miei partner clinici è d'accordo con il rilascio del codice. Questo è un vero problema con le comunità mediche, mi hanno persino chiesto di cancellare il mio computer quando il mio contratto era scaduto in modo da non avere una copia del mio codice. Ovviamente, come molti, il vero motivo sospetto è che pensano che condividere il codice li metta in una posizione di svantaggio, semplicemente non vogliono che gli altri usino il loro benchmark. Questa è solo la mia intuizione, anche se suona controintuitiva. Ma molte persone non hanno avuto problemi a replicare il mio lavoro ei miei risultati sperimentali, quindi il fatto che tu sia stato in grado di implementare il lavoro in 2 settimane e ottenere i loro risultati, direi che hanno fatto un lavoro decente (in più hai acquisito più informazioni e superato il loro lavoro). A volte ho avuto problemi a ottenere gli stessi risultati utilizzando il codice dei miei compagni di laboratorio.

A livello personale, penso che se gli autori non rendessero il loro codice disponibile pubblicamente, sarebbero riluttanti a condividerlo perché ciò richiede la pulizia del codice ecc. che potrebbe richiedere molto tempo per un singolo individuo, cosa che ad essere onesta posso riferire. La maggior parte delle persone lavora in gruppo, quindi mi aspetto che il loro codice sia più modulare e più pulito, o semplicemente che qualcuno ci lavori sopra.

#16
-1
neil_mccauley
2020-04-29 22:26:06 UTC
view on stackexchange narkive permalink

No, non è appropriato e tale affermazione o "accusa" non dovrebbe far parte di una pubblicazione scientifica. Nessuno dei lettori sarebbe interessato a quel dettaglio e inoltre non serve allo scopo del tuo articolo.

Invece di sottolineare che gli autori si sono rifiutati di distribuire il loro codice sorgente, puoi semplicemente menzionare che il codice sorgente non è disponibile e che l'implementazione è tua. Capisco che ti sei sentito offeso dall'autore e hai voluto vendicarti. Dopotutto, potresti verificare il loro risultato con la tua implementazione, quindi non rimangono dubbi. Perché allora dovresti sollevare un problema personale in una pubblicazione scientifica, il cui unico scopo è danneggiare la reputazione degli altri autori?

@Graham ha già fornito un'ottima risposta, che spiega perché è necessario e desiderabile avere una convalida indipendente. Prima ero in questo "business" e sono d'accordo su tutti i punti che ha affermato. Il mio campo era la bioinformatica e non solo abbiamo pubblicato nuovi algoritmi, ma abbiamo anche prodotto software basato su quello per i biologi. È pratica comune nel nostro campo che il codice sorgente venga pubblicato perché tutti vogliamo avere utenti. Pertanto, non ho avuto il tuo problema durante il confronto delle prestazioni. Tuttavia, ho avuto l'altro problema che @Graham ha sottolineato. Molti dei reali miglioramenti delle prestazioni risiedono nell'implementazione, che semplicemente non è menzionata nella pubblicazione. Questo potrebbe essere intenzionale o non intenzionale. Alcuni dettagli di implementazione non sembrano un contributo scientifico e vengono tralasciati. Tuttavia, il loro impatto potrebbe essere enorme. Una volta eravamo perplessi dalle prestazioni di un software con cui volevamo confrontare. Quindi decidiamo di analizzare il suo codice sorgente. Abbiamo quindi scoperto che l'autore ha un modo molto intelligente di implementare una funzione, che consente di risparmiare un'enorme quantità di tempo. Questa è una funzione matematica comune nel nostro campo e sembra abbastanza chiaro come questa funzione debba essere implementata fino a quando non abbiamo visto il suo approccio. Abbiamo reimplementato le sue tecniche nel nostro software e abbiamo visto accadere meraviglie.

#17
-2
h22
2020-04-27 18:25:40 UTC
view on stackexchange narkive permalink

Sei stato in grado di riprodurre i risultati o no, dalla descrizione dell'algoritmo nel loro articolo? Questo non è chiaramente visibile nella tua domanda.

Se sì, l'articolo è completo e non c'è nulla di cui lamentarsi.

In caso contrario, sì, c'è qualcosa da dire sulla sola formulazione dovrebbe essere diversa:

"Abbiamo ripetuto questi esperimenti ma non siamo stati in grado di riprodurre risultati "

Per essere una pubblicazione scientifica, l'articolo deve includere informazioni sufficienti per ripetere l'esperimento. Se più ricercatori indipendenti non riescono a riprodursi, l'autore si mette nei guai.

Ho riscritto questa domanda e penso che la versione corrente sia corretta.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...