高中和大学的区别在哪里?
什么样的知识是有用的?
大学阶段需要学习什么?
科研入门需要做哪些准备?
大学时期与高中阶段的学习有非常大的不同,那么在大学该如何学习与科研?针对同学们关心的系列问题,近日,中国人民大学高瓴人工智能学院赵鑫老师,为本科生同学带来了“本科科研入门经验分享”的精彩讲座,分享了本科阶段的学习重点、科研入门准备及日常内功修炼等科研经验,内容丰富、干货满满,令同学们受益匪浅。
Part 1 本科阶段如何学习
1、什么知识有用、需要学习呢?
高中的学习内容主要围绕高考展开。因此,大学和高中有一个很大的不同,就是参考书没有界限,任何一门科目,如果放宽去学,都能学得很广、学得很深,而这不一定是考试所驱动的。有很多同学上大学之后,明显感觉学习有些吃力,一个很大的原因就是原来经常刷题,知识点都是固定的,但是到大学可能发现没有任何一本教科书能把所有知识点都覆盖。这样决定了很多同学从高中过渡到大学的时候,会有一段不适应的时间,所以要尽量去摆脱高中刷题的行为,包括后面做科研,其研究范围更是非常广泛的。
2、寻找有价值的经典书籍
赵鑫老师建议,在本科阶段,需要把一门门专业课拼起来,对于核心基础课、专业课,去阅读经典教材和经典教学视频,是非常有必要的。结合个人经历,他强烈建议大家,在本科阶段首先要把专业课程学好,比较关键的一个学习方式就是广泛阅读,特别是可以在网络上找到非常多的有用的学习资源。此外,赵鑫老师还为同学们列了一些有关计算机理解、算法程序的经典教材,这些经典教材不一定在授课过程中使用,但对于个人能力提升是非常有帮助的。
3、如何高效应对考试?
这也是一个比较好的问题,赵鑫老师提到个人经验,会在平时多去自习打好课程内容的学习基础(不局限于课本内容),然后选择在考试前期抽大量密集的时间看教科书或老师规定的考试范围。但整体上来说,这些复习还是为考试准备的,他希望大家的学习不应只是为考试去服务,因为现在所学到的东西,很有可能在某一天成为你未来科研或工作的能力铺垫。
4、有哪些适合本科阶段开展的活动?
本科阶段可做的事情很多,因此要学会选择。赵鑫老师建议两点,一是参加算法竞赛,二是做科研。如果是计算机系或是人工智能专业,特别建议大家去参加一下ACM竞赛。赵鑫老师提到,自己在读本科时,由于高中前没有接触过计算机,有过一段非常“痛苦”的适应阶段,学习的难度甚至让他对于所学专业产生了动摇。最后能够坚持下来,主要是做了两件事情,一是花了大量时间练习,二是比较愿意去向同学去请教。分享这一经历,是想告诉大家编程能力是可以提升的,希望大家不要压力太大,即使不太擅长编程,也可以做科研。赵老师鼓励大家多做尝试,摸索自己的兴趣,在本科阶段一定要找到一两项可以全力以赴的事情,比如算法竞赛、做科研等,“目前为止,这是我认为两项比较有意义的事情”。
总结:理想的本科阶段应当怎样度过
一个理想的本科阶段应该是一段奋斗的回忆,让人回想起来热泪盈眶(为自己的成长而感动)。整体上来说,本科阶段要建立信心,以提升自己的学习能力,进入本科阶段,就没有固定的老师了,因此赵老师建议同学们要树立一个观点:靠自己是最靠谱的事情,不要总期望别人会主动来帮你,要勇敢走出去,多和别人请教。此外,他还建议不要去尝试太多的事情,如果分心太多,最终反而做不好重要的事情。
Part 2 科研准备阶段的Q&A
Q1、本科阶段一定要科研吗?
“我建议一定在保证课程学习质量是第一位的情况下,再去开展科研,不要太着急。”因为课程本身也是在做科研,当你学习一门课程不再局限于教科书,主动去看教学视频,研究课后题,都属于做科研。所以希望大家一定要把本科生设置的专业课,当做科研的一个起点。如果学有余力的话,建议可以较早开始科研。赵鑫老师建议的一个学习进度是:大二上学期去旁听组会,学习一些教材,潜移默化感受科研氛围;大三下学期当基本确定保研后,这时要多拿出一些时间做科研,整个大四可以理解成研究生的预科班,所以建议学有余力、不耽误考试的同学早一点开始科研,特别是把寒暑假、开学初这段时间利用好。
Q2:成绩不好,科研是不是没有优势?
尽管越来越多的人不愿意唯成绩而论个人能力,成绩仍然是个人能力的重要体现之一。即使有些同学并不喜欢考试这种驱动形式,也应该认真对待考试,这其实是一个人能力和态度的体现。一个优秀的人,不管面对什么事情,只要他觉得这个事情重要,就有能力做的很好,这是本科阶段应该培养出来的自信心。
另外,成绩好不好和科研好不好,目前来看没有很明显的直接因果关系。科研比较适合慢热型的同学,学东西不见得要快,但是心态好、持久力强,愿意花时间去做科研。但考试不一样,在有限的复习时间内,谁复习的多、复习的快,成绩就会更好些,但科研不是,它有一个特别漫长的周期。
Q3:我很聪明,科研一定没问题吗?
第一,绝大多数人智商之间没有什么明显差异,没有人会比另外一个人聪明很多。第二,科研和智商没有特别强的关系,要花特别长的时间、付出持久的努力才能取得成功,不太可能一蹴而就。大家都会觉得科研是挺有意思的一个事情,其实不是,科研很苦很累,中间有很多的不确定性,还会遇到很多次失败。
Q4:我代码不好,所以是不是没办法科研?
早期做科研往往是基于前人工作进行拓展,在别人的起点上去做一些拓展,不需要从头去盖房子。所以没必要把所有的代码都搞懂,你所关注的方向已经有很多优秀的代码,完全可以通过他们去学习。所以,做科研和代码能力没有太大的关系,相反来说,思考的深度、积累的广度其实更为重要。所以大家如果觉得现在写代码是很大的一个障碍,也不用担心自己做不了科研。不过,代码能力对于早期的科研学习也比较重要,如果觉得确实不足,需要多花时间补充学习。
Q5:科研就是发论文吗?
“科研就是发论文”是很大的一个误区。赵鑫老师建议本科阶段不要太着急去发论文,希望大家正确对待发论文,要努力去做这件事情,但不要让它束缚你。本科阶段要不功利地去做科研,大四保研后,应该抱着想把事情做好的心态做科研。
还有同学会纠结自己是不是真的对科研有兴趣、适不适合做科研,赵鑫老师分享了个人的感受:“我们生下来对什么可能都是未知的,那么是怎么产生的兴趣呢?是你的时间和投入。只要不讨厌、不反感,大部分事情做多了就会产生兴趣。”这是为什么呢?当你全力以赴去做一件事情,就和这个事情有了关联,慢慢就会喜欢上它,所以大家不要太在意所谓的“兴趣”。赵老师认为,这点不光是在做科研,包括人生也是一样,同学们今后会有很多需要做出选择的时刻,如保研去哪个学校?选哪位老师?迷茫时,请记住一句话:只要你自己是真正努力,也愿意全力以赴,不管选择什么方向,之后一定都会做出非常优秀的成绩。
Part 3 如何做科研
一、科研入门
首先要有科研方向,选题需要对一个领域有很深的积累,如果是一二年级的同学,建议和老师去聊,让老师帮忙指定一个方向。另外,如果大家后来慢慢读了一些论文,可以去看当前最顶级的研究机构做些什么,follow领域内顶级的研究机构和学者,在前期的研究中基本上问题不大。做科研比学课程要难很多,基本没有教科书可以参考,你能做的就是通过论文去查找,对本科生来说,这是一个很难的事情,所以大家需要做的事情就是把领域内最好的会议列表整理,知道目前顶级会议研究的方向。
如何去找参考文献,现在很多同学还不太适应去检索英文文献,可以考虑从正规期刊上发表的一些中文综述入手,还可以借助网络平台找到相关的英文论文。判断一篇论文值不值得读,有一个比较直接的方法是用谷歌的学术引用判断其权威性。还可以从顶级会议期刊上去找论文,读优秀研究人员的所有论文。
如何读文献,本科生读第一篇参考文献的时间不要太乐观,如果全读懂至少要1-2周的时间。正常来说,一篇文献不是一个完全自包含的工作,文献的前面会介绍大量相关工作,分析前人不足和论文的创新性,所以你会发现读懂一篇文献可能要读10余篇论文,这是非常正常的事情,大家不要畏惧。建议开始做科研的同学,让老师推荐领域内最经典的一篇论文,花大概半个月甚至一个月的时间把这篇论文读懂,这是很值得的一个事情。把这一篇论文读懂,你对这个领域就有一定的积累,后续相关论文读起来就会非常快。此外,任何一个研究方向,都有一些不认识的生僻词汇,要去积累领域词汇。
如何做模型,编程和数学是人工智能专业和计算机专业的同学需要具备的两大能力。任何操作如果要想让计算机做,都必须通过数学模型形式化。所以前期学的数学、机器学习等课程非常重要,后面的自然语言处理、信息检索、计算机视觉都需要有一定的数学基础,建议大家认真学习这些课程。对于人工智能专业的同学,“不做理论只做应用就不用学习机器学习”,这种观点是不正确的,绝大部分的应用研究都需要机器学习,可能用的方式不一样。我建议,如果你对数学特别感兴趣,可以往理论偏一些,如果对数学没那么感兴趣,就往应用偏一些。
然后就是去设计实验,这里面会涉及到数据集合的划分、评测指标的制定、对比方法的选取,大家现在看起来细节很多,但是不用害怕,只要能找到若干篇论文,去参考这些部分,设计实验相对来说是比较容易的事情。
如何写论文?做科研,写作是非常重要的。论文写作和类似托福、GRE考试的写作能力关系不是很大,整体上句式是非常固定的,唯一很困难的是要有很强的逻辑驱动,写论文特别像法庭上的辩论,要证明你的工作是有意义的,引导他人去阅读。
二、日常内功修炼
关于日常内功修炼,赵鑫老师建议大家在日常学习过程中要注重以下三个方面:
1. 读论文
最直接提升科研能力的一个方式就是读论文。如果要把科研做好,本科阶段一定要学会一个事情就是找论文、查论文、读论文,并且能保证持续不断的读论文。早期做科研谈创新其实有一点不切实际,但是模仿创新是容易做到的,这需要有一定的论文积累。什么叫做把论文给读透?赵鑫老师列出来一些标准:记住作者的名字、记住题目、能够很容易地说出这篇论文的毛病和贡献、能够很容易说出和这篇论文很类似的若干篇论文、能够很容易说出这篇论文的技术和实验细节、能够想到这篇论文在自己的研究题目下面该如何应用。比如当你读了100篇论文的时候,在脑海里面有一张论文逻辑图,会产生联想,能串成体系。去证明是否读懂一篇论文的方法,就是能把论文的代码复现出来,这就证明你真的读懂了,否则可能就是还有很多细节并不知道。
2. 机器学习
机器学习是我们学院的数学基础课,建议大家在本科阶段能够系统的学习一本机器学习的书,如果有些东西很难推导,现在也有很好的学习条件,像有些在线课程把推导的note都分享出来,里面都写的非常清楚,所以说书本上的知识如果看不懂,你完全可以在公开的网络上去找到推导过程。对于偏应用的同学来说,我觉得非常重要的一个事情是要以代码实现为最终掌握的标准,有些想法很巧妙,但是落到实际应用上不是那么容易的一个事情。
3. 写代码
必须掌握一门代码语言,一开始大家都很迷茫,从哪里去提升自己的代码能力。赵鑫老师觉得一个比较好的办法是:去找领域内经典的一篇论文,经典论文里的代码肯定不止一个人写过,把这些经典代码都找出来,系统的去看高质量的代码。有很多人已经做了非常优秀的工作,要向这些人去学习,不要自己从头造轮子。人工智能专业的同学,包括计算机相关方向做算法的同学,要具备两个核心能力:要学好算法编程和机器学习。
给研究生同学的一个目标:
*熟练掌握一门编程语言
快速完成一个模型的主干框架开发
*熟悉基本的机器学习基础
可以用白板给大家推公式
*能够快速解决本领域的之前自己未做过的任务
容易上手自己之前未做过的任务,保持开放心
*能够独立发表一篇相关论文
研究生的精髓贵在“独立科研”
*能够带领低年级同学做科研
带领别人做科研是自己能力强悍的综合体现
三、常见科研误区
最后,赵鑫老师建议大家避免以下科研误区:
误区1:顶会、顶刊的论文就是好
A类会议的论文未必一定比B类会议的好,选择论文、读论文一定要带有批判性,要抱着怀疑的态度,没有工作是完美的,不要盲目相信和沿用别人的东西。
误区2:SOTA一词的乱用
SOTA代表着目前最好的技术水平,目前工作里,绝大部分的工作还达不到SOTA,取得了微小提升不能叫做SOTA,建议初学者不要乱用。
误区3:调调参数总能找到好的结果
做神经网络的同学经常会遇到调参数,跑大量的实验,调参确实需要耐心和技巧,但是好的模型不应该提升的很“艰难”。完全黑箱调参在深度学习时代仍然不推荐,提前感知和预判模型结果更为重要。如果有一组参数效果很好,但是其他组参数都不太好,通常情况下是出现错误或者是意外发生,需要高度注意。
误区4:把模型弄得过于复杂
不建议为了复杂而复杂,而是想办法提取核心创新性
误区5:不清楚自己到底解决了什么问题
建议所有初学者,在投稿前都问一下自己,到底在这个工作中解决了什么问题,技术创新是什么,别人读了会有什么收获。切忌编造问题。
(以上内容根据赵鑫老师本科生科研入门讲座实录整理,为个人观点。)
检测到您当前使用浏览器版本过于老旧,会导致无法正常浏览网站;请您使用电脑里的其他浏览器如:360、QQ、搜狗浏览器的速模式浏览,或者使用谷歌、火狐等浏览器。
下载Firefox