Deep Network Tuning
-
DL是一种很有效的编程语言,能够很好的理解数据
- 一些值可以在后续真实数据填充
- 可微
-
各种设计模式,从层到网络架构
Batch Normalization
-
将数据标准化使损失函数更加平滑特别是线性模型,不然可能梯度突然很大
-
BN把中间一些输入也做了标准化帮助训练更容易,更平滑
-
把输入变成2D(如果本来就是2D那就不变)
-
对每一列标准归一化
-
从 还原得到
-
转回以前的
Code
1 | def bacth_norm(X, gamma, beta, moving_mean, moving_var, eps, momentum): |
Layer Normalization
- 如果应用在RNN里面,BN在每个时间步都需要维护均值方差等,这个不能共享
- 假设训练时句子是10,预测是20,这下好了静态数值都不够了
- LN做了个转置,把输入 , ,剩下的和BN一样
- 区别就是在哪个维度做均值和方差,LN是在样本里面操作
- 训练和推理时是一致的
- 在Transformer中很流行
More Normalization
-
修改“reshape”
- InstanceNorm:
- GroupNorm: 当
- CrossNorm:给一堆特征后交换均值/方差
-
修改“normalize”:白化
-
修改”recovery“:修改
-
应用到权重或梯度
Summary
- 把中间层数值更稳定使训练更容易
- 归一化技术主要三步:输入重置,归一化数据,还原步骤
v1.5.2