Skip to content

IIC 科研经历 SDU -> UCAS ICT

简言

IIC 实验室是山大计算机学院目前最大的实验室,其中的研究方向也比较多,有边缘智能,区块链,智能安全等,方向都比较硬核,对于本科生而言出成果的话并不是那么容易,需要有坐冷板凳的准备。另外建议选择导师的时候尽量通过调研的方式选择比较"厉害"的导师,不管是从帽子还是近几年 google scholar 上做好判断,避免进实验室成为免费劳动力。下面我会从我认识到的关于科研的几个方面来告诉学弟学妹们我从 2023.10 到目前为止在 IIC 实验室进行分布式学习方向科研的一点个人总结。

实验室研究方向

为什么要做科研?

  • 理论和实践的结合
  • 提前了解自己是不是真的喜欢这个方向
  • 为将来的读研读博做准备

成绩不好可以科研吗

科研和 GPA 没有直接关联。有关联的是,基础知识、编程能力、思维能力、强烈的学习动力等。尽管很多人吐槽 GPA,但是我想,GPA 能够反映出上述的部分能力。当然,我见过很多厉害的同学,GPA 不高,但是其他能力真的很强。所以结论是,不要将成绩与科研绑定,而是看自己的核心能力是否真正具备了开展科研学习的基础。不要因为成绩低就妄自菲薄,放弃了尝试科研的机会。

进组联系导师环节

对于计算机学院,非泰山学堂的同学而言,一般是自己联系给自己上课的导师比较好,在这里我要具体说一下,在上课的时候给本科生画饼做科研的老师请慎重,很可能进去干脏活当免费劳动力。联系导师之后很大可能是组内硕士 or 博士来指导你,这个时候就要自己把握一下了,如果这些硕士或博士本身就有严峻的毕业问题的话,那你也很有可能沦落为干活工具,因此功利性而言,一定要找那些科研能力到位的硕士或博士来指导你,如果这个条件都没有,建议赶紧跑路换导师,但是即使是同一个组内的博士硕士,方差也极其的大,所以在第一关,找指导你的人这方面要自己斟酌,不要到头来保研或是考研的时候仅仅只有一个科研经历,毕竟这个经历非常难以量化,参差不齐,因此尽量寻找 Pub 较强的师兄师姐来带你,避免大一就进组,结果快毕业了什么成果都没有的情况出现。

制定具体目标

进入相关的实验室之后,一定要多和老师师兄师姐常保持联系,实际上指导你最多的是那些博士生们,除非你跟的老师是新来的 AP 之类或是正处于上升期,对自己都很 PUSH 的导师 ( 这种情况可以通过查看这些老师们的 google scholar 来进行判别 ) .

  • Casually: Sightseeing,就是随便看看,打打酱油
  • Seriously: 学会某个领域的知识、模型和技能
  • Independently: 独立完成至少一次完整的科研训练

参与科研的几种方式

  • 跟着师兄师姐从 Baseline 开始做起
  • 老师给题目,技术路径,自己主要做实验
  • 自己想 idea,让老师评估

方向的选择

鉴于当下计算机方向过于众多,因此对于本科生科研而言,选择一个可以快速出成果的方向来帮助自己取得保研资格或是留学或是夏令营中体现竞争力都至关重要。

  • AI 类

多模态相关,LLM 相关,推荐系统相关,具身智能。

这类方向的特点是出论文速度很快,基本上 idea work 的话很快就可以写出一篇 paper,而且可投稿的会议也肯多,如果被拒之后可以马上无缝衔接下一个会议,例如今年 1 月的 ICML,3 月的 IJCAI,5 月的 NIPS。但是,这些方向由于过于火热,因此非常非常卷,想做缝合怪去这些顶会上抽奖的操作基本上都会被无情拒绝,这就要求尽可能的做到 SOTA。总结:方向很好,但需要持之以恒的付出。

  • System 类
  1. 相比于 AI PhD,对于 System PhD 来说,最大的转变是要学会全盘掌握,并 Lead 一个项目。很多 Sys PhD 本科的科研经历说是科研经历,但更多的其实还是更像一个 SDE。这也是因为 Sys 的 research 工作量大,牵扯到的知识面广,本科生写好代码已经占据了很多精力,更上层的产生关键 research insights 的地方本科的科研锻炼大多数人其实都很匮乏。
  2. Sys PhD 非常容易陷入时间陷阱,尤其是很多同学代码能力较强,更容易陷入疯狂 Coding 的循环,看似对自己的项目改了很多代码,但其实并没有从更高层次的 design/符合 system community 审稿所需的东西来推进
  3. 学会心态调整,对 95% 以上的 sys phd 来说,前 2-3 年都会非常挣扎,不要光盯着 rising star 自惭形秽,很多东西远不是努力所能控制的。但是你努力不算优势,不努力就是劣势。重要的是通过老板/合作者让自己进入正确的改进 2 里面需要的点的良性循环。在没人帮全靠自己悟的情况下毕业时有一篇 OSDI/SOSP/NSDI/Eurosys/ATC 已经可以被认为是一个 independent researcherr 了。

system 类对于本科科研而言,并不推荐,因为太难了,不管是从学习的成本还是投稿的成本都太难了,一些系统领域的顶级会议的接受率基本上只有 10% 左右,印象中有一年的网络顶级会议 NSDI 的接受率只有 8%。因此对于本科科研,完全不推荐系统方向。当然,如果对于 paper 并没有那么执着,只是想着在 Real-world setting 下做出一些 infra 的改进,我认为 system 是能够很好的提升你的工程能力以及代码能力的,这对计算机专业的学生同样也是重要的收获。

  • Theory 类

计算机中的数学,是最最最最最难的方向,本科生完全不推荐,根本搞不了,都是数学系的人在做这些。如果你非常喜欢数学的话当我没说。

这是 AISTATS 上的一篇关于 PAC learning 的文章,AISTATS 是机器学习中的顶会。

我的经历

我是大三上学期加入山大的 IIC 实验室去学习的,当时的想法只是说想去了解一下前沿的科研知识,看看我们所学的这些东西到底对现在的研究有什么帮助。但是最终结合我的感受来看,学好数学还是很有必要的,尤其是概率论和线性代数。我最开始做的方向是强化学习,但是后面误打误撞的就做到了量子机器学习的方向。其实我不太推荐本科生来做理论方向的研究,因为我就是本科做的理论,但是我快要毕业的时候才基本上有了 paper。从 2024 年初的 ECAI 开始,是第一次投稿,但是当时我还不怎么会写 paper,没有注意到投稿时候每个会议都有 Page limitation,由于我的 coclusion 部分超出了一小部分,这篇论文惨遭 Desk Reject。第二次投稿是 2024 年的 7 月底的 INFOCOM 2025,最终审稿意见出来的时候给我都看乐了,一些审稿人明显不是我们的研究方向的,提的一些问题完全是在为了提而提,最终我们对论文进行调整后重新投稿到 CCFA 类期刊 TPDS, 2025 年 5 月的结果是 1Excellent2fair,基本上是可以中的。而且我是考研的同学,因此这个科研完全是和我的考研同步进行的,直接导致了我在 7 月份的时候,别的同学都在全力强化,而我在没日没夜的改论文和做实验,因此方向的选择以及自身时间的安排都至关重要。

我的建议

( 1 ) 从视频网站中 ( 如「后浪」之站 ) 选择 机器学习、深度学习、自然语言处理、计算机视觉等国外知名大学的知名在线视频,一集一集地看。同时利用搜索引擎找到对应课程的课程主页,然后找到作业部分,尽量认真完成。不要贪多,要循序而渐进,要力争整门课程大部分内容最后跟下来了。遇到公式部分,建议一定自己推导;遇到模型,建议自己实现一遍或者看看网上的开源代码。

( 2 ) 在上课程同时,一般课程都会推荐读书或者读论文。我建议要一起做一下。初次看论文的时候一定会有一种感觉,满篇的论文至少有几十个单词不认识。我建议是尽量认真读一遍论文后,寻找网络的中文解读 ( 如知乎、论坛等 ) 。注意,不是因为外语才推荐大家这样做的,而是中文的解释有可能给初学者最为直观的理解,可以快速入门。这些都结束后,可以再回去精读该论文。如果还有读不懂的地方,不建议长时间纠结,因为很多地方可能原始论文也没写清楚或者不是暂时的知识所能够理解。

( 3 ) 动手写代码。一旦读过几篇论文之后,建议选择一篇具有源代码的工作进行复现。注意,一定要选择好工作的好代码,确保一开始入门就是按照最正规的途径进行。试着从代码的角度再次分析论文中的部分。当源代码读懂后,可以试图下载数据,并且试图跑通论文中的实验。如果能够得到和论文中相似的结果后,说明已经基本可以达到初步的论文理解。下一步就是复现代码,确保能够复现源代码。

( 4 ) 如果系统性的上完一门课、又实现过若干论文的源码后,可以多找找最新的一些 Survey 文章来读。各个方向的都可以看看。最后可以挑一个眼缘好的方向深入阅读,并且看 Survey 中对于这一个研究方向中的核心研究问题是什么、哪些研究学者的论文被大量引用。一旦问题和对应的学者锁定后,就可以考虑 follow 一个问题了。

( 5 ) 初次上手一个问题,建议首先找到该问题最为经典的一篇文章,了解清楚基本的问题定义、评测方法以及已有方法。通过下载真实数据集合,构建评测实验,实现代码,分析 bad case 等途径查看已有方法具有什么问题。然后试图模仿已有论文论述的研究动机,看看能否将数据中发现的问题转化为学术问题。总体来说,这一过程很难,不要着急,不要急于求成。也不是这篇文章的重点。

( 6 ) 如果要进 IIC 实验室进行学习的话,最好学一下凸优化的知识,组内很多 paper 可以很明显的看到在证明收敛性问题,这些问题都需要扎实的凸优化基础,最后就是要有所取舍,该干什么干什么,上课的时间也可以来做科研,不是建议逃课,自己安排 ( doge ) ,虽然我本人并不是保研的,但据我所知,保研的同学里面大部分科研方面也只是一个经历,没有什么 pub,因此我认为花时间肝一篇 paper 出来应该在夏令营的时候会比较有竞争力,至少也要在推免之前有一篇在投的 paper,这样你的本科科研才能发挥它的用处-让筛选你的导师指导你有这方面的能力,说白了就是直接能上手干活。最好的体现是什么呢?不是虚的科研经历,而是真正的 Pub。

\

最终,我想说的是其实科研真的很苦,尤其是当你没有及时的得到正反馈的时候是很挫败的,花了这么久的时间结果得到的收益并不大,很容易让本科生失去信心。但是,一旦选择这条路,我认为还是完整走下去,最终的结果一定是好的。我记得自己当时非常希望能够发出来一篇论文,时至今日,我还清楚记得论文发表的前一天晚上,断续地睡觉,一直到早上收到了接受邮件,我反复读了几次,确定这是真的后,才又继续睡觉了。可以肯定的是,在接到邮件的一瞬间,感觉人生到达了「巅峰」。第二天,这封接收邮件,我想应该是反复读了十几次。这种感觉只有经历过科研的人才能懂。认真看师兄师姐发给你的论文,多和他们沟通,不要怕困难,即使最开始在他们心中你可能也是一个打杂的,但我相信,一个一开始就认真踏实的学生最终是可以成为一个优秀的科研者的。希望山大计算机学院以后的学弟学妹们可以认识到科研在某种意义上可能是适合你的,相较于传统的应试教育的范式,也许你会在这里找到绩点以外的收获。

IEEE TPDS 大修邮件

ECAI Submission

IEEE INFCOM Reject 邮件

投稿前一夜必须狠狠的熬夜肝

最后希望看到这里的学弟学妹们都能找到自己喜欢的方向,抓紧时间搞科研,进组的时间越早越好,大一如果有能力和时间的话建议直接进,找个强的实验室 push 自己一年大概率是有很好的成果的,这对想要升学的同学非常重要。

SDU 21 级计算机科学与技术专业: ywyang SDU -> UCAS ICT Master

2025.5.12