写给希望到本组读研、直博或进组的同学
1.1. 本组情况简介
1.1.1. 我是谁?
南京大学教授,主要在人工智能学院招收研究生。我是LAMDA实验室的一部分。
1.1.2. 本组几位导师?
目前就我自己一个人,精力有限、资源有限,所以招生规模很有限。
1.1.3. 每年招收多少研究生
预计每年招收1名直博生(一般情况下不招收已经有硕士学位的博士研究生),2名硕士研究生。
1.1.4. 那么,你将来想做什么?
如果你对这个科研组感兴趣,先得想清楚:你将来想做什么?如果没有想过这个问题的,现在是时候好好想想了(换句话说,通过本科生“进组”或者读研、读博,你想实现什么目标?)。
对照下面描述的本研究组的特点,可以自我判断一下这个研究组是否适合你。
1.1.5. 怎么申请到本组读研(直博)?
举例来说,如果想申请2023年9月入学,那么请在前一年(在这个例子里面是2022年)的5月仔细阅读LAMDA网页中文版,其中会有一个招生的链接(举例来说,2022年入学的招生信息在这里),然后按照页面的步骤进行申请。
1.1.6. 本科生怎么申请进组?
请通过email联系导师。
1.1.7. 做什么研究?
我目前的研究兴趣是资源受限的深度学习研究,以计算机视觉为主要的领域。
简单来说,我们需要的资源包括计算资源(算力、存储等),数据(如训练用的图像以及其标签)等,而深度学习模型对资源的渴求尤甚。
在算力方面:如何缩小模型大小、加快模型推理、减少显存占用?
在数据方法:如果训练数据没有标签呢?标签是错误的呢(噪声标签)?数据不均衡呢?标签不够精细呢?
主要解决在计算机视觉领域的问题,例如识别、分割、检测等。
1.1.8. 关于礼物
在顺利毕业、拿到学位证之前,请不要请导师吃饭或赠送导师礼物。毕业以后想起来,觉得导师人还不错,那时候宴请或赠送礼物倒是没有问题 :-)
1.2. 研究生
1.2.1. 学生的科研方向
相对比较自由,符合上述大方向的研究内容均可接受。
1.2.2. 组里毕业的学生都去做什么了?
最多的方向是大IT公司的研发岗位,也有去大学当教师的;有创业自己当老板的,也有去金融行业的。
1.2.3. 对学生的工作有什么要求?
自由选择,不干预。如果需要建议,可以给一些建议。
1.2.4. 会帮忙找工作吗?
目前来看,基本不需要导师推荐,特殊情况有困难的,可以。
1.2.5. 对学生实习有什么要求?
硕士研究生在有了第一篇CCF-A类论文以后,可以自主决定,在不违反学校规定(比如疫情相关规定)且不影响顺利毕业的前提下,提前通知导师以后,没问题。
硕士研究生在没有CCF-A类论文的情况下,鼓励二年级下学期开始寻找实习机会,在不影响顺利毕业的前提下(例如毕业论文写作),提前通知导师以后,鼓励实习。
直博研究生前两年不鼓励实习,两年结束后,如果博士毕业论文的方向已经选好,研究进展顺利,可以自主决定,在不违反学校规定(比如疫情相关规定)且不影响顺利毕业的前提下,提前通知导师以后,没问题。
直博研究生在计划毕业的1年半内,鼓励寻找实习机会,在不影响顺利毕业的前提下(例如毕业论文写作),提前通知导师以后,鼓励实习,如果已经确定工作单位,实习时间可以比较灵活(例如毕业前的整年)。
除此之外的情况,不是很鼓励。但是,只要研究生个人有这个愿望,并保证完成合格的毕业论文,我可以签字同意。
1.2.6. 对实习单位有什么要求?
只要是合法的单位,学生本人认为对未来的毕业、找工作有帮助的就可以,没有其他要求。
1.2.7. 会帮忙推荐实习吗?
目前来看,基本不需要导师推荐,特殊情况有困难的,可以。
1.2.8. 实习期间的论文要导师署名吗?
实习期间如果有论文产出,原则上导师不署名;一些特殊情况,例如实习单位主动有意愿要合作研究的、不署名会导致毕业困难的等,这些特殊情况需要导师投入时间、精力,参与到相关科研活动中去,需要提前和我说明。
1.2.9. 实习期间的注意事项
除了合作研究之外,请注意信息的双向保密:科研组内部没有公开发表的研究内容、进展不可以提供给实习单位;实习单位内部的信息,除了公开的信息外或者已经获批可以透露的信息,不要告知科研组。
1.2.10. 能按时毕业吗?
从目前情况来看,基本都能按时毕业。
1.3. 研究生培养
1.3.1. 本组需要什么样的基础能力?
编程、体系结构、数学、机器学习等。
- 编程能力,尤其是熟悉深度学习框架。例如,不仅仅是照着网上的tutorial创建并训练一个CNN---而是应该能够独立自主(可以看框架的文档,但不看tutorial)完成一个模型,并且对主要框架(PyTorch)的重要实现细节有所了解。
- 与编程能力强相关的一点,是对当代计算机体系结构的了解。例如,了解总线、存储、计算的相互作用,理解为什么有时候FLOPs小的模型反而运行起来更慢等。
- 数学基础。不需要面面俱到、无所不知---本科阶段的微积分、线性代数、概率论与数理统计即可。
- 机器学习等。我的《模式识别》教材(中文翻译版或英文原版),每个字、每句话认真学习,每道习题认真完成。
事实上,在我的研究生完成报送手续后,我希望他们能够好好利用大四这一年,完成上面这些基础知识与能力的积累。
1.3.2. 要培养学生什么样的能力?
每位教师对这个问题都有自己独特的答案。对我来说,
- 诸如编程这些上述的基础能力,应该是学生自己完成的。
- 导师培养的,是独立分析问题、解决问题的能力。
1.3.3. 怎么培养独立分析问题、解决问题的能力?
对于师生互动、学生培养,在我看来,最重要的场合是两个:一对一面谈,全组讨论班。
- 每周最少一次一对一面谈,针对具体的研究问题、研究思路、问题分析、方法的选择与优劣的预判等等,进行详细的探讨。
- 每周一次全组的讨论班,每次由一位同学挑选一篇论文进行讲解(论文不一定是本组研究的方向,也不一定是优秀论文,有趣即可),导师会对论文的优缺点进行点评,希望大家一起讨论,了解研究过程中常见的“坑”、不应该被录用的论文中隐藏的缺陷、某论文中隐藏的有趣方向等等。
希望本组同学能够从这些交流的过程中掌握独立分析问题、解决问题的能力,而不是仅仅着眼在对具体知识的掌握。
1.3.4. 对论文的态度
- 论文是个好东西,多多益善。学者的成果主要是通过论文来体现的,所以合格的论文应该是多多益善的。什么是合格的论文呢?见下文。
- 论文必须solid。如果研究做的不好,希望投稿“纯粹碰碰运气”,那最好不要投稿。如果论文可以认为合格,但不够solid,那么可以“碰一下运气”;如果论文甚至都不能算合格,那么不可以投稿。
- 我个人的期望:硕士在三年内有一篇合格的论文发表即可;博士至少应该有一篇solid、另外一篇合格的论文发表。
- 所以,硕士如果已经有了“合格”的论文之后,就不应该再去“碰运气”,应该做solid的工作;博士如果已经有了solid的工作,就应该做有影响力的好工作,不必追求论文数量。
- 在我的主页上,如果把我近年来发表的论文列表和学生数量进行对比,就会发现:本组发表的论文数量是比较少的,但是自信质量还是不错的。
1.3.5. 什么样的论文是合格的?
简单来说,个人认为要达到2点要求:
- 完全没有任何学术不端。抄袭(包括文字、科研想法等)完全不允许;追“热点”研究方向不鼓励,如果导师已经明确分析了某“热点方向”的缺陷之后,则不应该再进入该方向。
- 有理论或实际的贡献。贡献不需要很大,但是在某个方面实实在在地推动了领域的前沿,哪怕只是推动了一点点,那也是可以的。
1.3.6. 什么样的论文是本组看来不合格的?
已经发表(甚至是发表在CVPR等等“A”类会议)的论文不一定是合格的。不合格的论文可以表现在各种方面,不能一一枚举,其中一些典型的例子如下:
- 存在学术不端的论文。
- “调”出来好结果的论文。深度学习有很多超参数,对结果影响很大。例如,有些论文没有方法上的创新,只是扩大了参数和超参数数量,然后通过反复尝试不同的参数、超参数,通过使用测试集选择参数,获得好的结果 --- 这是非常错误的行为。本组提出的方法可以调节超参数,但是不可以使用测试集来调;同时,任何新引入的超参数都必须提供缺省值,缺省的超参数可以达不到最好的结果,但应该在绝大多数情况下工作良好。
- 特别复杂的模型。与上面一点类似,有些论文在引入相当多超参数的同时,系统结构变得异常复杂,对于理论或算法层面的研究,在本组这是不允许的,必须尽量简化模型;对于特定领域的具体应用(即直接偏向“落地”的研究),模型是可以复杂的,但模型、方法除了在论文中的benchmark数据上效果好之外,还必须在实际应用中有效,才算合格的论文。
- 重复研究的论文。举例来说,在深度神经网络的filter pruning(滤波器剪枝)领域,反复提出”新“的滤波器的重要性估计准则,但想法并无大的创新,效果也没有突出的提升,那么这样的论文并不合格。
- 名实不符的论文。同样以filter pruning来举例,在有残差连接(residual connection)的情况下,仅仅对残差内部的滤波器进行剪枝,会导致:虽然看上去剪枝的比例很高,FLOPs也很小,但是模型的实际运行速度并没有多少提升(为什么?这里需要一些体系结构的知识)。如果在跑程序的时候观察到这个现象,但是为了能够发表论文故意隐瞒,那么这是严重不合格的。事实上,导师希望能够培养这样的能力:哪怕是在硬件上跑程序之前,就应该能够推导、分析出来,这样的CNN网络的实际运行速度不会快(再举一个例子,为什么DenseNet的运行速度会比较慢?当然DenseNet在某些问题上的效果是好的)。
1.3.7. 本组鼓励什么样的论文?
什么样的论文是”好“的?每个人对这个问题都会有各自独特的答案。本组鼓励下述solid的论文(不完全列表,但是可以根据其中的精神自行推广)
- 总的来说,研究的内容必须有价值,有理论、算法、应用任一方面的价值。有些研究(包括有些论文)其实价值是比较低的,并不值得投入时间和精力。至于怎么判断某个研究课题的价值(或者说培养科研品味),这应该是导师培养学生的一个极其重要的方面。
- 实际效果好。针对具体的问题,不是仅仅在benchmark上”调“的效果好,要在实际应用中效果确实好。
- 应用范围广。针对算法层次的问题,应该能够比较广泛的获得有效的应用,例如适用于大多数的网络结构、适用于大多数的视觉问题(识别、检测、分割、单标签、多标签、有监督、无监督...)
- 提供新视角。针对某大类问题,提供全新的视角(当然,有新算法、新应用更好)。例如,CNN为什么能做到泛化能力(generalization)很高?我们提出了一个Tobias,发现:哪怕是仅仅随机初始化、没有经过任何学习的CNN,都可以一定程度上发现、定位物体。
- 指出共性问题。例如:某问题的假设(或某数据集的假设)错误或已经过时,某问题的通用评价准则错误,等等。
- 开创新领域。当然,是新的子问题或子领域,我没有奢望过颠覆整个领域。
本组很少从事理论工作,所以上述举例没有理论方面的例子,但是,
There is nothing more practical than a good theory.
所以,本组也完全欢迎研究生进行理论方面的探讨。(顺便说一句,什么是good theory呢?)
1.3.8. 看上去发论文的要求挺高,那找工作怎么办?
- 是的,如果一个东西足够新,那论文被拒稿的可能性实际上是增大的,而且论文的数量也会比较少。这是一个实实在在的缺点 --- 即便导师不需要论文的数量,学生的论文数量往往是和找工作时候package的大小正相关的。
- 现在国家在进行改革,研究生根据毕业论文的质量决定能否毕业,不再强制要求发表论文的等级和数量。所以,从这一点上来说,如果做的是合格甚至solid的工作,毕业完全没有问题。
- 有一些单位,HR给offer的时候确实是数论文数量给package的,这方面本组的学生确确实实是受到一些不利影响的,因为我的风格,本组学生在读期间论文数量确实不多。
- 但是,根据到目前为止毕业生找工作的实际情况来看,这个影响比较小。没有人找不到工作,拿到的offer还都比较满意;而且本组的学生,能力培养都是很好的,工作以后的反馈比较正面。
- 所以,如果希望发很多paper拿一个好offer,那确实和本组不匹配。
1.3.9. 论文被拒稿了怎么办?
基本上,论文被拒稿对绝大多数人来说都是家常便饭(包括图灵奖得主)。只要不是因为学生自身行为不当的原因(例如弄虚作假、剽窃抄袭等),在本组论文被拒绝不会有来自导师的压力(最多师生一起骂骂审稿人,舒缓一下心情)。
1.4. 本科生培养
1.4.1. 上面说了很多研究生,那本科生怎么培养呢?
本组对本科生的培养遵循和培养研究生一样的思路:先打基础(上面说过4点基础)、同时参加本组讨论班,在导师确认基础扎牢之后逐渐进入一些简单的科研。
1.4.2. 导师会催着“进组”的本科生科研进度吗?
完全不会。所以本组的本科生科研进度完全依赖自觉性。实际上,由于时间和精力方面的限制,导师无法保证本科生的每周面对面讨论。
1.4.3. 本科生能发论文吗?
似乎不能。本组到目前为止有2位本科生发表了论文(都是CCF-A类);其中一位是在实习单位导师指导下完成的(后续跟随实习导师读研),另一位是自己独立完成的,我给予了一些指导;这两篇论文我都没有署名。
也就是说,如果一位本科生想发一些好paper有助于申请著名海内外高校的博士,那么本组是不适合这个需求的。
从另一方面来说,上述两位有论文发表的本科生同学也都认为,在本组期间的基础与能力培养确实有助于他们发表论文,所以,本组欢迎有这方面目标的本科同学申请。
1.4.4. 本科生进组以后能在本组读研(直博)吗?
It depends. 到2021年为止,有2个先例,这个比例不算高也不算低。关键是看本科生同学在进组之后,表现出来的基础、能力,以及对科研的兴趣与热情。