【大模型学习】第十七章 预训练技术综述

目录

一、预训练技术的起源与演进

1.1 人工智能的范式转变

1.2 预训练的技术演进史

二、预训练的本质:像人类一样学习

2.1 生活中的预训练启示

2.2 技术定义与核心价值

三、 预训练的技术解剖

3.1 核心架构:Transformer的统治

架构优势分析:

3.2 预训练任务设计

3.2.1 语言模型预训练

3.2.2 视觉预训练创新

3.3 规模化定律(Scaling Law)

四、预训练的实现方法论

4.1 硬件架构挑战

4.2 高效预训练技巧

五、 预训练模型的应用图谱

5.1 自然语言处理

5.2 计算机视觉

5.3 跨模态应用

六、 手把手实现预训练模型

6.1 环境准备

6.2 小型BERT预训练实现

6.3 预训练任务定义

七、 预训练技术的挑战与未来

7.1 现存挑战

7.2 技术前沿方向

八、预训练与模型微调的核心区别

‌8.1 目标差异‌

‌8.‌2 数据与训练方式‌

8.‌3.技术实现差异‌

8‌.4 资源消耗对比‌

‌8.5. 典型应用场景‌

‌8.6. 两者的互补关系‌

九、结语:通向通用人工智能的基石


一、预训练技术的起源与演进

1.1 人工智能的范式转变

2012年,当AlexNet在ImageNet图像识别竞赛中以压倒性优势夺冠时,深度学习正式登上历史舞台。但此时模型的训练仍遵循着‌任务驱动范式‌——针对每个具体任务(如猫狗分类、情感分析),从头开始训练专用模型。这种模式存在两大痛点:

  1. 数据依赖性强‌:每个任务需要大量标注数据
  2. 知识无法复用‌:不同任务间的经验难以共享

转折发生在2018年。Google发布的BERT模型在11项NLP任务中刷新记录,其核心突破在于引入了‌预训练-微调(Pre-training & Fine-tuning)‌范式。这标志着AI进入"知识筑基"时代——先通过海量无监督数据让模型学习通用知识,再针对具体任务进行适应性调整。

1.2 预训练的技术演进史

  • 2013年 Word2Vec‌:词向量预训练,首次实现语义编码
  • 2018年 BERT‌:双向Transformer架构,掩码语言模型预训练
  • 2020年 GPT-3‌:自回归生成式预训练,参数规模达1750亿
  • 2021年 ViT‌:视觉Transformer,将预训练引入图像领域
  • 2023年 LLaMA-2‌:多模态预训练,融合文本、图像、代码

二、预训练的本质:像人类一样学习

2.1 生活中的预训练启示

想象一个孩子学习识物的过程:

  1. 无监督观察‌:大量看绘本、听大人说话(预训练阶段)
  2. 少量指导‌:父母指认"这是苹果"(微调阶段)
  3. 知识迁移‌:认出不同颜色的苹果(跨任务应用)

这正是预训练的核心思想——‌先建立通用认知框架,再快速适应新场景‌。与传统机器学习相比,预训练模型如同掌握了"学习的方法论",而不仅仅是解决某个问题的技巧。

2.2 技术定义与核心价值

预训练‌指在特定领域(如文本、图像)使用大规模无标注/弱标注数据,通过自监督学习训练基础模型(Foundation Model)。其技术价值体现在:

  1. 数据效率‌:微调所需标注数据量减少90%以上
  2. 泛化能力‌:在分布外(OOD)数据表现更鲁棒
  3. 多任务兼容‌:同一模型可处理文本生成、问答、摘要等任务

三、 预训练的技术解剖

3.1 核心架构:Transformer的统治

无论是BERT还是GPT,其底层都基于‌Transformer架构‌,关键组件包括:

# Transformer核心组件伪代码
class TransformerBlock(nn.Module):def __init__(self, d_model, n_heads):self.attention = MultiHeadAttention(d_model, n_heads)  # 多头注意力self.ffn = PositionwiseFeedForward(d_model)  # 前馈网络self.norm1 = nn.LayerNorm(d_model)self.norm2 = nn.LayerNorm(d_model)def forward(self, x):# 残差连接+层归一化attn_out = self.attention(x)x = self.norm1(x + attn_out)ffn_out = self.ffn(x)return self.norm2(x + ffn_out)
架构优势分析:
  1. 并行计算‌:不同于RNN的序列依赖,Transformer可并行处理所有位置
  2. 长程依赖‌:自注意力机制直接建模任意距离的token关系
  3. 可扩展性‌:通过堆叠更多层实现模型容量提升

3.2 预训练任务设计

3.2.1 语言模型预训练
模型类型训练目标代表模型
自编码器掩码语言建模(MLM)BERT
自回归模型下一词预测(Next Token)GPT系列
混合式置换语言建模(PLM)XLNet

示例:BERT的掩码语言建模

# 输入序列处理示例
原始句子: "人工智能正在改变世界"
掩码后:   "人工[MASK]能正在[MASK]变世界"# 模型需预测[MASK]位置的真实token("智"、"改")
3.2.2 视觉预训练创新
  • 对比学习‌(SimCLR):增强图像表征的判别力
  • MAE‌(Masked Autoencoder):随机遮盖图像块并重建
    # MAE图像掩码示例
    原始图像分块:[块1][块2][块3][块4][块5][块6]
    掩码后输入: [块1][MASK][块3][MASK][块5][MASK]
    

3.3 规模化定律(Scaling Law)

OpenAI的研究揭示预训练模型的‌性能随规模指数增长‌:

模型性能 ∝ (参数量)^α × (数据量)^β × (计算量)^γ

其中α≈0.073, β≈0.24, γ≈0.24(基于语言模型实验)

这使得大模型呈现‌涌现能力‌——当规模超过临界点时,突然获得诸如逻辑推理、代码生成等复杂能力。

四、预训练的实现方法论

4.1 硬件架构挑战

千亿参数模型的训练需要分布式计算创新:

  1. 3D并行‌:

    • 数据并行:拆分批次到多个GPU
    • 流水线并行:按层划分模型
    • 张量并行:拆分单个矩阵运算
  2. 混合精度训练‌:

    # PyTorch混合精度示例
    scaler = torch.cuda.amp.GradScaler()with torch.cuda.amp.autocast():outputs = model(inputs)loss = criterion(outputs, labels)scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()
    

4.2 高效预训练技巧

  1. 课程学习‌:从简单样本逐步过渡到复杂样本
  2. 动态批处理‌:根据序列长度动态调整batch_size
  3. 模型压缩‌:
    • 知识蒸馏:用大模型指导小模型训练
    • 量化感知训练:将权重从FP32转为INT8

五、 预训练模型的应用图谱

5.1 自然语言处理

  • 文本生成‌:GPT-3创作新闻稿
  • 语义搜索‌:BERT构建搜索引擎
  • 代码生成‌:Codex自动生成Python脚本

5.2 计算机视觉

  • 图像分割‌:Segment Anything Model (SAM)
  • 视频理解‌:CLIP引导的视频内容分析
  • 医疗影像‌:BioViT检测病理特征

5.3 跨模态应用

  • 图文生成‌:Stable Diffusion生成创意图片
  • 多模态问答‌:Flamingo解答带图像的数学题
  • 机器人控制‌:PaLM-E理解自然语言指令操作机械臂

六、 手把手实现预训练模型

6.1 环境准备

# 创建虚拟环境
conda create -n pretrain python=3.9
conda activate pretrain# 安装依赖
pip install torch==2.0.1 transformers==4.30.0 datasets==2.12.0

6.2 小型BERT预训练实现

from transformers import BertConfig, BertForPreTraining
import torch# 配置微型BERT
config = BertConfig(vocab_size=30522,hidden_size=128,num_hidden_layers=4,num_attention_heads=4
)
model = BertForPreTraining(config)# 模拟预训练数据
input_ids = torch.randint(0, 30000, (32, 128))  # batch_size=32, seq_len=128
attention_mask = torch.ones_like(input_ids)# 前向计算
outputs = model(input_ids, attention_mask=attention_mask)
prediction_logits = outputs.prediction_logits
seq_relationship_logits = outputs.seq_relationship_logits

6.3 预训练任务定义

# 掩码语言建模损失计算
def mlm_loss(mlm_logits, masked_labels):loss_fct = nn.CrossEntropyLoss()mlm_loss = loss_fct(mlm_logits.view(-1, config.vocab_size),masked_labels.view(-1))return mlm_loss# 下一句预测损失
def nsp_loss(nsp_logits, is_next_labels):loss_fct = nn.CrossEntropyLoss()return loss_fct(nsp_logits, is_next_labels)

七、 预训练技术的挑战与未来

7.1 现存挑战

  1. 能耗问题‌:训练GPT-3需消耗1287MWh电力,相当于130个家庭年用电量
  2. 幻觉问题‌:模型生成看似合理实则错误的内容
  3. 安全风险‌:隐私泄露、深度伪造等伦理问题

7.2 技术前沿方向

  1. 绿色AI‌:

    • 稀疏专家模型(MoE)
    • 神经架构搜索(NAS)优化能耗
  2. 认知架构创新‌:

    • 世界模型(World Models)构建物理常识
    • 神经符号系统结合
  3. 人机协作范式‌:

    • RLHF(人类反馈强化学习)
    • 可解释性可视化工具

八、预训练与模型微调的核心区别

‌8.1 目标差异
  • 预训练‌:通过大规模无标注数据(如互联网文本、图像)学习‌通用知识表示‌,构建基础认知框架‌。:类似人类通过阅读百科全书建立常识体系。
  • 微调‌:在预训练模型基础上,使用少量标注数据‌适配特定任务‌(如情感分析、医学影像诊断)‌。:如同医生在基础医学知识上专攻心脏病治疗。
‌8.2 数据与训练方式
维度预训练微调
数据量TB级无标注数据(如维基百科、Common Crawl)‌千级标注样本(如1000条带标签的医学影像)‌
数据特征通用性、多样性任务相关性、专业性
训练任务自监督学习(如掩码语言建模、对比学习)‌有监督学习(如分类、生成)‌
8.3.技术实现差异
  • 预训练的关键技术‌:

    • 使用‌自监督学习‌任务构建训练信号(如遮盖句子中的词让模型预测)‌
    • 采用‌Transformer‌等架构捕获长程依赖关系‌
    • 依赖‌分布式计算‌(如3D并行训练)处理海量数据‌
  • 微调的常见方法‌:

    • 全参数微调‌:更新所有模型权重(适用于数据量充足的场景)‌
    • 参数冻结‌:仅训练顶层分类器(如BERT+线性层)‌
    • 适配器微调‌:插入轻量级适配模块(如LoRA)‌
# LoRA微调示例(PyTorch伪代码)
class LoRALayer(nn.Module):def __init__(self, in_dim, out_dim, rank=8):self.A = nn.Linear(in_dim, rank, bias=False)  # 低秩矩阵Aself.B = nn.Linear(rank, out_dim, bias=False) # 低秩矩阵Bdef forward(self, x):return x + self.B(self.A(x))  # 原始权重 + 低秩更新# 在预训练模型中插入LoRA
pretrained_model.fc = LoRALayer(1024, 512)  # 替换全连接层
8‌.4 资源消耗对比
指标预训练微调
计算资源千卡级GPU集群(如1024块A100)‌单卡/多卡(如8块A100)‌
训练时间数周至数月数小时至数天
能耗成本百万美元级(如GPT-3耗电1287MWh)‌千美元级

‌8.5. 典型应用场景
  • 预训练适用场景‌:

    • 构建通用基础模型(如GPT-4、Stable Diffusion)‌
    • 跨任务知识迁移(如用文本模型辅助代码生成)‌
  • 微调适用场景‌:

    • 垂直领域优化(如法律文书生成、工业质检)‌
    • 数据隐私保护(用本地数据微调而不泄露原始模型)‌
‌8.6. 两者的互补关系

预训练与微调构成‌“金字塔学习”范式‌:

  1. 预训练筑基‌:模型通过海量数据建立通用表征能力‌
  2. 微调精修‌:在特定任务数据上细化决策边界‌
  3. 持续学习‌:通过多次微调实现跨领域适应(如医疗→金融)‌

九、结语:通向通用人工智能的基石

        从Word2Vec到GPT-4,预训练技术正在重塑机器认知世界的方式。它不仅是工程方法的突破,更是对人类学习机制的深刻借鉴。当模型通过预训练获得基础的世界表征能力,我们距离真正理解"智能"的本质或许又近了一步。在这个大模型层出不穷的时代,如何在效率与伦理间找到平衡,将是下一代研究者需要回答的关键命题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32504.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataWhale 大语言模型 - 语言模型发展历程

大语言模型 LLMBook 项目背景 本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的…

C#带有设备仿真功能串口调试助手

本文档介绍一种方法,可以用来仿真串口设备。这样调试PLC程序时可以在没有仪器时用于测试程序的运行。详细代码见: https://download.csdn.net/download/qq_34047402/90477066 C#带有设备仿真功能串口调试助手资源-CSDN文库 步骤如下: 1.把串口设备接收和发送仿真数据放到一…

本地部署 OpenManus 保姆级教程(Windows 版)

一、环境搭建 我的电脑是Windows 10版本,其他的没尝试,如果大家系统和我的不一致,请自行判断,基本上没什么大的出入啊。 openManus的Git地址:https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…

01 | Go 项目开发极速入门课介绍

提示: 所有体系课见专栏:Go 项目开发极速入门实战课。 你好,欢迎学习本课程。本课程是一个 Go 项目开发极速入门课程。旨在帮助刚学习完 Go 基础语法的 Go 开发者,快速掌握如何开发一个功能相对全面的 Go 项目。 根据课程设计目标…

使用 Elastic-Agent 或 Beats 将 Journald 中的 syslog 和 auth 日志导入 Elastic Stack

作者:来自 Elastic TiagoQueiroz 我们在 Elastic 一直努力将更多 Linux 发行版添加到我们的支持矩阵中,现在 Elastic-Agent 和 Beats 已正式支持 Debian 12! 本文演示了我们正在开发的功能,以支持使用 Journald 存储系统和身份验…

江科大51单片机笔记【15】直流电机驱动(PWM)

写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论…

【Linux】:封装线程

朋友们、伙计们,我们又见面了,本期来给大家带来封装线程相关的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结…

全球领先的光学方案设计公司:倚光科技

在光学技术革新的浪潮中,倚光(深圳)科技有限公司以创新者的姿态迅速崛起,成为全球光学领域的标杆企业。自 2021 年成立以来,公司始终聚焦纳米光学技术研发与超精密加工,凭借顶尖的技术实力和前瞻性的市场布…

2.2.3 TCP—UDP-QUIC

文章目录 2.2.3 TCP—UDP-QUIC1. TCP如何做到可靠性传输1. ACK机制2. 重传机制3. 序号机制4. 窗口机制5. 流量机制6. 带宽机制 2. tcp和udp如何选择1. tcp和udp格式对比2. ARQ协议(Automatic Repeat reQuest,自动重传请求)1. ARQ协议的主要类…

【动手实验】TCP 连接的建立与关闭抓包分析

本文是基于知识星球程序员踩坑案例分享中的作业进行的复现和总结,借此加深对 TCP 协议的理解, 原文参见TCP 连接的建立和关闭 —— 强烈建议新手看看。 实验环境 这里使用两台位于同一子网的腾讯云服务器,IP 分别是 node2(172.1…

视频理解之Actionclip(论文宏观解读)

配合解读代码解读 1.研究背景 1. 视频行为识别的重要性 视频行为识别是视频理解领域的核心任务之一,旨在通过分析视频内容来识别和分类其中的人物行为或活动。这一任务在多个领域具有重要的应用价值,例如智能监控、人机交互、自动驾驶、医疗健康等。随…

基于LabVIEW的脚本化子VI动态生成

该示例展示了一种利用LabVIEW VI脚本(VI Scripting)技术,通过程序化方式动态生成并替换子VI的解决方案。核心逻辑为:基于预定义的模板VI,根据用户选择的数学操作(加法或乘法),自动生…

Debian系统grub新增启动项

参考链接 给grub添加自定义启动项_linux grub定制 启动项名称自定义-CSDN博客 www.cnblogs.com 1. boot里面的grub.cfg 使用vim打开boot里面的grub.cfg sudo vim /boot/grub/grub.cfg 这时候会看到文件最上方的提示 2. 真正配置grub的文件 从刚才看到的文件提示中&#x…

ctfhub-web-SSRF通过攻略

1.URL Bypass 打开题目 请求的URL中必须包含http://notfound.ctfhub.com,使用来绕过即可 /?urlhttp://notfound.ctfhub.com127.0.0.1/flag.php 成功获得flag 2.数字IP Bypass 开启题目 发现127以及172被过滤了 尝试别的绕过 127.0.0.1–>localhost 127.0…

C语言(23)

字符串函数 11.strstr函数 1.1函数介绍: 头文件:string.h char *strstr ( const char * str1,const char *str2); 作用:在一个字符串(str1)中寻找另外一个字符串(str2)是否出现过 如果找到…

uniapp+Vue3 组件之间的传值方法

一、父子传值&#xff08;props / $emit 、ref / $refs&#xff09; 1、props / $emit 父组件通过 props 向子组件传递数据&#xff0c;子组件通过 $emit 触发事件向父组件传递数据。 父组件&#xff1a; // 父组件中<template><view class"container">…

晨控CK-FR08与汇川H5U系列PLC配置EtherNet/IP通讯连接手册

晨控CK-FR08与汇川H5U系列PLC配置EtherNet/IP通讯连接手册 晨控CK-FR08系列作为晨控智能工业级别RFID读写器,支持大部分工业协议如RS232、RS485、以太网。支持工业协议Modbus RTU、Modbus TCP、Profinet、EtherNet/lP、EtherCat以及自由协议TCP/IP等。 本期主题&#xff1a;围…

BLDC直流无刷电机转速电流双闭环调速MATLAB仿真

微♥&#xff1a;“电击小子程高兴的MATLAB小屋”获取巨额优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.仿真算法&#x…

Windows 11下Git Bash执行cURL脚本400问题、CMD/PowerShell不能执行多行文本等问题记录及解决方案

问题 在Postman里可成功执行的POST请求&#xff1a; 找到Postman的Code 因为cURL基本上算是行业标准&#xff0c;所以Postman默认选中cURL&#xff0c;支持切换不同的开发语言&#xff1a; 点击上图右上角的复制按钮&#xff0c;得到cURL脚本。 Windows 11家庭版&#xff…

4个 Vue 路由实现的过程

大家好&#xff0c;我是大澈&#xff01;一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff0c;关注我&#xff0c;科技未来或许我能帮到你&#xff01; Vue 路由相信朋友们用的都很熟了&#xff0c;但是你知道 Vue 路由…