1. 深层神经网络 (Deep Neural Networks, DNN)
(1)深度学习定义:一类通过多层非线性变换对高复杂性数据建模算法的集合(wikipedia)
(2)DNN定义:一种具备至少一个隐藏层的,利用激活函数去线性化,使用交叉熵作损失函数,利用反向传播优化算法(随机梯度下降算法、批量梯度下降算法)进行学习训练(调整并更新神经元之间的权重)的前馈神经网络。
(3)前向传播算法:利用我们的若干个权重系数矩阵W,偏倚向量b来和输入值向量x进行一系列线性运算和激活运算,从输入层开始,一层层的向后计算,一直到运算到输出层,得到输出结果为值。
(4)激活函数:目的是去线性化,实现非线性分类任务;线性叠加永远是线性,无法处理非线性问题。
①ReLu函数:f(x) = max(x, 0)
②sigmoid函数: f(x) = 1/[1 + exp(-x)]
③tanh双曲正切函数: f(x) = [ 1- exp(-2x) ]/[ 1 + exp(-2x) ]
(5)SoftMax回归:将神经网络的输出编程一个概率分布,实现交叉熵损失函数
①Soft Max实现的本质:计算当前输出各个值的归一化值,最大的值(max)设为1,其余值为0
②函数公式:SoftMax(x) = exp(yi)/∑exp(yi)
(6)损失函数:刻画前向传播输出与期望值的拟合程度
①经典分类损失函数:交叉熵,刻画网络输出概率分布与期望输出概率分布之间的距离(相似度),分类问题使用比较广的一种损失函数。
②交叉熵:H(p,q) = -∑ p(x) log q(x)
③经典回归损失函数:均方误差(MSE, Mean Squared Error)
④自定义损失函数:使用自定义损失函数,让神经网络优化结果更加接近实际问题的需求。
(7)神经网络优化算法:反向传播算法与梯度下降算法
①反向传播算法:前向传播的是输入的数据信息,反向传播的是loss,即误差,错误率。
②梯度下降法:是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。(wikipedia)正常使用随机梯度下降和梯度下降两者有点的tradeoff,批量梯度下降算法。
③权值更新:
④反向传播算法和梯度下降:梯度下降算法主要优化单个参数的取值,而反向传播算法给出了高校的方式在所有参数上使用梯度下降,从而最小化损失函数
(8)学习率的优化:
①开源框架Tensorflow优化思路:指数衰减法,先使用较大的学习率来快速得到一个比较优的解,此时可以加快模型的训练,然后随着迭代步数逐步减少学习率,使模型到了后期更加稳定。
②增加动量项的梯度:
(9)交叉验证:简单交叉验证(70%-30%分裂数据集),K-折交叉验证,留一交叉验证。
(10)正则化(过拟合问题):L2-正则化; Dropout;数据增强
(11)滑动平均模型:
①滑动平均模型的作用是提高测试值上的健壮性,一个参数变化很大,那势必会影响到测试准确度问题,从他的公式看shadow_var = decay * shadow_var + (1 - decay) * var_new,decay控制着该shadow变量的更新速度,decay越大,那么很明显其值就会越倾向接近于旧值,而decay越小,那么var_new产生的叠加作用就会越强,其结果就会越倾向于远离旧值,那这样波动就很大,通常认为稳定性就不够好当然就不够健壮了
②通俗的理解就是“让参数有滑动效果,目的是让参数不是一个常数,而是一个可以变的参数,提高模型的稳定性”
(12)异或问题(XOR问题):
①如果要利用单层感知器画出一条直线把0和1分开,如下所示的异或问题(分类问题)是做不到的。
②单层感知器无法找到一条直线作为决策边界使 (0,0) 和 (1,1) 在一个区域,而 (1,0) 和 (0,1) 在另一个区域。
(13)网络层数增加带来的问题:神经网络层数加深,优化函数会越来越容易陷入局部最优解,这个局部最优解离全局最优解也可能会越来越远,同时“梯度消失”现象也会越来越严重。2006年Hinton利用预训练法缓解了局部最优解问题。为了克服“梯度消失”现象,用ReLu、maxout等激活函数代替了sigmoid函数。
(14)卷积神经网络和循环神经网络:CNN是空间上深度增加的神经网络,RNN是时间上深度增加的神经网络。
参考文献:
[1] 郑泽宇,顾思宇.Tensorflow:实战Google深度学习框架[M].电子工业出版社,2017.
[2] Simon Haykin. 神经网络与机器学习[M]. 机械工业出版社, 2011.
[3] 滑动平均模型 工作原理tensorflow?https://www.zhihu.com/question/65002219