发布时间:2023-04-20 文章分类:电脑百科 投稿人:李佳 字号: 默认 | | 超大 打印

诸神缄默不语-个人CSDN博文目录

本文将系统性介绍深度学习方向(准)研究生可供参考的入门建议。
我的背景是浙江大学人工智能专业在读硕士,研究方向是GNN、NLP、司法智能。
(我的CSDN博文基本涵盖了我所有的深度学习知识,建议参考)
选专业、选学校、选导师之类心态相关、“道”级别的内容,本文不做概述,直接默认大家在心理上都是做好准备了的。如果真的需要,可参考我之前写过的博文:211逆袭浙大-计算机及相关衍生专业保研之路纪实(深度长文,收藏了)
本文主要关注“术”与“器”层面的实操,是概括性的,更细节的内容也不在本文赘述。

文章目录

  • 1. 对个人基础的定位+必要的前置知识
  • 2. 如何学习
    • 2.1 系统性学习:学习路线,网课、书籍、框架
    • 2.2 看论文+复现代码
      • 2.2.1 怎么读论文(频率与时长),看不懂怎么办
      • 2.2.2 怎么找论文
      • 2.2.3 怎么找代码并复现,复现不出来怎么办
    • 2.3 碎片化新媒体信源
      • 2.3.1 科研博主
      • 2.3.2 值得关注的网络资料
  • 3. 如何科研
    • 3.1 如何想idea
    • 3.2 怎么写代码
    • 3.3 怎么写论文
      • 3.3.1 可参考的学习资料
      • 3.3.2 工具
      • 3.3.3 论文结构
      • 3.3.4 语言与修辞
      • 3.3.5 学术绘图
    • 3.4 怎么投稿
    • 3.5 如何做PPT和答辩、演讲
    • 3.6 硕论的其他要求
  • 4. 为毕业后的生活做准备
    • 4.1 计算机相关私企工作
    • 4.2 公务员、事业编、国企
    • 4.3 快进到转行
    • 4.4 读博
  • 5. 其他科研常用术语
  • 6. 本文撰写过程中参考的其他网络资料

1. 对个人基础的定位+必要的前置知识

对自己基础知识各方面有所了解:

建议学习的编程基础知识和工具:

2. 如何学习

2.1 系统性学习:学习路线,网课、书籍、框架

对一个领域的基础进行系统性学习,建议找一个经典网课或者书籍来看看。网上也有很多渠道,很多人会推出领域的框架,可以先笼统地了解整个领域的工作,并针对性地仔细学习所需的知识点。
具体课程推荐,网上都挺多的,我这里列出、整理了一点。

DNN通用课程:

NLP课程

GNN课程:

泛科研领域:

其他课程集合:

2.2 看论文+复现代码

2.2.1 怎么读论文(频率与时长),看不懂怎么办

有个常识就是论文不是每篇都要精读。
对于略读的论文,可以仅看标题、摘要、图表。一篇优秀的论文应该在仅看这些内容的时候,就能看出文章的精彩之处和创新点了(除非是老论文,老论文不太卷,所以不太讲究这些面子工程)。

论文阅读工具:

论文管理工具:

找论文相关的其他博客、slides等资料:主要通过谷歌、百度、微信直接搜索(微信无法被这些搜索引擎抓到,但是确实有很多优秀文章发布在了微信公众号上)

2.2.2 怎么找论文

  1. 问导师/学长学姐要推荐论文
  2. 确定感兴趣的课题后,根据关键词在学术搜索引擎(推荐工具见后文)中直接搜索(关键词可以考虑不同粒度的,如先考虑最大的范围“自然语言处理”,然后具体到“文本摘要”,然后具体到“用图做文本摘要”这样)
  3. 阅读本领域的最新论文(顶会顶刊的可以多看两眼,水会水刊甚至只挂了ArXiv的最多看下摘要和图片吧)
  4. 阅读本领域的经典论文:往往是本领域引用量最高的论文,在比较新的论文中常作为baseline出现
  5. 订阅领域论文:文献鸟Stork,谷歌学术,AMiner
  6. 通过领域可视化工具或综述自动生成工具辅助,了解这个领域的关注焦点、经典论文等信息,从而对症下药
    1. (没试过)VOSViewer, connected paper, research rabbit
    2. Literature Review | Paper Digest
    3. ScienceGate : Academic Search Engine
    4. 知网
  7. 通用的论文推荐:https://yespaper.cn/, readpaper, AMiner - AI赋能科技情报挖掘, PaperWeekly, Home - AI Paper Collector

常用的学术搜索引擎:

2.2.3 怎么找代码并复现,复现不出来怎么办

现在论文如果有官方代码,一般都会开源在GitHub上。
The latest in Machine Learning | Papers With Code上有整理各个主题下公布代码的SOTA工作,可作找资料的参考。

复现完整流程(不一定每次都需要做完每一步,需要干啥就干啥好了):

  1. 跑通原代码(如果能抠出来原代码里需要的部分,也可以只跑一部分)
    如果跑不通可以提issue问问。有的作者写的那玩意它就是跑不通的
  2. 嫁接到自己的数据上
  3. 修改模型代码,增加自己要加的模块

2.3 碎片化新媒体信源

2.3.1 科研博主

(有些博主在各个平台同名入驻、或者分别有引流渠道,我就不重复写了)

CSDN:

小红书:

知乎:

微信公众号(公众号取关退出后,列表就会重新刷新,我懒得一次一次重新找了,所以暂时不列举了,想到哪儿就写到哪儿好了):

B站(很多课程B站都会搬运,我就不将搬运up主写进来了):

自建网站的博主:

2.3.2 值得关注的网络资料

  1. NLP 任务中有哪些巧妙的 idea? - 知乎
  2. 科研霞子:科研集成工具平台

3. 如何科研

本文在这里没有考虑诸如导师放养、导师啥都不懂、导师啥都不懂还瞎指挥、大小导师有矛盾、导师安排做没有发展空间的横向任务之类的场景。
因为这些问题的解决不是科研本身的事情,非战之罪。

3.1 如何想idea

首先要看论文,看各种本领域研究近况的讲解,了解本领域现在在做啥。
另外毕业论文的话还可以参考这篇回答:如何分析知网中关键词共现网络? - 知乎,可以简单、迅速浏览一波以前人写毕业论文都啥水平。(虽说一校一事,外校的毕业论文大多没什么参考价值罢了)

分类:新的研究问题(提出了没人想到的新路,属于开天辟地),新的模型、算法、解决方案(解决了前人没能解决的问题),新数据集、没有明显理论创新但是效果很好的大模型(大力出奇迹),提出对整个大课题的统一框架(theory of everything这种感觉。这种一般都会叠加提出新解决方案的,比如PyG算是提出新的统一代码框架、并提升了运算速度),综述(总结陈词)

  1. 导师给了一个idea
  2. 看看SOTA论文的工作,看看它们还有什么能改进的地方(准确性、时空效率等主要指标,安全性、隐私保护、鲁棒性、可解释性等次要指标),然后想办法改进指标,或者直接填补空白(如这个领域以前没人考虑过安全问题/可解释性问题/伦理问题,那我就开天辟地)。
    一般来说都是模块叠叠乐,或者深化理论,就看效果怎么样、故事能讲得多精彩了:
    • 把NLP领域的word2vec挪到GNN领域→node2vec
    • 把CV领域的CNN挪到GNN领域→Graph CNN
    • Graph CNN,但直接约束卷积核→GCN
    • GCN,但从空域角度来看待,将其直接视为求邻居节点平均值,并提出其他池化方法→GraphSAGE(后来也有用传统图论的标签传播、loopy belief propagation或者W-1 test之类来解释GNN信息传播理论的)
    • GCN + (NLP) attention,但仅应用于邻居节点→GAT
    • GCN,但利用RWR来解决过平滑问题→APPNP
    • GCN + 异质图→RGCN
    • 万物加transformers→theory of everything
  3. 归纳总结一个领域的工作,并提出新的统一解决方案
    1. 用统一范式来建模一种问题,例:DropMessage: Unifying Random Dropping for Graph Neural Networks  Unified Named Entity Recognition as Word-Word Relation Classification
    2. 把之前的所有工作全都喷一遍,然后提出一个真正有效的方法: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)
    3. 就是纯纯的综述,好一点的就包含对整个项目各个SOTA的整理:Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence
  4. 烧GPU和预算,烧出一个奇迹(数据集或大模型),然后跑点baseline,介绍一下新奇迹比以前工作牛逼在哪里,就行
  5. 开天辟地,想出一个新问题(显然这不是我配教的部分)

另外给一个给项目起名字的工具(虽然其实这部分好像不太重要,但是毕竟也有工具):Acronymify! - Automatically generate fun acronyms for your project

3.2 怎么写代码

简单来说就是站在前人的肩膀上,魔改啊魔改。

写代码部分我还有很大的进步空间,等我再多写点再来补吧。

3.3 怎么写论文

3.3.1 可参考的学习资料

Academic Writing

3.3.2 工具

3.3.3 论文结构

  1. 摘要abstract:我们的任务是什么,属于什么大任务之一,这个任务应用广泛、很有意义。在这个任务上,现有的解决方案存在什么问题,为了解决这个方法,我们提出了什么模型,其典型特征是什么。具体介绍模型特征,解决了什么问题。实验效果很好,数据与代码已公开。
  2. 关键词keyword
  3. 概述introduction:介绍任务的意义,介绍以前工作及其不足之处,介绍本文如何站在以前工作的肩膀上解决了上述问题,介绍本文的创新点,介绍后文排版(这玩意可以不要)
  4. 相关工作related work/文献综述:介绍各个相关领域的以前工作,如何逐步改进,以启发得出本文的工作,本文比以前工作优越性在哪
  5. 方法:总分,先对问题进行数学化的定义,然后介绍整个模型的架构,分别介绍各个模块,最后分析计算复杂度和模型原理(有的论文没有)
  6. 实验experiment:数据→实验设置(包括超参和计算资源等)→模型评估指标→实验结果→实验分析(包括消融实验、案例分析、鲁棒性分析、在不同场景下的效果、误差分析等)
    实验部分经常大到需要放到附录
    有条件的话可以在写结果的表格那里做方差分析(一般现在都会把实验做到),或者写出多次实验的方差(这个要看实验能跑多快吧)
    有一种写法是根据假设(research question)分别写实验结果
  7. 结论conclusion:总结本文研究内容(整体的方法、解决的问题和模型原理)和实验结果,介绍本文的不足之处,以及未来该工作可以衍生出的新工作。
  8. 致谢acknowledgement
  9. 参考文献reference

3.3.4 语言与修辞

可以借用的工具:

  1. 英文
    1. 修改语法错误:Grammarly
    2. 复述和风格转换:Wordtune
    3. 句型/模板总结
      1. 英语学术论文写作常用句型 - 知乎

3.3.5 学术绘图

具体的以后再补。

  1. 配色:要有意义,不要太多、混乱
  2. 参考代码
    1. MLNLP-World/Paper-Picture-Writing-Code: MLNLP: Paper Picture Writing Code
    2. matplotlib画图(持续更新ing…)
  3. 论文配图改进指南

3.4 怎么投稿

这个我也以后再补吧。

3.5 如何做PPT和答辩、演讲

待补。等我找点PPT模板上来。

有些组里面有那种祖传PPT模板,比如我们组……我们组的PPT模板甚至是ppt后缀,我还废了点功夫才改成pptx后缀

3.6 硕论的其他要求

有小论文的话一般就是叠小论文吧,缝一缝叠起来。
或者就当一篇大号小论文来写……

  1. 开题报告:大概来说就是把最后想成稿的内容拿出来吹一吹,先把flag立起来(可行性分析、预期成果)
    如何写论文 | day 3 | 如何写开题报告

其他待补。

4. 为毕业后的生活做准备

具体的以后再补。

4.1 计算机相关私企工作

主要可选的岗位类型有:

各个特殊领域又有自己的特殊职业,如金融量化领域的量化分析师、游戏的策划……等。

我写了个总结资料性质的笔记,以后这部分内容就在这里更新了:校招,从准备开始准备(持续更新ing…)

其他:

  1. 同等价位,自研>外包

4.2 公务员、事业编、国企

4.3 快进到转行

4.4 读博

5. 其他科研常用术语

磕盐:科研(谐音梗)
paper:论文(一般指小论文)
thesis:毕业论文
scoop:抢发(指你想出了一个idea,结果一边做着一边发现别人用这个idea写的文章发出来了)
baseline:基线模型(以前的模型,用来对比你提出的模型的效果)
SOTA:state of the art,最前沿的工作
ablation study:什么是ablation study(消融实验)?

6. 本文撰写过程中参考的其他网络资料

  1. Novelty in Science. A guide to reviewers | by Michael Black | Medium:大概来说就是讲,novelty不是复杂,也不能简单得显而易见(比如暴力将两个模块叠在一起,没什么别的难点和新东西)。新的东西有时不一定能即使看到有用性
  2. 对于本科毕设想要做 NLP 相关工作的同学,您有什么建议吗? - 知乎
  3. 一个博士生接受怎样的训练是完整、全面的科研训练? - 知乎
  4. 我是如何从头开始写一篇顶级论文的 - 知乎:是讲一篇差分隐私领域的工作,不懂,但是写得好燃
  5. 读博回忆 - 知乎