偏差、方差
偏差,方差是我们调整神经网络的一个重要指标,在搭建神经网络时需要权衡这两个值,当高偏差时,算法不能很好的拟合数据,称之为欠拟合;当高方差时,算法过于贴合数据集,称之为过拟合。
判断偏差与方差的情况,可以根据训练集与验证集的正确率进行评估,训练集的误差高则偏差高,验证集的误差高则方差高,是可以出现方差与偏差同时很糟糕的情况。
- 高偏差、高方差调整方法
高偏差一般可以通过
1、重新选择一个网络,包含更多的隐层。
2、多次训练网络。
3、尝试其他算法
高方差可以通过
1、使用更多的数据训练。
2、正则化
正则化
- L2正则化
此种正则化在代价函数中额外增加了L2范数。公式为:
J(w,b)=1m∑1mL(y−(i),y(i))+λ2m∣∣w∣∣2 J(w,b) = {1\over m}\sum_1^mL(y^{-(i)},y^{(i)})+{\lambda\over 2m}||w||^2 J(w,b)=m11∑mL(y−(i),y(i))+2mλ∣∣w∣∣2
∣∣w∣∣2=∑1nXwj2=wTw ||w||^2 = \sum_1^{n_X}w_j^2 = w^Tw ∣∣w∣∣2=1∑nXwj2=wTw
此式只正则化了w向量,并未对实数b进行正则化,在实际使用时也可以加上。且正则化其中的参数是需要通过尝试进行设置的,通常一开始我们给其设置为一个很小的值。
通过这样修改过的代价函数对参数w进行梯度下降调整时,dw也会随之改变,使得w值比原本下降的更快,因此l2正则化又称为*“权重衰减”。*
2.Dropout正则化
此种方法称为“随机失活”,简单的说就是对神经网络的每一层设置一个概率,随机的消除这一层的几个节点,将神经网络变成更小的神经网络。
3.其他
对于降低方差还可以使用其他方法,例如在训练图像识别时,可以通过对原本图像进行翻转变形作为新的训练数据;Easy Stopping指的是在训练网络时,在验证数据误差开始上升时停止继续训练。
归一化输入
归一化输入是加快训练的一种方法。主要步骤:1.零均值,2.归一化方差。
1.零均值
μ=1m∑i=1mxi
\mu={1\over m}\sum_{i=1}^mx^{i}
μ=m1i=1∑mxi
每个训练集数据减去上述数值,进行一次平移即完成零均值。
2.归一化方差
δ2=1m∑i=1m(x(i))2
\delta^2 = {1\over m}\sum_{i=1}^m(x^{(i)})^2
δ2=m1i=1∑m(x(i))2
将零均值后的数据再,除以上式向量,归一化完成。