深度学习
准备的一些机器学习里比较基础的问题,希望面试的时候用得上吧。(我永远爱ECNU)
神经网络、深度学习、深度神经网络
-
机器学习:机器学习是通过对数据建模,并进行预测和分类的一个学科。其三要素为:模型、策略和算法。
-
神经网络:神经网络是一类机器学习模型。
-
深度神经网络:是包括较多隐藏层的神经网络。
-
深度学习:是机器学习的一个领域,目前发展比较火热。
CNN中1x1
卷积核的作用
-
引入非线性操作
输出的结果需要经过
ReLU
进行非线性转换 。所以这里也会使整个模型相对更加的复杂,提升网络的表达能力。 -
改变通道(channel)
通过改变卷积核的个数,来改变数据
(width, height, channel)
中channel
的大小。 -
数据融合
比如在
resnet
中,我们在进行残差计算时数据channel
可能不一样,这时候就需要用1x1
的卷积核来改变数据channel
,使数据在各个维度上进行匹配,从而使得数据可以相加。 -
减少计算量
在inception网络中,每次进行卷积运算之前都会先进行一次
1x1
的卷积操作这样可以减少计算量。卷积操作计算公式:
(k * k) * Cin * M * M * Cout
.即:一次卷积核操作 * 特征图点数 * 通道数
过拟合、欠拟合
-
欠拟合:
模型在测试集上的表现不佳,即模型的复杂度低。
-
解决:神经网络经过一定时间的训练之后基本上就不会再出现欠拟合了,如果仍然存在我们可以考虑增加网络复杂度或者增加数据的特征。
-
过拟合:
选择的模型包含的参数过多,复杂度过高,对已知的数据拟合的很好但是对未知的数据拟合的很差。
-
解决:首先在选择模型时我们可以通过交叉验证(cross validation)来选择一个误差最小的模型;同时我们还可以在训练模型时通过正则化等方法降低模型的复杂度。
-
正则化:
L1和L2正则化:是机器学习中比较常用的方法,通过约束学习参数w的范数,从而使得模型复杂度降低。一般的方法是利用拉格朗日乘数法的概念,在损失函数后加上一项正则项。
权重衰减:在采用随机梯度下降优化算法时效果和L2正则化相同。
dropout:在训练神经网络时,我们在更新每一层的隐藏层的参数时,可以随机丢弃一部分神经元来避免过拟合。
网络退化
-
网络退化并不是过拟合,过拟合是指~,网络退化是模型在训练数据集和测试集上面的表现都不好。
-
通常网络退化是由神经网络层数过多引起的(会造成梯度爆炸、消失;过拟合等问题)
-
解决方法:
resnet
中提出的残差连接的概念,首先我们知道,我们在训练网络时,网络层数越高理论上效果至少不会比层数较低时表现得更差(因为最后面的几层神经网络可以全都是identity mapping
)。但事实上网络层数过深就会造成网络退化。为了解决这个问题,resnet
中显式的构造出了一个identity mapping
—让每层神经网络学习f(x):= H(x) - x
,(其中x
是上一层神经网络的输出,H(x)
是这一层要学习的函数)最后该层神经网络的输出等价于上一层神经网络的输出x
和这一层神经网络学习残差的输出之和。