阿里云快速建站教程,学做糕点的网站,网页制作专业软件,网站做导航设计的作用是什么意思Q1#xff1a;SFT时#xff0c;计算LOSS
LLM是自回归生成模型#xff0c;每次只会生成一个 token#xff0c;难道 SFT 时#xff0c;对于一个 (L, D) 的数据#xff0c;要调用 L 次LLM去计算loss#xff1f;
A1#xff1a;
在每个前向传播过程#xff0c;模型…Q1SFT时计算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时数据为什么promptinputoutput
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然后第i1个位置的token应该由这个hidden_state去生成但是我们强制让第i1个位置的token和label中这个位置的token一样也就是在相对正确的环境下再去生成生成第i1个位置的hidden_state。
Q3SFT时构造lable
SFT时构造的lable为什么要把promptinput部分mask掉。
A3
像Q1中那样我们生成的时候是一次性把整个序列的概率分布拿到。然后我们其实不想模型去学会对齐promptinput这部分的能力(因为没用)所以把promptinput mask 掉只计算output部分的loss。