CategoryDeep Learning

DL – 3:如何炼丹?(配置神经网络的训练超参数)

之前试验的结果(70%的准确率)表明,一个利用经典的双向传播训练的深层神经网络不足以在复杂应用场景中达到或超过人类的表现。为了提高神经网络的泛化能力(提高测试集中的准确率,防止过拟合),并且加速研发中的迭代(加速神经网络的训练,主要是梯度下降这一环节),换言之,加速收敛到正确的全局最优点的过程,需要在训练过程中对神经网络进行调试

在本系列笔记的开篇之作中提到,学习率(learning rate)设置的合理与否影响收敛速度的快慢。但尴尬的是,深度学习之所以被戏称为“炼丹”,很大程度上是因为存在大量像学习率这样的超参数(hyperparameter),很重要,但是缺乏系统的调整方法。所以研究人员只能和道士一样“这个多加一点,那个少加一点”地尝试。本系列笔记的收官之作中将提及一些调参的指导原则,而在这里,将介绍一些在不同的学习率设置下都能加速收敛的通用优化方法


 

概要

防止过拟合

  • L2 regularization
  • dropout

加速下降

  • He initialization
  • mini-batch gradient descent
  • momentum
  • Adam
  • RMS prop

Sanity Check

  • Gradient Checking

 

防止过拟合

在讨论如何防止过拟合之前,不妨来直观地认识一下过拟合的结果。下图对应的是一个划分红点和蓝点分布区域的任务在训练集上输出的结果

不难发现,生成的红蓝边界是不合理的,因为它为了适应一些“深入敌营”的噪点而变得“奇形怪状”。这就是过拟合的直接后果。间接后果是测试集上分界的表现远低于训练集,也即模型的泛化能力弱。梯度下降这匹“宝马”再快,也不应该向着错误的方向狂奔

“正则化”是一个“看起来没毛病实际上啥玩意儿”的翻译。虽然名字奇葩了点,但是这种技术确实能够防止过拟合,通过对W过大的“惩罚”(“正则化” == “调教”)。它基于这两个假设:

  1. 一个W较小的模型比W较大的模型更简单
  2. 太过复杂的模型泛化能力弱于适度复杂的模型

对于传统的神经网络,使用最广的是L2 regularization(“L2”的命名源自于下文提到的正则项的形式——L2范数,又名ridge regression,岭回归)。具体而言,通过修改cost function,加上W过大带来的cost(regularization term,正则项),在训练过程中限制W的增长(weight decay,权重衰减)。当然,反向传播中的梯度公式也要依据cost …

DL – 2:深层神经网络:单层 -> 2层 -> L层

概要

  • 多层神经网络有效的原因:人脑认知模式;组合逻辑电路;不严谨的数学推理
  • 实现:底层(模块);高层(超参数);L层神经网络
  • 难点:向量化;矩阵形状;缓存机制

多层神经网络有效的原因

人脑认知模式

神经科学对人脑的初步研究表明,人脑的认知模式与深度学习在处理图片、音频等材料时的可视化结果有相似之处

  1. 进行特征检测(浅层,区域大)
  2. 进行特征组合(深层,复杂度高)

提取复杂事物的特征,进而完成对这一类事物的识别

但无法证明,人类的学习过程与深度学习的算法(反向传播、梯度下降等)有任何关系。神经元模型与真正的生物神经元相比,其复杂程度还是相距甚远

人脑的研究启发了深度学习,但深度学习还不足以称为一项仿生技术

 

组合逻辑电路

在学习《数字逻辑》课程时,一项基本任务是使用基本门电路的组合使电路输入和输出满足复杂的逻辑方程

简而言之,对于同一个问题,深层网络比浅层网络所需要的神经元个数要少得多

这从一个侧面验证了多层神经网络较之单层、浅层神经网络的优势

 

不严谨的数学推理

从宏观上看,神经网络是输入X到输出Y的映射。多层神经网络较单层、浅层神经网络对于复杂函数的学习效果更好。

为什么?是因为参数的数量吗?

对比单层神经网络与多层神经网络的结构,输入层、输出层二者均具备,区别在于隐层(隐层,hidden layer,名字的由来是在数据集中不可见)

再对比隐层中计算拟合的函数值的过程——前向传播,由于线性函数嵌套的结果还是线性函数,所以二者在线性组合这一计算上没有本质性的区别。但是多层神经网络使用非线性函数激活的次数远远多于单层、浅层神经网络。ReLU、Leaky ReLU、tanh、sigmoid……这些激活函数为函数拟合提供了更丰富的可能性,使得在计算资源、模型固定的情况下,能够达到更好的学习效果

所以二者的本质区别不在于参数多寡,而在于激活次数

 

实现

DL – 1:单层神经网络:逻辑回归

题注: Archives/Computer Science/Deep Learning/Courses/Neural Network and Deep Learning下的学习笔记基于吴恩达(Andrew Ng)在Coursera开设的深度学习专项课程中的第一部分:Neural Networks and Deep Learning(神经网络和深度学习,简称NNDL),将遵守该课程的使用条款:Deep Learning Honor Code不进行完整代码和试题答案的共享

 

本课程所属的专项课程共有五个部分

  1.  Neural Network and Deep Learning – 搭建用于深度学习的神经网络
  2. Improving Deep Neural Network: Tuning, Regularization and Optimization –