Answers.Body: <blockquote>
  <p>The paper's authors needed to implement their models anyway in order to conduct their experimentations, so why not publish the implementation?</p>
  </blockquote>
  <p>Some papers and authors actually provide a link to their own implementation, but most of the papers (that I have read) don't provide it, although some third-party implementations may already be available on Github (or other code-hosting sites) when you are reading the paper. There may be different reasons why the author(s) of a paper don't provide a reference implementation</p>
  <ul>
  <li>They use some closed-source software or maybe it makes use of other resources that cannot be shared</li>
  <li>Their implementation is a mess and, so, from a pedagogical point of view, it's quite useless</li>
  <li>This may encourage other people to try to reproduce their results with different implementations, so it may indirectly encourage people to do research on the same topic (but maybe not providing a reference implementation could actually have the opposite effect!)</li>
  </ul>
  <blockquote>
  <p>Plus, if the implementation is not added and there's no reproducibility, what prevents authors from forging results?</p>
  </blockquote>
  <p>I had some experience as a researcher, but not enough to answer this question precisely.</p>
  <p>Nevertheless, from some reviews of papers I have read (e.g. on <a href="https://openreview.net/" rel="nofollow noreferrer">OpenReview</a>), in most cases, the reviewers are interested in the consistency of the results, the novelty of the work, the clarity and structure of the paper, etc. I think that, in most cases, they probably trust the provided results, also because, often, for reproducibility, researchers are expected to describe their models and parameters in detail, provide plots, etc., but I don't exclude that there are cases of people that try to fool the reviewers. For example, watch <a href="https://www.youtube.com/watch?v=bmZyJ2Dt8dw" rel="nofollow noreferrer">this video</a> where Phil Tabor comments on ridiculous attempts to fool people and plagiarism by Siraj Raval.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-05-14T14:44:06.637Z
Answers.LastActivityDate: 2022-01-13T23:51:19.707Z
Answers.LastEditDate: 2022-01-13T23:51:19.707Z
Answers.UserDisplayName: nbro
Answers.Body: <ol>
  <li><p>The first reason described in <a href="https://ai.stackexchange.com/a/21161/1641">nbro's answer</a> can definitely be an important one; authors may have implemented their software using code that they can't share. There's a lot of research coming out of companies (large and small), and they may use all sorts of proprietary libraries that were built in the company and cannot be distributed outside.</p></li>
  <li><p>As described in <a href="https://academia.stackexchange.com/a/10270/69376">this answer</a>, sometimes researchers prefer to keep the code to themselves because it may give them an "advantage" over other researchers fot future work / follow-up research in the same area. I'm not saying that I believe this is a <em>good</em> reason, it definitely doesn't sound like it's good for the overall benefit of science... but it may be understandable in a "publish or perish" world where there's quite a bit of pressure to keep publishing frequently if you want your academic career to survive.</p></li>
  <li><p>Also described in more detail in the answer I linked above, research code is often messy, and not pretty. Nbro also mentioned this, though I personally don't feel like the rationale is "it's too messy to be useful", and more often it's more along the lines of "it's so messy that I'm too embarassed to share it".</p></li>
  <li><p>Some researchers, especially in larger teams, do not just work on a single paper at a time. They may have multiple papers they're working on simultaneously, and if they're closely related it can often be convenient to have them all in a single codebase. This is especially the case with longer review times; in the time between submission of a paper -- where it and anything related to it, such as source code, must remain private -- and an acceptance notification, there's plenty of time to start working on a next project. If the code for the previous project is mixed in with the code for the next project, and you can't / don't want to publish the code for the next project either yet... it may be easier to just not release anything.</p></li>
  <li><p>In some cases, authors may feel it is "dangerous" to release their source code (or trained models). This is probably relatively uncommon, but can happen. Consider <a href="https://openai.com/blog/better-language-models/" rel="noreferrer">the situation surrounding OpenAI's GPT-2 language model</a>, for example.</p></li>
  </ol>
  
  <p>Not directly a response to your question, but it may also be useful to keep in mind that sometimes not all authors of a paper may agree on whether or not to open-source it. Legally, I suppose that usually all the authors (or all contributors to the source code) would be copyright holders, and it can only be released if they <strong>all</strong> agree to release it. So if one of them feels (based on any of the reasons listed above, or maybe other reasons) that it shouldn't be released, it won't. In practice, I suppose that it would often primarily be the call of the more senior authors on a paper / principal investigators / supervisors.</p>
  
  <hr>
  
  <blockquote>
    <p>Plus, if the implementation is not added and there's no reproducibility, what prevents authors from forging results?</p>
  </blockquote>
  
  <p>Personally I wouldn't be concerned as much about forging results as just... "accidental" false positives. Yes, it's possible and it will happen. But the pay-off of successfully forging false results and getting a paper published seem REALLY low compared to the risk of your academic career ending if it gets out. If you really have to forge your results just to get your paper accepted, and it has zero other meaningful contributions (no "unforgeable" contributions like theoretical results or really new and useful insights).. it's unlikely to become a really impactful paper, a widely-cited one. The really highly impactful empirical papers only become highly impactful because people will immediately try to re-implement and reproduce it anyway, and if that turns out to be impossible, it will turn into a dead end.</p>
  
  <p>That said, I'm not saying it can't be important to share source code. Especially in deep learning, and especially in deep reinforcement learning, <a href="https://arxiv.org/abs/1709.06560" rel="noreferrer">it has indeed been shown that tiny implementation details can be massively important to empirical performance</a>, and these tiny implementation details are rarely all available in papers. There has certainly been a push towards encouraging the publication of source code, and it <strong>is</strong> important -- but unfortunately it's not always a black-and-white story, and there <strong>can</strong> sometimes also be good reasons that make it difficult/impossible to do so. If it's good research, I'd personally still rather have it without source code, than not have it at all.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-07-10T10:42:05.487Z
Answers.Text: Agree with most the points. I am unsure about point 4. I don't know about all teams but the teams I know usually back-up all version of their code. For example when they run an experiment and produce a plot, that version of code will be backed-up. So even if the code is changed in future, they will still have the old version of the code.
Answers.UserDisplayName: High GPA
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-05-14T18:35:29.643Z
Answers.LastActivityDate: 2020-05-14T18:35:29.643Z
Answers.UserDisplayName: Dennis Soemers
Answers.Body: <p>Someone can argue to some human adequate reasons, but there is a bad trend of falsified results in deep learning research papers that propose some nowel solutions or even update state-of-the-art model performance. And that's not just a few papers that lie, it's a large portion of them. And the reason for that is even more sad - most of so-called deep learning research papers just describing some empirical experiments, without any math and proving any theorem, and so it's easy to cheat.</p>
  
  <p>So objectively, if the only thing you propose in your paper is your empirical results - you must confirm them true by sharing source code. Otherwise, your work will be ignored.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-05-14T15:02:21.677Z
Answers.LastActivityDate: 2020-05-14T15:08:03.793Z
Answers.LastEditDate: 2020-05-14T15:08:03.793Z
Answers.UserDisplayName: Bogdan Ruzhitskiy
Body: <p>I'm a novice researcher, and as I started to read papers in the area of deep learning I noticed that the implementation is normally not added and is needed to be searched elsewhere, and my question is how come that's the case? The paper's authors needed to implement their models anyway in order to conduct their experimentations, so why not publish the implementation? Plus, if the implementation is not added and there's no reproducibility, what prevents authors from forging results?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-05-15T13:25:02.850Z
Comments.Text: There's somewhat of a movement to change that. Check out paperswithcode.com for a nice example.
Comments.UserDisplayName: Andy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2020-05-16T12:00:39.217Z
Comments.Text: A similar question was asked in Academia SE recently. There's an interesting analogy with e.g. CERN - when scientists working there publish results, they do not provide an executable version of the Large Hadron Collider and the original particles. Provided the descriptions of methods are robust, and the conclusions of the research broad enough (not just a specific architecture that scores well on a specific challenge), then reproducability does not have to be perfect to the exact bit-string, and really that's not of great interest anyway, results that apply more generally are the normal goal.
Comments.UserDisplayName: Neil Slater
Tags: <deep-learning><research><papers>
Title: Why do most deep learning papers not include an implementation?
UserDisplayName: Gilad Deutsch
ThreadText: # Why do most deep learning papers not include an implementation?
  
  (Asked by: username_0 on 2020-05-14)
  
  I'm a novice researcher, and as I started to read papers in the area of deep learning I noticed that the implementation is normally not added and is needed to be searched elsewhere, and my question is how come that's the case? The paper's authors needed to implement their models anyway in order to conduct their experimentations, so why not publish the implementation? Plus, if the implementation is not added and there's no reproducibility, what prevents authors from forging results?
  
  **Tags:** deep-learning, research, papers
  > **Comments:**
  > **username_1**: There's somewhat of a movement to change that. Check out paperswithcode.com for a nice example.  
  > **username_2**: A similar question was asked in Academia SE recently. There's an interesting analogy with e.g. CERN - when scientists working there publish results, they do not provide an executable version of the Large Hadron Collider and the original particles. Provided the descriptions of methods are robust, and the conclusions of the research broad enough (not just a specific architecture that scores well on a specific challenge), then reproducability does not have to be perfect to the exact bit-string, and really that's not of great interest anyway, results that apply more generally are the normal goal.  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_3 on 2020-05-14. Score: 18
  
  > The paper's authors needed to implement their models anyway in order to conduct their experimentations, so why not publish the implementation?
  
  Some papers and authors actually provide a link to their own implementation, but most of the papers (that I have read) don't provide it, although some third-party implementations may already be available on Github (or other code-hosting sites) when you are reading the paper. There may be different reasons why the author(s) of a paper don't provide a reference implementation
  
  * They use some closed-source software or maybe it makes use of other resources that cannot be shared
  * Their implementation is a mess and, so, from a pedagogical point of view, it's quite useless
  * This may encourage other people to try to reproduce their results with different implementations, so it may indirectly encourage people to do research on the same topic (but maybe not providing a reference implementation could actually have the opposite effect!)
  
  > Plus, if the implementation is not added and there's no reproducibility, what prevents authors from forging results?
  
  I had some experience as a researcher, but not enough to answer this question precisely.
  
  Nevertheless, from some reviews of papers I have read (e.g. on [OpenReview](https://openreview.net/)), in most cases, the reviewers are interested in the consistency of the results, the novelty of the work, the clarity and structure of the paper, etc. I think that, in most cases, they probably trust the provided results, also because, often, for reproducibility, researchers are expected to describe their models and parameters in detail, provide plots, etc., but I don't exclude that there are cases of people that try to fool the reviewers. For example, watch [this video](https://www.youtube.com/watch?v=bmZyJ2Dt8dw) where Phil Tabor comments on ridiculous attempts to fool people and plagiarism by Siraj Raval.
  
  
  ---
  
  ### Answer by username_4 on 2020-05-14. Score: 6
  
  1. The first reason described in [nbro's answer](https://ai.stackexchange.com/a/21161/1641) can definitely be an important one; authors may have implemented their software using code that they can't share. There's a lot of research coming out of companies (large and small), and they may use all sorts of proprietary libraries that were built in the company and cannot be distributed outside.
  2. As described in [this answer](https://academia.stackexchange.com/a/10270/69376), sometimes researchers prefer to keep the code to themselves because it may give them an "advantage" over other researchers fot future work / follow-up research in the same area. I'm not saying that I believe this is a *good* reason, it definitely doesn't sound like it's good for the overall benefit of science... but it may be understandable in a "publish or perish" world where there's quite a bit of pressure to keep publishing frequently if you want your academic career to survive.
  3. Also described in more detail in the answer I linked above, research code is often messy, and not pretty. Nbro also mentioned this, though I personally don't feel like the rationale is "it's too messy to be useful", and more often it's more along the lines of "it's so messy that I'm too embarassed to share it".
  4. Some researchers, especially in larger teams, do not just work on a single paper at a time. They may have multiple papers they're working on simultaneously, and if they're closely related it can often be convenient to have them all in a single codebase. This is especially the case with longer review times; in the time between submission of a paper -- where it and anything related to it, such as source code, must remain private -- and an acceptance notification, there's plenty of time to start working on a next project. If the code for the previous project is mixed in with the code for the next project, and you can't / don't want to publish the code for the next project either yet... it may be easier to just not release anything.
  5. In some cases, authors may feel it is "dangerous" to release their source code (or trained models). This is probably relatively uncommon, but can happen. Consider [the situation surrounding OpenAI's GPT-2 language model](https://openai.com/blog/better-language-models/), for example.
  
  Not directly a response to your question, but it may also be useful to keep in mind that sometimes not all authors of a paper may agree on whether or not to open-source it. Legally, I suppose that usually all the authors (or all contributors to the source code) would be copyright holders, and it can only be released if they **all** agree to release it. So if one of them feels (based on any of the reasons listed above, or maybe other reasons) that it shouldn't be released, it won't. In practice, I suppose that it would often primarily be the call of the more senior authors on a paper / principal investigators / supervisors.
  
  ---
  
  > Plus, if the implementation is not added and there's no reproducibility, what prevents authors from forging results?
  
  Personally I wouldn't be concerned as much about forging results as just... "accidental" false positives. Yes, it's possible and it will happen. But the pay-off of successfully forging false results and getting a paper published seem REALLY low compared to the risk of your academic career ending if it gets out. If you really have to forge your results just to get your paper accepted, and it has zero other meaningful contributions (no "unforgeable" contributions like theoretical results or really new and useful insights).. it's unlikely to become a really impactful paper, a widely-cited one. The really highly impactful empirical papers only become highly impactful because people will immediately try to re-implement and reproduce it anyway, and if that turns out to be impossible, it will turn into a dead end.
  
  That said, I'm not saying it can't be important to share source code. Especially in deep learning, and especially in deep reinforcement learning, [it has indeed been shown that tiny implementation details can be massively important to empirical performance](https://arxiv.org/abs/1709.06560), and these tiny implementation details are rarely all available in papers. There has certainly been a push towards encouraging the publication of source code, and it **is** important -- but unfortunately it's not always a black-and-white story, and there **can** sometimes also be good reasons that make it difficult/impossible to do so. If it's good research, I'd personally still rather have it without source code, than not have it at all.
  
  > **Comments:**
  > **username_5**: Agree with most the points. I am unsure about point 4. I don't know about all teams but the teams I know usually back-up all version of their code. For example when they run an experiment and produce a plot, that version of code will be backed-up. So even if the code is changed in future, they will still have the old version of the code.  
  
  ---
  
  ### Answer by username_6 on 2020-05-14. Score: 6
  
  Someone can argue to some human adequate reasons, but there is a bad trend of falsified results in deep learning research papers that propose some nowel solutions or even update state-of-the-art model performance. And that's not just a few papers that lie, it's a large portion of them. And the reason for that is even more sad - most of so-called deep learning research papers just describing some empirical experiments, without any math and proving any theorem, and so it's easy to cheat.
  
  So objectively, if the only thing you propose in your paper is your empirical results - you must confirm them true by sharing source code. Otherwise, your work will be ignored.
  
  
  ---
  
  