赞
踩
1. 最小化代价函数优化方法:BGD、SGD、MBGD、动量、NAG、Adagrad、AdaDelta、Adam、AMSGrad、牛顿法;
2. 前馈神经网络的隐藏单元不一定在所有的输入点上可微;
3. CNN最大池化能产生一定程度的平移不变性;
4. 向量范数表征向量空间的大小:
1. CNN:LeNet、AlexNet、VGGNet、GoogLeNet、ResNet
2. 数据增强技术:翻转、裁剪、缩放、颜色抖动、平移
3. Batch Size定义:一次训练所选取的样本数。
4. Batch Size影响:影响模型的优化程度和速度。同时其直接影响到GPU内存的使用情况,假如GPU内存不大,该数值最好设置小一点。使得梯度下降方向更加准确
5. 划分训练集、验证集、测试集:训练集:验证集:测试集的划分比例为6:2:2
6. 一阶优化方法:RMSProp
7. 深度学习关系图
1. 什么是深度学习:表达学习、可扩展的机器学习、生物神经网络的近似/粗略实现、人类的监督越来越少、多阶段的特征学习过程、相较于传统模式识别
2. 激活函数分类
1. 合理的稀疏比例:70~80%,屏蔽特征过多容易出现欠拟合。
2. 正则化在深度神经网络训练时的作用
正则化可以很好的解决模型过拟合的问题,常见的正则化方式有L2正则化和dropout,但是正则化是以牺牲模型的拟合能力来达到平衡的,因此在对训练集的拟合中有所损失。
3. L1正则化和L2正则化
L1正则化可以产生稀疏值矩阵,即产生一个稀疏模型,可以用于特征选择和解决过拟合。能够帮助模型找到重要特征,而去掉无用特征或影响甚小的特征。
L2 让所有特征的系数都缩小, 但不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况。
L2正则化可以防止模型过拟合;一定程度上,L1也可以防止过拟合
4. 激活函数的作用
激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,深层神经网络表达能力更强大,可以应用到众多的非线性模型中。
5. Sigmoid函数
特点:它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.
缺点:在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大;Sigmoid 的 output 不是0均值;其解析式中含有幂运算,计算机求解时相对来讲比较耗时。
6. Relu函数
特点:解决了gradient vanishing问题 (在正区间);计算速度非常快,只需要判断输入是否大于0;收敛速度远快于sigmoid和tanh
缺点:ReLU的输出不是0均值;某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。
7. AdaGrad算法
AdaGrad算法就是将每一个参数的每一次迭代的梯度取平方累加后在开方,用全局学习率除以这个数,作为学习率的动态更新。
其中,r为梯度累积变量,r的初始值为0。ε为全局学习率,需要自己设置。δ为小常数,为了数值稳定大约设置为10^-7
8. 优化算法的选择
如果输入数据是稀疏的,选择任一自适应学习率算法可能会得到最好的结果。无需调整学习率,选用默认值就可能达到最好的结果。
RMSprop, Adadelta, 和 Adam 非常相似,在相同的情况下表现都很好。
偏置校验让Adam的效果稍微比RMSprop好一点
进行过很好的参数调优的SGD+Momentum算法效果好于Adagrad/Adadelta
如果不知道选择哪种优化算法,就直接选Adam吧
9. 如何判断模型过拟合
模型在验证集合上和训练集合上表现都很好,而在测试集合上变现很差。过拟合即在训练误差很小,而泛化误差很大,因为模型可能过于的复杂,
10. 如何防止过拟合
Dropout:神经网络的每个单元都被赋予在计算中被暂时忽略的概率p,称为丢失率,通常将其默认值设置为0.5。然后,在每次迭代中,根据指定的概率随机选择丢弃的神经元。因此,每次训练会使用较小的神经网络。
提前停止:让模型在训练的差不多的时候就停下来,继续训练带来提升不大或者连续几轮训练都不带来提升的时候,这样可以避免只是改进了训练集的指标但降低了测试集的指标。
批量正则化:将卷积神经网络的每层之间加上将神经元的权重调成标准正态分布的正则化层,可以让每一层的训练都从相似的起点出发,而对权重进行拉伸,等价于对特征进行拉伸,在输入层等价于数据增强。
11. 特征图数
对于单通道图像,若利用10个卷积核进行卷积计算,可以得到10个特征图;
若输入为多通道图像,则输出特征图的个数依然是卷积核的个数(10个)
12. 多通道多个卷积核卷积计算:
图片:宽度:32,高度:32,图片的通道数D;
卷积核:大小5*5,处理的图片是D通道,因此卷积核是5*55*D。
卷积层维度变化:不填充,步长为1,输出的矩阵大小为32-5+1=28, 32-5+1=28, D
若填充,则分子部分改为:W-F+2*Padding
卷积后的值:D个channel的所有元素对应相乘后求和
池化层维度变化:大小2*2,步长2.因此输出大小为28/2=14,28/2=14,D
参数变化:(((kernel_size)* stride + 1)* filters)
1. 卷积计算过程
可参考21。
此例步长1,且未使用填充,即卷积层维度变化公式:
1.1、输入(8,8,3);4个卷积核(3,3,3,4);卷积后的输出Z0:(6,6,4),Z0的每个输出都是3个channel的所有元素对应相乘后求和;
1.2、 经ReLu激活(6,6,4);
1.3、 若有池化,池化层的计算与卷积层一样规则;
1. BP反向传播算法过程
残差:误差的偏导数
输出层→隐藏层:残差 = -(输出值-样本值) * 激活函数的导数
隐藏层→隐藏层:残差 = (右层每个节点的残差加权求和)* 激活函数的导数
更新权重:
输入层:权重增加 = 输入值 * 右层对应节点的残差 * 学习率
隐藏层:权重增加 = 当前节点的Sigmoid * 右层对应节点的残差 * 学习率
偏移值:权重增加 = 右层对应节点的残差 * 学习率
学习率:一个预先设置好的参数,用于控制每次更新的幅度。
1. 一个矢量化的例子:
1. 几个BP例子
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。