写在Ph.D第0年:AI/CV科研菜鸟的进阶之路

文摘   2024-10-16 10:03   美国  

知乎:Yujin Tang
链接:https://zhuanlan.zhihu.com/p/960781637

在申请25fall US CS Ph.D的间隙,来分享自己这一年半在科研路上的心得体会和成长历程,希望对后来者有所启发。如这篇文章对您有帮助,烦您点个赞以示支持,谢谢!

这一年半,我投了三篇连续领域的一作文章,平均每半年一篇,每一篇都在以很大的增量进步。前两篇习作都只中了ICLR和CVPR的workshop,第三篇虽然还在under review,但受到领域前辈的高度认可,认为这篇可能会成为我以后的代表作。此外,还创建了一个影响力很高的Awesome-Mamba-Papers库(至今1.1k stars,直接或间接促进了Mamba相关领域的发展),这给我的Github和个人主页带来了很大的曝光量,也收到了全世界不同机构的邮件让我收录他们的文章。

2022年1月,结束最后一段高频量化实习后,我重新开始了AI科研之路。授课型硕士课程的学习帮我掌握了深度学习,但是在科研技能上的训练是不够的。向有结果的人学习,一个人是其学习的人的水平下限。因此我大量收集和整理了各种前辈们的科研经验,并吸纳到自己的体系中。我将之命名为《Successful Ph.D Journey》系列。这个List中我总结了我曾一起共事过的老师,合作者,朋友们和在互联网上认识的不认识的的前辈们分享的科研经验。

如何成为一个领域的专家

  1. 大量学习,吸收前人经验,建立初步认知
  2. 在实践中改进自己的技能树
  3. 和更高水平的专家合作,学习别人的工作流程和工作技能
  4. 不断总结

首先分享我在2024.03.16在港中深十周年校庆之际,受数据科学学院邀请返校做的分享上的PPT,这仅代表当时我对于科研的认知接下来开始正餐,在这篇文章中,我将分享:

  1. top school Ph.D Student的能量和心力。我将分享带给我力量的三位Ph.D,Chonghe Wang(MIT), Andrej Karpathy(Stanford), Helen姐(Princeton)。用于给自己补充精神能量,以及建立初步认知,为什么要做科研,要树立什么样的目标(尽管不一定能达到,但是可以作为一种自我鞭策),要如何面对挫折和自我怀疑,女生如何面对冒名顶替者综合征/改变刻板印象。

  2. 如何对科研的不同阶段建立正确的认知(认清自己的段位,在不同段位干不同的事情)。这里我将分享三位老师/Ph.D的认知,Sida Peng, Cen Jun, Haoshu Fang。

  3. 非常具体(hands on)的AI科研目标&经验。这里我将分享三位老师/Ph.D/MS的认知,Junwei Liang,Runsheng Xu叶小飞,Guodun Lee(是这个系列唯一的MS,但是是对我影响最深,帮助我最多的人生挚友)。

  4. 我自己在实践中总结的AI科研CheatSheet与最佳实践。

由于信息量非常大,全部文字量可能有10w+字体,因此以图片形式分享。

1.top school Ph.D Student的能量和心力

这张图是我对三位分享人的观点的进一步浓缩,作为自己的核心能量来源。

Chonghe Wang(MIT)

Chonghe @冲气以为和 发了多篇Nature Science正刊以及子刊,很早就开始在知乎分享自己的科研经验,我是本科时期就受他影响,给与了我很多精神能量。这个系列出自其知乎回答的整理。

Andrej Karpathy(Stanford)

Andrej是众所知周的AI大神和CS231n的助教,feifei的爱徒,以下摘自他2017年的分享,计算机博士生存指南。

https://mp.weixin.qq.com/s/5QKjPgle9bPtkCHOXjbB_w

Helen姐(Princeton Math Ph.D)

因为Helen没有实名上网,所以暂时不放真名,但Helen姐(现在在小红书分享)对我的影响是非常深刻的,她的思想非常先进,关于学习和个人发展的认识也非常深刻。这些分享是她早年间在微博分享的(现在可能已经不可见),我整理和收藏了多年。她对于女性科研工作者也有很强烈的鼓舞。

这些分享揭示了Ph.D的本质,和自学成才的本质,不要被虚荣心蒙蔽,不要为了和别人攀比而学习,不要为了学会什么fancy的名词获得什么title而沾沾自喜,避免无效学习,摆脱线性思维,靠自驱力和motivation,不要在意无关人士的评价。这些观点我相信会对很多人都有启发。

2.如何对科研的不同阶段建立正确的认知

Haoshu Fang(SJTU-MIT)

这个分享摘录自其Valse分享,在B站。这个认知和下一位分享的HKUST的Jun Cen博士是一样的,和我分享的第一张图也是一样的。

科研第一阶段是学习技能阶段,但是不要上来打基础就打2年(从CS231n看起,Andrew NG的机器学习看起,深度学习花书看起),不是说看书没用,基础知识都必须全部要学,但是AI是高度实践性的学科,一定要知识结合代码。学习技能阶段最好找到active的senior member合作,具体看下文Fang博士的分享吧,要找到有能力愿意带你的前辈,跟着学。

Junior阶段怎么让大佬愿意带你?请见我的第一张图分享:

  1. 态度诚恳,踏实肯干,从帮别人打下手开始,学习别人的工作流程,工作技能,向有结果的人学习
  2. long vision:首次合作愉快才会有长期合作机会(重视reputation,不看重一时得失)。最开始不要去斤斤计较几作,是去学习技能的(写文章,投稿)

科研第二阶段是熟练技能以后,开始以共一或独立做project,这一段时间就是Ph.D的training。

科研第三阶段是准教职阶段,提出大的目标/问题,用3-5年完成/回答。

Jun Cen(HKUST)

Cen博士把科研分为了四个阶段,入门摸索阶段-学会科研阶段-精通熟练阶段-合作带人阶段。

相比上面的思路新加了一个合作带人阶段,其实不用等到教职,从Senior Ph.D开始就会接触到这个阶段,学术合作也是很好地拓展自己交际圈和影响力的方式,在带Junior的过程中,训练自己当老师的技能和领导力。

Sida Peng(ZJU)

Peng老师在Github分享了非常详细的经验。这些经验高屋建瓴地分享了完成一个reseach project的流程,很有借鉴意义。提出了三种想idea的方式:1.idea-driven 2.goal-driven 3.旧领域+新锤子(新工具,如diffusion, gaussian splatting, mamba等)

https://github.com/pengsida/learning_research

3.非常具体(hands on)的AI科研目标&经验

Junwei Liang(CMU)

@梁俊卫 梁老师是我的恩师,从梁老师这里学到了很多东西,作为AI PhD,如何设定目标,以及如何去达到目标。制作Awesome List也是获得影响力的方式,我的Awesome-Mamba-List受梁老师的insights启发。

Guodun Lee(ZJU)

@Gordon Lee 是我的好朋友兼人生导师,教会了我非常多的东西,我的第一篇一作工作,虽然现在看来不完美,但也得到了他的很多帮助。Gordon大量总结了自己读研的经验教训,硕士毕业有2A2B工作,虽然他是这个系列唯一一个MS,但我认为他是有PhD水平的。

这些经验囊括了AI MS或PhD初级阶段需要的各种技能:阅读论文,做笔记,文献管理,如何社交,如何做开源项目获得影响力,科研失败教训,如何Rebuttal。尤其是社交&做开源项目方面,我受到了他很多影响,并践行到我自己的人生体系里面,这让我交到了很多做学术的朋友们。

Runsheng Xu(UCLA)

@叶小飞 从博主这里学习到了非常多计算机视觉科研的hands on经验,全是干货,具体可以看博主知乎回答。这里只分享部分。

4.我的AI科研CheatSheet与最佳实践

以上讲了很多都属于“道”层面,我也和大家一样,收藏了大量经验贴,吸收了很多经验,但是一切能力的提升都要靠实践。因此给大家分享一些我的“术”,做AI方向科研,必须要熟悉基本工具,我自己总结了Linux常用实践的cheatsheet,在以前的文章中也有分享。

https://zhuanlan.zhihu.com/p/676491841

最常用的服务器装机最简教程 包含了VSCode远程连接最常遇见的问题/bug

集群/服务器新机器装机教程(不打镜像用Anaconda版):

  1. 申请集群gpu
  2. 先在mac终端上尝试能否顺利连接(记住要把用户从自己的名字改成root)比如ssh root@10.120.16.39 -p 20064
  3. 用私钥配置filizaila的sftp:VSCode配置免密登录,https://zhuanlan.zhihu.com/p/222452460
  4. 把私钥和公钥上传,然后在VSCode配置config,自动下载
  5. vscode配置免密登录(然后首次连接的时候会自动在服务器的root下面下载vscode-server)
  6. 安装anaconda
  7. 添加清华镜像源
  8. 在anconda下创建自己的环境,配置代码,数据集,炼丹
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
ls
cd ..
chmod 700 ./.ssh
chmod 600 ./.ssh/authorized_keys

解决Could not establish connection to : XHR failed(vscode不能联网,手动下载上传vscode-server压缩包然后解压)https://blog.csdn.net/qq_38603174/article/details/134850011

最高频用到的工具/冷知识

  1. nvitop(很多初学者只会nvidia-smi,我实验经常被其他Junior kill掉,因为在val阶段显存占用少,其他人一上实验,等我的实验回到train阶段,立马被kill,这时候我建议他们尝试pip install nvitop,用nvitop可以实时监控GPU使用情况,看到谁在用。不要挤占别人的实验)
  2. 在某些集群上,nvitop命令显示的pid是虚假的,通过ps aux | less(加|less可以滚动查看全部进程)查看真实的进程号。

分享可以复制这些指令的word链接:

https://docs.google.com/document/d/1HmcOoyzmgE-5BwpqN_AocEtvepulBGcD/edit

高质量Code的学习途径

  1. 跟着lucidrains学就对了,他复现了大量的项目,紧跟前沿,代码质量高。Transformer, Diffusion, AlphaFold等。

https://github.com/lucidrains?tab=repositories

  1. timm库(pytorch image models)是最好的教材。

https://github.com/huggingface/pytorch-image-models

如何建立科研正反馈

讲完了“道”与“术”以后,再回顾一遍首图,还有一个很重要的点,是找到self-motivation,怎么面对科研中的挫败和无反馈感。首先,对任何人(即便是大佬)来说,科研一定是绝大多数时候失败,极少数时候成功。以下分享 @pprp 教给我的两项核心技能:

  1. git管理:看看git commit次数,每天走之前commit一次,给自己正反馈。
  • 每次确定一个项目,找到code base后,在github私有一个项目,初始化并不断commit。失败不可怕,每次commit都能告诉自己,在不断进步,正反馈是科研中极为重要的一环。失败的尝试也能积累经验,都有用的。
  • Notion记录项目开发和实验日志,带时间戳,“可视化”自己的进展和进步
    • Notion是一个学习成本很高的软件,但是其不断内嵌的页面,非常适合做科研和人生管理。这是我自己的Notion页面的一个展示。

    写到这里,基本把我这一年半里建立的科研认知和正反馈体系都写清楚了。感谢各位前辈们的无私分享,我受益于这些,也希望对更多人有帮助。长路漫漫,祝大家早日成为科研大佬!

    备注:进群,进入大模型技术群

    id:baobaogpt,记得备注呦

    包包算法笔记
    大模型技术和行业认知
     最新文章