问题描述
通常,损失函数可以定义为 L(y_hat,y)或L(f(X),y),其中f是神经网络,X是输入数据,y是目标。 是否有可能实现(最好在PyTorch中)不仅依赖于输入数据X,还依赖于X'(X!= X)的损失函数?
例如,假设我有一个神经网络f,输入数据(X,y)和X'。我可以构造这样的损失函数吗?
- f(X)尽可能接近y,并且
- f(X')> f(X)?
第一部分易于实现(PyTorch:nn.MSELoss()),第二部分似乎更难。
P.S:这个问题是Multiple regression while avoiding line intersections using neural nets的重新表述,已被关闭。在原始数据中,提供了输入数据和带有理论示例的照片。
解决方法
是的,有可能。 例如,您可以使用ReLU添加损失项,如下所示:
loss = nn.MSELoss()(f(X),y) + lambd * nn.ReLU()(f(X)-f(X'))
其中lambd
是超参数。
请注意,这对应于f(X') >= f(X)
,但是可以通过在ReLU内添加一个f(X') > f(X)
(绝对值足够小)常量来轻松修改为epsilon<0
。