炼金

发布于 2020 年 11 月 13 日 | 更新于 2021 年 09 月 07 日

为什么用深度学习

深度学习可以自己学会如何提取有用的特征,相反,机器学习则十分依赖特征工程

上手门槛低。

常见术语

reference

解决过拟合

  1. 权值衰减(weight decay): Adam优化器自带的参数
  2. 学习率衰减:自己手动设置规则,或pytorch提供现成的方法
  3. Dropout
  4. Batch Normalization: 与Relu一起使用, 防止Dead Relu, 也能加速训练?
  5. 增加训练集的样本数

实验结果

之前实验发生过拟合的原因是:定义模型结构的时候,复用了编码和解码路径上的(等通道)卷积模块,导致这些模块变成了权值共享(或者说是强行使编码和解码路径上部分模块的权值相同)。修改模型代码后过拟合问题消失。

修改前模型参数量:6238532,修改后:8563652,证实了前面的分析

代码:修改前的Unet修改后的Unet2

调整学习率


Dropout

一般适合于全连接层,卷积层由于参数不多,所以不是很需要Dropout,加上也对模型泛化能力没有太大影响。

干的事情:

实验:

总结:

权值初始化

  1. kaiming初始化

数据归一化/标准化

  1. 数据点(x, y)的归一化:为了降低数据(x和y)之间的相关性,去除冗余信息,如:正相关变为不相关
  2. 图像像素值归一化:为了将像素值约束到一个合理范围内,便于后续神经网络的学习
    • BN:将数据归一化到均值0,方差1。通常卷积后数据的方差较小,即数据的分布比较集中,差异较小,不便于后序网络的学习

下采样

仅用卷积来下采样的话(不做BN归一化),深层特征图上的值的绝对值会快速趋于0

解决方法:卷积后进行归一化BN

性能