85.sigmoid放在中间层会发生什么?11.bert的自注意力是怎么实现的?

以下是对这两个问题的回答:

  • sigmoid 放在中间层会发生什么:
    • 梯度消失:sigmoid 函数的导数在 x 值较大或较小时趋近于 0。当在中间层使用 sigmoid 函数时,在反向传播过程中,根据链式法则,梯度需要连乘多个层的导数。由于 sigmoid 导数的最大值仅为 1/4,连乘后梯度会呈指数级减小,导致浅层网络的梯度消失,使得模型难以更新参数,影响训练效果。
    • 输出不以 0 为中心:sigmoid 函数的输出均值不为 0,这可能导致在反向传播过程中出现偏移现象,使得神经元的更新方向不一致,从而影响模型的收敛速度。
  • bert 的自注意力是怎么实现的:
    • 线性变换生成 Q/K/V:将上一层的输出作为输入,通过线性变换层分别映射到查询(Query)、键(Key)、值(Value)空间,得到 Q、K、V 向量。
    • 拆分多头:将线性变换后的结果按注意力头进行拆分,先将所有注意力头的总维度拆分为注意力头的数量和每个头的维度,然后交换注意力头数量和序列长度的维度,使每个头可以独立计算注意力。
    • 计算注意力分数:计算 Q 和 K 的点积,得到注意力分数,然后对注意力分数进行缩放,防止点积结果过大导致 Softmax 梯度消失,再加上注意力掩码,忽略填充位置。
    • Softmax 归一化与 Dropout:对注意力分数沿最后一个维度进行 Softmax 归一化,得到注意力概率,再对注意力概率应用 Dropout,随机失活一些注意力连接,防止过拟合。
    • 聚合值与合并多头:通过注意力概率对 V 向量加权求和,得到上下文表示,然后将多头的结果进行合并,先交换注意力头数量和序列长度的维度,再将最后两个维度合并为所有注意力头的总维度,便于后续处理。
posted @ 2025-07-16 14:43  m516606428  阅读(11)  评论(0)    收藏  举报