“炼丹”技巧

零星积累

  1. weight delay 和L2正则

权值衰减==带1/2乘子的L2正则。


权值衰减==带1/2乘子的L2正则
  1. 缓解拟合

可通过如下方案:正则化(L1, L2),但正则化方法不是提升泛化能力的本质要素。Dropout,Early Stopping.
CNN中不要用dropout。 两个原因:1)dropout is generally less effective at regularizing convolutional layers;卷积本身参数量就少,they need less regalarization to begin with. 此外,feature map编码的空间关系激活是高度相关的,dropout会破坏这种空间关系;2)类似VGG16这样包含全连接层的模型会在全连接层用dropout,但现在大部分架构都去掉了全连接层,改为用global average pooling. 博主做了实验发现加了dropout性能会降低,而加入BN性能会有提升。

  1. 集成学习
  • 组合具有低皮尔逊相关系数的弱学习器
  • 多数投票的方式来组合弱学习器
  • 平均:比如:0.5Unet + 0.5LinkNet34

LinkNet是Unet的升级版baseline,使用了Resdiual结构,非常适合使用resnet encoder。很轻便,有开源的预训练好的精度。感受野大概在700多。

知乎:随机加权平均 -- 在深度学习中获得最优结果的新方法

  1. 超参数的选择
  • 网络架构、核大小、层数、激活函数、损失函数、所用的优化器(梯度下降、RMSprop)、批大小、训练的 epoch 数量等等。
  • 使用已经得到验证的架构,而不是构建自己的网络架构,然后根据自己的目的做一些调整。
  • 怎么选取训练神经网络时的Batch size?

batch size 以128为分界线,向下(*0.5)和向上(*2)训练后比较测试结果,若向下更好,则再*0.5,直到结果不再提升。

  1. 分割中loss的选择(考虑loss的饱和性,不要因饱和导致没有梯度反传)
    BCE loss在预测结果接近0和1的时候会出现loss反传的截断,因此需要加一些线性的损失。

  2. 图像增广要考虑任务本身的情况,增广的图像填补整个数据空间的稀疏部分,不是创造新的数据。

  • 卫星车道线图像分割用的增广:test time aug: ver-flip, hor-flip, diag-flip,对不同翻折下的图像进行预测,把结果平均,最终性能提升了3个点。
  1. loss反传的时候用random.random()*loss。

CNN troubleshooting-量子位编译

优质博文/技巧

  • 201801-Intel 2DUnet中Upsampling vs Transposed Convolution
    在BraTS数据集上做实验,结论是没显著差别,但是transposed conv训练需要更多时间(参数多)。
    此外,将Unet中通道数量减半变为(32→64→128→256→512)不影响效果。

  • imgcat in Python


    imgcat in Python
  • 10 Lessons Learned From Participating in Google AI Challenge
    比赛的难点:训练数据的label有noisy,测试集的label没有noise。(即训练集和测试集分布不一样)
    Nvidia driver 410.72 , CUDA 10.0, cuDNN 7.3.1 and NCCL 2.3.5 was only supported in Ubuntu 18.04. So I had to recompile Google’s tensorflow from source using CUDA 10. Here is a tutorial explaining how doing it.
    Optimize your software stack for the task. E.g. Recompile tensorflow from source, as the pre-built downloadable version is compiled for maximum CPU compatibility and not maximum performance.

Mixed-precision is one of the key elements which decided me to go with a rtx-2080-ti versus a cheaper gtx-1080-ti. The rtx-2080-ti is the first non-professional graphic card from NVIDIA supporting natively 16-bits floating point (fp16). how to implement mixed-precision using tf

如果测试集是balanced,如何优化自己的方案?1st solution; Good predictions postprocessing

你可能感兴趣的:(“炼丹”技巧)