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个位置的tokenlabel中这个位置的token一样,也就是在相对正确的环境下再去生成生成第i+1个位置的hidden_state

Q3:SFT时,构造lable

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

A3:

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

相关推荐
pop_xiaoli34 分钟前
OC—UI学习-2
学习·ui·ios
Lin Hsüeh-ch'in37 分钟前
Vue 学习路线图(从零到实战)
前端·vue.js·学习
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十五期-URL重定向模块)
学习·安全·web安全·渗透测试·网络安全学习
自小吃多2 小时前
STC8H系列 驱动步进电机
笔记·单片机
moxiaoran57534 小时前
uni-app学习笔记三十--request网络请求传参
笔记·学习·uni-app
嘉陵妹妹4 小时前
深度优先算法学习
学习·算法·深度优先
乖乖是干饭王5 小时前
Linux系统编程中的_GNU_SOURCE宏
linux·运维·c语言·学习·gnu
待什么青丝5 小时前
【TMS570LC4357】之相关驱动开发学习记录2
c语言·arm开发·驱动开发·单片机·学习
行云流水剑6 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
明月醉窗台6 小时前
qt使用笔记二:main.cpp详解
数据库·笔记·qt