1. 研一新生面对AI方向时最纠结的那个岔路口
如果你是一名刚入学的研究生,导师给的方向是人工智能,而你本科阶段只学过一点Python基础、连numpy的广播机制都要查文档,那么你大概率会在开学第一周就陷入一个非常具体的焦虑:我到底应该直接冲深度学习,还是老老实实先把机器学习啃一遍?
这个问题在网上的答案极其分裂。一派说“机器学习是基础,不学机器学习直接上深度学习就是空中楼阁”,另一派说“现在工业界和学术界都是深度学习的天下了,传统机器学习那套除了面试基本用不上,直接上手PyTorch跑通几个模型再说”。两派都有道理,但两派都没告诉你一个关键事实:这个问题的答案不取决于哪个“更正确”,而取决于你未来一年要交付什么、你的数学底子还剩多少、以及你导师的组会节奏有多快。
我自己带过几届低年级研究生做入门引导,也见过太多人在这个岔路口上浪费了整整一个学期——有人花三个月死磕《统计学习方法》的公式推导,结果组会汇报时连一个能跑的baseline都拿不出来;也有人第一周就照着教程跑通了图像分类,但被导师问一句“你这个损失函数为什么这么设计”就彻底卡壳。这两种失败模式的根源,都是把“学习路径”当成了一个线性队列,而不是一个需要根据目标动态调整的优先级系统。
这篇文章要解决的问题很具体:给零基础或弱基础的研一学生,梳理一条从入学到能独立完成一个小课题的AI学习路径,并说清楚每个阶段为什么这样安排、哪些内容可以跳过、哪些内容跳过了后面一定会回来补。我会把机器学习与深度学习的先后关系拆开讲透,给出各学科方向的路线图差异,并附上我在实际引导中验证过的教程资源和避坑经验。适合刚进组、方向还没完全定下来、或者定了方向但不知道从哪下手的研究生阅读,也适合需要给低年级学生做入门规划的师兄师姐参考。
2. 先搞清楚机器学习与深度学习到底是什么关系
2.1 不是“基础与进阶”,而是“两种建模范式”
很多人把机器学习到深度学习理解成“小学数学到高等数学”的递进关系,这个类比是错的。更准确的类比是:机器学习是手工设计规则的自动化,深度学习是自动学习规则的自动化。
传统机器学习,比如支持向量机、决策树、随机森林、梯度提升树,它们的核心逻辑是:你作为研究者,需要先告诉模型“用什么特征来描述数据”。比如你要做一个房价预测,你得自己构造“面积”“房龄”“距地铁距离”这些特征,然后模型去学这些特征到价格的映射。特征工程的质量,直接决定模型上限。
深度学习不一样。你给它原始数据——图像的像素、文本的token序列、音频的波形——它自己通过多层非线性变换去学习该用什么特征。你不再需要手工设计“边缘检测算子”或“TF-IDF权重”,网络自己会学。代价是你需要更多的数据、更强的算力,以及更少的可解释性。
所以这两者的关系不是“先学A再学B”,而是它们解决的是不同约束条件下的问题。数据量小、特征维度低、需要强可解释性的场景,传统机器学习往往更稳;数据量大、原始信号复杂(图像、语音、自然语言)、允许黑箱的场景,深度学习优势明显。
2.2 为什么有人觉得“必须先学机器学习”
这个说法在五到十年前是完全正确的。那时候深度学习还没爆发,AI约等于机器学习,你不学SVM、不学EM算法、不学隐马尔可夫,根本没法做研究。而且早期的深度学习理论大量借用了机器学习的框架——反向传播本质就是梯度下降,正则化、交叉验证、偏差方差权衡这些概念在深度学习里同样核心。
但问题在于,传统机器学习课程里的大量内容,对深度学习时代的实际研究工作已经不是前置依赖了。比如你对偶问题、核技巧、凸优化中的KKT条件,这些在SVM里是核心,但在你调Transformer的时候基本用不到。你花两个月把这些推导全吃透,收益远不如用这两周把PyTorch的自动求导机制和DataLoader搞明白。
我的判断是:机器学习里真正需要优先掌握的,是一小部分“元概念”,而不是整套算法体系。具体来说,下面这些东西你必须懂,而且越早懂越好:
- 偏差-方差权衡:为什么模型太复杂会过拟合,太简单会欠拟合。这个直觉在你调网络深度和正则化系数时每天都在用。
- 训练集/验证集/测试集的划分逻辑:为什么不能用测试集调参,为什么验证集要能代表真实分布。
- 损失函数与优化目标的关系:你最小化的那个东西,和你真正关心的指标,往往不是一回事。
- 梯度下降的基本原理:学习率、批量大小、迭代次数这些超参数到底在控制什么。
- 评估指标的设计:准确率、精确率、召回率、F1、AUC,什么时候用哪个。
这些东西加起来,认真学大概一到两周就能建立直觉,不需要啃完整本《统计学习方法》。而SVM的核函数推导、EM算法的收敛性证明、条件随机场的概率图结构,这些可以等你真正遇到相关问题时再回头补。
2.3 直接上深度学习的真实风险在哪里
直接上手深度学习不是不行,但有一个非常隐蔽的坑:你会变成一个“调包侠”,而且你自己不知道自己是调包侠。
具体表现是:你能照着教程跑通MNIST和CIFAR-10,能改改学习率让loss降下去,但当你的模型在真实数据上不收敛时,你完全不知道从哪排查。你不知道是数据有问题、标签有问题、网络结构有问题、还是优化器参数有问题。你只会反复换优化器、换学习率、换batch size,像在黑暗中乱摸。
这个风险的根源在于,深度学习框架把太多东西封装了。loss.backward()一行代码就完成了反向传播,但你如果不知道链式法则在计算图上是如何展开的,你就无法理解为什么梯度会消失、为什么需要残差连接、为什么BatchNorm能加速训练。
所以我的建议不是“先学完机器学习再学深度学习”,而是在动手跑深度学习代码的同时,补上机器学习的那几个元概念,并且刻意去理解框架封装背后的数学。这两件事可以并行,而且应该并行。
3. 按目标倒推:不同研究方向的学习优先级差异
3.1 计算机视觉方向:先跑通再补理论
如果你做CV,我的建议非常明确:第一周就装PyTorch,第二周跑通一个图像分类的完整pipeline,第三周开始读你导师组里最近发的论文。
为什么?因为CV的入门门槛在工程侧,不在理论侧。你需要先熟悉数据增强、迁移学习、模型微调、评估指标这些实操环节。你需要在真实数据集上感受什么叫“过拟合”、什么叫“数据不平衡”、什么叫“标注噪声”。这些体感,你看再多书也获得不了。
传统机器学习在CV里的直接应用已经很少了,除了某些特定场景(比如小样本下的特征工程+分类器),大部分任务都是端到端的深度模型。所以你不需要先学SVM再学CNN,你可以直接学CNN,然后在遇到“为什么这个小数据集上CNN效果不如随机森林”时,再回头理解归纳偏置和样本复杂度的关系。
具体路径可以这样安排:
- 第1-2周:Python科学计算三件套(numpy、pandas、matplotlib)+ PyTorch基础(Tensor操作、自动求导、nn.Module)。目标是自己写一个全连接网络在MNIST上达到95%以上准确率。
- 第3-4周:CNN基础(卷积、池化、感受野、BatchNorm)+ 经典网络结构(ResNet、VGG)。目标是在CIFAR-10上复现ResNet-18并理解每个模块的作用。
- 第5-6周:迁移学习 + 数据增强 + 训练技巧(学习率调度、早停、模型保存)。目标是在一个自定义的小数据集上完成微调。
- 第7周起:读论文 + 复现。从你导师组里最近的论文开始,先复现baseline,再尝试改进。
3.2 自然语言处理方向:Transformer是起点也是终点
NLP方向的情况比较特殊。如果你现在做NLP,传统机器学习的内容几乎可以完全跳过,直接从Transformer开始。因为NLP的范式已经被BERT和GPT系列彻底重塑了,词袋模型、TF-IDF、Word2Vec这些虽然还有历史意义,但在实际研究中已经很少作为主力方法。
但NLP的难点在于,Transformer的细节非常多,而且每一个细节都有其设计动机。你如果只是调用transformers库的from_pretrained,那你只能做应用,做不了研究。你需要理解:
- 自注意力机制到底在计算什么,为什么除以
sqrt(d_k) - 多头注意力为什么要多头,每个头学到了什么
- 位置编码为什么用正弦函数,可学习位置编码和固定位置编码的差异
- LayerNorm和BatchNorm在序列数据上的区别
- 预训练任务(MLM、NSP)的设计逻辑
这些内容,传统机器学习课程不会讲,你需要专门找Transformer的解读资料。我的建议是:先看一篇高质量的Transformer图解教程,然后自己用PyTorch从零实现一个单层Transformer,最后再去看HuggingFace的源码。
3.3 强化学习方向:机器学习基础反而更重要
强化学习是一个特例。如果你做RL,传统机器学习的基础反而不能跳。因为RL里的很多概念——马尔可夫决策过程、动态规划、蒙特卡洛方法、时序差分学习——都建立在概率论和优化理论之上。你如果连条件概率和期望的线性性质都不熟,看Q-learning的更新公式会很吃力。
而且RL的样本效率极低,训练不稳定是常态。你需要有很强的实验设计能力,知道如何控制变量、如何设计消融实验、如何判断一个改进是真实的还是随机波动。这些能力,恰恰是传统机器学习训练中会强调的。
所以RL方向的路径建议是:先花三周补概率论和优化基础,再花两周学机器学习核心概念,然后进入RL。不要急着跑DQN,先把MDP的贝尔曼方程推导清楚。
3.4 方向未定时的通用底座
如果你还没定方向,或者导师让你先广泛了解,那么我建议按下面的优先级来:
| 优先级 | 内容 | 预计时间 | 为什么 |
|---|---|---|---|
| P0 | Python + numpy + PyTorch基础 | 2周 | 所有方向的共同工具 |
| P0 | 机器学习元概念(偏差方差、评估、梯度下降) | 1周 | 所有方向的共同语言 |
| P1 | 深度学习基础(MLP、CNN、Transformer) | 3周 | 现代AI的核心架构 |
| P1 | 一个完整项目的实操经验 | 2周 | 建立端到端体感 |
| P2 | 传统机器学习算法细节 | 按需 | 遇到再补 |
| P2 | 数学推导与证明 | 按需 | 读论文时遇到再补 |
这个表格的核心逻辑是:先建立“能跑通”的能力,再建立“能改好”的能力,最后建立“能创新”的能力。很多人的问题是卡在第一步之前,花太多时间在“准备”上,迟迟不动手。
4. 一条经过验证的零基础入门路径
4.1 第一阶段:工具链与最小闭环(第1-2周)
这个阶段的目标只有一个:让你能独立完成一个从数据加载到模型评估的完整流程。
不要小看这个目标。我见过太多研一学生,学了三个月还在看视频教程,从来没有自己从头写过一次训练循环。这就像学游泳一直在岸上做动作,下水就慌。
具体任务清单:
- 安装Anaconda或Miniconda,创建独立环境,学会用
conda install和pip install管理包。 - 熟悉Jupyter Notebook或VS Code的交互式编程,学会用
matplotlib画loss曲线。 - 用
numpy实现一个线性回归的梯度下降,不调库,纯手写。 - 用PyTorch实现同样的线性回归,对比手写版本和框架版本的差异。
- 用PyTorch在MNIST上训练一个全连接网络,达到97%以上测试准确率。
这个阶段的关键是不要追求理解所有细节。你不需要知道nn.Linear内部是怎么初始化的,不需要知道Adam的动量更新公式。你只需要知道怎么调用、怎么改、怎么观察结果。细节可以在后续阶段逐步补。
注意:这个阶段最容易犯的错误是“教程看太多,代码写太少”。我的建议是,每看30分钟教程,必须自己写30分钟代码。看和写的时间比例至少1:1。
4.2 第二阶段:深度学习核心架构(第3-5周)
有了最小闭环的经验,你开始理解“模型”是什么、“训练”是什么。接下来要做的就是扩展你的架构工具箱。
这个阶段的核心内容是:
- 卷积神经网络:理解卷积核、步长、填充、通道数、池化。自己实现一个简单的CNN,不用
nn.Conv2d,用unfold和矩阵乘法模拟卷积操作。这个练习能让你彻底理解卷积的计算过程。 - 循环神经网络:理解RNN的展开、梯度消失问题、LSTM的门控机制。虽然现在RNN用得少了,但它是理解序列建模的基础。
- Transformer:这是重点。理解自注意力的计算流程,自己实现一个单头注意力,再扩展到多头。理解位置编码的作用。
- 正则化与归一化:Dropout、Weight Decay、BatchNorm、LayerNorm。理解它们分别在解决什么问题。
这个阶段我强烈建议手写实现,而不是直接调库。你可以在PyTorch里用基础Tensor操作实现这些模块,然后和官方实现对比输出是否一致。这个过程很痛苦,但收获极大。
4.3 第三阶段:完整项目实战(第6-8周)
到了这个阶段,你已经有了足够的工具。现在需要的是一个完整的、有真实数据、有明确评估标准的项目。
项目选择建议:
- 不要选MNIST或CIFAR-10,太干净了,没有真实数据的脏乱感。
- 选一个你感兴趣的小数据集,比如Kaggle上的某个比赛数据集,或者你导师组里已有的数据。
- 任务类型可以是分类、回归、分割、生成,但一定要有明确的评估指标。
项目执行流程:
- 数据探索:画分布图、看类别平衡、检查缺失值和异常值。
- Baseline:先用最简单的模型跑一个结果,哪怕准确率很低。
- 迭代改进:每次只改一个变量,记录结果。比如先改数据增强,再改模型结构,再改优化器。
- 错误分析:看模型在哪些样本上错了,为什么错。这比盲目调参有用得多。
- 结果整理:把实验记录整理成表格,能清晰看出每个改动的影响。
这个阶段的目标不是做出SOTA,而是建立“实验-分析-改进”的循环能力。这个能力比你掌握多少个模型都重要。
4.4 第四阶段:论文阅读与复现(第9周起)
当你有了完整的项目经验,读论文的体感会完全不同。你不再是被动地接受论文里的结论,而是会主动想“这个设计如果放在我的数据上会怎样”“这个改进的代价是什么”。
论文阅读建议从你导师组里最近发表的论文开始,因为你对这个方向最熟悉,而且有问题可以直接问。读的时候按这个顺序:
- 先读摘要和结论,搞清楚它解决了什么问题、声称有什么贡献。
- 再看方法部分,理解它的核心设计。
- 最后看实验部分,注意它的baseline选择、评估指标、消融实验。
- 尝试复现核心结果。如果复现不出来,先检查自己的实现,再考虑论文是否有问题。
复现是最高效的学习方式。你会在复现过程中遇到大量论文里没写的细节——数据预处理、超参数选择、训练技巧——这些才是真正的“隐性知识”。
5. 那些没人告诉你但一定会踩的坑
5.1 数学焦虑导致的拖延
很多零基础学生最大的障碍不是智力,而是对数学的恐惧。看到论文里的公式就跳过,看到“凸优化”“概率图模型”就觉得自己不行。
我的经验是:你不需要先学完数学再学AI,你需要在学AI的过程中按需补数学。遇到一个看不懂的公式,花半小时查清楚它的含义和动机,比花三个月系统学一遍数学分析有用得多。因为前者是问题驱动的,后者是知识驱动的,前者记得牢。
而且,深度学习里真正高频用到的数学,其实就那几样:链式法则、矩阵乘法、期望与方差、最大似然估计、梯度下降。这些你在本科阶段多少接触过,捡起来很快。
5.2 环境配置消耗了过多精力
这是另一个经典坑。很多人第一周就卡在CUDA版本、cuDNN版本、PyTorch版本、Python版本的兼容性上,折腾三天没跑通一个import torch。
我的建议是:用云平台或者实验室服务器,不要在个人电脑上折腾环境。如果必须本地跑,用Docker或者conda的预配置环境。把时间花在写代码上,不是花在配环境上。
提示:如果你在服务器上跑实验,学会用
tmux或screen保持会话,学会用nvidia-smi看GPU占用,学会用scp或rsync传数据。这些工程技能越早掌握越好。
5.3 只看不写,眼高手低
这是最普遍的问题。视频教程看了一堆,书翻了一半,但从来没有自己从头写过一次完整的训练脚本。结果就是:看的时候都懂,写的时候全忘。
我的建议很简单:每学一个新概念,就写一个最小可运行的代码验证它。比如学了Dropout,就写一个对比实验,看有Dropout和没Dropout的loss曲线差异。学了BatchNorm,就手动实现一个版本,和官方版本对比。这种“写-验-调”的循环,才是真正内化知识的方式。
5.4 盲目追新,忽视基础
AI领域的新论文、新模型层出不穷,今天出了个新架构,明天出了个新训练方法。很多人陷入“追新焦虑”,觉得自己永远跟不上。
但实际情况是:大部分新工作都是在少数几个核心思想上的组合和微调。你把ResNet、Transformer、扩散模型这几个核心架构吃透,再看新论文就会发现很多都是它们的变体。基础不牢,追新只会让你越来越焦虑。
5.5 不记录实验,重复踩坑
这是工程习惯问题。很多人跑实验不记录超参数、不保存模型、不整理结果,过了一周完全不记得当时改了什么。然后重复跑同样的实验,浪费大量时间。
我的建议是:从第一天起就用实验管理工具。简单的可以用Excel或Markdown表格,复杂的可以用Weights & Biases或TensorBoard。每次实验记录:日期、代码版本、超参数、训练曲线、评估结果、结论。这个习惯会在你写论文时救你的命。
6. 各方向路线图的差异化补充
6.1 多模态方向:先单模态再跨模态
多模态是近年的热点,但我不建议零基础直接冲多模态。你需要先在至少一个单模态上建立深度理解,再去看跨模态的对齐和融合。
比如你做图文匹配,你至少需要理解视觉侧的特征提取(CNN或ViT)和语言侧的编码(Transformer),然后才能理解对比学习、跨注意力这些机制。如果两边都是半吊子,看多模态论文会很痛苦。
6.2 生成模型方向:从自编码器到扩散模型
生成模型的数学门槛相对高一些,因为它涉及概率分布、变分推断、得分匹配等概念。建议的路径是:
- 自编码器(AE):理解编码-解码结构和重构损失。
- 变分自编码器(VAE):理解隐变量、变分下界、重参数化技巧。
- 生成对抗网络(GAN):理解对抗训练、模式崩溃、Wasserstein距离。
- 扩散模型:理解前向加噪和反向去噪过程、得分函数、采样算法。
这个路径的每一步都建立在前一步的基础上,跳步会很难受。
6.3 图神经网络方向:先补图论基础
GNN的入门门槛不在深度学习,而在图论。你需要先理解图的表示、邻接矩阵、拉普拉斯矩阵、谱分解这些概念,才能理解GCN的推导。
建议先花一周补图论基础,然后从GCN开始,逐步到GraphSAGE、GAT、GIN。图数据的特殊性在于节点之间不独立,这打破了传统深度学习独立同分布的假设,需要特别注意。
6.4 表格数据方向:传统机器学习仍然强势
如果你做的是表格数据(比如金融风控、医疗记录、推荐系统里的特征工程部分),传统机器学习不仅没有过时,反而往往比深度学习效果更好。XGBoost、LightGBM、CatBoost在这些场景下仍然是SOTA。
所以这个方向的学习路径是反过来的:先学传统机器学习,再学深度学习作为补充。你需要理解特征工程、缺失值处理、类别编码、特征选择这些实操技能,这些在深度学习教程里很少讲。
7. 关于教程与资源的个人建议
市面上的AI教程多如牛毛,但质量参差不齐。我按自己的使用体验,给几个筛选标准:
第一,看它有没有完整的代码。只有公式推导没有代码的教程,适合当参考书,不适合入门。入门需要的是能跑起来的东西。
第二,看它有没有讲“为什么”。只讲“怎么做”的教程,你学完只能复现,不能迁移。好的教程会解释每个设计选择的动机和权衡。
第三,看它的更新频率。AI领域变化快,三年前的教程可能已经过时了。优先选近两年更新的内容。
第四,看它有没有配套的练习。光看不动手,等于没学。好的教程会设计循序渐进的练习,让你在解决问题的过程中掌握知识。
具体到资源类型,我的建议是:
- 视频教程:适合建立直觉和快速了解全貌,但不要只看视频。看一段就停下来自己写。
- 教科书:适合系统学习和查阅,但不适合从头读到尾。当工具书用。
- 论文:适合深入理解某个具体方法,但需要你有一定基础后再读。
- 开源项目:适合学习工程实践和代码风格,但需要你能分辨代码质量。
- 博客和专栏:适合快速了解某个具体技术点,但要注意作者的可信度。
我个人的习惯是:遇到一个新概念,先找一篇高质量博客快速了解,然后找官方文档看API,然后自己写代码验证,最后如果需要深入再去找论文。这个顺序从浅到深,从实践到理论,适合大多数人的认知规律。
8. 最后分享几个我反复验证过的实操技巧
技巧一:用“最小可运行单元”来学习每个新概念。不要一上来就搭一个大项目,而是把每个知识点拆成一个10行以内能跑通的小脚本。比如学注意力机制,就写一个输入3个向量、输出3个加权向量的最小例子。这种小脚本跑通了,再组合成大项目就不会慌。
技巧二:建立自己的“代码片段库”。把常用的数据加载、训练循环、评估函数、可视化代码整理成模板,每次新项目直接复用。这能节省大量重复劳动的时间。
技巧三:每周花半小时整理实验记录。不要等到写论文时才回忆当时做了什么。每周把实验表格整理一下,标注哪些有效、哪些无效、为什么。这个习惯坚持三个月,你会发现自己对问题的理解深度远超同龄人。
技巧四:主动找导师或师兄师姐讨论。不要自己闷头学。遇到卡住的地方,先自己查半小时,查不到就带着具体问题去问。问的时候说清楚“我试了什么、结果是什么、我猜测原因是什么”,这样别人才能有效帮你。
技巧五:接受“不完美”的进度。你不可能在三个月内精通所有东西。允许自己有些地方是模糊的,先把主线跑通,细节在后续迭代中补齐。AI是一个实践驱动的领域,动手做比什么都重要。
我在实际引导学生的过程中发现,那些最终做得好的,往往不是最聪明的,而是动手最早、迭代最快、记录最勤的。他们不纠结于“先学什么后学什么”的完美路径,而是先跑起来,在跑的过程中调整方向。这个态度,比任何路线图都重要。