当前位置: 首页 > news >正文

[笔记.AI]大模型训练 与 向量值 的关系

(借助 DeepSeek-V3 辅助生成) 

大模型在训练后是否会改变向量化的值,取决于模型的训练阶段和使用方式。以下是详细分析:

1. 预训练阶段:向量化值必然改变
  • 动态调整过程
    在预训练阶段(如BERT、GPT的初始训练),模型的嵌入层(Embedding Layer)作为可训练参数,通过反向传播不断优化。每个词或子词的向量会根据上下文共现模式和任务目标(如掩码语言建模、自回归预测)动态调整。

  • 示例

    • 词汇“苹果”在初始时可能随机分布,但经过训练后,其向量会靠近“水果”或“公司”(取决于上下文频率)。

    • 语义关系(如“国王-男人+女人≈女王”)在此阶段被编码到向量空间中。


2. 预训练完成后:向量化值固定
  • 冻结模型参数
    一旦预训练完成且模型参数被冻结(不再更新),向量化的值将保持不变。此时模型仅用于推理(如生成文本、特征提取)。

  • 应用场景

    • 直接使用预训练模型提取文本向量(如BERT的CLS向量)。

    • 在未微调的情况下处理下游任务,向量化值不变化。


3. 微调阶段:向量化值可能改变
  • 微调策略决定是否更新
    在特定任务上微调时,通常有两种策略:

    1. 全参数微调:解冻所有模型参数(包括嵌入层),向量化的值会随新任务的数据调整。

      • 适用场景:数据量充足,需深度适配领域特性(如法律文本微调)。

      • 影响:“合同”等专业术语的向量会更贴近领域语义。

    2. 部分参数微调:仅解冻部分层(如顶层Transformer块),保持嵌入层冻结。

      • 适用场景:数据量少,防止过拟合。

      • 影响:向量化值不变,模型依赖预训练语义。

  • 轻量级微调技术

    • Prompt Tuning:仅优化提示词(Prompt)的向量,不修改原始嵌入。

    • Adapter:在模型中插入小型可训练模块,保持原始参数(包括嵌入)固定。

    • LoRA:通过低秩矩阵调整注意力层,不改变嵌入层。


4. 不同模型架构的差异
  • BERT vs. GPT

    • BERT:由于双向注意力机制,微调时嵌入层调整可能更显著(需适配全局上下文)。

    • GPT:单向自回归生成,嵌入层调整侧重于左向上下文适配。

  • 静态嵌入 vs. 动态嵌入

    • 静态嵌入(如Word2Vec):训练完成后向量固定,无法随任务调整。

    • 动态嵌入(如BERT、GPT):嵌入层可参与微调,向量值可变。


5. 为什么需要改变向量化值?
  • 领域适配
    通用语料训练的向量可能无法准确表示专业术语(如医疗词汇“化疗”需更接近“癌症”而非日常语境)。

  • 语义演化
    新词汇(如“元宇宙”)或词义变化(如“直播”从电视到互联网)需更新向量。

  • 任务需求
    情感分析任务需强化情感极性(如“优秀”向量靠近“积极”方向)。


6. 实际应用中的权衡
场景是否改变向量化值优缺点
直接推理保持预训练通用性,但无法适配领域或新任务。
全参数微调最大化任务性能,但需大量数据且计算成本高。
轻量级微调节省计算资源,适合小数据,但性能可能受限。
在线学习(持续训练)动态适应新数据(如新闻模型跟踪热点事件),但需谨慎管理灾难性遗忘。

总结

  • 预训练阶段:向量化值必然改变,模型学习通用语义表示。

  • 推理阶段(无微调):向量化值固定,直接应用预训练知识。

  • 微调阶段:根据策略选择是否更新向量化值,全参数微调会改变,轻量级方法则保持固定。

  • 核心权衡:领域适配需求 vs. 计算成本 & 过拟合风险。

http://www.dtcms.com/a/99919.html

相关文章:

  • vue3 + ant-design-vue4实现Select既可以当输入框也可以实现下拉选择
  • sqli-labs学习记录8
  • Spring 项目中跨数据源(多数据源)调用时 @DS 注解失效或不生效
  • Nginx RTMP 接收模块分析 (ngx_rtmp_receive.c)
  • 【数学建模】(智能优化算法)元胞自动机在数学建模中的应用
  • 第十四节 MATLAB决策制定、MATLAB if 语句语法
  • MATLAB 控制系统设计与仿真 - 30
  • Java简单生成pdf
  • 在Wincc中使用Dapper读写数据库
  • Go/Python(Nuitka)/Rust/Zig 技术对比
  • 记一次关于云的渗透过程
  • Git配置
  • C# 的Lambda表达式‌常见用法和示例
  • C++中常见符合RAII思想的设计有哪些
  • c++使用iconv进行字符编码格式转换
  • 小红书多账号运营:如何实现每个账号独立 IP发布文章
  • ubuntu 安装 postgresql
  • Dubbo(23)如何配置Dubbo的服务消费者?
  • 蓝桥杯_DS18B20温度传感器
  • 【Java】Java核心知识点与相应面试技巧(六)——类与对象(一)
  • 什么是CMS?常用CMS有哪些?
  • Oracle数据库数据编程SQL<2.3 DML增、删、改及merge into>
  • 【学Rust写CAD】15 定点数实现(fixed.rs)
  • CSS中的em,rem,vm,vh详解
  • PipeWire 音频设计与实现分析一——介绍
  • C# 字符串(String)
  • 前端路由守卫与后端权限验证,仅使用路由守卫是否安全?
  • docker日志大小和保存管理
  • 常用的排序算法
  • 浅析Android Jetpack ACC之ViewModel