deeplearning-cv-notes icon indicating copy to clipboard operation
deeplearning-cv-notes copied to clipboard

【深度学习】调参、调优、剪枝、模型压缩、结构设计

Open jayboxyz opened this issue 5 years ago • 2 comments

jayboxyz avatar Oct 03 '19 03:10 jayboxyz

调参【荐】

[6]:

  • 批归一化隐藏了糟糕的初始化导致的梯度爆炸;
  • 并且除了在最后故意设计的一个学习率衰减可能有帮助,减小学习率对 ADAM 优化器并没有特别的帮助。
  • 与批归一化一样,对值进行裁剪掩盖了真正的问题。我们还通过 tanh 函数控制高方差的输入值。

超()参数:

【2】:

作者:autocyz 链接:https://www.zhihu.com/question/24529483/answer/114711446 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一、weight decay(权值衰减)的使用既不是为了提高你所说的收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。

二、momentum是梯度下降法中一种常用的加速技术。对于一般的SGD,其表达式为image,沿负梯度方向下降。而带momentum项的SGD则写生如下形式:

image

image 其中即momentum系数,通俗的理解上面式子就是,如果上一次的momentum(即)与这一次的负梯度方向是相同的,那这次下降的幅度就会加大,所以这样做能够达到加速收敛的过程。

三、normalization。如果我没有理解错的话,题主的意思应该是batch normalization吧。batch normalization的是指在神经网络中激活函数的前面,将 image 按照特征进行normalization,这样做的好处有三点: 1、提高梯度在网络中的流动。Normalization能够使特征全部缩放到[0,1],这样在反向传播时候的梯度都是在1左右,避免了梯度消失现象。 2、提升学习速率。归一化后的数据能够快速的达到收敛。 3、减少模型训练对初始化的依赖。

jayboxyz avatar Mar 17 '20 13:03 jayboxyz

模型压缩

  • 一文读懂模型压缩
    • Pruning(修剪): 因为神经网络很多权重几乎为0,这类参数作用不大,部分参数删掉也不影响模型预测效果
    • Weight Factorization(权重分解):权重矩阵可以进行低秩矩阵分解,即low-rank matrix factorization,从而使得一些参数为0
    • Quantization(削减精度):能用float32,不用float64;能用int,不用float
    • Weight Sharing(共享权重):很多layer的参数可以共享,没必要用太多参数

jayboxyz avatar Mar 17 '20 13:03 jayboxyz