您有1个待支付尾款的课程
再不支付就要过期了!
点击查看
40、如何解决深度学习中模型训练效果不佳的情况?
解析:
如果模型的训练效果不好,可先考察以下几个方面是否有可以优化的地方。 (1)选择合适的损失函数(choosing proper loss ) 神经网络的损失函数是非凸的,有多个局部最低点,目标是找到一个可用的最低点。非凸函数是凹凸不平的,但是不同的损失函数凹凸起伏的程度不同,例如下述的平方损失和交叉熵损失,后者起伏更大,且后者更容易找到一个可用的最低点,从而达到优化的目的。 - Square Error(平方损失) - Cross Entropy(交叉熵损失) (2)选择合适的Mini-batch size 采用合适的Mini-batch进行学习,使用Mini-batch的方法进行学习,一方面可以减少计算量,一方面有助于跳出局部最优点。因此要使用Mini-batch。更进一步,batch的选择非常重要,batch取太大会陷入局部最小值,batch取太小会抖动厉害,因此要选择一个合适的batch size。 (3)选择合适的激活函数(New activation function) 使用激活函数把卷积层输出结果做非线性映射,但是要选择合适的激活函数。 - Sigmoid函数是一个平滑函数,且具有连续性和可微性,它的最大优点就是非线性。但该函数的两端很缓,会带来猪队友的问题,易发生学不动的情况,产生梯度弥散。 - ReLU函数是如今设计神经网络时使用最广泛的激活函数,该函数为非线性映射,且简单,可缓解梯度弥散。 (4)选择合适的自适应学习率(apdative learning rate) - 学习率过大,会抖动厉害,导致没有优化提升 - 学习率太小,下降太慢,训练会很慢 (5)使用动量(Momentum) 在梯度的基础上使用动量,有助于冲出局部最低点。 如果以上五部分都选对了,效果还不好,那就是产生过拟合了,可使如下方法来防止过拟合,分别是 - 1.早停法(earyly stoping)。早停法将数据分成训练集和验证集,训练集用来计算梯度、更新权重和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。 - 2.权重衰减(Weight Decay)。到训练的后期,通过衰减因子使权重的梯度下降地越来越缓。 - 3.Dropout。Dropout是正则化的一种处理,以一定的概率关闭神经元的通路,阻止信息的传递。由于每次关闭的神经元不同,从而得到不同的网路模型,最终对这些模型进行融合。 - 4.调整网络结构(Network Structure)。
收藏成功