是否可以使用未见数据(不同于输入数据的数据)的损失函数来训练神经网络?

Is it possible to train a neural netowrk using a loss function on unseen data (data different from input data)?

通常,损失函数可以定义为 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 中添加一个 epsilon<0(绝对值足够小)常量来轻松修改为 f(X') > f(X)