同组博士师兄的结果复现不出来,我应该怎么办?

链接:https://www.zhihu.com/question/502804990

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

ed726bb91c7aa65d16c67cc8aa208289.png

今年研二,老师给了一个课题,让接着师兄的工作继续做。但是师兄的结果复现不出来,师兄不愿意给代码。前段时间因为马上要硕士生开题,所以骗了老师说我可以复现出来结果了。但是现在继续按着自己的仿真做下去,和师兄的现象完全不一样,应该怎么办比较好,有类似经历的小伙伴,你是否也在苦恼中?

同组博士师兄的结果复现不出来,我应该怎么办?_第1张图片

作者:雪峰的自由之路
https://www.zhihu.com/question/502804990/answer/2412242263

我刚进组的时候代码就是祖传了20年的拟合代码。

然后我给祖传代码写了unittest,integration test,还有 continuous integration,并且重要的的文章用的代码都会打tag。

大部分分析我都写了singularity recipe,杜绝os/compiler导致的结果的变化。

c++程序都用google sanitizer和valgrind查过memory error;用clang-tidy检查风格问题,用clang-format统一格式,用perf检查性能问题。

我所有的分析代码都用git track。

只要懂一点点软件工程方法就可以解决重现结果的问题。科研代码是科研的一部分,应该是reproducible的。这本身就是一个科研课题。

作者:叶则于
https://www.zhihu.com/question/502804990/answer/2254573917

这让我想起了隔壁组代代相传的故事

隔壁组进来了一个师姐,导师要求她在某位师兄的基础上做,师姐没有重复出来,导师要求师兄把代码发给师姐

师兄表面答应了,但是一直不肯发,说忙说找不到,或者就是发一个不相关的

师姐火了,也不知道怎么搞到的密码,偷偷打开了师兄的电脑

给全组的师兄弟们全部发了一份!

自此两人闹翻,现在两人各自在学术界混的不错

当然我不建议题主你这样做,因为论文确实不可能面面俱到,一些tricks不会在论文里面展现

还有就是学术造假的可能性,师兄的论文全组都没有人重复过吗?

你完全可以拿着自己画出来的图跟师兄对比,去和导师汇报,并指出师兄不合理的地方,这是最简单且最直接的方式

放心,你的导师也容不了学术造假,一辈子的声誉不是开玩笑的

作者:Vam
ttps://www.zhihu.com/question/502804990/answer/2259589595

这算是个科研领域的经典难题吧,我和我的师弟也遇到过类似问题,我们分别师兄那里接手了两个他做了一半的项目,我们都重复不出来他的DFT模拟结果,师兄也不肯给我们他计算用的模型以及原文件。

我以为跟师兄私下关系不错,就选择私下跟他沟通。我最初没有直说我无法重复他的结果,只是说我想看一下他的模型向他学习怎么做DFT。他给了我一部分模型,结果是我用他的原文件做input重新算依然算不出他的结果。我当时头铁依然选择找师兄沟通,结果师兄瞬间就炸了,他觉得我在算计他,直接去找导师说我在质疑他的权威不配合他的工作。不能重复他的数据这个问题我之前跟导师提过几次,导师并没有把师兄的抱怨当回事。但是这个事之后我和师兄的关系特别特别僵,他毕业后我们基本不再来往。

而我师弟的选择比我圆滑很多,他看到我们俩闹得很不愉快之后,在师兄面前完全不提不能重复的事,而是选择直接找导师沟通,让导师出门要来了所有原数据。师弟重复了所有关键计算,把不能重复的地方一一列出来给导师看,然后让导师去跟师兄沟通。当然,师兄知道了之后他依然非常生气,但是他把怒火归在了导师身上,他认为是导师不信任他,结果是师兄和导师撕破脸了。

我和师弟的最终目一样,就是向导师证明师兄的结果有问题,要导师同意我们后续研究不沿着师兄的方向走。目的最后我们都达成了,我的做法快很多,但是我跟师兄撕破脸,师弟的做法更费时间,他花了将近一年时间不断去引导导师出面跟师兄沟通,好在他和师兄私人关系没有受到严重影响。我这人是急性子,加上科研上我非常较真不喜欢和稀泥,但我不建议跟我一样头铁为了一个项目跟师兄弄的很僵,我师弟的选择更好更圆滑一些,毕竟项目有的是,而同组共事过的师兄弟就那么几个人。

最后说几句数据造假的问题,我不能确定师兄一定在造假,但是我确定造假是个心理压力很大的事,任何做科研的人被指控造假时,会心惊肉跳甚至气急败坏也是可以理解的。我承认,我为了应付这个师兄给过他有问题的数据,这么多年这个事依然像压在我身上的巨石一样沉重。当时跟师兄闹僵后,他依然坚持要求我按他计算的结论把项目做完,他毕业论文需要这些结果,而且结果必须支持他的结论,但是他没时间自己做也没时间改论文的结论了。可我实在算不出来,因为我的计算和实验都指向一个跟他论文完全不同的结论。我当时博士第四年跟他关系也闹僵了,我没义务也不想花时间去帮他。但是导师总是劝我们说随便给他点就完了,因为学校已经明确警告师兄和导师,师兄博士已经念了七年,学校警告他无论如何第八年结束后要么毕业要么肄业我和另一个师弟为了凑师兄的结论就彻底放飞自我了,给他的计算不仅仅是不够严谨了,为了凑结论很多计算用的模型和setting完全都不一样。我们心知肚明这些数据就是造假,所以我们没有在任何会议上讲更完全不考虑去发表这些数据。我甚至故意没有给师兄足够的setting细节,因为不希望日后其他人重复师兄的博士论文。即便这样,师兄博士答辩时讲到这些数据时,我比台上的师兄还紧张,后面committee问到那一页的数据时,我更是感觉自己血压都高了。而这个经历,对另一个师弟的影响更大,之后他再也不肯碰DFT只做实验研究。

作者:余与予欲渔遇雨
https://www.zhihu.com/question/502804990/answer/2258685306

上个月学弟复现不出我的数据,我会给他基础代码,带着他仿真一遍,期间有什么注意的点我都会讲,一直搞到他明白

但是那期间对我个人来说就是纯浪费时间,同时还要花精力去解释连珠炮一样的提问,最后也没听到个感谢,所以有点心累,但出于责任感我还是会坚持给他讲解

所以针对题主 我觉得直接管人家要代码虽然比较高效,但并不是一个很好的科研方式,应该更多花时间去研究设计流程,思路,找找自己疏忽的点;其次,谎报进度不管在哪都是很糟糕的行为,因为这不止耽误你自己,还会耽误整个小组的进度(如果是分工作业的话)。建议找师兄再好好聊聊,如果师兄还是不愿帮你,你就只能找导师承认错误,再请导师帮你协调。

作者:寒山
https://www.zhihu.com/question/502804990/answer/2396843300

有过类似的经历。

如果师兄没毕业,就约出来吃顿饭好好谈谈,不要强要代码。目的是帮你指导一下思路。

如果师兄已经毕业了,那可能他实际没做出来,或者临近毕业想赶紧run了,收尾工作草草交差,不想面对交接后的麻烦事。

这种情况,建议你私下找导师说实话,但是不要只表达“我没有做出来”,那样就成了宣泄。要叙述你从复现到目前遇到了什么瓶颈、具体哪里和师兄的结果相悖、是否存在师兄的方法根本就不work的可能、关于以上的分析证明,以及沟通过程中师兄的态度。

我们组的毕业交接包括所有代码和数据。虽说科研成果属于个人,但毕业后不打算继续或者移交给师弟妹的工作最好还是交代码...不然接手的人还要花大量时间重复前人的工作。

深度学习的结果不能复现并不少见,总之不要闭门造车。

作者:匿名用户
https://www.zhihu.com/question/502804990/answer/2255058082

只是好奇为什么大部分人都认为师兄师姐教就是应该的,如果课题组向来都是传承,也说得过去,如果别人是自己原创的工作,凭什么给程序,好好相处指点一下就仁至义尽了,评论里那位私自开别人电脑的可以说是剽窃了。

另外我曾经给别人检查代码发现之所以重复不出来是因为一个标点符号打错了,而这花了我两个小时的时间。

作者:Nintendoyes
https://www.zhihu.com/question/502804990/answer/2259778224

首先你要确定这个结果是100%能复现出来的,你可以打听一下别人有没有成功复现过这个结果。深度学习或者DFT之类的黑盒子本身就比较难复现,因为参数稍微变化一下可能结果就完全不一样,复现出来相同的结果经常是需要一些trick的。

不share代码其实无所谓,但是如果这个师兄在技术细节比如说这些小trick上一点都不愿意share,那基本可以确定两种情况:一种是他的结果有问题;另一种是他的trick在数学或者物理上不make sense,但是这个trick他从来没在别人跟前提过。

作者:匿名用户
https://www.zhihu.com/question/502804990/answer/2389954718

我刚开始做课题的时候,就是和导师讨论了一下,能做,就开始干了,而且并没有前人基础可用,所以我花了一年多写代码开发试验设备,做实验采集数据,还构思了许多idea……

(重点:师弟从没喊过我师兄,一直都是直呼我名,而且总是老师说怎么怎么地)

然后师弟进组了,导师让他接着我做(其实我也刚开始写论文),没办法,我只能把我构思不太完善的idea给他了。

过了段时间,他有了想法想观察实验现象,就找我,我说我最近没做实验的计划。然后他自己又捣鼓了一阵子,没弄出来,导师催的又紧,就来问我要实验设备,准备自己做。我想这也没什么,就把代码,设备布置,实验数据都给他了,还告诉他怎么用,数据怎么处理。

又过了段时间,他实验是做通了,数据处理完了和我不一样,又来问我。我又跟他讲了一遍数据怎么处理。他说他明白了,我以为就没什么事儿了,没想到第二天导师带着师弟找我,问我数据是怎么回事……我当场有种“养了头白眼狼”的感觉……

我当场没啥表现,耐心跟导师说清楚数据是怎么回事,导师理解了说没有问题。说完我就走了,直接把设备上的程序删了~

事后我觉得这事儿特别可笑,只怪自己爱管闲事了……以后不会再帮他了。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

同组博士师兄的结果复现不出来,我应该怎么办?_第2张图片

你可能感兴趣的:(人工智能,算法,机器学习,java,编程语言)