0%

大模型面试高频题

  1. SFT Loss计算方法
    • 交叉熵损失 CE Loss
      • 假设输入prompt为x,目标输出序列为 y = (y1, y2, ..., yT),模型预测条件概率为 pθ(yt|x, y < t)
      • 则SFT Loss定义为: SFTθ = −∑t = 1Tlog pθ(yt|x, y < t)
    • 模型在生成每一个token时会预测一个概率分布,而希望它尽可能把正确token的概率提高。其损失就是“模型预测分布和参考答案之间的差距”。
    • 每一步预测都会对计算交叉熵取平均,最后对整个结果取平均。
    • 交叉熵:用来度量两个概率分布差异的函数,熵越小越接近真实分布。
    • 真实分布p(x),预测分布q(x),交叉熵定义为 H(p, q) = −∑p(xi)log q(xi).
  2. Transformer与注意力机制
    • Attention类别:Self Attention,Cross Attention,MHA,Flash Attention等。
    • Transformer结构:
      • Encoder模块:由N层堆叠,每一层主要包含:
        • 多头自注意力:捕捉输入序列中不同位置之间的依赖关系。
          • Attention(Q, K, V) = softmax(QKT/sqrtdk)V
          • 其中 Q, K, V 均由输入 X 投影得到:Q = XWQ, K = XWK, V = XWV.
        • 前向传播:对于每个token进行线性变换,提高表达能力.
          • FFN(x) = ReLU(xW1 + b1)W2 + b2
        • 残差连接和Layer Norm:保证梯度稳定,提高训练效果。
          • X = LayerNorm(X + MultiHead(X, X, X)), Y = LayerNorm(X + FFN(X))
      • Decoder模块:同样由N层堆叠
        • Masked多头自注意力:防止token看到未来信息,保证自回归生成。
          • QKT + M,通过mask矩阵屏蔽token之后的所有位置。
        • Encoder-Decoder多头注意力:让Decoder关注Encoder计算出的特征。
          • 公式相同,但是Q由decoder产生,K和V由Encoder提供。
        • 前馈网络:增强表达。
        • 残差连接:稳定训练,提高梯度传播能力。
        • Decoder的最终输出会通过一个线性变换和softmax层得到最后的预测分布。
    • 使用多头自注意力机制的优势:
      • MHA可以让模型从不同的表示子空间中学习不同的特征,增强模型的表达能力;提高模型的鲁棒性,减少单个注意力头可能带来的信息丢失;允许不同的注意力头关注输入序列的不同部分,使模型能够捕捉更丰富的上下文信息;增强模型的表达能力,避免单一注意力模式可能导致的局部最优解。
    • 为什么Q和K需要使用不同的权重矩阵:如果Q和K使用相同的权重矩阵,则 QKT 变成了一个对称矩阵,这样会导致注意力分数的计算缺乏灵活性,无法区分不同的输入关系。
    • 计算注意力使用点积计算的优势:
      • 计算效率更高,矩阵运算可以使用并行加速;避免了额外的可训练参数,而假发注意力需要额外的权重矩阵和非线性变换;也适用于高维向量。
    • 为什么对 QKT 进行scaled处理:
      • dk 是K的维度,如不不进行缩放,当 dk 较大时 QKT 的数值会变得过大,导致softmax的梯度消失。scaled后可以使得分布更加平稳,提高训练稳定性。
    • 为什么在进行多头注意力时需要先concat再降维:
      • 如果不降维会导致每个头的计算量变得很大,因此一般将d维的输入向量映射到一个较低维的子空间,使得每个头的计算量减少;如果直接相加那么所有注意力头的输出都会累驾到同一个维度上;而多头的优势在于可以关注不同的特征,直接相加会让这些特征混合,进而无法区分不同的注意力模式,降低了表达力。
    • Mask如何实现:对于需要padding的位置设置负无穷,需要的位置设置0.
    • 残差连接的作用:
      • 缓解梯度消失:梯度可以残差路径传播,使得深层网络训练更加稳定。
      • 加速收敛:通过跳跃连接使得梯度流动更加顺畅,减少训练时间。
      • 防止信息丢失:输入信息可以沿着残差路径流向更深层网络。
      • 提高泛化能力:残差+LayerNorm可以防止过拟合。
    • 为什么用LayerNorm而不是BatchNorm:
      • BatchNorm依赖于mini-batch统计量,而NLP任务序列长度不固定,BatchNorm可能表现不稳定,而LayerNorm不受影响。BatchNorm也依赖于较大的batchsize来获得稳定的均值和方差,而Transformer的batchsize通常较小。此外,transformer中每个token的计算是独立的,LayerNorm可以为每个token进行归一化,而batchnorm需要整个batch的信息。