这几天忙着秋招,也没时间总结本身最近学习的知识点,因为本身应聘的是算法岗位,因此就把最近面试时遇到的问题和你们一块儿分享一下,有什么不对的还需各位读者指出来。最后但愿本身和个人那个她可以找到一份满意的工做。面试
通常说起到过拟合就是说在训练集上模型表现很好,可是在测试集上效果不好,即模型的泛化能力不行。过拟合是模型训练过程当中参数拟合的问题,因为训练数据自己有采样偏差,拟合模型参数时这些采样偏差都拟合进去就会带来所谓的过拟合问题。算法
传统的函数拟合问题,通常是经过物理、数学等推导出的一个含参数的模型(数学建模),模型复杂度是肯定的,没有多余的能力拟合噪声。而机器学习算法的复杂度更高,通常都远高于具体问题的复杂度。也就说数据量不足有支撑庞大的模型(也能够说是参数)。网络
一方面能够获取更多的源数据,另外一方面也能够在现有数据的基础上进行数据加强(图像平移,旋转等)机器学习
这主要是解决数据量与模型参数之间的矛盾,即固定数据量只能支撑对应的参数量的模型的拟合(通俗的说,几十个几百个数据就不要使用深度网络了)。该方法主要能够从四个方面入手:ide
a.简化网络结构,如层数,单层神经元个数函数
b. early stopping,每一个神经元激活函数在不一样数值区间的性能是不一样的,值较小时为线性区,适当增大后为非线性区,过分增大则为饱合区(梯度消失)。初始化时,神经元通常工做在线性区(拟合能力有限),训练时间增大时,部分值会增大进入非线性区(拟合能力提升),可是训练时间过大时,就会进入饱合区,神经元就“死掉”。因此应该在适当时间内就stopping训练。性能
c.限制权值,正则化学习
d.增长噪声:在输入中增长噪声(效果相似正则化);在权值中加入噪声(非零初始化);测试
a. bagging,相似于分段函数的概念,不一样部分的训练集使用不一样模型拟合;spa
b. boosting,综合多个简单的模型的结果获得一个‘靠谱的结果。
c. dropout,实际效果实际上是用不一样的训练集训练了不一样的网络模型,而后这些网络模型造成了一个总体的模型。
梯度爆炸:指神经网络训练过程当中大的偏差梯度不断累积,致使模型权重出现重大更新。会形成模型不稳定,没法利用训练数据学习。
什么是梯度爆炸?
偏差梯度是神经网络训练过程当中计算的方向和数量,用于以正确的方向和合适的量更新网络权重。 在深层网络或循环神经网络中,偏差梯度可在更新中累积,变成很是大的梯度,而后致使网络权重的大幅更新,并所以使网络变得不稳定。在极端状况下,权重的值变得很是大,以致于溢出,致使 NaN 值。 网络层之间的梯度(值大于 1.0)重复相乘致使的指数级增加会产生梯度爆炸。
梯度爆炸引起的问题
在深度多层感知机网络中,梯度爆炸会引发网络不稳定,最好的结果是没法从训练数据中学习,而最坏的结果是出现没法再更新的 NaN 权重值。
如何修复梯度爆炸问题?
在深度神经网络中,梯度爆炸能够经过从新设计层数更少的网络来解决。 使用更小的批尺寸对网络训练也有好处。 在循环神经网络中,训练过程当中在更少的先前时间步上进行更新(沿时间的截断反向传播,truncated Backpropagation through time)能够缓解梯度爆炸问题。
2. 使用 ReLU 激活函数
在深度多层感知机神经网络中,梯度爆炸的发生多是由于激活函数,如以前很流行的 Sigmoid 和 Tanh 函数。 使用 ReLU 激活函数能够减小梯度爆炸。采用 ReLU 激活函数是最适合隐藏层的新实践。
3. 使用长短时间记忆网络
在循环神经网络中,梯度爆炸的发生多是由于某种网络的训练自己就存在不稳定性,如随时间的反向传播本质上将循环网络转换成深度多层感知机神经网络。 使用长短时间记忆(LSTM)单元和相关的门类型神经元结构能够减小梯度爆炸问题。 采用 LSTM 单元是适合循环神经网络的序列预测的最新最好实践。
4. 使用梯度截断(Gradient Clipping)
在很是深且批尺寸较大的多层感知机网络和输入序列较长的 LSTM 中,仍然有可能出现梯度爆炸。 若是梯度爆炸仍然出现,你能够在训练过程当中检查和限制梯度的大小。这就是梯度截断。
5. 使用权重正则化(Weight Regularization)
若是梯度爆炸仍然存在,能够尝试另外一种方法,即检查网络权重的大小,并惩罚产生较大权重值的损失函数。该过程被称为权重正则化,一般使用的是 L1 惩罚项(权重绝对值)或 L2 惩罚项(权重平方)。
机器学习中几乎均可以看到损失函数后面会添加一个额外项,经常使用的额外项通常有两种,中文称做 L1正则化 和 L2正则化,或者 L1范数 和 L2范数。L1正则化和L2正则化能够看作是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数作一些限制。对于线性回归模型,使用L1正则化的模型建叫作Lasso回归,使用L2正则化的模型叫作Ridge回归(岭回归)。
通常回归分析中回归www表示特征的系数,从上式能够看到正则化项是对系数作了处理(限制)。L1正则化和L2正则化的说明以下:
L1正则化是指权值向量www中各个元素的绝对值之和
L2正则化是指权值向量www中各个元素的平方和而后再求平方根(能够看到Ridge回归的L2正则化项有平方符号)
那添加L1和L2正则化有什么用?下面是L1正则化和L2正则化的做用,这些表述能够在不少文章中找到。
L1正则化能够产生稀疏权值矩阵,即产生一个稀疏模型,能够用于特征选择
L2正则化能够防止模型过拟合(overfitting);必定程度上,L1也能够防止过拟合
参考连接:
1.https://blog.csdn.net/dulingtingzi/article/details/80254038
2.http://baijiahao.baidu.com/s?id=1587462776558160221&wfr=spider&for=pc
3.