我在Tensorflow中使用完全连接的多层神经网络进行多元回归。给定输入向量(y1,y2)
,网络预测2个连续浮点变量(x1,x2,...xN)
,即网络有2个输出节点。有2个输出,网络似乎没有收敛。我的损失函数本质上是预测和真值向量之间的L2距离(每个包含2个标量):
loss = tf.nn.l2_loss(tf.sub(prediction, truthValues_placeholder)) + L2regularizationLoss
我正在使用L2正则化,丢失正则化,我的激活函数是tanh。
我的问题:L2距离是计算多变量网络输出损失的正确方法吗?是否需要一些技巧才能使多元回归网络收敛(与单变量网络和分类器相对)?
答案 0 :(得分:2)
是的,您可以使用L2距离进行多元回归。但我也建议尝试绝对的L1距离。
L2的一个问题是它对异常值的敏感性,而L1则是原点的非平滑性。
你可以使用Huber Loss解决这两个问题,the spring data jpa documentation.在原点附近就像L2一样,当你离开原点时就像绝对L1一样。