沈向洋谈科研纠错:做好学问要“深揭猛批”_喜欢打酱油的老鸟的博客-程序员宅基地

技术标签: 人工智能  

2021-02-24 22:00:34

沈向洋谈科研纠错:做好学问要“深揭猛批”

编者按:在微软亚洲研究院为实习生们打造的科研训练“沈老师带你肝论文”中,沈向洋博士曾分享了自己发现已发表的工作中出现错误,之后及时勘误的故事,以此告诉年轻的研究者,在科研中,犯错是正常的,纠错是必须的。科研就是一个不断发现错误与不断纠正错误的探索过程。“It’s honorable to admit your mistake”。对于科研,我们应有“深揭猛批”的态度,这样才能做出了不起的工作。

针对科研容错与纠错这个议题,我们与沈向洋博士进行了更多探讨,以下是Harry的分享。

Q1:您如何看待在科学研究中出现错误?

沈向洋:在科学研究中,犯错误是经常会出现的事情。因此,容错和纠错也是必不可少的一部分。科研的目的是发现知识。重复实验是验证知识的过程。然而实现“可重复性”的确不容易。不同的领域比如生命科学、量子物理、计算机科学重现实验的难度和代价也可能会有很大差距。

在我熟悉的计算机视觉领域,如果有优秀的论文发表出来,很快就会有人努力去尝试重现。如果不能被重现和验证,大家就会抱有一个“健康的怀疑态度”。2014年我还在Redmond必应搜索产品部门工作的时候,深度神经网络的研究已经在兴起。我回北京MSRA时和孙剑讨论了这个问题,他说他们团队深入研究了Hinton的AlexNet文章,但是因为有一些技巧和细节,包括网络初始化方式、数据增广、参数调节、GPU Kernel的编写等,在实现中并不能精确复现。但过了几个月再碰到孙剑,他说应该可以重现了。一年后ResNet就做出来了。

最近这些年,很多计算机和人工智能论文在发表的时候,会把代码和数据开源出来,这样对大家重复实验非常有帮助。

Q2:如果发现自己已发表的工作中存在错误,您会如何处理?

沈向洋:It’s honorable to admit your mistake,承认与改正错误是我们应该做的。

我可以与大家分享一个20年前的故事。2000年,我在IJCV上发表了一篇全景图Panoramic Image Mosaics的文章。2001年,欧洲的一位教授寄了一封Email给我,说在教计算机视觉课讲这个算法时,觉得公式中存在错误。

我开始觉得不可能,因为论文已经发表了一段时间了,我的程序更是跑了好几年了,结果都没问题。我后来花了周末一个下午的时间,仔细读了教授写的邮件,重读了自己的论文,再看程序里如何实现公式的,再次认真重读了论文,终于发现果然有个左乘换右乘的错误。因为它是一个迭代算法,所以程序最后还是收敛了!

虽然程序跑下来最后结果是没问题的,但里面的数学公式确实错了。所以我跟我的合作者Szeliski写了一篇勘误(见本文结尾),2002年发表在IJCV这本杂志上。

在计算机科学领域,像我这样刊登勘误是很常见的。论文里面有错误,领域内的共识是鼓励大家指出来,也鼓励作者再去改,甚至有人专门投稿去指出其他文章中的错误,有时可以写好几页纸。

Q3:在科学研究中,容错与纠错的价值与意义是什么?

沈向洋:科学研究是一个追求真理、追求新知的探索过程,也是一个去伪存真的过程。那么,容错与纠错必然是其中的重要一环。

丘成桐教授证明卡拉比猜想的故事是一个好的例证。意大利几何学家卡拉比在1954年提出了卡拉比猜想,即在封闭的空间中,有无可能存在没有物质分布的引力场。但是,包括卡拉比自己在内,没有人能证实这个猜想,甚至几乎所有数学家都认为,卡拉比是错的。

丘教授花了相当多的时间思考如何证明卡拉比猜想是错的,而且他也认为自己已经做出了证伪的证明。1973年,在一个会议上,丘成桐把自己的想法告诉了卡拉比,卡拉比专门组织了讨论会让丘成桐陈述。卡拉比很兴奋,在场者的人认为问题已经解决。

一个多月之后,卡拉比致信丘成桐,说他在重建丘的思想中碰到了困难。丘成桐又开始进行证明,几乎两个星期没有睡觉,但证明总会在最后一分钟崩溃。丘教授说,这时,他感觉卡拉比应该是正确的,于是他开始发明新工具来理解卡拉比猜想。1975年,丘成桐终于证明了卡拉比猜想。而卡拉比猜想的证明,也标志着微分几何新时代的到来。

在科学研究追求真理的过程中,犯错误不奇怪。其实,通过犯错、纠错来不断努力去接近真理,也正是科研的魅力之一。

Q4:在“沈老师带你肝论文”的科研训练中,您与同学们分享了自己发现错误与改正错误的故事,您希望借此对年轻的学生和科研工作者有什么启示与建议?

沈向洋:在MSRA的时候,我和郭百宁老师、徐迎庆老师喜欢和同学们讲的一句话叫做“深揭猛批”。这是我非常推崇的一个概念:读别人的论文,要同时带着学习、怀疑和批判的态度去读;对自己的工作则要更加怀疑,更加批判。做科研的时候有这样的精神,才能做出了不起的学问。

“这个结论正确吗?我的假设成立吗?工作创新点在哪里?要不要再做个实验?还有哪里不清楚?换个方法重画框图?人家为什么应该来读我的论文?这篇论文投出去是不是浪费审稿人的时间?” 这些是我们应该不断问自己的问题。

世界上本来是没有什么学问的。学的时间长了,问的问题多了,就好像有学问了。

沈向洋谈科研纠错:做好学问要“深揭猛批”沈向洋谈科研纠错:做好学问要“深揭猛批”

沈向洋博士在2002年发表的勘误

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42137700/article/details/114307114

智能推荐

java通过selenium爬取js动态渲染的页面_角谷的博客-程序员宅基地

对于一般的静态页面,我们在网页上单击鼠标右键,选择‘查看网页原代码’就能看到页面对应的html,相应的后台爬取的时候直接发个请求过去,处理返回来的页面数据筛选出我们想要的数据就可以了。但是对于vue开发的页面,我们在网页上‘查看网页原代码’的时候,只能看到一堆css、js的引用,没有页面数据,爬取的时候如果还用之前的方法就不行了。还好有selenium包的存在帮我们解决了这个问题。下面就是利用java程序,利用selenium包爬取js动态渲染网站的步骤:1、准备一个和自己浏览器匹配的驱动s

C -- string.h_揽揽的博客-程序员宅基地

c–string.h标准库:字符串查找void* memchr(const char* str,int c,size_t n); //(没有memrchr)在str的前n个字节中 搜索第一次出现c 的位置(c为无符号字符)char* strchr(const char* str, int c); //搜素 在str中第一次出现c的位置(c为无符号字符)char* strrchr(const char* str, int c); //搜素 在str中最后一次出现c的位置(c为无符号字符)ch

hive函数 -- regexp_extract_weixin_34080903的博客-程序员宅基地

为什么80%的码农都做不了架构师?>>> ...

SSM项目偷懒必备配置文件合集_mapperscannerconfigurer 文件名后缀_Fire king的博客-程序员宅基地

SSM项目偷懒必备配置文件合集:项目结构:web module下resources下的直接文件:applicationContext.xml:db.properties:log4j.properties:spring-mvc.xml:web module下的pom.xml文件:整个ssm项目的pom.xml文件:项目结构:web module下resources下的直接文件:applicationContext.xml:<?xml version="1.0" encoding="UTF-8"_mapperscannerconfigurer 文件名后缀

git学习(六):学习merge的图解_git merge 截图_copyer_xyf的博客-程序员宅基地

每天对自己多问几个为什么,总是有着想象不到的收获。 一个菜鸟小白的成长之路(copyer)​ 在最近的工作中,接触到了 git rebase git cherry-pick两个合并指令,它们跟git merge有什么不同,我一无所知。感觉还是知道的太少了。甚至,我对git merge就产生了使用的迷惑。所以,今天又来继续学习一下, git merge这个指令。正题先根据一张图,然后跟着步骤敲命令,慢慢理解merge图画的有点丑,但是大致意思应该都明白。流程开始了。1._git merge 截图

vue后台管理框架(iview + vue)_vueiview管理系统_慢半拍、的博客-程序员宅基地

iview+vue后台管理框架vue+iview后台管理框架_vueiview管理系统

随便推点

IOS-Foundation-KVO_秋恨雪的博客-程序员宅基地

本人录制技术视频地址:https://edu.csdn.net/lecturer/1899 欢迎观看。1.概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。2.使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观...

C语言 遍历桌面文件_c语言遍历桌面文件_Qode的博客-程序员宅基地

#include<io.h>#include<stdio.h>// 遍历文件void ScanFile(char *path){ struct _finddata_t finfo; long handle = _findfirst(path, &finfo); if(handle==-1) return; do { printf("%s\n"..._c语言遍历桌面文件

红米k40刷lineage-18.1_k40刷原生_南郭先生558的博客-程序员宅基地

1、参考这个下载并刷入 twrp Download twrp-3.6.0_11-0-alioth.img2、清除数据3、挂载data4、复制lineage-18.1.img5、刷入_k40刷原生

Android 内置浏览器不支持webSocket解决方案_安卓11的浏览器支持websocket吗_wabil的博客-程序员宅基地

为了实现移动客户端实时通信,拟采用安卓webview内嵌html实现方式开发app,通信则采用最新的html5新特性websocket实现。经测试,android4.0以下内置浏览器都不支持websocket特性。经过google后,发现以下方案可以解决:使用web-socket-js(采用flash实现websocket的替代方案)既然内置浏览器不支持websocke_安卓11的浏览器支持websocket吗

推荐文章

热门文章

相关标签