深度学习面试79题:涵盖深度学习所有考点(66-79)( 二 )
本文插图
深度学习流程简介
1)一次性设置(One time setup)
- 激活函数(Activation functions)
- 数据预处理(Data Preprocessing)
- 权重初始化(Weight Initialization)
- 正则化(Regularization:避免过拟合的一种技术)
- 梯度检查(Gradient checking)
2)动态训练(Training dynamics)
- 跟踪学习过程 (Babysitting the learning process)
- 参数更新 (Parameter updates)
- 超级参数优化(Hyperparameter optimization)
- 批量归一化(BN:Batch Normalization:解决在训练过程中 , 中间层数据分布发生改变的问题 , 以防止梯度消失或爆炸、加快训练速度)
3)评估(Evaluation)
- 模型组合(Model ensembles)
(训练多个独立的模型 , 测试时 , 取这些模型结果的平均值)
神经网络学习过程本质就是为了:学习数据分布 , 一旦训练数据与测试数据的分布不同 , 那么网络的泛化能力也大大降低 , 所以需要使用输入数据归一化方法 , 使训练数据与测试数据的分布相同 。
2. 激活函数(Activation Functions)
总结:
1)使用ReLU时 , 使Learning Rates尽量小
2)尝试使用Leaky ReLU/Maxout/ELU
3)可以使用tanh , 但期望不要太高
4)不要使用sigmoid
BN是由Google于2015年提出 , 这是一个深度神经网络训练的技巧 , 它不仅可以加快了模型的收敛速度 , 而且更重要的是在一定程度缓解了深层网络中“梯度弥散”的问题 , 从而使得训练深层网络模型更加容易和稳定 。 所以目前BN已经成为几乎所有卷积神经网络的标配技巧了 。
从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化 , 确实如此 , 对于训练中某一个batch的数据{x1,x2,...,xn} , 注意这个数据是可以输入也可以是网络中间的某一层输出 。 在BN出现之前 , 我们的归一化操作一般都在数据输入层 , 对输入的数据进行求均值以及求方差做归一化 , 但是BN的出现打破了这一个规定 , 我们可以在网络中任意一层进行归一化处理 , 因为我们现在所用的优化方法大多都是min-batch SGD , 所以我们的归一化操作就成为Batch Normalization 。
我们为什么需要BN?我们知道网络一旦train起来 , 那么参数就要发生更新 , 除了输入层的数据外(因为输入层数据 , 我们已经人为的为每个样本归一化) , 后面网络每一层的输入数据分布是一直在发生变化的 , 因为在训练的时候 , 前面层训练参数的更新将导致后面层输入数据分布的变化 。
以网络第二层为例:网络的第二层输入 , 是由第一层的参数和input计算得到的 , 而第一层的参数在整个训练过程中一直在变化 , 因此必然会引起后面每一层输入数据分布的改变 。 我们把网络中间层在训练过程中 , 数据分布的改变称之为:“Internal Covariate Shift” 。 BN的提出 , 就是要解决在训练过程中 , 中间层数据分布发生改变的情况 。
- 亚马逊|机器学习解决了谁是谁的问题
- 华为|华为平板电脑,办公学习都用它!
- 卫星|“将来是他们来学习!”海归科学家钻研“酶”30年,终成业界翘楚
- 欧洲|清华元宇宙深度报告!理论框架产业真相一文看懂,揭秘十大风险 | 智东西内参
- 自动化|腾讯近三年 78 道软件测试面试题(包含答案)
- |深度!详解为何小米手机京东好评率垫底
- Java|2022年如何学习自动化测试?
- 联想|性价比出众的联想小新平板,学习娱乐信手拈来
- 深度学习|面对会议平板的“挤压”,投影机在商务市场的“反击”战或将打响?
- |飞往38万公里外的月球容易,下潜到1万米深度的海底难,为什么?