input_ids`、`attention_mask` 和 `labels` 在训练过程中的作用和数据流动变化

用一个形象的例子来解释 input_idsattention_masklabels 在训练过程中的作用和数据流动变化。

场景示例:机器翻译任务

假设我们正在训练一个机器翻译模型,将英文句子翻译成法文。我们有一个句子对:

  • 英文(输入): “How are you?”
  • 法文(输出): “Comment ça va?”

数据处理和流动

1. 原始数据

我们有如下的原始数据对:

  • 输入句子(英文): “How are you?”
  • 输出句子(法文): “Comment ça va?”
2. 标记化(Tokenization)

使用 tokenizer 将句子转换为标记(token),并分配唯一的 ID。

英文: "How are you?"
标记化: ["How", "are", "you", "?"]
input_ids: [101, 2026, 2003, 2073, 102]

法文: "Comment ça va?"
标记化: ["Comment", "ça", "va", "?"]
labels: [1055, 3791, 3651, 102]
3. 生成 input_ids

input_ids 是输入序列的标记 ID 列表,用于模型输入。

input_ids: [101, 2026, 2003, 2073, 102]
4. 生成 attention_mask

attention_mask 用于指示模型在处理输入序列时应关注哪些标记。非填充标记的位置为 1,填充标记的位置为 0。

attention_mask: [1, 1, 1, 1, 1]
5. 生成 labels

labels 是目标序列的标记 ID 列表。为了在计算损失时忽略填充标记,填充标记位置的标签被设置为 -100。

labels: [1055, 3791, 3651, 102]

在实际操作中,如果输出序列被填充(padding),则填充标记的位置在 labels 中会被设置为 -100:

假设最大序列长度为 6, 并对输出序列进行填充
填充后的 labels: [1055, 3791, 3651, 102, -100, -100]
6. 数据流动

在训练过程中,数据从原始输入到模型输出的变化流程如下:

  1. 输入:
    • 原始输入(英文): “How are you?”
    • 标记化后生成 input_idsattention_mask
input_ids: [101, 2026, 2003, 2073, 102]
attention_mask: [1, 1, 1, 1, 1]
  1. 模型处理:

    • 模型接收 input_idsattention_mask,并基于这些输入进行前向传播,生成预测的输出序列(法文)。
  2. 目标输出:

    • 原始输出(法文): “Comment ça va?”
    • 标记化后生成 labels
labels: [1055, 3791, 3651, 102, -100, -100]
  1. 损失计算:

    • 模型根据预测的输出序列和实际的 labels 计算损失。损失函数会忽略 labels 中值为 -100 的位置。
  2. 反向传播和更新:

    • 根据损失值进行反向传播,更新模型参数。
7. 示意图
原始输入(英文): "How are you?" -> 标记化 -> input_ids: [101, 2026, 2003, 2073, 102]
原始输出(法文): "Comment ça va?" -> 标记化 -> labels: [1055, 3791, 3651, 102]

模型输入:
  input_ids: [101, 2026, 2003, 2073, 102]
  attention_mask: [1, 1, 1, 1, 1]

模型预测: [1055, 3791, 3651, 102] (与 labels 比较)

损失计算:
  labels: [1055, 3791, 3651, 102, -100, -100]
  忽略 -100 部分,计算损失

反向传播: 根据损失更新模型参数

通过这个形象的例子,可以更清楚地了解 input_idsattention_masklabels 在训练过程中的作用和数据流动变化。这些元素共同作用,使得模型能够在训练过程中学习输入和输出之间的映射关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值