深度学习策略选择 | 优化器选择,权重初始化,损失函数选择

2018-12-29  本文已影响39人  yuanCruise

1.CNN中优化器选择

2.CNN中权重初始化策略

若用全0的值初始化权重,则每个神经元节点的值多相等,在反向传播时,每个权重的梯度为输入该节点的值与上一层梯度的乘积,所以导致同等更新不具有差异性。

3.CNN中损失函数选择

回归损失

用L1能够对异常值更鲁棒。用L2能够更快的收敛。
L2比L1能更快速的收敛的原因在于接近与目标值的时候,L2曲线更加平滑。
L1比L2对异常值更加鲁棒的原因,是因为当出现异常值时,L2对异常值反应后的error会比L1大,因为一个是平方级的,一个是绝对值。这会导致用L2更新参数时,由于异常值的Loss大导致参数更新方向往异常值偏。所以说L1对异常值更加鲁棒。

L1和L2都存在的问题
若我们的真实目标集中有90%是150,10%是0-30。若我们用L1来做,会使得大部分的预测值为150(趋向于中位数)。而用L2来做,会使得有很多的预测值在0~30之间,这两种情况都不是我们希望见到的。

基于L1,L2损失函数的问题,因此提出了huber loss,其相当于利用超参数delta的范围将L1和L2组合起来。当残差比delta大时,HuberLoss就趋向于L1loss。当残差比delta小时,HuberLoss就趋向与L2loss。因此当delta趋向0时候,为L1loss;当delta趋向很大时,为L2loss。HuberLoss的好处就是结合了L1/L2的好处,但有个问题是要去学习或定义它的超参数delta。

预测误差的双曲余弦的对数log(cosh(yip−yi))log(cosh(yip−yi)),该loss的优点在于当x很小时,函数接近与x^2/2;当x很大时,函数接近与abs(x)-log(2)。所以说这个loss有Huberloss的所有的优点且不像Huberloss不仅要有超参数且并不是处处二次可微。为什么需要2d derivative呢?因为类似于XGBoost这种算法利用2d 可微函数对优化更有利。但这种loss函数对非常大的异常值仍然存在不友好的问题。

用来回归interval(间隔)而不是精准的回归到一个point(点)。

分类损失
hige_y_val = tf.maxmim(0., 1.-tf.mul(target,x_vals))
xentropy_y_val = tf.mul(target,tf.log(x_vals)) - tf.mul((1. - target), tf.log(1. - x_vals))
xentropy_y_out = sess.run(xentropy_y_val)
上一篇 下一篇

猜你喜欢

热点阅读