我正在使用Caffe CNN进行回归(见下图)。
我想要预测的值具有非常不同的范围,例如y1 = [0.1:0.2],y2 = [1:5],.. yn = [0:15]。
Q1 :如果我试图预测'y',它会不会影响学习?如果是的话,为什么? (我已经做过这个实验,结果还可以,但不是很好)
Q2 :我可以通过总和(ys)= 1来设置'y's = [0:1]吗?
Q3 :我可以使用其他损失功能,例如Softmax或Logistic,或Euclidean是我唯一的选择吗?
答案 0 :(得分:1)
我没有给你答案,但我可以提供一些观察。
如果我正确理解您的设置,则每个输出y_i
都有一个损失函数。每次损失都是在特定范围内强制y_i
的回归损失。
1。由于您的输出是"拉"对于不同的范围,这可能导致最后一层的权重矩阵对于不同的行具有非常不同的比例。如果您使用的是正规化器(如L2),则可能会混淆"试图使重量大致各向同性的学习过程
为了克服这个问题,你可以放松最后一层重量的正则化(使用decay_mult
参数)。或者,您可以添加"Scale"
图层,以便仅了解每个输出的比例因子(也可能是偏差)。
2。我不明白你想要通过这个来完成什么。你想绑定输出吗?通过对每个输出应用"Sigmoid"
或"Tanh"
激活,可以获得有界输出,强制每个输出到[0..1]或[-1..1]范围。 (您可以在激活后添加"Scale"
图层。
3. 您可以对每个输出使用逻辑回归,或者探索平滑的L1损失(这应该更加稳健,特别是如果目标不在[-1..1]范围内)