前言

之前读研的时候一直都是自己构建模型,从零训练模型,这几天打算微调一个NLP模型做一些任务练练手,在操作的过程中总是把微调跟之前的从零训练弄混,于是就打算整理一篇笔记记录一下二者区别

微调与从零训练

微调是指在已经预训练好的模型基础上,使用特定领域或任务的数据进行二次训练的过程。

从零训练则是不依赖任何预训练模型或已有权重,完全从随机初始化的模型参数开始,仅基于目标任务的数据集,对神经网络的所有层、所有参数进行完整训练的方式。

举个例子来通俗点解释:假如你买了一辆已经组装好的自行车,微调就是根据你的身高、体重等个人情况,调整座椅高度、把手角度等细节。

而从零训练就是从原材料和零件生产开始,设计完整的自行车结构,一步步组装所有部件,最终完全定制一辆适合你身高体重的自行车。

从代码层面分析

从代码实现的角度,微调和直接训练在模型初始化、参数处理、优化器设置和训练策略等方面存在明显差异

模型初始化差异

例如,如下一个简单的CNN网络的代码,从零训练需要自定义网络结构所有参数随机初始化:

# 从头定义网络架构class CustomCNN(nn.Module):    def __init__(self):        super(CustomCNN, self).__init__()        self.conv1 = nn.Conv2d(3, 16, 3, padding=1)        self.conv2 = nn.Conv2d(16, 32, 3, padding=1)        self.conv3 = nn.Conv2d(32, 64, 3, padding=1)        self.pool = nn.MaxPool2d(2, 2)        self.fc1 = nn.Linear(64 * 4 * 4, 512)        self.fc2 = nn.Linear(512, 10)        self.relu = nn.ReLU()        self.dropout = nn.Dropout(0.5)    def forward(self, x):        x = self.pool(self.relu(self.conv1(x)))        x = self.pool(self.relu(self.conv2(x)))        x = self.pool(self.relu(self.conv3(x)))        x = x.view(-1, 64 * 4 * 4)        x = self.dropout(self.relu(self.fc1(x)))        x = self.fc2(x)        return x# 创建模型实例 - 完全从头开始model = CustomCNN()

而微调需要加载预训练模型,使用在大规模数据集上训练好的权重

# 加载预训练模型 - 使用已有权重model = models.resnet18(pretrained=True)# 修改最后的全连接层 - 适应新任务num_ftrs = model.fc.in_featuresmodel.fc = nn.Sequential(    nn.Linear(num_ftrs, 512),    nn.ReLU(),    nn.Dropout(0.5),    nn.Linear(512, 10)  # 假设是10分类任务)

参数冻结

从零训练的模型的所有参数都参与训练和更新,不需要冻结操作

# 所有参数默认都参与训练# 不需要额外的冻结操作model = CustomCNN()# 所有参数都在优化器中optimizer = optim.Adam(    model.parameters(),  # 所有参数    lr=0.001)

微调则需要通过设置 requires_grad=False 冻结部分参数,只训练特定层

# 加载预训练模型model = models.resnet18(pretrained=True)# 冻结部分层 - 只训练最后几层ct = 0for child in model.children():    ct += 1    if ct < 7:  # 冻结前7个层组        for param in child.parameters():            param.requires_grad = False            print(f"冻结层组 {ct}: {child.__class__.__name__}")# 只优化未冻结的参数optimizer = optim.Adam(    filter(lambda p: p.requires_grad, model.parameters()),    lr=0.001)

优化器设置

  • 从零训练通常所有参数使用相同的学习率
# 所有参数使用相同的学习率optimizer = optim.Adam(    model.parameters(),    lr=0.001,  # 单一学习率    betas=(0.9, 0.999),    eps=1e-08,    weight_decay=0,    amsgrad=False)
  • 微调常使用分层学习率,新层用较大学习率,预训练层用较小学习率
# 不同层使用不同学习率optimizer = optim.Adam([    # 倒数第二层使用较小学习率    {'params': model.layer4.parameters(), 'lr': 0.001},        # 新的全连接层使用较大学习率    {'params': model.fc.parameters(), 'lr': 0.01}], lr=0.0001)  # 默认学习率# 或者使用学习率调度器scheduler = optim.lr_scheduler.ReduceLROnPlateau(    optimizer,     mode='min',     factor=0.1,     patience=10,    verbose=True)

训练策略

  • 从零训练需要更多训练轮次,使用较大学习率
# 训练配置batch_size = 64epochs = 50  # 更多轮次learning_rate = 0.001# 训练循环for epoch in range(epochs):    model.train()    running_loss = 0.0        for inputs, labels in train_loader:        inputs, labels = inputs.to(device), labels.to(device)                optimizer.zero_grad()        outputs = model(inputs)        loss = criterion(outputs, labels)        loss.backward()        optimizer.step()                running_loss += loss.item()        print(f'Epoch {epoch+1}/{epochs}, Loss: {running_loss/len(train_loader):.4f}')
  • 微调常采用分阶段训练,总轮次更少,学习率更小
# 微调配置batch_size = 32epochs = 10  # 更少轮次learning_rate = 0.0001  # 更小学习率# 第一阶段:只训练新层for epoch in range(5):    model.train()    # 训练代码...# 第二阶段:解冻部分层继续微调for param in model.layer4.parameters():    param.requires_grad = True# 使用更小的学习率optimizer = optim.Adam(    filter(lambda p: p.requires_grad, model.parameters()),    lr=0.00001  # 进一步减小学习率)for epoch in range(5, 10):    model.train()    # 训练代码...

总结

什么时候用哪种方法?

  • 从零训练:当你有大量数据,或者任务很特殊(预训练模型不适合)
  • 微调:当你数据有限,或者任务与预训练任务相似

目前打算做一个简单的诈骗短信分类的任务,最简单方法则感觉是微调一个中文的NLP模型来完成,因此本次先简单记录一下差异,便于后续任务探究~

方面 直接训练 微调
模型初始化 class CustomModel(nn.Module):models.Sequential([...]) models.resnet18(pretrained=True)applications.MobileNetV2(weights='imagenet')
参数冻结 所有参数默认参与训练 param.requires_grad = Falsebase_model.trainable = False
优化器设置 optimizer = optim.Adam(model.parameters(), lr=0.001) optimizer = optim.Adam([{'params': layer1, 'lr': 0.001}, {'params': layer2, 'lr': 0.01}])
训练轮次 通常 30-100 轮 通常 5-20 轮
学习率 较大 (0.001) 较小 (0.0001 或更小)
数据增强 较强的增强策略 相对温和的增强策略
训练策略 单一阶段训练 常采用分阶段训练策略

普通人如何抓住AI大模型的风口?

为什么要学AI大模型

当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!

DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

在这里插入图片描述

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
在这里插入图片描述

AI大模型开发工程师对AI大模型需要了解到什么程度呢?我们先看一下招聘需求:

在这里插入图片描述

知道人家要什么能力,一切就好办了!我整理了AI大模型开发工程师需要掌握的知识如下:

大模型基础知识

你得知道市面上的大模型产品生态和产品线;还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异;以及了解开源模型的二次开发优势,以及闭源模型的商业化限制,等等。

img

了解这些技术的目的在于建立与算法工程师的共通语言,确保能够沟通项目需求,同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。

产品经理还需要有业务sense,这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大,模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术,更多的是从技术边界、成本等角度出发,选择合适的技术方案来实现需求,甚至用业务来补足技术的短板。

AI Agent

现阶段,AI Agent的发展可谓是百花齐放,甚至有人说,Agent就是未来应用该有的样子,所以这个LLM的重要分支,必须要掌握。

Agent,中文名为“智能体”,由控制端(Brain)、感知端(Perception)和行动端(Action)组成,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”,让它自动完成工作。

Agent的核心特性

自主性: 能够独立做出决策,不依赖人类的直接控制。

适应性: 能够根据环境的变化调整其行为。

交互性: 能够与人类或其他系统进行有效沟通和交互。

img

对于大模型开发工程师来说,学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多,比如dify、coze,拿来做一个小项目,你就会发现,其实并不难。

AI 应用项目开发流程

如果产品形态和开发模式都和过去不一样了,那还画啥原型?怎么排项目周期?这将深刻影响产品经理这个岗位本身的价值构成,所以每个AI产品经理都必须要了解它。

img

看着都是新词,其实接触起来,也不难。

从0到1的大模型系统学习籽料

最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师(吴文俊奖得主)
在这里插入图片描述

给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

图片

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。
在这里插入图片描述

AI大模型系统学习路线

在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

  • 基础篇,包括了大模型的基本情况,核心原理,带你认识了解大模型提示词,Transformer架构,预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门AI大模型
  • 进阶篇,你将掌握RAG,Langchain、Agent的核心原理和应用,学习如何微调大模型,让大模型更适合自己的行业需求,私有化部署大模型,让自己的数据更加安全
  • 项目实战篇,会手把手一步步带着大家练习企业级落地项目,比如电商行业的智能客服、智能销售项目,教育行业的智慧校园、智能辅导项目等等

img

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。

AI大模型入门到实战的视频教程+项目包

看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

在这里插入图片描述
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

海量AI大模型必读的经典书籍(PDF)

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
在这里插入图片描述

600+AI大模型报告(实时更新)

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

AI大模型面试真题+答案解析

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
在这里插入图片描述

在这里插入图片描述

AI时代,企业最需要的是既懂技术、又有实战经验的复合型人才,**当前人工智能岗位需求多,薪资高,前景好。**在职场里,选对赛道就能赢在起跑线。抓住AI这个风口,相信下一个人生赢家就是你!机会,永远留给有准备的人。

如何获取?

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐