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例子
卷积神经网络的层次结构及其作用
输入层->卷积层->激活层->池化层->全连接层
数据输入层:对原始数据进行初步处理,使卷积神经网络能有更好的效果
卷积层:提取特征
激活层:计算结果通过一个激活函数加一个非线性的关系,使能逼近任何函数
池化层:数据压缩,提取主要特征,降低网络复杂度
全连接层:分类器角色,将特征映射到样本标记空间,本质是矩阵变换
生成式模型和判别式模型的区别
生成式:由数据学习联合概率分布P(X,Y), 然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作为预测的模型,表示了给定输入X与产生输出Y的生成关系。从统计的角度表示数据的分布情况,反映同类数据本身的相似度,不关心判别边界。
判别式:由数据直接学习决策函数Y=f(X)或条件概率分布P(Y|X)作为预测模型,关心的是对于给定的输入X,应该预测什么样的输出Y。寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。
“梯度下降”的定义
迭代法的一种,可用于求解最小二乘问题,让梯度中所有偏导函数都下降到最低点的过程。梯度下降法的计算过程就是沿梯度下降的方向求解极小值,也可以沿梯度上升方向求解最大值
简述和讨论“随机梯度下降算法”
1、随机梯度下降是每次迭代使用一个样本来对参数进行更新,使得训练速度加快。随机梯度下降算法是为了解决深度学习中多元目标函数的最优值问题。
2、随机是指每次迭代过程中,样本都要被随机打乱。训练模型的目的是使得目标函数达到极小值。
3、每次迭代并不是都向着整体最优化方向,导致梯度下降的波动非常大,更容易从一个局部最优跳到另一个局部最优,准确度下降
随机梯度下降算法终止条件
当前后两次迭代的差值小于某一值时,即收敛,迭代结束
Momentum算法
参数更新时在一定程度上保留之前更新的方向,同时又利用当前batch的梯度微调最终的更新方向,简言之就是通过积累之前的动量来加速当前的梯度。能够加速SGD收敛,抑制震荡。在梯度方向改变时,降低参数更新速度,从而减少震荡;在梯度方向相同时,加速参数更新,从而加速收敛
比较最大似然估计(ML)与最大后验估计(MAP)的异同点.
最大后验估计 正比于最大似然估计*先验概率
损失函数:样本的误差 ;代价函数:整个训练集上所有样本误差的平均
目标函数:代价函数 正则化项
Mini-batch SGD步骤
对一批数据取样;前向传播得到损失;反向传播计算梯度;使用梯度更新参数
Batch Normalization
通常插入在全连接层或卷积层后,在非线性之前。
1)归一化后加快了梯度下降求最优解的速度;2)归一化有可能提高精度
迁移学习
通过从已学习的相关任务中转移知识来改进学习的新任务。
大数据与少标注的矛盾;大数据与弱计算的矛盾;普适化模型与个性化需求的矛盾;特定应用的需求
分类和回归问题比较适合做迁移学习的场景,有标签的源数据是最好的辅助。
RNN用途
语音识别;机器翻译;音乐生成;文本生成;文本生成;情感分类;DNA序列分析;视频行为识别;实体名字识别
激活函数图像
完整机器学习项目的流程
抽象成数学问题;获取数据;特征预处理与特征选;训练模型与调优;模型诊断;模型融合;上线运行
常见的分类算法
SVM、神经网络、随机森林、逻辑回归、KNN、贝叶斯
常见的监督学习算法
感知机、SVM、人工神经网络、决策树、逻辑回归