1.1 AI编程的定义与边界:传统编程、机器学习、大模型辅助编程
我理解的AI编程,其实包含三个层面。传统编程是写规则,机器学习是让模型从数据里找规律,大模型辅助编程是用自然语言生成代码。这几种模式在真实工作里经常混着用。
边界在哪里?传统编程处理确定性任务,机器学习处理模糊识别和预测,大模型辅助编程更像高级自动补全和代码解释器。我刚开始学的时候,以为AI编程就是调库,后来发现完全不是。和几个同学聊,他们也有同感,总觉得会调sklearn就算入门了。
举个例子,做房价预测。传统编程写公式很难,机器学习训练回归模型可以,大模型辅助编程能帮我快速写出数据清洗代码。三者配合,效率很高。我现在的习惯是,用大模型辅助写样板代码,自己动手改核心逻辑,再用传统编程思路做工程化封装。
1.2 入门基础自查:Python、数学、数据处理与英文阅读
我给自己做了一次基础自查。Python不用学到精通,能写函数、循环、类,会用列表字典就够了。数学方面,线性代数、概率统计、微积分的基础概念要能看懂公式。
数据处理能力,指的是会用Pandas清洗数据、处理缺失值、做特征工程。英文阅读,是为了看官方文档、论文、Stack Overflow。我英文一般,借助翻译工具也能啃下来。身边有朋友因为英文不好就放弃,我觉得挺可惜。
自查完,我发现缺口在概率统计和英文阅读。于是制定了补缺计划。每天花半小时看英文技术博客,周末补数学。这个过程不要追求完美,边做项目边补效率更高。我还在社区里看到有人分享类似经历,大家都是从别扭到习惯的。
1.3 目标设定与学习误区:避免只调包、只收藏、只学理论
我一开始设定了“三个月转行AI”的目标,结果发现太虚。后来改成“能独立完成一个Kaggle入门赛并解释模型”。目标具体了,行动才清晰。和同行交流时,他们也说目标太虚容易放弃。
我踩过三个坑。只调包,sklearn的API一查就会,但不知道为什么这样调参。只收藏,硬盘里存了100G教程,看完的不到5%。只学理论,推导公式很爽,但写不出一个完整项目。
避免这些误区的办法:每个知识点都写代码验证一遍。收藏夹里的内容,看完一个删一个。理论学到够用就去实践。我现在的习惯是,每周至少提交一次代码到GitHub。哪怕只是几行,也比光看强。
1.4 学习成果衡量:能独立完成小项目并解释模型流程
怎么判断自己入门了?我的标准是能独立完成一个小项目。比如,从数据获取、清洗、特征工程、模型训练、评估到部署,全部自己走一遍。
解释模型流程,意味着能向别人讲清楚:数据怎么来的,特征怎么选的,模型为什么选这个,评估指标为什么用这个,结果怎么解读。能讲明白,才是真懂。我参加读书会时,尝试向别人解释,才发现自己有些地方没真懂。
我第一个拿得出手的项目是鸢尾花分类,虽然简单,但我把每一步都写成了博客。后来面试时,面试官问的就是这个项目。成果衡量不看项目大小,看你能不能讲透。
2.1 第一阶段:编程与工具基础(Python、Git、Jupyter/Colab)
我当初从Python语法开始,没敢直接碰AI。变量、循环、函数、类,这些基础花了两周。每天写几十行代码,做点小练习。光看视频不行,必须动手。Git是另一个坎,我一开始只会git add和commit。有次把本地代码搞乱了,才明白版本控制的意义。现在我用Git管理所有学习笔记和项目,哪怕是小脚本也提交。
Jupyter和Colab是我的实验田。Jupyter适合本地调试,Colab免费GPU很香。我用Colab跑过第一个线性回归,虽然简单,看到结果那一刻挺兴奋。和同学交流,有人推荐VS Code加Jupyter插件,也有人坚持用PyCharm。工具顺手就好,别在这上面纠结太久。
这个阶段我花了大概一个月。每天两小时,周末多写点。资源方面,我看了廖雪峰的Python教程,还有官方文档。Git看的是Pro Git的前三章。Colab的教程在Google官方就有。不要贪多,把基础打牢,后面才顺。
2.2 第二阶段:数据与数学核心(NumPy、Pandas、概率统计、线性代数)
NumPy和Pandas是数据处理的双子星。我学NumPy时,重点练数组运算和广播机制。Pandas的DataFrame操作,刚开始很晕,后来用泰坦尼克数据集练手,清洗、筛选、分组,慢慢就熟了。现在处理表格数据,Pandas是我的首选。
数学部分,概率统计和线性代数让我头疼。我重新捡起大学教材,配合可汗学院视频。线性代数重点看矩阵运算、特征值。概率统计重点看分布、期望、方差、贝叶斯。我给自己定规矩:每个数学概念都用NumPy实现一遍。用代码算协方差矩阵,比手推公式直观多了。
身边有朋友跳过数学直接学模型,调参时一头雾水。我的建议是边学边用,不用等到完全精通。遇到不懂的公式,回头补。我花了六周左右,每天抽一小时啃数学。现在看论文里的公式,至少不慌了。
2.3 第三阶段:机器学习与深度学习入门(scikit-learn、PyTorch/TensorFlow)
scikit-learn是我入门机器学习的第一个库。我跟着官方文档做分类、回归、聚类。用鸢尾花、波士顿房价这些经典数据集。重点是理解流程:划分数据、训练、预测、评估。我一开始只会调默认参数,后来学会用GridSearchCV调参。Kaggle的入门赛给了我很大帮助,排名不高,完整走了一遍流程。
深度学习我选了PyTorch。TensorFlow也看过,PyTorch的动态图更符合直觉。我搭了一个简单的全连接网络做手写数字识别。训练过程很慢,调参很玄学,跑通那一刻很爽。后来用CNN做CIFAR-10,准确率慢慢提升。这个阶段我花了两个月,踩了不少坑,比如梯度爆炸、过拟合。
有朋友推荐先学理论再动手,我觉得反了。先跑通代码,再回头看理论,理解更深。我建议每个模型都自己写一遍,哪怕照抄。抄完改参数,改完再总结。PyTorch的官方教程和《动手学深度学习》都不错。
2.4 第四阶段:大模型与AI应用开发(Prompt、API、RAG、Agent)
大模型来了,学习路线也得更新。我从Prompt工程开始,学写清晰的指令、给例子、设角色。OpenAI的API文档我翻了好几遍。用Python调用GPT接口,做一个简单的聊天机器人。后来接触LangChain,发现它能简化很多流程。
RAG是我觉得最实用的方向。把文档切块、向量化、存进向量数据库,再用大模型检索回答。我拿自己的笔记做了一个知识库问答,效果还行。Agent更复杂,需要设计工具调用和任务规划。我跟着AutoGPT和LangChain的示例,做了一个能查天气和搜索的助手。这个过程让我对大模型应用有了直观感受。
这个阶段变化快,我保持每周看新项目。社区里有人分享RAG优化技巧,比如重排序、混合检索。我边学边做,把代码放到GitHub。有次API key泄露了,被扣了几美元,从此学会用环境变量。大模型应用开发,动手比观望重要。
2.5 第五阶段:按方向深化与路线复盘(CV、NLP、LLM应用)
走完前四个阶段,我面临方向选择。CV、NLP、LLM应用,每个都吸引人。我花了一周复盘自己的兴趣和优势。我更喜欢文本和交互,于是选了NLP和LLM应用。CV我也了解基础,没深入。这个选择没有对错,看你想解决什么问题。
我给自己定了深化计划。NLP方面,学Transformer、BERT、微调。LLM应用方面,研究RAG、Agent、评估。我参加了一个开源项目,贡献文档和测试。复盘时,我把每个阶段的项目整理成作品集,写清技术栈和收获。有朋友选择CV,在做目标检测,也做得不错。
路线复盘不是一次性的。我每三个月回看一次,调整学习重点。社区里的讨论、招聘要求的变化,都会影响我的计划。我现在的状态是,能独立完成一个RAG应用,也能解释清楚背后的原理。从零到项目落地,我走了大约八个月。不算快,每一步都算数。
3.1 本地开发环境搭建:Python、VS Code、Jupyter、虚拟环境
我刚开始学AI编程时,环境搭建差点把我劝退。装Python就出了岔子,官网下载的安装包默认没勾选“Add to PATH”,结果命令行里输入python提示找不到命令。后来重装,手动勾选选项,才搞定。我的建议是直接装Anaconda,它帮你把Python、conda、常用科学计算库打包好了。省心。装完Anaconda,命令行里conda命令能用,python也能用。这一步过了,后面就顺了。
VS Code是我的主力编辑器。装个Python插件,再装Jupyter插件,就能在VS Code里写notebook。我喜欢它的原因是轻量、插件多、社区活跃。有段时间我用PyCharm,功能强,但启动慢,对我这种老电脑不友好。选编辑器看个人习惯,别在这上面反复横跳。
虚拟环境是我踩坑最多的地方。最开始我所有项目共用一个环境,装包装到冲突,numpy版本打架,代码跑不起来。后来学会用conda创建独立环境:conda create -n myproject python=3.11。每个项目一个环境,互不干扰。这个习惯帮我省了无数时间。Jupyter里切换内核也要注意,选对环境再跑代码。
3.2 云端算力与实验平台:Colab、Kaggle、AutoDL、GPU租用
我的笔记本没有独立显卡,跑深度学习很吃力。Colab救了我。免费版给一块T4 GPU,做小项目够用。我最早在Colab上跑通了一个图像分类的notebook,加载数据、定义模型、训练、评估,全程在浏览器里完成。Colab的缺点是会话会断,跑长任务要盯着。Colab Pro按月付费,GPU更好,时长更久。我用过几个月,觉得值。
Kaggle不只是竞赛平台,它的notebook环境也很强。每周有GPU时长,还能直接调用平台上的数据集。我在Kaggle上复现过别人的baseline,学习他们的代码组织方式。Kaggle的社区氛围好,讨论区里能看到各种思路。我参加过一个入门赛,排名靠后,但完整走了一遍流程,收获很大。
国内的话,AutoDL是我用得比较多的GPU租用平台。按小时计费,价格透明,适合跑大模型微调或者需要长时间训练的任务。我租过一张3090,跑了几个小时的实验,花费可控。选平台时注意看显卡型号、显存大小、带宽和数据盘大小。数据上传下载的速度也要考虑。有朋友用恒源云、矩池云,体验类似。云端算力让普通人也能玩转大模型。
3.3 AI编程辅助工具:Copilot、Cursor、通义灵码、Claude Code
Copilot是我第一个付费的AI编程工具。它在VS Code里补全代码,写函数、写注释、写测试都能帮上忙。我最喜欢的功能是根据注释生成代码。写一句“读取CSV文件并计算每列均值”,它就能给出可运行的代码。省去了查文档的时间。Copilot对Python和常见库的支持很好。用久了会形成依赖,我提醒自己还是要理解代码逻辑。
Cursor是基于VS Code的AI编辑器,内置了聊天和代码生成功能。我用它重构过一个项目,选中代码,输入需求,它就能改。Cursor的Composer功能可以跨文件编辑,适合较大规模的重构。通义灵码是阿里的免费工具,中文支持好,对国内开发者友好。我在写中文注释和文档时用它比较多。Claude Code是命令行工具,适合喜欢终端操作的开发者。我用它在终端里生成脚本和调试代码。
这些工具的共同点是提高效率,不能替代理解。我见过有人完全依赖Copilot,结果代码出错不知道怎么修。我的用法是:让AI生成初稿,自己审查、修改、测试。AI辅助编程是趋势,学会和它协作比自己硬扛更聪明。
3.4 版本管理与协作:Git/GitHub、数据与模型版本管理
Git我学了两遍。第一遍只学了add、commit、push,够用但不够。第二遍学了分支、合并、rebase、cherry-pick。真正让我理解Git的是协作。我和朋友一起做一个项目,他改了文件我没同步,直接push,冲突了。那次之后我养成了先pull再push的习惯。Git的图形化工具我用过GitHub Desktop和VS Code内置的,命令行还是最灵活的。
GitHub是我的代码仓库和作品集。我把学习笔记、小项目、复现的论文都放上去。README写清楚项目背景、技术栈、运行方式。有次面试,面试官直接看了我的GitHub,问了项目细节。那一刻我庆幸自己平时有整理。GitHub Actions可以做自动化测试和部署,我还没深入用,但看过一些例子。
数据和模型的版本管理是个容易被忽略的问题。代码用Git管,数据和模型文件太大,不适合直接进Git。我用过DVC,它能把大文件存到远程存储,Git里只保留元数据。模型版本管理我还在摸索,简单的做法是按日期和参数命名文件夹,复杂场景用MLflow或者Weights & Biases。这一步做好了,实验可复现,省去很多麻烦。
3.5 常用框架与库速查:NumPy、Pandas、scikit-learn、PyTorch、LangChain
NumPy和Pandas是我每天都会用的库。NumPy处理数组和矩阵运算,速度比原生Python快很多。Pandas处理表格数据,read_csv、groupby、merge、pivot_table这几个函数我用得最多。学这两个库没有捷径,找几个真实数据集练手。我用泰坦尼克和鸢尾花数据集反复练,直到操作流畅。
scikit-learn是传统机器学习的瑞士军刀。分类、回归、聚类、降维、模型选择、预处理,它都有。API设计一致,fit、predict、transform,学会一个模型就会用其他模型。我建议从官方文档的流程图入手,搞清楚什么时候用什么模型。PyTorch是深度学习的主力框架,动态图让调试更直观。我从全连接网络开始,然后学CNN、RNN、Transformer。官方教程和《动手学深度学习》是我主要的学习材料。
LangChain是大模型应用开发的脚手架。它把Prompt、模型调用、输出解析、记忆、检索这些组件封装好,用链式的方式组合。我用LangChain做过一个RAG问答系统,加载文档、切分、向量化、检索、生成回答,整个流程很清晰。LangChain更新快,API有时会变,看官方文档最靠谱。这几个库不用一次学完,用到哪个学哪个,边做边查。
4.1 入门级项目:数据清洗、可视化、房价/鸢尾花预测
我做的第一个正经项目是鸢尾花分类。数据集小到可以塞进脑子,150行数据,4个特征,3个类别。我用pandas读进来,看了看分布,画了散点图,然后扔给scikit-learn的LogisticRegression。准确率跑到95%以上,那一刻我觉得自己行了。后来才明白,干净的数据集是奢侈品,真实世界根本不这样。
第二个项目我选了泰坦尼克生存预测。这个数据集有意思,有缺失值,有类别变量,有看起来跟结果无关的列。我花了大量时间在数据清洗上。Age列缺了快两成,我试过填均值、填中位数、用其他特征预测填充。Fare列有几个极端值,拉高了均值,我做了对数变换。Embarked列缺了两个,我直接删了那两行。这些操作看起来琐碎,但模型效果从0.76提到了0.81,数据质量比模型选择重要得多。
房价预测是我第一个回归项目。Kaggle上的House Prices竞赛,特征多得让人头大。我花了三天做特征工程,把地下室面积、车库面积、整体质量这些列拆开组合。可视化帮了大忙,我画了SalePrice的分布图,发现它右偏,做了log变换。相关性热力图让我扔掉了几个冗余特征。最后用随机森林跑了一遍,提交成绩排在前40%。这个名次不重要,走完整个流程才是收获。我养成了一个习惯:拿到新数据集,先看分布,再看缺失,再看相关性,最后才碰模型。
4.2 进阶级项目:图像分类、文本情感分析、推荐系统小案例
图像分类我选了CIFAR-10。这个数据集有6万张32x32的彩色图,10个类别。我用PyTorch搭了一个简单的CNN,卷积、池化、全连接,训练了20个epoch,准确率停在65%左右。我知道这远不是上限,调了学习率,加了数据增强,换了更深的网络,慢慢爬到75%。调参的过程像在黑暗里找开关,每次改动都不知道会不会有提升。
我记得有一次把学习率从0.01降到0.001,训练损失下降得更平滑,验证准确率反而涨了。另一次我加了Dropout层,训练集准确率降了,验证集涨了。这些反馈让我理解了正则化和过拟合的关系。图像分类项目让我学会了用TensorBoard看曲线,用早停法防止过拟合。这些技能后来在别的项目里反复用到。
文本情感分析我用了IMDB影评数据集。5万条评论,正面负面各一半。我用TorchText处理文本,建词表,把句子转成索引序列。模型用的是LSTM,双向的,两层。训练速度比图像慢很多,一个epoch要跑十几分钟。准确率到88%左右就上不去了。我试过用预训练的GloVe词向量,准确率涨到91%。预训练词向量有用,它把词语之间的语义关系带进来了。
推荐系统我做了个简单的电影推荐。用MovieLens数据集,用户对电影的评分矩阵。我用了基于物品的协同过滤,算电影之间的相似度,给用户推荐看过的相似电影。矩阵稀疏得让人绝望,大部分用户只评价了很少的电影。我试了矩阵分解,把评分矩阵拆成用户和物品的隐向量,效果好了不少。这个项目让我理解了冷启动问题,新用户没有历史行为,推荐系统就瞎了。
4.3 大模型应用项目:智能问答、文档摘要、RAG知识库
智能问答是我做的第一个大模型项目。我用OpenAI的API,写了个简单的问答机器人。给一段背景文本,让模型根据文本回答问题。Prompt写得很粗糙,就一句话:“根据以下内容回答问题”。模型经常瞎编,或者把背景文本里没有的东西说成有。后来我学了Few-shot Prompting,给几个例子,效果好多了。温度参数调到0.2,回答稳定了不少。
文档摘要我用的是LangChain。把一篇长文章切分成段,每段让模型生成摘要,再把所有摘要合并成总摘要。这个Map-Reduce的思路很直观。切分尺寸要注意,太小了上下文不够,太大了超出模型限制。我试过500字一段,效果不错。摘要质量跟Prompt关系很大,我用了“用一句话概括这段话的核心信息”,比“总结一下”好很多。
RAG知识库是我花时间最多的项目。我想做一个能回答我私人笔记问题的系统。流程是:加载文档、切分成块、用Embedding模型向量化、存进向量数据库、查询时先检索相关块、再让模型生成回答。听起来简单,做起来坑很多。切分策略影响召回率,我试过按段落切、按固定长度切、按语义切。Embedding模型我用了OpenAI的和开源的BGE,BGE对中文更友好。
向量数据库我用了Chroma,轻量、本地跑、容易上手。检索环节我加了重排序,先粗召回20个块,再用交叉编码器精排取前5个。重排序让回答准确率提升明显。生成环节我写了System Prompt,让模型只根据检索到的内容回答,不自己发挥。这套组合跑通了之后,我的笔记问答系统准确率到了能用的程度。RAG让我理解了一个道理:大模型不是万能的,给它配个好检索系统,它才能靠谱。
4.4 Agent与自动化项目:多工具调用、工作流自动化、AI编程助手
Agent项目是我觉得最有意思的。我做了个能查天气、算数学、搜网页的Agent。用LangChain的Agent框架,把几个工具函数注册进去,模型自己决定什么时候调用哪个工具。第一次跑通的时候很兴奋,我问它“北京今天天气怎么样,适合穿什么衣服”,它先调天气API,拿到温度,再推理穿衣建议。这个推理链条是模型自己规划的。
多工具调用有个坑,模型有时候会调错工具,或者参数传错。我给每个工具写了详细的描述,告诉模型这个工具干什么、输入格式是什么。描述写得越清楚,模型调用越准确。我还加了错误处理,工具调用失败就返回错误信息给模型,让它重新规划。这比直接崩溃好得多。
工作流自动化我做了个每日简报生成器。每天早上定时跑一个脚本,抓几条新闻,让模型摘要,再抓天气,最后拼成一条消息发到手机上。用GitHub Actions做定时触发,整个流程跑在云端。这个项目让我学会了把大模型嵌进自动化流程里,不是每次都手动问,而是设定好条件让它自己跑。
AI编程助手我基于开源模型做了个简化版。用户输入需求,模型生成代码,我把代码跑一遍,把报错信息返回给模型,让它修正。这个循环跑两三轮,代码基本能跑。我加了个安全层,代码要先通过语法检查,再在沙箱里跑。这个项目让我理解了Agent的核心:模型加工具加反馈循环。没有反馈,模型就是瞎猜。有了反馈,它就能迭代。
4.5 项目复盘与作品集:README、部署、Demo、GitHub展示
项目做完不整理,等于白做。这是我踩过的坑。第一个项目做完,代码扔在本地,文件夹叫“test1”,过两个月自己都看不懂。后来我强迫自己每个项目都建GitHub仓库,写README。README要有项目背景、数据来源、技术栈、运行方式、结果截图。我还会写一段“踩坑记录”,把遇到的问题和解决方案记下来。这些东西面试的时候直接能讲。
部署是很多人忽略的一步。模型在notebook里跑通,跟别人能用,完全是两码事。我用Streamlit做了几个Demo,把模型包装成网页应用。用户输入文本,点按钮,看到结果。Streamlit简单到令人发指,几行代码就能跑起来。Gradio也用过,对机器学习模型更友好,自带输入输出组件。部署到Hugging Face Spaces或者Streamlit Cloud,免费,分享个链接别人就能用。
Demo做出来之后,简历上写“开发了某某系统”才站得住脚。面试官会问:用户量多少?响应时间多久?遇到过什么线上问题?这些问题逼着我思考工程层面的东西,不是只跑通notebook就完事。
GitHub主页是我的技术名片。我把项目置顶,README写清楚,代码结构整理好。有次面试官直接打开我的GitHub,看了RAG项目的代码,问了检索策略和分块逻辑。我答得流利,因为这些东西我亲手调过。项目复盘不是形式主义,是把经历转化成能力的过程。每个项目做完,问自己三个问题:做了什么?怎么做的?还能怎么改进?这三个问题的答案,就是作品集的灵魂。
5.1 学习资源推荐:课程、书籍、官方文档、社区、竞赛
我刚开始学AI编程的时候,收藏夹里塞了上百个链接。Coursera、B站、知乎、公众号,什么火就收藏什么。真正打开看完的不到十分之一。后来我给自己定了个规矩:一门课没看完,不买新课。这个规矩救了我。现在我的学习资源就三类:官方文档、经典课程、能跑代码的社区。官方文档永远排第一,PyTorch、scikit-learn、LangChain的文档写得比大多数教程清楚。
课程我只推荐三个。吴恩达的机器学习课,适合建立直觉,他讲梯度下降的时候画的那个图我至今记得。李沐的《动手学深度学习》,代码和理论结合得特别好,我跟着敲了一遍,对反向传播的理解深了很多。fast.ai的课实战性强,上来就训模型,适合喜欢边做边学的人。书籍方面,《Python数据科学手册》当工具书用,《Hands-On Machine Learning》当项目指南用,《深度学习》花书当参考书用,别从头读到尾。
社区和竞赛是另一个维度。Stack Overflow解决具体报错,Kaggle学别人怎么思考。我刚开始参加Kaggle的时候,连提交格式都搞错。后来我养成了一个习惯:每做一个竞赛,先看前三名的方案分享。他们用的特征工程、模型融合、调参技巧,比任何课程都实在。Hugging Face的社区也值得逛,模型卡和讨论区里有很多实战经验。竞赛拿不拿牌不重要,把别人的思路拆解一遍,收获比看十小时视频大。
5.2 进阶方向选择:机器学习工程、NLP/CV、大模型应用、AI产品
学到一定程度会面临方向选择。我有一阵子特别焦虑,NLP想学,CV想学,大模型也想追。每个方向都浅尝辄止,简历上写满了“了解”,面试一问就露馅。后来我逼自己做了个决定:主攻大模型应用,其他方向保持能读懂论文的水平。这个决定基于两点:我更喜欢做产品原型,而不是调模型结构;大模型应用岗位多,入门门槛相对友好。
机器学习工程偏工程侧。你要会写干净的代码,懂Docker、Kubernetes、CI/CD,能把模型部署成API,监控线上表现。我做过一个推荐系统项目,训练只花了两天,部署和调优花了两周。这个方向适合喜欢折腾系统、对延迟和稳定性敏感的人。NLP和CV偏算法侧。Transformer、注意力机制、扩散模型这些要啃,论文得追,实验要跑。我试过复现一篇CV论文,卡在数据预处理上一周,后来放弃了。这个方向适合坐得住冷板凳、数学底子好的人。
大模型应用是这两年最热的方向。Prompt工程、RAG、Agent、微调,每个子方向都有大量机会。我做的几个项目都是这个方向,门槛不高,但天花板很高。你要懂业务,懂用户,还要懂模型的能力边界。AI产品方向更偏商业。你得理解用户需求,能把技术翻译成价值,会写PRD,会做用户调研。我认识一个朋友,技术一般,但对场景特别敏感,做出来的AI工具月活几十万。这个方向适合沟通能力强、对商业感兴趣的人。选方向没有标准答案,看你想成为什么样的人。
5.3 常见问题与避坑:环境冲突、过拟合、API成本、数据隐私
环境冲突是我踩的第一个大坑。我在base环境里pip install了一堆包,后来又用conda装,版本打起来了。花了一整天卸载重装,最后还是靠重建虚拟环境解决。现在我的原则很明确:每个项目一个独立环境,用conda create或者python -m venv。依赖写进requirements.txt,版本号锁死。别偷懒,偷懒的代价是半夜debug。
过拟合是第二个坑。我做过一个文本分类,训练集准确率99.8%,测试集只有62%。我盯着那个数字看了很久,以为模型在骗我。后来我加了Dropout,做了数据增强,用了早停,测试集爬到了78%。过拟合的本质是模型记住了噪声。判断方法很简单:训练损失还在降,验证损失开始涨,那就是过拟合了。解决办法:更多数据、更强正则、更简单模型。
API成本是个容易被忽略的坑。我有一次调OpenAI的API做实验,忘了设预算,跑了一晚上,账单出来两百多美元。心疼。后来我学会了:先用小模型验证流程,再换大模型;缓存重复请求;设置用量上限。数据隐私更严重。我有次图省事,把公司内部文档贴到ChatGPT里做摘要。事后想起来一身冷汗。现在我的做法是:敏感数据本地处理,用开源模型;非要走API就用企业版,签数据处理协议。合规不是小事,出事就是大事。
5.4 持续学习与社区参与:论文、开源、Kaggle、技术博客
持续学习需要节奏。我试过每天读三篇论文,坚持了四天就崩了。后来改成每周精读一篇,泛读三篇。精读就是逐段理解,复现代码,写笔记。泛读只看摘要和结论。论文读不懂很正常,我第一遍读Attention is All You Need的时候,一半公式跳过了。第二遍读完,第三遍才有点感觉。别怕慢,怕的是停。
开源参与让我成长很快。我最早只是提文档修改的PR,改错别字、补例子。后来给一个小库修了个bug,维护者回复说“nice catch”。那个瞬间比涨工资还开心。Kaggle我打了两年,从铜牌到银牌,最大的收获不是名次,是学会了看别人的notebook。技术博客我写了三年,一开始没人看,后来有一篇RAG踩坑记被推上了首页。写博客是倒逼输入,你写不清楚,说明你没想清楚。
社区参与还有一层价值:认识人。我在一个AI群里认识了现在的合伙人,一起做了个小产品。线下的meetup也值得去,听听别人在做什么,聊聊自己的困惑。很多机会不是投简历投来的,是聊出来的。保持开放,别把自己关在书房里。
5.5 从入门到求职/副业:项目包装、面试准备、接单与合规
项目包装是求职的第一步。我一开始的简历上写“用PyTorch实现了图像分类”,面试官问“数据集多大?模型结构是什么?准确率多少?有没有对比实验?”我答得磕磕巴巴。后来我改了写法:“在CIFAR-10上训练ResNet-18,通过数据增强和余弦退火学习率,将准确率从72%提升到89%,推理延迟降低到15ms。”数字和对比让面试官能判断你的水平。GitHub主页要干净,README要有截图和运行说明。别放半成品。
面试准备分三块:项目、八股、手撕代码。项目要能讲清楚背景、方案、难点、改进。八股包括偏差方差、正则化、Transformer结构、RAG流程。手撕代码常考注意力机制、卷积、损失函数。我面过一家公司,让我手写多头注意力,我写了二十分钟,面试官说“结构对了,细节再补”。面试是练习出来的,面十家比看十本书管用。
接单和副业要合规。我在Upwork上接过几个小单,做数据清洗、模型微调、AI工具开发。报价按小时或者按项目,合同写清楚交付物和版权。别接灰色地带的活,比如爬取隐私数据、生成虚假内容、绕过平台风控。副业可以做AI咨询、企业培训、小工具订阅。我有个朋友做AI简历优化工具,每月被动收入几千块。合规是底线,口碑是资产。这条路不急,慢慢走,走得远。