18 Additional Neural Network Concepts

18.1 Advanced Optimization (Adam)

除了梯队下降,还有其他优化方法。
学习率固定为一个值 --> 可以优化为动态调整学习率:Adam算法(Adaptive Moment Estimation)
在这里插入图片描述
对于每个w以及b,都有对应的学习率参数,并可以自适应调整其大小
TensorFlow中这样使用:
[图片]
需要设置一个初始的学习率

18.2 Additional Layer Types

目前我们只提到了密集层Dense,每个神经元与前一层的所有神经元相连。
其他类型的层:卷积层

19 Advice for Applying Machine Learning

19.1 Debugging and Diagnostic

需要建立诊断策略,评估机器学习系统的效果,以便于知道下一步应该如何去优化

19.2 Evaluating a Model

引入测试集:将数据集划分为训练集和测试集,例如7:3的比例

分别计算Jtrain(w⃗,b)J_{train}(\vec w, b)Jtrain(w,b)Jtest(w⃗,b)J_{test}(\vec w, b)Jtest(w,b)

注:

  1. 这里的J一般不包括正则化项,正则化项只用于拟合参数
  2. 对于分类任务,一般可以采用准确率来评估,而不是J

19.3 Model Selection and Training/Cross Validation/Test Sets

引入验证集,也可以叫交叉验证集,开发集(Development Set,Dev Set),其成本函数简称Jcv(w⃗,b)J_{cv}(\vec w, b)Jcv(w,b)

例如三者比例为6:2:2

用验证集,去选择模型等参数,例如线性回归的多项式阶数,神经网络的层数,每层的神经元数量等
选出最优的,用于训练集的训练,保证模型不受任何测试集的泄露干扰影响,最终在测试集上测试模型效果

20 Bias and Variance

20.1 Diagnosing Bias and Variance

在这里插入图片描述

二维可以直接画出来,但是高维度无法通过画图来感受Bias和Variance。

用成本函数来描述:

  1. 高Bias:JtrainJ_{train}Jtrain很高,JcvJ_{cv}Jcv也很高,但通常Jtrain≈JcvJ_{train} \approx J_{cv}JtrainJcv
  2. 高Variance:JtrainJ_{train}Jtrain较低,但是JcvJ_{cv}Jcv很高,Jcv>>JtrainJ_{cv}>>J_{train}Jcv>>Jtrain
  3. 高Bias和高Variance同时存在:JtrainJ_{train}Jtrain很高,且JcvJ_{cv}Jcv通常更高,Jcv>>JtrainJ_{cv}>>J_{train}Jcv>>Jtrain
    横轴为维度,定性的表示:
    [图片]

直观地说:

  1. 高Bias:在训练集上表现差
  2. 高Variance:在交叉验证集上表现比训练集差

20.2 Regularization and Bias/Variance

正则化参数λ\lambdaλ如果过小,倾向于过拟合,如果过大,倾向于欠拟合。
直观感受:
[图片]

可以用验证集去选择合适的λ\lambdaλ的取值。

20.3 Establishing a Baseline Level of Performance

如何定义J是高还是低 --> 需要一个基线标准,即多少误差是可以接受的,目标是多少误差
可以考虑以人工的误差为标准,或者其他前人实现的方法作为基准

20.4 Learning Curves

成本函数随着训练集数量的变化
[图片]
高Bias(error趋平的值高于基准,增大训练集不能解决问题,error趋平不会下降):
[图片]
高Variance(增大训练集可能会奏效):
[图片]

20.5 Deciding What to Try Next Revisted

通常可以观察训练集和验证集的J来看是否有高Bias或高Variance的情况,接下来介绍遇到这种模型表现差的情况,通常可以怎么做。

缓解高Bias:

  1. 尝试用更多的特征
  2. 添加多项式特征(x12,x22,x1x2,etcx_1^2, x_2^2, x_1x_2, etcx12,x22,x1x2,etc
  3. 减小正则化参数λ\lambdaλ

缓解高Variance:

  1. 增大训练集规模
  2. 尝试用更少的特征
  3. 增大正则化参数λ\lambdaλ

20.6 Bias/Variance and Neural Networks

[图片]

训练更大更复杂的神经网络通常可以减小Bias,增大训练集通常可以减小Variance。

但是,更复杂的网络意味着资源消耗更大,训练集增大也会消耗更多算力。

注:此外,更大更复杂的神经网络如果正则化得当,通常不会导致过拟合

TensorFlow中用"kernel_regularizer"添加正则化选项,可以指定λ\lambdaλ参数。

[图片]

再次说明一下,大型的神经网络通常Bias很低,实践中更容易碰到的问题是高Variance。

更多推荐