首页 > 解决方案 > caffe CNN 多元回归:具有非常不同的值范围的输出

问题描述

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

在此处输入图像描述

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

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

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

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

标签: neural-networkregressioncaffeconv-neural-networkpycaffe

解决方案


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

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

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

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

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


推荐阅读