这几年每隔一阵就会收到类似的私信:"我想转行做AI,现在从零开始还来得及吗?"问这个问题的人什么背景都有——刚毕业的学生、工作几年的后端、甚至完全不懂代码的产品经理。我的回答从来都是:来得及,但你先得把"从零开始"这四个字理解对。很多人把AI工程(AI Engineering)想成一条"先修完数学、再学模型、最后上项目"的流水线,结果在第一步就被高数劝退了。我不这么看。这篇文章想聊的,就是"ai-engineering-from-scratch"这件事——不靠捷径、不囤课件,把从写第一行Python到把模型部署上线这整条链路,踏踏实实搭起来。全文没有必须背下来的公式,只有我这些年亲自踩过、也看别人反复踩过的经验和路线。适合两类人:准备系统性入门的初学者,以及已经学了一阵、但卡在瓶颈期不知道下一步往哪走的人。
1. 先搞清楚"从零开始"到底意味着什么
1.1 三个容易混淆的岗位,别一开始就站错队
"AI工程"这个词现在被用得太滥了。招聘网站上挂的AI岗位,实际干的事情天差地别。我见过太多人学了半年,才发现自己准备的考试内容和目标岗位完全不匹配,问题就出在起点上没分清方向。
先把三个最常见的方向摆出来:
| 方向 | 核心工作 | 日常产出 | 典型门槛 |
|---|---|---|---|
| 算法/研究岗 | 读论文、设计模型、做实验 | 论文、实验报告、技术方案 | 通常要求研究生学历,数学功底扎实 |
| 数据科学岗 | 分析数据、建立统计模型、出业务洞察 | 报表、分析结论、A/B测试方案 | 业务理解比模型能力更重要 |
| AI工程/ML工程岗 | 把模型变成可运行、可维护、可监控的服务 | API、训练管道、推理服务、监控系统 | 工程能力优先,模型能力是底座 |
我为什么建议多数零基础的人瞄准第三个?因为研究岗的竞争极度激烈,而且说实话,大部分业务场景用不到你发明新模型;数据科学岗的天花板又往往被业务方向限制。AI工程是这三个方向里最需要"从零到系统"综合能力的,也是最容易通过项目经验进入的——你不需要发过论文,但你得证明你能把一个模型从数据集一路弄到线上稳定运行。
1.2 真正的起点:不是"清零",而是"动手"
很多人听到"from scratch"就紧张,觉得自己得先把微积分、线性代数、概率论全部重修完,才有资格碰AI。这是最典型的误区。我本科不是AI方向,后来转过来,最深的一个体会是:AI工程的学习曲线不是"先学完理论再实践"的直线,而是"实践驱动、理论随用随补"的螺旋。
你可以在完全不懂反向传播公式推导的情况下,用几行代码训练出第一个线性回归模型;你也可以在不理解注意力机制所有细节的情况下,跑通一个情感分类的Transformer。先让结果跑起来,再追问"它为什么工作""在什么情况下失效",这个顺序远比倒过来顺畅。所谓"从零开始",起点不是知识的空白,而是动手能力的空白。你真正要培养的第一项能力,是"遇到问题能自己把环境配好、把Demo跑起来、把报错查到根因"——这比背十节课都管用。
2. 地基怎么打:数学、Python和数据能力的正确姿势
2.1 Python:学到什么程度算过关
总有人问:"Python要刷完某本书才能开始学AI吗?"我的答案是:不用,但要保证几项基本功是真的,而不是"看过"。
第一,语法层面你至少能不看资料写出:函数、类、列表推导式、异常处理、文件读写。第二,两个工具库必须顺手——numpy和pandas。很多AI面试手撕代码考的就是numpy的一次性索引和广播机制,因为这是你后面处理张量的基础。第三,要学会读报错。Python的Traceback是全世界最友好的报错之一,从最后一行往上读,90%的问题能自己解决。
我自己带过的新人里,卡住他们的从来不是语法,而是"不知道怎么开始写"。一个实用的破解方法:每天挑一个现实小任务(比如批量把某目录下的图片改名、合并一个Excel的小程序)用Python实现,坚持两到三周。等你形成"打开终端就能写脚本"的条件反射,基础部分就算过关了。
2.2 数学:按需学习,不要从头啃课本
如果让我划一份"AI工程真正用得上的数学清单",大概是这样的:
- 线性代数:矩阵乘法、向量点积、矩阵形状变化的含义。模型里的每个张量操作本质上都在做矩阵运算,你不需要会证明特征值定理,但你得能算明白"一个(64,128)的矩阵乘以(128,10)的结果为什么是(64,10)"。
- 微积分:导数、链式法则。反向传播就是链式法则的自动化,理解到这个层面就够用了。
- 概率统计:均值、方差、正态分布、最大似然估计的基本思想、贝叶斯公式。损失函数、正则化、置信区间全是概率统计的语言。
- 信息论基础:交叉熵、KL散度。做分类、蒸馏、生成模型都会遇到。
学习策略上是"项目遇到什么补什么"。比如你在做回归时发现不懂梯度下降,就专门花两天把导数和梯度捋一遍;做分类模型时再补交叉熵。这样学下来的数学是有锚点的,不会学了后面忘了前面。我自己最推荐的入门资源是3Blue1Brown关于线代和微积分的可视化系列,它把最抽象的直觉讲得极其直观,比抱着一本厚书死磕效率高得多。
2.3 数据能力:最被低估的地基
我敢说,90%自学AI的人把时间全花在模型上,但真实工作里,最耗时间、最影响结果的是数据。你拿来训练的数据可能是脏的:有空值、有重复样本、标签错乱、分布严重不均衡。处理这些的能力,就是数据工程和数据清洗能力。
这一块至少要掌握:用SQL查数据、pandas做清洗与聚合、基本的可视化分析(matplotlib/seaborn)、理解特征分布和缺失值处理。做一个合格的AI工程师,你要能对着一个原始CSV讲出"这份数据有什么问题、我打算怎么清洗、清洗后对模型会有什么影响"。这个能力在面试里很容易被考察,实际操作中更是天天用到。因为模型的精度上限,很大程度上在数据进模型之前就已经被决定了。
3. 核心知识主线:从传统机器学习到Transformer
3.1 为什么要从传统机器学习开始
很多新手一上来就学深度学习,学完PyTorch就开始微调大模型,结果对最基本的"过拟合"都讲不清楚。我特别坚持的一条路径是:先完整走一遍传统机器学习(sklearn),再进深度学习。
原因有三条。第一,传统ML的每个算法都对应一个经典直觉——线性回归是最小化误差、决策树是按特征做划分、SVM是找最大间隔边界。这些直觉是理解一切模型的底层词汇。第二,传统ML的整个流程短,从数据清洗到特征工程到训练评估,一个人能在几小时内完整走通,这对于建立"工程闭环"的感觉特别重要。第三,现实业务里大量的基线模型就是逻辑回归和梯度提升树(比如XGBoost、LightGBM),它们在很多场景下依然是性价比之王。你不会传统ML,等于少了一大半实用武器。
实践上,建议至少亲手用numpy实现一次线性回归和一次逻辑回归,再去看sklearn的封装。这步别看简单,它逼着你理解梯度更新的每一步在干什么,后面学神经网络会快非常多。
3.2 深度学习的几个关键直觉
进入深度学习以后,要抓住的实际上就那么几件事:模型结构、损失函数、优化器、数据流动。
- 模型结构:从最简单的全连接网络开始,理解每一层都是在做一个"输入特征 → 输出特征"的变换,层数越多,能表达的映射越复杂,但也越容易过拟合。
- 损失函数:它是模型的"标尺"。回归用均方误差,分类用交叉熵。你要知道为什么分类不能用MSE——因为分类输出的是概率分布,衡量两个分布差异的正确工具是交叉熵。
- 优化器:SGD是最朴素的选择,Adam是实际中最常用的。理解学习率的意义比背优化器的公式重要:学习率太大loss震荡不收敛,太小收敛慢得像蜗牛。
- 数据流动:模型不是变魔术。你要能在纸上画出"一个batch的数据从进入网络到输出loss,再反向传播更新参数"的全过程。能画清楚这个过程,PyTorch的代码对你来说就不再是黑箱。
之后再接触CNN(图像)、RNN/Transformer(序列),你会发现它们只是在"特征变换"这个大框架下加了不同的归纳偏置:CNN假设邻近像素相关,Transformer假设任意位置可以相互关注。理解到这个层面,看到新模型就不会慌了。
3.3 用一条项目主线把知识串起来
零散的知识点学完必忘,这是规律。解决的办法是给自己设计一条"阶梯式项目主线",每个项目覆盖一两个新知识点:
- 房价预测(线性回归+特征工程):学会建基线、看评价指标。
- 手写数字识别(全连接网络→CNN):第一次接触PyTorch和GPU训练。
- 电影评论情感分类(词嵌入+RNN/Transformer):处理文本数据、padding、batch。
- 一个小型问答/聊天机器人(微调开源大模型或做RAG):体验现代LLM应用开发的完整链路。
这条主线走完,你至少接触过数据、模型、训练、评估的完整环节。关键的自我检验标准是:每个项目结束后,你能不能给别人讲清楚"我用了什么数据、为什么选这个模型、哪里出了问题、最后怎么解决的"。能讲清楚,才算真会。
4. 工具链选型:把时间花在值得学的框架上
4.1 框架不是越多越好
工具选择这块,信息噪声特别大。今天有人吹TensorFlow,明天有人喊PyTorch,后天又有新框架出来。我的态度很明确:新手阶段,把注意力锁死在一套主工具链上,其他东西知道名字、知道它能干什么就够了。
深度学习框架直接选PyTorch。原因很现实:学术界绝大多数论文的官方代码是PyTorch写的,工业界部署生态也已经完全转向它,社区问题答案最多。TensorFlow/Keras不是不好,但新手拿它学习,碰到的资料和踩过的坑会更多。等你在PyTorch里把张量操作、自动求导、模型构建都跑熟了,再去看其他框架,三个下午就能迁移过去——框架只是工具,背后的原理是通用的。
4.2 我的标准AI工程工具栈
我给新人推荐一套"够用且不会后悔"的工具栈,这套组合在我实际带的人里被验证过很多次:
| 环节 | 推荐工具 | 说明 |
|---|---|---|
| 开发环境 | VS Code + Jupyter | Jupyter做探索性实验,VS Code写正式工程代码 |
| 依赖管理 | conda 或 venv | 项目隔离环境,避免"换个机器跑不了" |
| 数据处理 | pandas + numpy + SQL | 清洗、特征处理的不二之选 |
| 传统ML | scikit-learn + LightGBM | 基线模型和表格数据的王牌 |
| 深度学习 | PyTorch | 主力框架 |
| 预训练模型 | Hugging Face Transformers | 加载、微调、调用开源模型的标准入口 |
| 可视化 | matplotlib + seaborn | 数据探索和结果展示 |
| 版本控制 | Git + GitHub | 从第一天就开始用,这不是可选项 |
这里特别强调Git。我见过不少很努力的新人,项目做了一两个月,代码全在本地,也没有版本记录,一旦改崩了没法回滚。Git是工程能力的基本功,花一个周末学透常用命令,后面省下的时间是以月计的。
4.3 算力和环境:低成本起步方案
很多人问"要不要先买块高端显卡再开始"。我的建议是:在你跑通第一个CNN之前,完全不需要买显卡。起步阶段用免费算力完全够:
- Google Colab:免费GPU级别的算力,跑课程项目和中小模型足够,配合Google Drive可以存数据。
- Kaggle Notebook:每周有免费GPU/TPU额度,比赛数据直接能访问,对练手特别友好。
- 云厂商的GPU实例:按需租用,适合偶尔需要大规模训练的场景,记得用完就释放,别开着过夜烧钱。
等到你要微调比较大的模型、或者做推理服务测试了,再考虑买卡或者租长期实例。老实说,算力从来不是零基础阶段的主要瓶颈,主要瓶颈永远是动手量不够。
5. 从模型到产品:这才是"AI工程"的真正分水岭
5.1 数据管道:训练前最容易被忽视的环节
在课程里,数据是干净的、准备好的,你只需要调模型。真实工程里完全不是这样。一个正经的AI应用,数据管道通常比模型代码复杂得多。
你需要考虑的事情包括:数据从哪里来(业务数据库、日志、第三方接口)?怎么定期拉取和更新?怎么做质量校验(字段缺失率、取值分布是否异常)?怎么按时间切分训练集验证集(一定要防止未来数据泄漏到过去)?特征怎么统一处理并保存,保证训练和推理时用同一套逻辑?
我的建议是:做一个端到端小项目,哪怕数据只有几万条。你会被迫面对"训练时好好的,上线后特征对不上""数据更新后分布变了"这一类真实问题。这些问题才是区分"会调模型"和"会做AI工程"的关键。
5.2 部署与推理优化:模型跑起来只是开始
模型训练完只是完成了一半。要让别人真正用起来,你需要把它封装成服务。最常见的方案是FastAPI + ONNX Runtime(或PyTorch的TorchServe):写一个接收请求、返回预测结果的HTTP接口,然后用Docker打包,放到服务器或者云函数上。
下面是一个最简的推理服务示例,模型先导出成ONNX格式:
from fastapi import FastAPI from pydantic import BaseModel import onnxruntime as ort import numpy as np app = FastAPI() session = ort.InferenceSession("model.onnx") class Item(BaseModel): features: list[float] @app.post("/predict") def predict(item: Item): input_array = np.array(item.features, dtype=np.float32).reshape(1, -1) pred = session.run(None, {"input": input_array})[0] return {"prediction": pred.tolist()}这个阶段有几个重要概念要理解:
- 批处理(batching):把多个请求合并成一批推理,吞吐量能提高数倍,代价是单条请求延迟稍微增加。
- 量化(quantization):把模型参数从32位浮点压缩到16位甚至8位,模型体积和推理延迟显著下降,精度损失通常很小。
- 缓存与异步:高频重复的请求可以用缓存直接命中,不用每次都过模型。
很多人第一次把自己的模型部署成API时,会发现比训练过程还折腾——环境不一致、依赖冲突、显存占用、并发问题。但这些折腾恰恰是宝贵的经验,做完一次,你对"AI系统"的理解会完全不一样。
5.3 评估、监控与迭代:上线之后的工作
模型上线不是终点,是新一轮迭代的起点。工程上要做的第一件事是给"模型表现"装上仪表盘:上线前后记录准确的输入分布、预测分布、延迟、错误率,定期对比。
最常遇到的坑是数据漂移(data drift):线上输入数据的分布随着时间慢慢变化,模型在训练集上95%的准确率,上线三个月后掉到80%。这不是模型坏了,而是"世界变了"。对付它,你需要监控输入特征分布是否显著偏离训练时分布,并设计好预警规则;同时定期用新数据重新训练或微调模型。另外,每一次模型更新都要留版本、做A/B对比,千万不要"直接替换"——你永远要能回答"新模型到底比旧模型好在哪"。
这一整套围绕模型上线后的工作,就是现在说的MLOps。它听起来高大上,落到具体动作上就是上面这几件事。能把它们做成习惯,你在团队里的价值会明显上一个台阶。
6. 学习路线、节奏与典型的坑
6.1 我建议的三阶段路线
结合我自己的经验和带人的观察,给一个可执行的时间节奏:
| 阶段 | 时间 | 核心目标 | 关键产出 |
|---|---|---|---|
| 第一阶段 | 第1-3个月 | Python熟练、数学基础够用、走通一次传统ML完整流程 | 3个以上可复现的小实验/小项目 |
| 第二阶段 | 第4-9个月 | 深度学习原理和PyTorch顺手、跑完3-4个深度学习项目 | 1个从数据到模型的完整项目,能讲清楚 |
| 第三阶段 | 第10-18个月 | 端到端能力:部署上线、监控迭代、参与开源或比赛 | 1个可用API访问的完整AI应用 |
这个节奏的前提是每天能稳定投入1-2小时,周末多一点。不用追求每天学很久,但一定要保持连续。我见过太多人"热情来了猛学三天,然后歇一周",这种模式下前面学的全被遗忘曲线收走了。稳定比强度重要得多。
6.2 最容易劝退的五个坑
以下五个坑是我在零基础转AI的人身上见得最多的:
第一,教程囤积症。收藏了上百个教程、几十本电子书,真正打开的没几个。治法是:每个阶段只保留一个主线教程和一个实战项目,学完再换。
第二,只学不动手。看视频时觉得"听懂了",自己一写就卡壳。看视频永远无法替代亲手敲代码,卡壳才是真学习开始的地方。
第三,过早追求SOTA或大模型。很多人基础没打牢就去微调一个超大模型,最后只会套别人的代码,遇到问题毫无头绪。先在小模型和标准算法上把基本功练扎实。
第四,忽视工程基本功。Git不会用、环境不会隔离、代码没有任何注释,项目做到一半自己都看不懂自己的代码。工程素养要从第一天开始培养。
第五,闭门造车不交流。学AI特别容易陷入"自己一个人在笔记本前Debug到深夜"的孤独感里。不找人交流、不写笔记、不分享,很容易自我怀疑。写得再烂的技术笔记,也比什么都不写强——写作是最有效的整理和复习。
6.3 怎么获得反馈:比赛、开源与写博客
反馈是自学最大的奢侈品。没有老师、没有同事,你怎么知道自己学得怎么样?三个渠道非常有效。
一个是参加Kaggle或国内类似的机器学习比赛。比赛给了你明确的问题、数据集和排行榜,你的每一次提交都能得到即时反馈,还能看高手的开源方案,这是极好的学习材料。不要怕排名靠后,第一次参加的目标就是"完整走一遍流程并提交一个高于基准线的方案"。
另一个是读开源项目代码,尤其是Hugging Face上那些热门模型的示例代码,或者GitHub上星标很高的小型训练框架。读代码时别急着通读,先跑起来,再按"数据加载→模型定义→训练循环→评估"的顺序逐块拆解。
还有一个是我个人最推荐的:写技术博客或者笔记,持续记录你的项目和踩坑过程。写作会逼你把零散的知识结构化,也会给你积累一个作品集。我后来面试时,让面试官印象最深的往往不是简历上的学历,而是我在博客里写的一篇完整的"从数据到部署"的项目复盘。这种能证明"你真的动手做过、而且能讲清楚"的东西,比任何证书都有说服力。
最后说一个我自己的感受。我带过不少人,也见过很多自学成功案例,大家背景差异极大,但最后走通的人有个共同点:他们都不太聪明,但都很"钝"——不急着三天搞懂所有东西,肯在一个报错上磨两个小时,肯把一个项目反复重做三遍。AI工程这条路,入口宽,门槛其实藏在人的心性里。如果你现在正准备启动,别囤教程了,今天先把Python环境装好、跑通一个最简单的线性回归,你就已经超过95%还在"准备开始"的人了。