赵鑫教授:科研入门的一些经验分享

赵鑫老师建议,在本科阶段,需要把一门门专业课拼起来,对于核心基础课、专业课,去阅读经典教材和经典教学视频,是非常有必要的。结合个人经历,他强烈建议大家,在本科阶段首先要把专业课程学好,比较关键的一个学习方式就是广泛阅读,特别是可以在网络上找到非常多的有用的学习资源。此外,赵鑫老师还为同学们列了一些有关计算机理解、算法程序的经典教材,这些经典教材不一定在授课过程中使用,但对于个人能力提升是非常有帮助的。

3、如何高效应对考试?

4、有哪些适合本科阶段开展的活动?

总结:理想的本科阶段应当怎样度过

一个理想的本科阶段应该是一段奋斗的回忆,让人回想起来热泪盈眶(为自己的成长而感动)。整体上来说,本科阶段要建立信心,以提升自己的学习能力,进入本科阶段,就没有固定的老师了,因此赵老师建议同学们要树立一个观点:靠自己是最靠谱的事情,不要总期望别人会主动来帮你,要勇敢走出去,多和别人请教。此外,他还建议不要去尝试太多的事情,如果分心太多,最终反而做不好重要的事情。

Part2科研准备阶段的Q&A

Q1、本科阶段一定要科研吗?

Q2:成绩不好,科研是不是没有优势

尽管越来越多的人不愿意唯成绩而论个人能力,成绩仍然是个人能力的重要体现之一。即使有些同学并不喜欢考试这种驱动形式,也应该认真对待考试,这其实是一个人能力和态度的体现。一个优秀的人,不管面对什么事情,只要他觉得这个事情重要,就有能力做的很好,这是本科阶段应该培养出来的自信心。

Q3:我很聪明,科研一定没问题吗?

Q4:我代码不好,所以是不是没办法科研

Q5:科研就是发论文吗?

“科研就是发论文”是很大的一个误区。赵鑫老师建议本科阶段不要太着急去发论文,希望大家正确对待发论文,要努力去做这件事情,但不要让它束缚你。本科阶段要不功利地去做科研,大四保研后,应该抱着想把事情做好的心态做科研。

Part3如何做科研

一、科研入门

首先要有科研方向,选题需要对一个领域有很深的积累,如果是一二年级的同学,建议和老师去聊,让老师帮忙指定一个方向。另外,如果大家后来慢慢读了一些论文,可以去看当前最顶级的研究机构做些什么,follow领域内顶级的研究机构和学者,在前期的研究中基本上问题不大。做科研比学课程要难很多,基本没有教科书可以参考,你能做的就是通过论文去查找,对本科生来说,这是一个很难的事情,所以大家需要做的事情就是把领域内最好的会议列表整理,知道目前顶级会议研究的方向。

如何做模型,编程和数学是人工智能专业和计算机专业的同学需要具备的两大能力。任何操作如果要想让计算机做,都必须通过数学模型形式化。所以前期学的数学、机器学习等课程非常重要,后面的自然语言处理、信息检索、计算机视觉都需要有一定的数学基础,建议大家认真学习这些课程。对于人工智能专业的同学,“不做理论只做应用就不用学习机器学习”,这种观点是不正确的,绝大部分的应用研究都需要机器学习,可能用的方式不一样。我建议,如果你对数学特别感兴趣,可以往理论偏一些,如果对数学没那么感兴趣,就往应用偏一些。

然后就是去设计实验,这里面会涉及到数据集合的划分、评测指标的制定、对比方法的选取,大家现在看起来细节很多,但是不用害怕,只要能找到若干篇论文,去参考这些部分,设计实验相对来说是比较容易的事情。

如何写论文?做科研,写作是非常重要的。论文写作和类似托福、GRE考试的写作能力关系不是很大,整体上句式是非常固定的,唯一很困难的是要有很强的逻辑驱动,写论文特别像法庭上的辩论,要证明你的工作是有意义的,引导他人去阅读。

二、日常内功修炼

关于日常内功修炼,赵鑫老师建议大家在日常学习过程中要注重以下三个方面:

1.读论文

最直接提升科研能力的一个方式就是读论文。如果要把科研做好,本科阶段一定要学会一个事情就是找论文、查论文、读论文,并且能保证持续不断的读论文。早期做科研谈创新其实有一点不切实际,但是模仿创新是容易做到的,这需要有一定的论文积累。什么叫做把论文给读透?赵鑫老师列出来一些标准:记住作者的名字、记住题目、能够很容易地说出这篇论文的毛病和贡献、能够很容易说出和这篇论文很类似的若干篇论文、能够很容易说出这篇论文的技术和实验细节、能够想到这篇论文在自己的研究题目下面该如何应用。比如当你读了100篇论文的时候,在脑海里面有一张论文逻辑图,会产生联想,能串成体系。去证明是否读懂一篇论文的方法,就是能把论文的代码复现出来,这就证明你真的读懂了,否则可能就是还有很多细节并不知道。

2.机器学习

3.写代码

给研究生同学的一个目标:

*熟练掌握一门编程语言

快速完成一个模型的主干框架开发

*熟悉基本的机器学习基础

可以用白板给大家推公式

*能够快速解决本领域的之前自己未做过的任务

容易上手自己之前未做过的任务,保持开放心

研究生的精髓贵在“独立科研”

*能够带领低年级同学做科研

带领别人做科研是自己能力强悍的综合体现

三、常见科研误区

最后,赵鑫老师建议大家避免以下科研误区:

误区1:顶会、顶刊的论文就是好

A类会议的论文未必一定比B类会议的好,选择论文、读论文一定要带有批判性,要抱着怀疑的态度,没有工作是完美的,不要盲目相信和沿用别人的东西。

误区2:SOTA一词的乱用

SOTA代表着目前最好的技术水平,目前工作里,绝大部分的工作还达不到SOTA,取得了微小提升不能叫做SOTA,建议初学者不要乱用。

误区3:调调参数总能找到好的结果

做神经网络的同学经常会遇到调参数,跑大量的实验,调参确实需要耐心和技巧,但是好的模型不应该提升的很“艰难”。完全黑箱调参在深度学习时代仍然不推荐,提前感知和预判模型结果更为重要。如果有一组参数效果很好,但是其他组参数都不太好,通常情况下是出现错误或者是意外发生,需要高度注意。

误区4:把模型弄得过于复杂

不建议为了复杂而复杂,而是想办法提取核心创新性

误区5:不清楚自己到底解决了什么问题

建议所有初学者,在投稿前都问一下自己,到底在这个工作中解决了什么问题,技术创新是什么,别人读了会有什么收获。切忌编造问题。

THE END
1.终于有大牛把《数据结构与算法》讲透了,附源码笔记这份PDF阅读体验肯定是要比公众号和各大的博客平台的文章要好的。PDF内容为纯手打! 话不多说,先看目录 需要完整版笔记的老铁点此获取 下面简单介绍一下八大基础排序和基础的数据结构,每种排序的思想和基础的讲解和源码在PDF里边有。 数据结构与算法学习文档及笔记 https://zhuanlan.zhihu.com/p/567419989
2.数据结构和算法一定要背算法的代码嘛但是如果一个人自己跑几个模型例子就声称自己可以做算法并且十分反感写代码的话,那他在算法领域也不会有很好的发展。 除非,你是一个算法造诣非常高的天才并且能够胜任算法科学家的人。 否则,请不要欺骗自己,认真培养你的算法能力和工程能力,毕竟你的目标还是一个合格的算法工程师。 https://blog.csdn.net/weixin_39967405/article/details/111279063
3.算法一定要用计算机程序实现吗?程序必须用规定的程序设计语言来写,而算法很随意。一个算法可以用不同的编程语言编写出不同的程序。程序并不都满足算法所要求的特征,例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。程序=数据结构+算法。数据结构与算法要通过程序的实现,才能由计算机系统来执行。所以,并不是所有的https://zhidao.baidu.com/question/2149819650965762628.html
4.30了,程序员中的老司机们,30后的路该开向哪里?擅长什么,不要放弃。擅长工程,就不要眼红人家搞算法的。坚持到底,路才能更宽,走得更远。 左:打工赚钱? 右:创业冒险? 当技术积累到一定程度的时候,大部分人都会技痒难耐,考虑创业。原因有几个: 给别人写代码,期权从几千股到几万股, 比例从毫不知情到万分之几、千分之几就不错了。自我感觉很好,但并不是https://36kr.com/p/1721857474561
5.GitHubCoding4Real/leetcodePDF版本:「代码随想录」算法精讲 PDF 版本。 最强八股文::代码随想录知识星球精华PDF 刷题顺序: README已经将刷题顺序排好了,按照顺序一道一道刷就可以。 学习社区: 一起学习打卡/面试技巧/如何选择offer/大厂内推/职场规则/简历修改/技术分享/程序人生。欢迎加入「代码随想录」知识星球。 https://github.com/Coding4Real/leetcode-master
6.探秘写了一百万行代码是什么体验?腾讯云开发者社区探秘| 写了一百万行代码是什么体验? 搞程序的累计写到一百万行代码到底是什么体验呢? 如果一百万是标量的话,来和大家研究一下这个数据,假设最好的情况,一天100行高质量代码,一年36500,100/3.65=27年多。即便从20岁开始编码,要到50岁左右方可完成。但实际上关于平均代码量的问题,即便把所有工作日都算上,大概也https://cloud.tencent.com/developer/article/1085550
7.编程中,有哪些好的习惯从一开始就值得坚持?只有先做到这一点,你才能把代码写简单,才能让人一眼看出意图、明显没有缺陷。 把很简单的程序搞复杂、搞的没人能懂,这很简单——不妨搜一下“C 语言混乱代码大赛”。 但把很复杂的功能写简单、写的让人一眼看懂、而且很确定“这里明显没有错误”,反而需要极深的功底。 https://maimai.cn/article/detail?fid=1704779105&efid=OhUNp8oeLY-b-crWXJxV2w
8.从事程序员14年,我总结了8条宝贵的编程实战经验优设网快速获得精准反馈:开发者每次调整代码后,能通过自动化测试快速获得结果反馈; 零成本试错:写出的代码语法有错误、逻辑有问题,没有任何不良后果,心理负担小。 不过,屏幕前的你很可能觉得我在说些废话。 “不然呢?解算法题、写小脚本,不就是这样的体验吗?有啥特别值得说的?”你很可能会继续补充道,“你知道我们公司https://www.uisdc.com/8-programming-experience
9.求职求助面试java岗用c++写代码可以吗本人一直是用c++写算法题的,但之后找工作估计是java后端,所以突然想到了这个问题o(╥﹏╥)o0 收藏分享 回复讨论接收动态 共4 个回复最热小约翰可汗 来自湖北 2024-04-15 可以但没必要,建议不要这样,可能面试官当场不介意你这么搞,能做出算法题特别是高难度一些的就证明你很优秀。但是吧面试官可能会觉得你Java基础https://leetcode.cn/circle/discuss/4L2prB/
10.代码规范指南java,代码规范说明(8).不允许把多个短语句写在一行中,即一行只写一条语句。 (9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 注:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释。 2、注解 Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗?是两种? http://www.cxhlcq.com/article/heoges.html
11.php学习心得范文(通用14篇)搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。 https://www.yjbys.com/edu/PHP/471525.html
12.入行14年,我还是觉得编程很难:给大项目写代码没意思还危险1写代码很简单,但写好代码很难 编程曾经是一项门槛很高的专业技能。从前,一个普通人想学编程,最常见的做法就是通过教材和书本学习。不过大部分编程专业书,十分艰深晦涩,对于初学者来说很不友好。因此不少人在尝到编程的乐趣前,就早早地半途而废。 但如今,学编程正在https://www.elecfans.com/d/2016881.html
13.多吹牛,少写代码–四火的唠叨可是,这真的 “正确” 吗? 来看看所谓的软件工程师的基础素质里面,写代码占了多大的比重?沟通、合作、学习,问题分析、解决,系统设计、算法,代码实现、测试、ops……到底有多少部分是 “写代码” 的? 如果我们把写代码看做软件的具体实现,那么,为了能写代码,有很多工作要做;而在写代码之后,也有很多工作要做。https://www.raychase.net/6634/
14.几个对程序员的误解,害人不浅!51CTO博客进了公司后我才发现,真正写代码的时间很少,像前期的需求评审、跟产品 Battle 啊、方案设计、技术选型啊、沟通、资源协调更重要,也往往更花时间。在你想清楚要不要写代码、怎么写代码后,再去写代码,那时你会发现只不过是一种翻译工具而已。 而且就我观察下来,一般职级越高、工资越高、能力越强的人,写的代码反而https://blog.51cto.com/u_13626762/5377111
15.学图论,你真的了解最短路吗?这就好比是走迷宫,你沿着一条路要一直走,直到遇到死胡同才返回 通常采用邻接矩阵存储,有权无权都可以处理,可以处理负边权,但不能处理负环 简单来说就是从一个点出发,递归+回溯遍历每一条与它相连的边,到达每个点,更新最短路 虽然代码很好写,但是极容易超时,请谨慎食用此算法 https://www.luogu.com.cn/blog/FrozaFerrari/xue-tu-lun-ni-zhen-di-liao-xie-zui-duan-lu-ma-post