caffe CNN多元回归:具有非常不同的值范围的输出

时间:2018-05-08 11:53:09

标签: neural-network regression caffe conv-neural-network pycaffe

我正在使用Caffe CNN进行回归(见下图)。

enter image description here

我想要预测的值具有非常不同的范围,例如y1 = [0.1:0.2],y2 = [1:5],.. yn = [0:15]。

Q1 :如果我试图预测'y',它会不会影响学习?如果是的话,为什么? (我已经做过这个实验,结果还可以,但不是很好)

Q2 :我可以通过总和(ys)= 1来设置'y's = [0:1]吗?

Q3 :我可以使用其他损失功能,例如Softmax或Logistic,或Euclidean是我唯一的选择吗?

1 个答案:

答案 0 :(得分:1)

我没有给你答案,但我可以提供一些观察。

如果我正确理解您的设置,则每个输出y_i都有一个损失函数。每次损失都是在特定范围内强制y_i的回归损失。

1。由于您的输出是"拉"对于不同的范围,这可能导致最后一层的权重矩阵对于不同的行具有非常不同的比例。如果您使用的是正规化器(如L2),则可能会混淆"试图使重量大致各向同性的学习过程 为了克服这个问题,你可以放松最后一层重量的正则化(使用decay_mult参数)。或者,您可以添加"Scale"图层,以便仅了解每个输出的比例因子(也可能是偏差)。

2。我不明白你想要通过这个来完成什么。你想绑定输出吗?通过对每个输出应用"Sigmoid""Tanh"激活,可以获得有界输出,强制每个输出到[0..1]或[-1..1]范围。 (您可以在激活后添加"Scale"图层。

3. 您可以对每个输出使用逻辑回归,或者探索平滑的L1损失(这应该更加稳健,特别是如果目标不在[-1..1]范围内)