目录

  • 超参数(Hyperparameter)
    • 一.模型参数和超参数的区别
    • 二.分类
      • (一)网络参数
        • 1.网络层与层之间的交互方式(相加、相乘或者串接等)
        • 2.卷积核数量和卷积核尺寸
        • 3.神经网络层数(也称深度)layers
          • 3.1 深层神经网络隐藏层数
        • 4.隐藏层神经元个数hidden units
        • 5.输出神经元的编码方式
        • 6.神经元激活函数
      • (二)优化参数
        • 1.学习率α(learning rate)
          • 1.1 学习因子下降参数(learning rate decay)
        • 2.批样本数量(batch size)
        • 3.不同优化器的参数
          • 3.1 动量梯度下降算法参数:
            β
            \beta
            β
          • 3.2 Adagrad算法参数:
            ε
            \varepsilon
            ε
          • 3.3 Adadelta算法参数:
            β
            \beta
            β

            ε
            \varepsilon
            ε
          • 3.4 Adam算法参数:
            β
            1
            \beta_{1}
            β1

            β
            2
            \beta_{2}
            β2

            ε
            \varepsilon
            ε
        • 4.损失函数及其可调参数
      • (三)正则化参数
        • 1.正则化系数η
        • 2.权重衰减系数
        • 3.丢弃法比率(dropout)
      • (四)其他
        • 1.迭代次数epoch
        • 2.k近邻法中的k(最相近的点的个数)
        • 3.k均值聚类中的簇数
        • 4.决策树模型中树的数量和树的深度
        • 5.矩阵分解中潜在因素的数量
        • 6.聚类方法里面类的个数
        • 7.话题模型里面话题的个数
        • 8.参加训练模型的数据规模
    • 三.超参数调优
      • (一)优化原因
      • (二)优化策略
        • 1.照看(babysitting,又叫试错)
        • 2.自动化超参数搜索方法
          • 2.1 网格搜索/穷举搜索(grid search)
          • 2.2 随机搜索
        • 3.微调(fine-turn)
        • 4.贝叶斯优化
      • (三)过程
      • (四)学习率调优
        • 1.原因
        • 2.说明:
        • 3.自动调节:
        • 4.tensorflow调整策略
        • 5.差分学习(differential learning)
    • 四.重要性排序
      • (一)学习率α,损失函数上的可调参数
      • (二)批样本数量,动量优化器的动量参数β
      • (三)网络参数,Adam优化器的超参数,权重衰减系数,丢弃法比率
    • 五.部分超参数合适的范围

超参数(Hyperparameter)


一.模型参数和超参数的区别

机器学习中一直说的“调参”,实际上不是调“参数”,而是调“超参数”。

二.分类

(一)网络参数

1.网络层与层之间的交互方式(相加、相乘或者串接等)

2.卷积核数量和卷积核尺寸

卷积核的核参数是模型参数

3.神经网络层数(也称深度)layers

3.1 深层神经网络隐藏层数

4.隐藏层神经元个数hidden units

5.输出神经元的编码方式

6.神经元激活函数

(二)优化参数

1.学习率α(learning rate)

1.1 学习因子下降参数(learning rate decay)

2.批样本数量(batch size)

(1)说明:

(2)选取:

3.不同优化器的参数

3.1 动量梯度下降算法参数:
β
\beta
β

3.2 Adagrad算法参数:
ε
\varepsilon
ε

3.3 Adadelta算法参数:
β
\beta
β

ε
\varepsilon
ε

3.4 Adam算法参数:
β
1
\beta_{1}
β1

β
2
\beta_{2}
β2

ε
\varepsilon
ε

4.损失函数及其可调参数

(三)正则化参数

1.正则化系数η

增大η会导致更小的权值w,表示网络的复杂度更低;对数据的拟合较好,而在实际应用中,也验证了这一点。

2.权重衰减系数

3.丢弃法比率(dropout)

Dropout
通过修改NN中隐藏层的神经元个数来防止NN的过拟合

(四)其他

1.迭代次数epoch

No-improvement-in-n规则:

2.k近邻法中的k(最相近的点的个数)

3.k均值聚类中的簇数

4.决策树模型中树的数量和树的深度

5.矩阵分解中潜在因素的数量

6.聚类方法里面类的个数

7.话题模型里面话题的个数

8.参加训练模型的数据规模

方案:

三.超参数调优

(一)优化原因

为什么要做学习率调整?
学习率可以说是模型训练最为重要的超参数。通常情况下,一个或者一组优秀的学习率既能加速模型的训练,又能得到一个较优甚至最优的精度。过大或者过小的学习率会直接影响到模型的收敛。我们知道,当模型训练到一定程度的时候,损失将不再减少,这时候模型的一阶梯度接近零,对应Hessian 矩阵通常是两种情况:

  1. 正定,即所有特征值均为正,此时通常可以得到一个局部极小值,若这个局部极小值接近全局最小则模型已经能得到不错的性能了,但若差距很大,则模型性能还有待于提升,通常情况下后者在训练初最常见
  2. 特征值有正有负,此时模型很可能陷入了鞍点,若陷入鞍点,模型性能表现就很差

以上两种情况在训练初期以及中期,此时若仍然以固定的学习率,会使模型陷入左右来回的震荡或者鞍点,无法继续优化。所以,学习率衰减或者增大能帮助模型有效的减少震荡或者逃离鞍点。

(二)优化策略

1.照看(babysitting,又叫试错)

照看法被称为试错法或在学术领域称为研究生下降法。这种方法100%手动,遵循学习过程的所有步骤(从数据收集到特征图可视化),然后按顺序迭代超参数,直到耗尽时间或到截止日期或动机
 

2.自动化超参数搜索方法

说明:

2.1 网格搜索/穷举搜索(grid search)

列出每个超参数的大致候选集合,利用这些集合进行逐项组合优化

若有两类超参数,每类超参数有3个待探索的值,对它们进行笛卡尔积后得到9个超参数组合

2.2 随机搜索

对每个超参数定义一个分布函数来生成随机超参数

3.微调(fine-turn)

顾名思义指稍微调整参数即可得到优秀的性能

在小数据集上,通常微调的效果比从头训练要好很多,因为在于数据量较小的前提下,训练更多参数容易导致过度拟合

(1)方法:

(2)微调为什么要先冻结底层,训练顶层?

(3)如何针对数据集选取微调的方法?

4.贝叶斯优化

(三)过程

(四)学习率调优

1.原因

学习率可以说是模型训练最为重要的超参数。通常情况下,一个或者一组优秀的学习率既能加速模型的训练,又能得到一个较优甚至最优的精度。过大或者过小的学习率会直接影响到模型的收敛。我们知道,当模型训练到一定程度的时候,损失将不再减少,这时候模型的一阶梯度接近零,对应Hessian 矩阵通常是两种情况:

  1. 正定,即所有特征值均为正,此时通常可以得到一个局部极小值,若这个局部极小值接近全局最小则模型已经能得到不错的性能了,但若差距很大,则模型性能还有待于提升,通常情况下后者在训练初最常见
  2. 特征值有正有负,此时模型很可能陷入了鞍点,若陷入鞍点,模型性能表现就很差

以上两种情况在训练初期以及中期,此时若仍然以固定的学习率,会使模型陷入左右来回的震荡或者鞍点,无法继续优化。所以,学习率衰减或者增大能帮助模型有效的减少震荡或者逃离鞍点
 

2.说明:

3.自动调节:

4.tensorflow调整策略

(1)exponential_decay

(2)piecewise_constant

(3)polynomial_decay

5.差分学习(differential learning)

在训练期间为网络中的不同层设置不同的学习率的方法被称为差分学习


深度学习--超参数(持续更新)


说明:

四.重要性排序

(一)学习率α,损失函数上的可调参数


这些损失一般可分成三类,

  1. 辅助损失结合常见的损失函数,起到辅助优化特征表达的作用。例如度量学习中的Center loss,通常结合交叉熵损失伴随一个权重完成一些特定的任务。这种情况下一般建议辅助损失值不高于或者不低于交叉熵损失值的两个数量级
  2. 多任务模型的多个损失函数,每个损失函数之间或独立或相关,用于各自任务,这种情况取决于任务之间本身的相关性
  3. 独立损失函数,这类损失通常会在特定的任务有显著性的效果。例如RetinaNet中的focal loss,其中的参数γ,α,对最终的效果会产生较大的影响。这类损失通常论文中会给出特定的建议值
     

(二)批样本数量,动量优化器的动量参数β

  1. 过小的批样本数量,极端情况下,例如batch size为1,即每个样本都去修正一次梯度方向,样本之间的差异越大越难以收敛。若网络中存在批归一化(batchnorm),batch size过小则更难以收敛,甚至垮掉。这是因为数据样本越少,统计量越不具有代表性,噪声也相应的增加
  2. 过大的批样本数量,会使得梯度方向基本稳定,容易陷入局部最优解,降低精度
  3. 一般参考范围会取在[1:1024]之间,当然这个不是绝对的,需要结合具体场景和样本情况

(三)网络参数,Adam优化器的超参数,权重衰减系数,丢弃法比率

这些参数重要性放在最后并不等价于这些参数不重要。而是表示这些参数在大部分实践中不建议过多尝试


使用dropout时需要特别注意两点:

  1. 在RNN中,如果直接放在memory cell中,循环会放大噪声,扰乱学习。一般会建议放在输入和输出层
  2. 不建议dropout后直接跟上batchnorm,dropout很可能影响batchnorm计算统计量,导致方差偏移,这种情况下会使得推理阶段出现模型完全垮掉的极端情况
     

五.部分超参数合适的范围

超参数 建议范围 注意事项
卷积核尺寸 [7x7],[5x5],[3x3],[1x1],[7x1,1X7]
初始学习率 SGD:[1e-2, 1e-1]
momentum:[1e-3, 1e-2]
Adagrad:[1e-3, 1e-2]
Adadelta:[1e-2, 1e-1]
RMSprop:[1e-3, 1e-2]
Adam:[1e-3, 1e-2]
Adamax:[1e-3, 1e-2]
Nadam:[1e-3, 1e-2]
这些范围通常是指从头开始训练的情况。若是微调,初始学习率可在降低一到两个数量级
批样本数量 [1,1024] 当批样本数量过大(大于6000)或者等于1时,需要注意学习策略或者内部归一化方式的调整
损失函数部分超参数 多个损失函数之间,损失值之间尽量相近,不建议超过或者低于两个数量级 这是指多个损失组合的情况,不一定完全正确。单个损失超参数需结合实际情况
权重衰减系数 [0, 1e-4]
丢弃法比率 [0, 0.5]

以上未完待更新,仅供个人学习,侵权联系删除,如有错误或不足之处可指出,以便改进。