LLM学习笔记

Q1:SFT时,计算LOSS

​ LLM是自回归生成模型,每次只会生成一个 token,难道 SFT 时,对于一个 (L, D) 的数据,要调用 L 次LLM去计算loss?

A1:

​ 在每个前向传播过程,模型一次性生成整个序列的概率分布,而不是逐个生成令牌。对于一个(L, D)的输入,那么Attention后,我们还是会得到一个(L, D)输出。只不过(i, D)这个向量中存着1~i中间所有的信息,那么用它就可以生成第 i + 1 个位置的内容。这也是为什么generate函数中每次会取 logits:, -1 去生成新的内容。

Q2: SFT时,数据为什么prompt+input+output

​ LLM是自回归生成模型,在训练时候为什么不是用 prompt + input 作为输入,然后得到 output 再去与真实的 label 计算 loss 更新参数呢?

A2:

​ 首先,如果要是像问题中这种策略去训练,一来每次要调用 l e n g t h o u t p u t length_{output} lengthoutput 次模型,二来模型生成的内容和 label 长度不一定一样,计算 loss 会出问题。其中这主要是因为我们在计算loss时,pytorch中要求loss_function(input, label)中的 input, label 的shape要一致。然后为了加速收敛,这里其实是一种teacher force 的策略,就在第i个位置,我们会得到一个hidden_state,然后第i+1个位置的token应该由这个hidden_state去生成,但是我们强制让第i+1个位置的token和label中这个位置的token一样,也就是在相对正确的环境下再去生成生成第i+1个位置的hidden_state。

Q3:SFT时,构造lable

​ SFT时,构造的lable为什么要把prompt+input部分mask掉。

A3:

​ 像Q1中那样,我们生成的时候是一次性把整个序列的概率分布拿到。然后我们其实不想模型去学会对齐prompt+input这部分的能力(因为没用),所以把prompt+input mask 掉,只计算output部分的loss。

相关推荐
启观川2 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
辣知2 小时前
辣知·化智77 三千年接力写就的一本书
学习
一木 之林2 小时前
Dify学习笔记 01 · 平台入门与实战:部署、五类应用、RAG与MCP(第1-16集)
人工智能·笔记·学习·计算机视觉
weixin_448119943 小时前
Datawhale Easy Data × AI:构建知识与记忆驱动的 Agent笔记8
人工智能·笔记·react.js
摸鱼 特供版3 小时前
一款边录边标注的轻量截图录屏工具
windows·学习·电脑·音视频·软件需求
陈年老古董3 小时前
Hive 函数学习笔记(下):窗口函数与经典案例
hive·笔记·学习
yi0114 小时前
LeetCode 643. 子数组最大平均数 I|从暴力枚举到滑动窗口
人工智能·笔记·python·算法·leetcode·滑动窗口
罗西的思考4 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (6)— 奖励机制
人工智能·笔记·学习
拾饵9425 小时前
第六周第二个项目笔记:FinInsRAG 项目学习笔记(零基础版)以及简历书写
笔记·学习
han68895 小时前
selenium之实战
笔记·python·selenium·测试工具·自动化