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

【人工智能99问】什么是教师强制?(16/99)

文章目录

  • 什么是教师强制?
    • 教师强制(Teacher Forcing)的定义
    • 原比例(Original Proportion)
    • 教师强制的举例说明(一)
    • 教师强制的举例说明(二)
    • 优点和缺点
    • 解决曝光偏差的方法

什么是教师强制?

教师强制(Teacher Forcing)的定义

教师强制是一种在训练循环神经网络(RNN)或序列到序列(Seq2Seq)模型时常用的技巧。其核心思想是:在训练过程中,不使用模型自身在上一个时间步的预测输出作为下一个时间步的输入,而是直接使用真实的标签(ground truth)作为输入。这种方法可以加速模型的收敛速度并提高训练的稳定性。

原比例(Original Proportion)

“原比例”并不是一个与“教师强制”直接相关的术语。在教师强制的上下文中,可能提到的是“教师强制的比例”,即在训练过程中使用真实标签作为输入的比例。例如,在计划采样(Scheduled Sampling)中,会逐渐减少使用真实标签的比例,增加使用模型自身预测的比例。

教师强制的举例说明(一)

假设我们正在训练一个机器翻译模型,将英语翻译成法语。输入序列是英语句子,目标序列是对应的法语句子。以下是教师强制的具体应用过程:

训练阶段

  1. 输入序列:假设输入的英语句子是“Mary had a little lamb”。
  2. 目标序列:对应的法语句子是“Marie avait un petit agneau”。
  3. 教师强制的训练过程:
    • 在时间步1,模型的输入是“Mary”,目标输出是“Marie”。
    • 在时间步2,不使用模型在时间步1生成的输出,而是直接将“Marie”作为输入,目标输出是“avait”。
    • 在时间步3,将“avait”作为输入,目标输出是“un”,依此类推。
    • 每个时间步的损失是通过计算模型输出与真实目标之间的交叉熵来计算的,然后通过反向传播更新模型参数。

推理阶段
在推理阶段(即实际使用模型进行翻译时),模型无法获取真实的目标序列,因此需要使用自身生成的输出作为下一个时间步的输入:

  1. 输入序列:仍然是“Mary had a little lamb”。
  2. 生成过程:
    • 在时间步1,模型的输入是“Mary”,生成的输出可能是“Marie”。
    • 在时间步2,将“Marie”作为输入,生成的输出可能是“avait”。
    • 在时间步3,将“avait”作为输入,生成的输出可能是“un”,依此类推,直到生成结束标记或达到最大长度。

教师强制的举例说明(二)

场景:机器翻译(英译中)
输入序列(英文): “I love cats”

目标序列(中文): “我 爱 猫”

训练步骤

  1. 编码器将 “I love cats” 编码为上下文向量 H_enc。

  2. 解码器输入右移后的真实标签:[, “我”, “爱”](对应预测目标 [“我”, “爱”, “猫”])。

  3. 在预测第3个词 “猫” 时,解码器的输入是 + “我” + “爱”(而非模型自己可能预测错的中间结果)。

若不用教师强制
假设模型第一步错误预测为 “你” 而非 “我”,则后续输入变为 [, “你”],错误会持续放大,导致训练困难。

优点和缺点

  • 优点:
    • 加速训练:使用真实标签可以减少模型在早期训练阶段因错误预测而导致的连锁反应,从而加速收敛。
    • 提高稳定性:避免了模型在训练初期可能产生的错误预测的累积效应,使得训练过程更加稳定。
  • 缺点:
    • 曝光偏差(Exposure Bias):模型在训练时只接触到真实的数据分布,而在实际推理时,模型需要根据自身的预测进行下一步的生成,这两种情况存在差异,可能导致模型在推理时表现下降。

解决曝光偏差的方法

为了解决曝光偏差,研究者们提出了一些改进方法,例如:

  • 计划采样(Scheduled Sampling):在训练过程中,逐渐增加使用模型自身预测作为输入的概率,从完全教师强制逐渐过渡到部分依赖模型自身预测。

  • Mixer-Seq:结合教师强制和自由运行(free-running)的训练方式,让模型在训练时同时接触到真实数据和自身生成的序列。

  • 课程学习(Curriculum Learning):
    从简单样本开始,逐步增加难度。

  • 强化学习微调:
    在训练后期使用强化学习(如RLHF)优化生成结果。

通过这些方法,可以在训练阶段更好地模拟推理阶段的条件,从而提高模型在实际应用中的性能。

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

相关文章:

  • Spring Cache 扩展:Redis 批量操作优化方案与 BatchCache 自定义实现
  • 2130、链表最大孪生和
  • rsync报错解决
  • Shopify 知识点
  • 草木知音的认知进化:Deepoc具身智能如何让除草机读懂花园的呼吸
  • 设备监控之数据处理(1)-概述
  • MQ 核心知识点笔记
  • Android开发中卡顿治理方案
  • 用基础模型构建应用(第十章)AI Engineering: Building Applications with Foundation Models学习笔记
  • 如何用纯 HTML 文件实现 Vue.js 应用,并通过 CDN 引入 Element UI
  • 【PHP 流程控制完全指南】
  • 多端适配灾难现场:可视化界面在PC/平板/大屏端的响应式布局实战
  • .NET依赖注入IOC你了解吗?
  • 开发避坑短篇(3):解决@vitejs plugin-vue@5.0.5对Vite^5.0.0的依赖冲突
  • 万界星空科技锂电池MES解决方案
  • Shell判断结构
  • voice模块
  • 【图论】CF——B. Chamber of Secrets (0-1BFS)
  • 标准文件I/O补充知识
  • paddleocr安装,数据集制作,训练自己的模型,调用训练好的模型
  • 20250721-day19
  • 【PTA数据结构 | C语言版】双连通分量
  • C# 实现:动态规划解决 0/1 背包问题
  • nextjs编程式跳转
  • 《小白学习产品经理》第七章:方法论之波特五力模型
  • springcloud -- 微服务02
  • Iridium Certus 9704 卫星物联网开发套件
  • cuda编程笔记(9)--使用 Shared Memory 实现 tiled GEMM
  • 补环境基础(二) this的作用和绑定规则
  • 关于Ajax的学习笔记