是否可以使用损失函数对看不见的数据与输入数据不同的数据训练神经网络?

问题描述

通常,损失函数可以定义为 L(y_hat,y)或L(f(X),y),其中f是神经网络,X是输入数据,y是目标。 是否有可能实现(最好在PyTorch中)不仅依赖于输入数据X,还依赖于X'(X!= X)的损失函数

例如,假设我有一个神经网络f,输入数据(X,y)和X'。我可以构造这样的损失函数吗?

  1. f(X)尽可能接近y,并且
  2. 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