☰
从机器学习到大模型:一条能走通的学习路线与实战指南
2026/11/2 13:41:24 网站建设 项目流程

大模型这个词这两年几乎成了技术圈的硬通货,不管你是做后端、做前端、做数据还是做算法,面试里不聊两句Transformer都不好意思开口。但问题也恰恰出在这里——网上关于大模型的资料多到爆炸,从三行代码调用API的爽文,到几百页的论文合集,中间却缺了一条真正能让人从零走到能上手干活的路径。我自己带过几个刚入行的同事,也帮不少转方向的朋友梳理过学习路线,发现大家卡住的地方高度一致:不是不够努力,而是资料太散、顺序太乱、深浅不分。这篇内容就是把我自己走过、也带人走过的那条路完整摊开,从机器学习的地基一直铺到大模型微调和部署,告诉你每一层该学什么、为什么学、学到什么程度可以往下走。适合完全没接触过机器学习但有一点编程基础的人,也适合已经会调API但说不清底层原理、想补课的从业者。

1. 先把地基打对:机器学习到底在解决什么问题

很多人一上来就冲着Transformer去,结果看到注意力机制里的QKV矩阵就懵了,回头补数学又觉得枯燥,来回折腾几个月原地踏步。根子在于跳过了机器学习这一层。大模型不是凭空长出来的,它是机器学习这条线上的一个具体分支,你不理解机器学习在干什么,就永远只能背Transformer的公式而不知道它为什么长这样。

1.1 机器学习的本质是找函数,不是写规则

传统编程是你把规则写清楚,输入进去得到输出。比如判断一封邮件是不是垃圾邮件,你得手写一堆if-else:包含"中奖"扣分、包含"免费"扣分、发件人不在通讯录扣分。机器学习换了个思路——我不写规则,我给你一堆已经标好"是垃圾"和"不是垃圾"的邮件,你自己去找出那个能把输入映射到输出的函数。

这个思路的转变是理解一切后续内容的前提。所谓"训练",就是在一个巨大的函数空间里搜索那个最合适的函数;所谓"模型",就是搜索完之后固定下来的那个函数;所谓"参数",就是这个函数里那些可以调的系数。你把这个想通了,后面看到"损失函数""梯度下降""过拟合"这些词就不会觉得是天书,它们全都是围绕"怎么找到那个好函数"展开的工具。

我一般建议新手先用一个最小的例子把这条链路走通,比如用几十行代码做一个房价预测:输入是面积、房间数,输出是价格。不用任何框架,纯手写线性回归,把损失函数、求导、更新参数这三步亲手敲一遍。这一步花不了两个小时,但它建立起来的直觉,比你看十篇科普文章都管用。

1.2 监督、无监督、强化学习的分野要拎清

机器学习往下分三大类,这个分类必须刻在脑子里,因为后面所有具体算法都能归到这三类里。

监督学习是你有标准答案。给图片标好"猫"或"狗",给邮件标好"垃圾"或"正常",模型学的是从输入到标签的映射。大模型预训练阶段用的"预测下一个词"本质上也是监督学习,只不过标签是从文本自身里切出来的,不需要人工标注,这叫自监督,是监督学习的一个变种。

无监督学习是没有标准答案,让模型自己找结构。比如把一堆用户按行为聚类,或者把高维数据压到二维做可视化。自编码器、聚类算法都属于这一类。

强化学习是模型在环境里试错,根据奖励信号调整策略。AlphaGo下棋、机器人走路都是这个路子。现在大模型的对齐阶段(比如RLHF)也用到了强化学习的思想,但那是进阶内容,入门阶段知道有这么个东西就行。

提示:入门阶段把八成精力放在监督学习上,尤其是"回归"和"分类"这两个基本任务。大模型表面上花哨,底层干的事无非是超大规模的"预测下一个token",本质还是监督学习的框架。

1.3 数据处理是机器学习里最不性感但最要命的部分

热词里有个"机器学习中的数据处理是什么",这个问题问到了点子上。真实项目里,数据处理和特征工程占掉的时间经常超过百分之七十,而模型本身可能就那几行代码。

数据处理要干的事包括:处理缺失值(删掉、填均值、填中位数、用模型预测)、处理异常值(箱线图、Z-score、业务判断)、把类别变量编码成数字(独热编码、标签编码)、把数值特征做标准化或归一化、把数据切成训练集验证集测试集。每一步都有坑,比如标准化的时候你必须用训练集的均值和方差去处理验证集和测试集,绝不能各自算各自的,否则就是数据泄露,模型在测试集上的表现会虚高,上线就崩。

我踩过最典型的一个坑是做时间序列预测时随手用了随机切分,结果模型"看到"了未来的数据去预测过去,离线指标漂亮得不像话,一上线就废。时间相关的数据必须按时间顺序切分,这个教训值好几天的返工。

2. 深度学习登场:从手工特征到自动表征

机器学习里有个绕不开的环节叫特征工程,就是你要手工设计出对任务有用的输入特征。做图像识别你得自己算边缘、角点、纹理;做文本分类你得自己搞TF-IDF、n-gram。深度学习最大的贡献就是把这个环节自动化了——你直接把原始数据喂进去,网络自己学出有用的特征表示。

2.1 神经网络的基本单元其实很朴素

一个神经元干的事简单到令人发指:把输入乘上权重加起来,加个偏置,过一个非线性激活函数,输出。就这么个东西,堆叠起来、加上反向传播,就能拟合极其复杂的函数。

为什么需要非线性激活函数?因为如果全是线性的,多层叠加等价于一层,深度就失去意义了。ReLU(把负数变零,正数不变)是目前最常用的,简单、计算快、缓解梯度消失。Sigmoid和Tanh在早期用得多,现在主要出现在特定位置比如门控结构里。

反向传播是深度学习的发动机。它的核心是链式法则:损失对某个参数的梯度,等于损失对输出的梯度乘以输出对该参数的梯度,一层层往回传。你不需要手推每一层,但必须理解这个"从后往前、逐层求导、更新参数"的流程,否则调参时你就是在瞎蒙。

2.2 CNN、RNN到Transformer的演进逻辑

理解了基本单元,再看网络架构的演进就顺了。

CNN(卷积神经网络)解决的是图像问题。它的核心假设是"局部相关性"——图像里相邻的像素关系密切,所以用一个小窗口(卷积核)在图上滑动,共享权重。这个设计大幅减少了参数量,还带来了平移不变性。热词里的"深度学习cnn"和"计算机视觉和机器学习区别"其实是一回事的两面:计算机视觉是应用领域,CNN是解决这个领域问题的主流工具,而它们都属于机器学习/深度学习的大范畴。

RNN(循环神经网络)解决的是序列问题。文本、语音、时间序列,前后有依赖关系。RNN的思路是维护一个隐藏状态,每读一个词就更新一次,把历史信息带下去。但它有个致命问题:序列一长,梯度要么消失要么爆炸,记不住远处的东西。LSTM和GRU用门控机制缓解了这个问题,但没根治。

Transformer就是来根治这个问题的。它彻底抛弃了循环结构,用注意力机制让序列里任意两个位置直接建立联系,距离不再是障碍。而且它天然支持并行计算,训练效率碾压RNN。这就是为什么2017年那篇《Attention Is All You Need》之后,整个领域迅速转向Transformer。

2.3 为什么PyTorch成了事实标准

框架选择上,热词里出现了"pytorch基础框架""springboot框架""若依框架"这些,注意区分——后两个是Java后端的东西,跟深度学习没关系,别搞混了。

深度学习框架主流就两个:PyTorch和TensorFlow。我毫不犹豫推荐PyTorch入门,理由有三。第一,它的代码是"动态图",你写的时候就像写普通Python,能随时打印中间结果调试,对新手极其友好。第二,学术界几乎全面倒向PyTorch,你想复现的论文九成都有PyTorch实现。第三,它的API设计直观,nn.Module定义模型、DataLoader管数据、optim管优化器,各司其职,学起来不累。

TensorFlow在工业部署上曾经有优势,但PyTorch这几年在部署侧也补齐了(TorchScript、ONNX导出),所以入门阶段完全不用纠结,直接PyTorch。

import torch import torch.nn as nn class SimpleNet(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(784, 128) self.relu = nn.ReLU() self.fc2 = nn.Linear(128, 10) def forward(self, x): x = self.fc1(x) x = self.relu(x) x = self.fc2(x) return x model = SimpleNet() print(sum(p.numel() for p in model.parameters()))

上面这段就是一个最小可用的网络定义,参数量打印出来一目了然。入门阶段把MNIST手写数字识别用这套结构跑通,准确率能到百分之九十七以上,你就对深度学习的全流程有了体感。

3. Transformer拆到骨头里:大模型的真正起点

Transformer是绕不过去的。热词里"transformer模型详解""transformer手写""the illustrated transformer""swin transformer"全指向它。我的建议是:不要只读科普,一定要手写一遍。看懂和写出来之间隔着一条鸿沟,跨过去才算真懂。

3.1 自注意力机制到底在算什么

自注意力的核心思想是:序列里每个词在编码自己的时候,去看看其他所有词,根据相关性决定从谁那里取多少信息。

具体怎么算?每个词生成三个向量:Query(我在找什么)、Key(我有什么)、Value(我实际的内容)。用我的Query去和所有词的Key做点积,得到一组分数,分数越高说明越相关。把分数除以根号d(d是向量维度,防止点积过大导致softmax梯度消失),过softmax归一化成概率,再用这些概率对所有词的Value加权求和,得到我这个位置的新表示。

用生活化的类比:你在一个会议室里想了解某个话题,你(Query)会去听每个人(Key)的发言,谁讲的内容跟你关心的越匹配,你就越认真听,最后你脑子里形成的理解就是所有人发言(Value)按你关注程度加权混合的结果。

多头注意力就是把这个过程并行做多次,每次用不同的投影矩阵,让模型从不同角度捕捉关系。有的头关注语法关系,有的头关注语义相似,有的头关注位置邻近。最后把多个头的结果拼起来再投影一次。

import torch import torch.nn.functional as F def self_attention(x, W_q, W_k, W_v): Q = x @ W_q K = x @ W_k V = x @ W_v d_k = Q.size(-1) scores = Q @ K.transpose(-2, -1) / (d_k ** 0.5) weights = F.softmax(scores, dim=-1) return weights @ V

这段代码就是自注意力的骨架,去掉batch维度和mask处理,核心逻辑就这几行。手写一遍,你对QKV的理解会从"背概念"变成"肌肉记忆"。

3.2 位置编码、残差连接和层归一化

Transformer抛弃了循环结构,带来一个副作用:它本身不知道词的顺序。"我爱你"和"你爱我"在纯注意力看来是一样的。所以必须注入位置信息,这就是位置编码。

原始论文用的是正弦余弦函数生成的位置编码,好处是可以外推到训练时没见过的长度。后来主流大模型多用可学习的位置嵌入或者RoPE(旋转位置编码),RoPE在长文本场景下表现更好,现在几乎是标配。

残差连接解决的是深层网络的训练问题。每一层的输出等于该层的计算结果加上该层的输入,这样梯度可以沿着捷径直接回传,几十层甚至上百层也能训得动。层归一化则是对每个样本的特征做归一化,稳定训练过程。这两个东西看起来不起眼,但去掉任何一个,深层Transformer都训不起来。

注意:新手读Transformer论文时容易忽略残差和归一化的位置。原始论文是"先归一化再注意力"还是"先注意力再归一化"其实有讲究,后来的Pre-LN结构(归一化放在子层前面)比Post-LN更容易训练,现在的大模型基本都用Pre-LN。

3.3 编码器、解码器和三种架构变体

Transformer原始结构是编码器-解码器,用于机器翻译。但后来演化出三种变体,对应不同任务。

Encoder-only(如BERT):只保留编码器,双向注意力,每个词能看到左右两边。适合理解类任务,分类、抽取、句子相似度。

Decoder-only(如GPT系列):只保留解码器,单向注意力,每个词只能看到左边。适合生成类任务,这就是当前大模型的主流架构。你听到的"大模型"绝大多数都是Decoder-only。

Encoder-Decoder(如T5、原始Transformer):编码器读输入,解码器生成输出。适合序列到序列的任务,翻译、摘要。

理解这个分类很重要,因为它决定了你拿到一个模型后该怎么用。热词里的"swin transformer"是Transformer在视觉领域的变体,把注意力限制在窗口内以降低计算量,属于Encoder-only思路在图像上的应用。而"missformer"是针对医学图像分割的改进版,思路类似。

4. 大模型这条线:预训练、微调与提示工程

地基和Transformer都通了,才真正进入大模型的地界。这里要分清三个层次:预训练是造模型,微调是改模型,提示工程是用模型。绝大多数从业者接触的是后两个。

4.1 预训练:为什么"预测下一个词"这么强

大模型预训练的任务简单到不可思议:给一段文本,预测下一个词是什么。就这么个任务,在海量数据上训练,模型居然学会了语法、事实、推理甚至一定的代码能力。

为什么?因为要准确预测下一个词,模型必须隐式地理解大量世界知识。你让它续写"法国的首都是",它得知道是"巴黎";你让它续写一段Python代码,它得理解语法结构。这个任务像一个万能教练,逼着模型把语言的规律和背后的知识都压缩进参数里。

预训练的成本极高,动辄几千张GPU跑几个月,不是个人能玩的。所以个人和小团队的实际路径是:拿开源预训练模型(如LLaMA系列、Qwen系列)做起点,往下走微调或直接推理。

4.2 微调:把通用模型改造成你的专用模型

微调是用你自己的数据,在预训练模型的基础上继续训练,让模型适配特定任务或领域。热词里"大模型微调实战""大模型微调"热度很高,说明这是大家最想落地的环节。

微调分几种。全量微调是更新模型所有参数,效果最好但显存要求极高,一个7B模型全量微调轻松吃掉上百G显存。LoRA(低秩适配)是目前最流行的方案,它冻结原模型,只在旁边加一小撮可训练的低秩矩阵,参数量能降到原来的千分之一甚至更低,单张消费级显卡就能跑。QLoRA更进一步,把原模型量化到4-bit再挂LoRA,显存需求再降一大截。

微调的数据准备是关键。一般要构造成指令格式,比如"指令-输入-输出"的三元组。数据质量远比数量重要,几百条高质量、多样化的样本,效果常常好过几万条脏数据。我见过太多人爬了一堆数据直接扔进去训,结果模型学会了各种噪声和错误格式,还不如不微调。

# LoRA微调的核心配置示意(基于peft库) from peft import LoraConfig, get_peft_model lora_config = LoraConfig( r=8, # 低秩矩阵的秩,越大容量越强也越容易过拟合 lora_alpha=32, # 缩放系数,通常设为r的2到4倍 target_modules=["q_proj", "v_proj"], # 作用在哪些层 lora_dropout=0.1, bias="none", task_type="CAUSAL_LM" ) model = get_peft_model(base_model, lora_config) model.print_trainable_parameters()

跑一下最后那行,你会看到可训练参数只占总参数的百分之零点几,这就是LoRA的威力。

4.3 提示工程与上下文工程:不训练也能用好模型

不是所有场景都值得微调。很多时候,把提示词写好就能解决问题,这就是提示工程。热词里"大模型提示词工程与上下文工程"正是这个方向。

提示工程的核心技巧包括:给清晰的指令、提供几个示例(少样本学习)、让模型一步步思考(思维链)、指定输出格式。上下文工程则更进一步,关注的是怎么把外部知识、历史对话、工具返回结果组织进模型的上下文窗口里,让模型在有限窗口内拿到最相关的信息。RAG(检索增强生成)就是上下文工程的典型应用:先从知识库检索相关文档,拼进提示词,再让模型基于这些文档回答。

我的经验是,一个任务先别急着微调,先用提示工程试。如果提示工程能做到八成效果,就别上微调,因为微调的维护成本、数据成本、迭代成本都高得多。只有当提示工程撞到天花板,或者对延迟、成本有极致要求时,才考虑微调。

5. 部署与落地:让模型真正跑起来

模型训好了或者选好了,最后一步是部署。热词里"大模型部署""本地部署大模型让个人电脑智能化"说明很多人想在本地跑起来。

5.1 本地部署的硬件账要算清楚

本地部署第一个问题是显存。模型参数量的粗略估算:FP16精度下,每十亿参数约需2GB显存。一个7B模型FP16需要约14GB,加上推理时的KV Cache和中间激活,实际要16GB以上。4-bit量化后,7B模型约需4到5GB,一张消费级显卡就能跑。

量化是本地部署的关键技术。GGUF格式配合llama.cpp,能在CPU上跑量化模型,虽然慢但门槛极低。GPU上用vLLM或TGI,吞吐量高,适合服务化部署。选择哪条路取决于你的场景:个人玩玩用llama.cpp或Ollama最省心,要做服务用vLLM。

提示:本地部署别一上来就追求大参数模型。7B量化模型在消费级硬件上跑通,比在云端调API更能让你理解推理的各个环节——加载、tokenize、生成、解码,每一步都能看到、能调。

5.2 推理优化的几个实用手段

模型跑起来之后,下一步是让它跑得快、跑得省。

KV Cache是最基础的优化。生成式模型每生成一个token都要重新计算前面所有token的注意力,KV Cache把已经算过的Key和Value缓存下来,避免重复计算,速度提升立竿见影。

批处理是提升吞吐的关键。把多个请求拼成一个batch一起推理,GPU利用率大幅提升。但要注意不同请求的生成长度不一样,需要做padding和attention mask处理。

量化、蒸馏、剪枝是压缩模型的三板斧。量化降精度,蒸馏让小模型学大模型,剪枝去掉不重要的连接。实际落地中量化用得最多,因为实现简单、效果可控。

5.3 从Demo到产品的距离

跑通一个Demo和做成一个产品之间,隔着工程化的鸿沟。你要考虑并发、超时、重试、限流、日志、监控、成本控制。一个请求进来,tokenize要多久、推理要多久、网络传输要多久,每个环节都可能成为瓶颈。

还有一个容易被忽略的点是评估。模型上线后怎么知道它答得好不好?需要建立评估集,定期跑评测,监控输出质量的变化。大模型的输出有随机性,同一个问题问两次答案可能不同,评估要设计得能容忍这种波动。

我自己做落地时的一个体会是:先把最核心的一条链路打通,哪怕很粗糙,先让它跑起来产生价值,再逐步优化。很多人卡在"要把所有细节都设计完美才动手",结果永远停在设计阶段。大模型这个领域变化太快,先跑起来比想清楚更重要。

6. 一条能走通的学习路线

最后把我自己验证过的学习顺序整理一下,供参考。

第一阶段,机器学习基础。重点掌握监督学习、损失函数、梯度下降、过拟合与正则化、训练集验证集测试集划分。推荐《机器学习》(西瓜书)配合scikit-learn动手,每个算法都跑一遍。

第二阶段,深度学习基础。理解神经网络、反向传播、CNN、RNN,用PyTorch把MNIST和CIFAR-10跑通。这个阶段不要贪多,把全连接网络和卷积网络吃透就够。

第三阶段,Transformer。读原始论文,配合《The Illustrated Transformer》这类图解,然后手写一遍自注意力。这一步是整个路线的分水岭,写出来了后面就顺了。

第四阶段,大模型应用。先学提示工程,再学RAG,然后学LoRA微调。每个方向都做一个小项目,比如用RAG搭一个文档问答,用LoRA微调一个特定风格的模型。

第五阶段,部署与优化。学量化、学vLLM、学评估。把前面做的模型真正部署起来,感受工程化的挑战。

这条路线走下来,快则三到六个月,慢则一年,取决于你每天投入的时间。关键是每一步都要动手,光看不动手等于没学。我见过太多人收藏了几百G的资料,一个都没跑通,最后还是在原地。选一条路,跑通它,比什么都强。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询