Deep Learning Note: 3-4 错误分析
1. 进行错误分析 对于人类也可以解决的问题,如果算法的性能不及人类,则可以通过对算法出现的错误进行手工检查,来指导下一步的行动,这一过程称为错误分析(Error Analysis)。 例如对于某个从图片中识别猫的分类器,发现其错误率为 10%,远高于预期。通过检查这个分类器分类错误的图片,发现它把一些图片中的狗也错误地识别成了猫。那么问题来了:是否应当着力提高分类器在狗的图片上的性能,如…
Read more
learn, build, evaluate
1. 进行错误分析 对于人类也可以解决的问题,如果算法的性能不及人类,则可以通过对算法出现的错误进行手工检查,来指导下一步的行动,这一过程称为错误分析(Error Analysis)。 例如对于某个从图片中识别猫的分类器,发现其错误率为 10%,远高于预期。通过检查这个分类器分类错误的图片,发现它把一些图片中的狗也错误地识别成了猫。那么问题来了:是否应当着力提高分类器在狗的图片上的性能,如…
Read more
1. 与人类水平做比较的原因 最近几年,将机器学习系统的性能与人类水平进行比较越来越流行,一个原因是随着深度学习的发展,机器学习算法的性能有了大幅的提升,在很多领域,机器学习算法的性能已经可以与人类相比。另一个原因是在一些人类也可以解决的问题上,更容易设计和搭建机器学习系统来解决这些问题。 对于很多机器学习任务,随着时间的推进,在算法的性能到达人类水平之前,进展会比较快;而当算法性能超过人…
Read more
1. 使用单一评价标准 机器学习涉及很多可以选择的算法和需要调优的超参数,往往难以在一开始就找到最佳选择。因此,应用机器学习是一个反复迭代的过程,通过不断地调整和尝试各种选择并评估其结果,逐步找到更好的算法和参数,使得模型的性能逐步提高。在这一过程中,使用一个单一的评价指标来对模型性能进行评估,可以立即知道所进行的调整是否有效,有利于提高迭代的效率。 例如使用不同的超参数得到了两个分类器 …
Read more
构建机器学习应用的一大挑战是有众多的方案和选项可以选择和调整,例如在训练过程中就有很多超参数需要调优。在调优的过程中,需要明确进行什么样的调整,可以达到什么样的目的,将各个问题独立开来,在互不影响的情况下分别进行调优,逐个击破,正交化(Orthogonalization)地解决各个问题。 例如对于监督学习系统,通常需要通过调优,确保模型: 能够在代价函数上很好地拟合训练集 能够在代价函数上…
Read more
批量标准化(Batch Normalization)是深度学习中的一个重要算法,它可以让网络更加强健,令网络对更大范围的参数都有较好的效果,使得超参数的搜索更加容易,也有助于训练更深的网络。 1. 标准化激活值 前文介绍了对输入特征进行标准化的方法,标准化有助于提高学习速度。在神经网络中,对其中各层的激活值进行标准化,也有利于提高下一层参数的学习速度,这就是批量标准化所做的。例如对第 2 …
Read more
1. 调优过程 神经网络的训练涉及众多的超参数,按照调整的优先级,可以划分如下: 第一优先:学习率 $\alpha$。 第二优先:动量梯度下降的参数 $\beta$(通常取 $0.9$),网络中隐藏单元的数量,小批量梯度下降中小批量的大小等。 第三优先:神经网络的层数、学习率衰减。 对于 Adam 优化算法中的超参数,通常会直接使用默认值($\beta_1 = 0.9$,$\beta_2 …
Read more
1. 小批量梯度下降 前文 给出的向量化计算 $m$ 个样本的梯度下降和反向传播的方法,通过将所有 $m$ 个样本水平叠加,得到: \begin{equation} X = \begin{bmatrix}x^{(1)} & x^{(2)} &…&x^{(m)} \end{bmatrix} \end{equation} 使用 $X$ 一次性计算全部样本…
Read more
1. 标准化输入 对输入数据进行标准化(Normalizing)有利于提高学习速度。 例如对于如图 1 所示的数据,其标准化过程分为两步,首先让数据减去其均值(如图 2 中左图),然后再除以方差(如图 2 中右图): 计算过程为: \begin{equation} x := \frac{x – \mu}{\sigma} \tag{1} \end{equation} 其中…
Read more
解决过拟合问题的主要方法是使用正则化(Regularization)和获取更多数据,但并不是总能获取到更多的数据,或者获取更多数据的成本过高,因此通常首选使用正则化。 1. 逻辑回归的正则化 首先以逻辑回归为例,说明正则化的过程。逻辑回归的代价函数为: \begin{equation} J(w, b) = \frac{1}{m} \sum_{i=1}^m L(\hat{y}^{(i)}, …
Read more
1. 训练集、开发集、测试集 在训练模型时,通常会将整个用于训练的数据分成三部分:训练集(Train Set),保留的交叉验证集(Hold-out Cross Validation Set)或称为开发集(Development Set / Dev Set),和测试集(Test Set)。通常的工作流程是: 选择算法/超参数等条件。 使用训练集对模型进行训练。 使用开发集对训练得到的模型进行评估…
Read more