学习 2022.4

学习 2022.4

💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

文章讨论深度学习技术要点:孪生网络中dropout导致训练与预测相似度不一致;Radam结合Adam与warmup,AdamW加入L2正则;Xavier初始化保证输入输出方差一致,但作者实验发现PyTorch两个维度方差均固定,存疑;苏神从几何角度解释初始化等价性;DeBERTa将注意力内容与相对位置解耦,在Transformer块后、softmax前加入绝对位置编码,并在embedding层LayerNorm后加干扰提升大模型效果。

🔎

延伸解读

Dropout在相似度计算中的陷阱

在孪生网络中使用dropout计算余弦相似度时,预测阶段的相似度分数会比训练阶段大,相差一个dropout因子。这是因为训练和预测阶段dropout行为不一致,且假设dropout层神经元大小相近。实际应用中需注意这一偏差,确保训练和预测的一致性。

Radam与AdamW:优化器的选择

Radam结合了Adam和warmup,动态调整学习率,在训练初期降低学习率,以避免Adam陷入效果不好的局部最优解。AdamW则在Adam基础上加入参数L2正则。两者名称相似但机制不同,选择时需根据任务需求判断。

Xavier初始化的维度困惑

Xavier初始化旨在保持输入输出方差一致,公式为var=2/(dim_in+dim_out)。但作者实验发现PyTorch中两个维度的方差都固定为该值,这与理论预期不符。作者在社区提问未获解答,提示实际实现可能与理论有差异,需进一步探究。

DeBERTa的解耦注意力与干扰策略

DeBERTa将注意力内容与相对位置解耦,在Transformer块后、softmax前加入绝对位置编码。此外,在embedding层LayerNorm后加入干扰,能提升大模型效果。这些设计针对大模型训练中的抖动问题,为改进Transformer架构提供了新思路。

❓

Q&A

孪生网络中使用dropout计算余弦相似度时,为什么预测阶段的相似度分数会比训练阶段大?

因为训练和预测阶段dropout用法不一致:训练时dropout会随机丢弃部分神经元,而预测时使用全部神经元。这导致预测阶段的输出值比训练阶段大,相差一个dropout值,即 sim_score_predict = sim_score_train / dropout。

Radam和AdamW有什么区别?

Radam是Adam加上warmup,动态调整学习率,在训练初期降低学习率,以解决Adam容易找到效果不好的局部最优解的问题。AdamW是Adam加上参数L2正则,名字容易与Radam混淆。

Xavier参数初始化的原理是什么?

Xavier初始化能够保证神经网络输入层和输出层的方差保持一致,使得输入空间和输出空间的稀疏程度相似,梯度更加稳定。具体方差取 var = 2/(dim_in + dim_out)。

在PyTorch中,Xavier初始化后参数矩阵两个维度的方差都是2/(dim_in+dim_out)吗?

是的。作者通过PyTorch实验发现,使用xavier_normal_初始化后,参数矩阵在两个维度上的方差均值都等于2/(dim_in+dim_out),即两个维度的方差都是固定的该值。

苏神如何从几何角度解释参数初始化的有效性?

苏神从几何角度指出,以一定均值和方差初始化参数矩阵时,参数矩阵是一个正交矩阵,正交矩阵保证向量的模长不变,即 ||Wx||^2 = ||x||^2,从而证明了初始化的有效性。当向量均值为0时,方差和模长只相差一个常数因子,因此与Xavier保证方差不变的目标等价。

DeBERTa在模型结构上有哪些改进?

DeBERTa的主要改进包括:1. 在self-attention中,将上下文关系和相对位置的关系分开计算注意力分数;2. 注意力增强:在解码器中,将绝对位置编码加入到Transformer块之后、softmax之前;3. 样本干扰:在embedding层进行Layer Normalization之后加入干扰,对模型效果提升明显,特别是在large模型中。

🏷️

标签

➡️

继续阅读