给深度学习研究生的入门建议(未完待续ing)
Posted 诸神缄默不语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给深度学习研究生的入门建议(未完待续ing)相关的知识,希望对你有一定的参考价值。
本文将系统性介绍深度学习方向(准)研究生可供参考的入门建议。
我的背景是浙江大学人工智能专业在读硕士,研究方向是GNN、NLP、司法智能。
(我的CSDN博文基本涵盖了我所有的深度学习知识,建议参考)
选专业、选学校、选导师之类心态相关、“道”级别的内容,本文不做概述,直接默认大家在心理上都是做好准备了的。如果真的需要,可参考我之前写过的博文:211逆袭浙大-计算机及相关衍生专业保研之路纪实(深度长文,收藏了)
本文主要关注“术”与“器”层面的实操,是概括性的,更细节的内容也不在本文赘述。
文章目录
1. 对个人基础的定位+必要的前置知识
对自己基础知识各方面有所了解:
- 数学(主要是高等数学、线性代数、概率论与数理统计,其他会的越多越好)
- 编程(对编程语言掌握的熟练程度,算法与数据结构)
- 计算机基础知识(各常见操作系统的使用,计算机网络。在本科期间起码要学一下什么是BGP吧?)
- 深度学习基础知识(PyTorch框架的使用)
- 深度学习进阶知识(CV/NLP/GNN等子领域的知识,尤其是对未来研究方向的学习)
- 英语(能看懂论文、能正常发音、能对着油管自动提供的字幕看懂视频就行)
建议学习的编程基础知识和工具:
- Linux使用:需要在Linux服务器上部署程序
- Git:版本管理
- wandb:记录深度学习代码运行过程中的指标结果,自动进行可视化(指画图)
2. 如何学习
2.1 系统性学习:学习路线,网课、书籍、框架
对一个领域的基础进行系统性学习,建议找一个经典网课或者书籍来看看。网上也有很多渠道,很多人会推出领域的框架,可以先笼统地了解整个领域的工作,并针对性地仔细学习所需的知识点。
具体课程推荐,网上都挺多的,我这里列出、整理了一点。
DNN通用课程:
- 李宏毅(我写了一部分笔记:李宏毅2021春季机器学习课程视频笔记集合)
- 神经网络与深度学习
- 吴恩达
- 2018年的CS230:http://cs230.stanford.edu/syllabus/(助教提供的cheatsheet:Teaching - CS 230)
- PyTorch框架:60分钟闪击速成PyTorch(Deep Learning with PyTorch: A 60 Minute Blitz)学习笔记
NLP课程
- CS224N
- FudanNLP/nlp-beginner: NLP上手教程:这个是邱锡鹏老师的
GNN课程:
- CS224W(我写了一部分笔记:cs224w(图机器学习)2021冬季课程学习笔记集合)
- 浙江大学线下的图神经网络课(由周晟老师开设):courses
泛科研领域:
- 大学生如何写毕业论文:这本书其实感觉比较适合文科生,就那种整理文献……的工作
- 考研、读研到毕业论文:研究生的学术三步曲
- 研究生是如何炼成的:学术研究与论文写作导引
- 高质量读研:教你如何写论文、做科研
- 科技论文规范写作与编辑
- 科技论文的规范表达——写作与编辑
- 学术研究方法论
- 研究方法论:本科、硕士、博士生研究指南
- 读研指南:搞砸研究生生涯的57个教训
其他课程集合:
- 各大高校课程共享的GitHub项目:📚各大高校课程资源汇总,在Github上大学 💡加入组织 | university 推荐丨国内多所高校课程共享
2.2 看论文+复现代码
2.2.1 怎么读论文(频率与时长),看不懂怎么办
有个常识就是论文不是每篇都要精读。
对于略读的论文,可以仅看标题、摘要、图表。一篇优秀的论文应该在仅看这些内容的时候,就能看出文章的精彩之处和创新点了(除非是老论文,老论文不太卷,所以不太讲究这些面子工程)。
论文阅读工具:
- 普通PDF阅读器(我用的是福昕,可以直接搜索一个文件夹下所有PDF文件里面的内容,在线上考试时翻老师发的PPT有神效)
- ReadPaper-论文阅读平台-专业学术讨论社区:这个工具的主要优势是自动提取PDF格式文件中的参考文献和图片,点击参考文献可以来回自由跳转,图片也可以单独打开放大
论文管理工具:
- 普通表格/文档软件,包括Word、Excel、石墨文档等(我用的是这个,石墨文档+写博文。写博文/文档对我来说是最有效的笔记方法)
- Zotero
- Mendeley
找论文相关的其他博客、slides等资料:主要通过谷歌、百度、微信直接搜索(微信无法被这些搜索引擎抓到,但是确实有很多优秀文章发布在了微信公众号上)
2.2.2 怎么找论文
- 问导师/学长学姐要推荐论文
- 确定感兴趣的课题后,根据关键词在学术搜索引擎(推荐工具见后文)中直接搜索(关键词可以考虑不同粒度的,如先考虑最大的范围“自然语言处理”,然后具体到“文本摘要”,然后具体到“用图做文本摘要”这样)
- 阅读本领域的最新论文(顶会顶刊的可以多看两眼,水会水刊甚至只挂了ArXiv的最多看下摘要和图片吧)
- 阅读本领域的经典论文:往往是本领域引用量最高的论文,在比较新的论文中常作为baseline出现
- 订阅领域论文:文献鸟Stork,谷歌学术,AMiner
- 通过领域可视化工具或综述自动生成工具辅助,了解这个领域的关注焦点、经典论文等信息,从而对症下药
- (没试过)VOSViewer, connected paper, research rabbit
- Literature Review | Paper Digest
- ScienceGate : Academic Search Engine
- 知网
- 通用的论文推荐:https://yespaper.cn/, readpaper, AMiner - AI赋能科技情报挖掘, PaperWeekly, Home - AI Paper Collector
常用的学术搜索引擎:
- 谷歌学术(如果无法直接上谷歌,可以使用谷歌学术镜像:科研工具推荐 谷歌学术镜像 https://gg.xueshu5.com/ https://www.xueshu5.com/)
- Sci-Hub:可以下载到很多付费论文(嘛,其实就是盗版的意思)
- Scidown
- 烂番薯
- ArXiv:开源文献网站,很多作者都愿意主动将自己的论文挂上去
- Science hub Mutual Aid community:文献互助社区
- ArXiv-Sanity
- arXiv Xplorer
- OALib
- 知网(中文版学位论文只能下载caj文件,需要改成英文或繁体中文版才能下PDF)
- easyScholar | 一款助力科研的浏览器扩展:帮学长打call,这个插件可以在很多网站上查看论文的界面直接自动显示论文的刊物、级别等等,示例:
2.2.3 怎么找代码并复现,复现不出来怎么办
现在论文如果有官方代码,一般都会开源在GitHub上。
The latest in Machine Learning | Papers With Code上有整理各个主题下公布代码的SOTA工作,可作找资料的参考。
复现完整流程(不一定每次都需要做完每一步,需要干啥就干啥好了):
- 跑通原代码(如果能抠出来原代码里需要的部分,也可以只跑一部分)
如果跑不通可以提issue问问。有的作者写的那玩意它就是跑不通的 - 嫁接到自己的数据上
- 修改模型代码,增加自己要加的模块
2.3 碎片化新媒体信源
2.3.1 科研博主
(有些博主在各个平台同名入驻、或者分别有引流渠道,我就不重复写了)
CSDN:
- 诸神缄默不语
- #苦行僧
- Cyril_KI(这哥们好像是做时间序列的)
- 我黑切呢**(做NLP+GNN的)
- NLP_wendi
小红书:
- 春秋带剑
知乎:
- 风霜刀剑严相逼
- Gordon Lee(有讲transformer中的归一化、一些论文阅读笔记、fairseq框架的学习笔记)
- 重剑无锋(这个博主主要讲思想层面的内容)
- 大师兄(论文和模型的讲解)
- 刘聪NLP
- 机器学习社区
- CVer计算机视觉
- 机器之心
- 新智元
- Evan CHEN(做GNN的)
- 魏秀参
- 我爱学习(做GNN的)
- 王赟Maigo(做NLP的,偏语言学方向)
- 李沐
- 北京智源人工智能研究院
- 笃林(浙大学长,做时序的)
- 金天(主要做视觉的,所以我没怎么看过)
- 忆臻(做NLP的)
- 张俊林
- 罗福莉(北大硕士,在ACL2019上发了8篇paper)
- 王树义(研究生导师,主要分享偏管理学的科研方法)
- 嫚嫚悠悠(做NLP的)
- 夕小瑶(做NLP的)
- 邱锡鹏(复旦教授,做NLP的)
- zibuyu9(北大教授刘知远,做NLP的)
- Juliuszh
- 烛之文(做NLP的)
- 微软亚洲研究院
- Curry(做元学习、小样本学习……一类的)
- 伊森
- Andy Yang
微信公众号(公众号取关退出后,列表就会重新刷新,我懒得一次一次重新找了,所以暂时不列举了,想到哪儿就写到哪儿好了):
- ArXiv每日学术速递
- GitHubDaily
- Coggle数据科学(打数据类比赛较多)
- CS的陋室
- 深度学习于NLP
- 李rumor
- PaperWeekly
- AlandR艾尔
- AI in Networks
- 时序人
- AINLP
- AI算法与图像处理
B站(很多课程B站都会搬运,我就不将搬运up主写进来了):
- 3Blue1Brown
- 会分享talk的up主:
- 智源社区
- LOGS图学习研讨会
- AI_Drive
- 跟李沐学AI
- Michelle小梦想家
- 饺子博士and饭老师
- DASOU_NLP从入门到放弃
- 我是土堆
- 老弓的学习日记
- 小美算法讲解
- 阿力阿哩哩
- shuhuai008(这个似乎是主要讲强化学习的)
- 啥都会一点的研究生
自建网站的博主:
- 苏剑林(江湖人称苏神,NLP领域大概无人不知,无人不晓)
2.3.2 值得关注的网络资料
- NLP 任务中有哪些巧妙的 idea? - 知乎
- 科研霞子:科研集成工具平台
3. 如何科研
本文在这里没有考虑诸如导师放养、导师啥都不懂、导师啥都不懂还瞎指挥、大小导师有矛盾、导师安排做没有发展空间的横向任务之类的场景。
因为这些问题的解决不是科研本身的事情,非战之罪。
3.1 如何想idea
首先要看论文,看各种本领域研究近况的讲解,了解本领域现在在做啥。
另外毕业论文的话还可以参考这篇回答:如何分析知网中关键词共现网络? - 知乎,可以简单、迅速浏览一波以前人写毕业论文都啥水平。(虽说一校一事,外校的毕业论文大多没什么参考价值罢了)
分类:新的研究问题(提出了没人想到的新路,属于开天辟地),新的模型、算法、解决方案(解决了前人没能解决的问题),新数据集、没有明显理论创新但是效果很好的大模型(大力出奇迹),提出对整个大课题的统一框架(theory of everything这种感觉。这种一般都会叠加提出新解决方案的,比如PyG算是提出新的统一代码框架、并提升了运算速度),综述(总结陈词)
- 导师给了一个idea
- 看看SOTA论文的工作,看看它们还有什么能改进的地方(准确性、时间效率等主要指标,安全性、隐私保护、鲁棒性、可解释性等次要指标),然后想办法改进指标,或者直接填补空白(如这个领域以前没人考虑过安全问题/可解释性问题/伦理问题,那我就开天辟地)。
一般来说都是模块叠叠乐,或者深化理论,就看效果怎么样、故事能讲得多精彩了:- 把NLP领域的word2vec挪到GNN领域→node2vec
- 把CV领域的CNN挪到GNN领域→Graph CNN
- Graph CNN,但直接约束卷积核→GCN
- GCN,但从空域角度来看待,将其直接视为求邻居节点平均值,并提出其他池化方法→GraphSAGE(后来也有用传统图论的标签传播、loppy belief propagation或者W-1 test之类来解释GNN信息传播理论的)
- GCN + (NLP) attention,但仅应用于邻居节点→GAT
- GCN,但用利用RWR来解决过平滑问题→APPNP
- GCN + 异质图→RGCN
- 万物加transformers→theory of everything
- 归纳总结一个领域的工作,并提出新的统一解决方案
- 用统一范式来建模一种问题,例:DropMessage: Unifying Random Dropping for Graph Neural Networks Unified Named Entity Recognition as Word-Word Relation Classification
- 把之前的所有工作全都喷一遍,然后提出一个真正有效的方法:Are we really making much progress? Revisiting, benchmarking, and refining heterogeneous graph neural networks(我写的笔记:Re10:读论文 Are we really making much progress? Revisiting, benchmarking, and refining heterogeneous gr)
- 就是纯纯的综述,好一点的就包含对整个项目各个SOTA的整理:Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence
- 烧GPU和预算,烧出一个奇迹(数据集或大模型),然后跑点baseline,介绍一下新奇迹比以前工作牛逼在哪里,就行
- 开天辟地,想出一个新问题(显然这不是我配教的部分)
另外给一个给项目起名字的工具(虽然其实这部分好像不太重要,但是毕竟也有工具):Acronymify! - Automatically generate fun acronyms for your project
3.2 怎么写代码
简单来说就是站在前人的肩膀上,魔改啊魔改。
写代码部分我还有很大的进步空间,等我再多写点再来补吧。
3.3 怎么写论文
3.3.1 可参考的学习资料
3.3.2 工具
- LaTeX
- overleaf
- TexLive + VSCode 使用TeXLive+VSCode实现Windows系统本地读写、编译LaTeX文件
- Typora
- Word
- 参考文献
- BibTeX
- BibTeX和其他参考文献格式之间的转换:https://www.bibtex.com/converters/
3.3.3 论文结构
- 摘要abstract:我们的任务是什么,属于什么大任务之一,这个任务应用广泛、很有意义。在这个任务上,现有的解决方案存在什么问题,为了解决这个方法,我们提出了什么模型,其典型特征是什么。具体介绍模型特征,解决了什么问题。实验效果很好,数据与代码已公开。
- 关键词keyword
- 概述introduction:介绍任务的意义,介绍以前工作及其不足之处,介绍本文如何站在以前工作的肩膀上解决了上述问题,介绍本文的创新点,介绍后文排版(这玩意可以不要)
- 相关工作related work/文献综述:介绍各个相关领域的以前工作,如何逐步改进,以启发得出本文的工作,本文比以前工作优越性在哪
- 方法:总分,先对问题进行数学化的定义,然后介绍整个模型的架构,分别介绍各个模块,最后分析计算复杂度和模型原理(有的论文没有)
- 实验experiment:数据→实验设置(包括超参和计算资源等)→模型评估指标→实验结果→实验分析(包括ablation study、案例分析、鲁棒性分析、在不同场景下的效果等)
实验部分经常大到需要放到附录 - 结论conclusion:总结本文研究内容(整体的方法、解决的问题和模型原理)和实验结果,介绍本文的不足之处,以及未来该工作可以衍生出的新工作。
- 致谢acknowledgement
- 参考文献reference
3.3.4 语言与修辞
可以借用的工具:
- 英文
- 修改语法错误:Grammarly
- 复述和风格转换:Wordtune
3.3.5 学术绘图
具体的以后再补。
- 配色:要有意义,不要太多、混乱
- 参考代码
- 论文配图改进指南
3.4 怎么投稿
这个我也以后再补吧。
3.5 如何做PPT和答辩、演讲
待补。等我找点PPT模板上来。
有些组里面有那种祖传PPT模板,比如我们组……我们组的PPT模板甚至是ppt后缀,我还废了点功夫才改成pptx后缀
3.6 硕论的其他要求
有小论文的话一般就是叠小论文吧,缝一缝叠起来。
或者就当一篇大号小论文来写……
- 开题报告:大概来说就是把最后想成稿的内容拿出来吹一吹,先把flag立起来(可行性分析、预期成果)
如何写论文 | day 3 | 如何写开题报告
其他待补。
4. 为毕业后的生活做准备
具体的以后再补。
4.1 计算机相关私企工作
主要可选的岗位类型有:
各个特殊领域又有自己的特殊职业,如金融量化领域的量化分析师、游戏的策划……等。
网上有很多各个岗位的具体面经和需要学习的总结资料,这种我以后有时间的话分类再细写吧。
这块我其实都没有学,所以我也没什么资格谈这个哈……
这里仅给出一些网上的系统性资料,椅子参考:
其他:
- 同等价位,自研>外包
4.2 公务员、事业编、国企
4.3 快进到转行
4.4 读博
5. 其他科研常用术语
磕盐:科研(谐音梗)
paper:论文(一般指小论文)
thesis:毕业论文
scoop:抢发(指你想出了一个idea,结果一边做着一边发现别人用这个idea写的文章发出来了)
baseline:基线模型(以前的模型,用来对比你提出的模型的效果)
SOTA:state of the art,最前沿的工作
ablation study:什么是ablation study(消融实验)?
6. 本文撰写过程中参考的其他网络资料
- Novelty in Science. A guide to reviewers | by Michael Black | Medium:大概来说就是讲,novelty不是复杂,也不能简单得显而易见(比如暴力将两个模块叠在一起,没什么别的难点和新东西)。新的东西有时不一定能即使看到有用性
- 对于本科毕设想要做 NLP 相关工作的同学,您有什么建议吗? - 知乎
- 一个博士生接受怎样的训练是完整、全面的科研训练? - 知乎
- 我是如何从头开始写一篇顶级论文的 - 知乎:是讲一篇差分隐私领域的工作,不懂,但是写得好燃
- 读博回忆 - 知乎
以上是关于给深度学习研究生的入门建议(未完待续ing)的主要内容,如果未能解决你的问题,请参考以下文章