学術論文のコード


34

私の学歴では、さまざまなコンピューターサイエンスのトピックに関する学術論文をかなり読みました。その多くは実装とその実装の評価に関係していますが、実際に使用したコードを実際に公開しているものはほとんどありません。

私にとって、実際の実装を含めることの利点は、次のとおりです。

  • 信頼または再現性の拡張(自分でテストするだけです!)
  • あいまいさの明確化(特に非ネイティブスピーカーによって書かれた論文の場合)
  • アプリケーションでのコードの再利用

それでは、実際にコードを含む論文が非常に少ないのはなぜですか?

論文の背後にある組織が独自のアプリケーションで実装を利用することを意図している可能性があるため、それをリリースしたくないと思いますが、その場合はなぜ論文を書くのでしょうか?


14
それでは、実際にコードを含む論文が非常に少ないのはなぜですか?実装を隠す正当な理由がなくても、レビュアーは何らかの理由でそれを許容するからです。私たちはレビュアーであり、変更できます。
ユッカスオメラ

14
これはサブフィールドによって異なるに違いないと思います。私がよく知っているTheory Bのほぼすべて(特にHaskell、Agda、および場合によってはCoq関連)には、公開されたコードが含まれています。ICFPからのかなりの数の論文が、最初はリテラシープログラムとして書かれており、そのソースはすべて著者によって公開されています。それらのかなりの量が、配布のために抽出されたライブラリをもたらしました。残りの論文のうち、かなりの量のコードが最初からありませんでした。
sclv

8
研究結果は公開されており(無料)、コードも公開されている必要があります。一部の定義では、科学は仮説が偽造可能で実験が再現可能な場合にのみ発生するため、公開されていないコードに基づいた出版物は科学的な成果ではないと主張できます。
ラファエル

4
@Raphael同じコードをリリースしても、再現性の確立ではなく、再現性の確立に役立ちます。まったく同じ実験でまったく同じコードを実行することは、ほとんど独立しています。科学には再現性ではなく、再現性が必要です。
マークReitblatt

2
私は、結果ではなくコードのプロパティについて話す結果を考えていました(この場合はもちろん正しいです)。著者は、提示されたアルゴリズムの実装について実験を行い、グラフを調べることでランタイムを比較します(「アルゴリズムエンジニアリング」と呼びます)。ここで、コードは再現性を提供します。
ラファエル

回答:


17

以下は、David DonohoとJonathan Buckheitによるよく議論された記事で、私は大学院で読んだもので、ウェーブレット研究者の観点からまさにこのトピックに触れています。

「WaveLabと再現可能な研究」

彼らの考えはさらに野心的で、論文のすべての図を便利なMatlabパッケージで再現するためのコードを提供することでした。

私は彼らのアイデアが本当に好きですが、問題は明らかだと思います。

(1)余分な作業です(コードのクリーンアップ、少なくとも初歩的なユーザーインターフェイスの作成、ドキュメントの作成、人々が必然的に問題に遭遇した場合のサポートの提供)

(2)ほとんどの会議/レビュアーが実際に必要とするわけではない

しかし、出版物で使用されているコードとデータを使用可能な形式で一般公開することが期待されていれば、CS研究コミュニティが恩恵を受けると感じざるを得ません。関与する作業の量が管理可能であったとしても、私自身はそうしなかったことを認めます。外部からのプッシュがない場合、余分な労力をかけるのは難しいと思います。


7
少なくともWebサイトで利用可能な(a)擬似コードまたは(b)コードのいずれかの期待は、CS研究コミュニティにとって非常に役立つと思います。すべての研究コードの有用性が高いわけではありません。バグのあるコードを利用可能にすることが良いことかどうかはわかりません。
ピーターショー

1
同様の理由でコードをリリースしていない紙の著者に話を聞いたことがあります-現状では、誰かが実際に何かをしようとした場合、罪悪感を覚えるでしょう。
sclv

6
コードは、良い、きれい、または再利用可能である必要はありません。しかし、「科学」と見なされるためには、再現可能である必要があります。Nick Barnes(2010)による自然の良い記事がありました。コンピューターコードを公開します。この点については十分に議論できます。
デビッドルバウアー

16

産業ラボで働いている場合、リリースに承認されたコードを取得するよりも、リリースに承認されたペーパーを取得する方がはるかに簡単です(ペーパーにコードの書き換えに必要なすべての情報が含まれている場合でも)。非難の官僚。


1
もちろんこれは事実ですが、学術研究者が推進する文化の適切な変化により、産業研究者がコードのリリースを許可するように管理に圧力をかけることができるのではないかと思います。結局、私も紙剥離のための政策がいくつかは、やって撮影している必要があります取得容疑者
スレシュヴェンカト

6
少なくともMSRでは、研究コードをリリースするのは非常に簡単です。MSはソフトウェアライセンスの尊重に細心の注意を払っているため、実際には外部コードを使用するのは困難です。多くの紙関連のコードドロップは、明示的なライセンスファイルなしで行われるため、これは少し面倒です。通常、論文の著者にメールを送って問題を解決しますが、OSIが承認したライセンスを公開コードリリースに貼り付けることを覚えておくことで、産業研究者が簡単に作業を進めることができます。
ニールクリシュナスワミ

2
@Neel:「OSI承認済みですが GPLではない」という意味ですか?
ラドゥグリゴール

3
GPLは通常大丈夫です-私たちの多くはEmacsを使用しています!:) Affero GPLソフトウェアの使用は許可されていません。その相互関係の条件はソフトウェアとやり取りするすべての人に及ぶため(つまり、Webサービスの抜け穴を塞ぐ)、MSは内部サーバーのリスクを避けたいためです。 AGPLコードを実行すると、誤って公開される可能性があります。ただし、ライセンスを選択すると実際に共有の条件が明確になるため、AGPLでもライセンスがない場合よりも優れています。
ニールクリシュナスワミ

13

コメントから移行および展開:

これはサブフィールドによって異なるに違いないと思います。私がよく知っているTheory Bのほぼすべて(特にHaskell、Agda、および場合によってはCoq関連)には、公開されたコードが含まれています。例えば、ICFPからのかなりの数の論文は、最初は文学的プログラムとして書かれており、それらのソース全体は著者によって公開されています。それらのかなりの量が、配布のために抽出されたライブラリをもたらしました。

残りの論文のうち、かなりの量のコードが最初からありませんでした。これらのうち、おそらく2つの主な理由があります。1つは、主な内容が証明ツリー、関連する健全性証明などの入力規則などである論文です。これらのうち、機械化されたメタ理論の進歩により、少なくとも一部の著者は、選択した定理証明にコードを提供するように奨励されています(POPLmarkのWeirichのスライド:http : //www.seas.upenn.edu/~sweirich/talks/cambridge-09を参照)。 pdf)。2番目は、Bird-Merteensのもの(banannas&co。)から派生したものです。これらは通常、あまり作業をせずに関数型言語に翻訳できます。ただし、一般的には一般性が失われ、構文とタイピングの具体的な問題に対処することは不必要に物事を複雑にし、方程式の推論に従うことが難しくなると思います。

私は自分の観察を少し実証したかったので、ICFP 2010の最初の2日間の大まかなカウントを行いました。標準的な論文(レポートや招待講演はありません)では、21の内12が何らかのコードを提供しました。3つはCoqを提供しました(4つ目は部分的な証拠を主張しましたが、公開しませんでした)。Haskellの3つのプロイド。3つはAgdaを提供しました。1つはSchemeを提供し、1つはCamlを提供し、もう1つはTwelfを提供しました。(いくつかは、複数の証明アシスタント、または形式化と実装の両方のためにコードを提供したことに注意してください)。残りの論文のうち、いくつかは、それを証明アシスタントに実装すること自体が新しい論文になるほど十分に高い抽象度で機能し、さらにかなりの数が、以下を使用して証明アシスタントに実装できたと思われる動作をしました標準的な手法ですが、そのためには確かにかなりの作業が必要でした。


12

コードは公開されるべきだと考えていますが、論文にコードが含まれていない理由を尋ねます。これらは2つの異なるものです。

ほとんどの場合、大量のコードを公開するだけのスペースはありません。私の研究分野(画像処理)で、擬似コードまたはアーキテクチャ情報ははるかに貴重であることが多く、論文にコードがないために立ち往生することはありません。多くの場合、記事を理解した読者に課題として残されています。

しかし、論文を説明するために利用できる多くのコードがあります。通常、作成者はWebページを持っているため、レビュー担当者がコード自体を試してみる機会がなくても、自然選択はうまく機能しているように見え、コードを公開しない著者はあまり引用されません。


8

これはすでに以前に尋ねられたかもしれませんが、私は常にこのことを強く感じていたので、2セントを差し上げます。私はSATコミュニティ内で長年働いてきました(もう働いていません)。ほとんどの研究者がコードを公開することはめったにありません。論文はアルゴリズムと共に公開されていますが、SATソルバー(MAXSATソルバー)などの実際のコードを公開することは非常にまれです。

そして現実は、論文で公開されたコードだけでは、著者の実験を再現する機会が決してないということです。公開されたコードが完全でないこと(もちろん)だけでなく、公開された擬似コードでさえ、実際に実装されるものに半直接変換されることはめったにないからです。

この背後にある理由を知ることは困難であり、それは研究者から研究者に依存するかもしれませんが、それは主に2倍です。

  • 第一に、研究者は単一のソルバーで継続的に作業する傾向があり、同じソルバーに関する論文の後に論文を発表し、ソルバーの新しいバージョンに翻訳される新しい機能を徐々に追加します。競争はあなたのソルバーを使用して、あなたの正当な信用(意味、共著)を与えることなくそれを拡張し、論文を発表することによって彼らのキャリアを促進するという不健全な強迫観念があります

  • 第二に、いくつかのコードは(すべてのソフトウェアと同様に)急いで書かれています。中途半端なスクリプト。テストされていない機能など。このコードを公開することで、研究者は自分が恥ずかしく、評判を損なうと感じるでしょう。

ACMからのこれに関する最近の参照を残します:http : //cacm.acm.org/magazines/2011/5/107698-the-importance-of-reviewing-the-code/fulltext


7

歴史的には、科学論文は紙に印刷する必要があり、ジャーナルは国際的に出荷されていました。余分なページはそれぞれかなりのコストを追加するために使用されたため、記事には長さの制限があり、単純な作業コードでさえ非公式の説明よりも多くのスペースを必要とします。

今日、アルゴリズムを参照している記事にコードを含めない正当な理由はありません。

また、セマンティクスを意識した形式(MathMLを使用したHTMLまたはMathematicaのオープンソース版)を優先して、pdfやpostscriptなどの印刷指向形式を放棄することも役立ちます。


8
最初の2つの段落に+1、最後の段落に-1。私の冷たい死んだ手からそれをこじ開けるとき、あなたは私のLaTeXを奪うことができます。
ジェフ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.