Machine learning 神经网络自定义二进制预测

Machine learning 神经网络自定义二进制预测,machine-learning,tensorflow,neural-network,deep-learning,classification,Machine Learning,Tensorflow,Neural Network,Deep Learning,Classification,我正试图设计一个神经网络,使一个自定义的二进制预测 通常要做二进制预测,我会使用softmax作为我的最后一层,然后我的损失可能是我所做的预测和真实二进制值之间的差异 但是,如果我不想使用softmax层怎么办。相反,我输出一个实数,并检查这个数的某些条件是否为真。在一个非常简单的例子中,我检查这个数字是否为正。如果是,我预测1,否则我预测0。假设我希望所有的数字都是正数,那么真正的预测应该都是1,然后我想训练这个网络,让它输出所有的正数。我对如何为这个问题建立一个损失函数感到困惑,这样我就能够

我正试图设计一个神经网络,使一个自定义的二进制预测

通常要做二进制预测,我会使用softmax作为我的最后一层,然后我的损失可能是我所做的预测和真实二进制值之间的差异

但是,如果我不想使用softmax层怎么办。相反,我输出一个实数,并检查这个数的某些条件是否为真。在一个非常简单的例子中,我检查这个数字是否为正。如果是,我预测
1
,否则我预测
0
。假设我希望所有的数字都是正数,那么真正的预测应该都是1,然后我想训练这个网络,让它输出所有的正数。我对如何为这个问题建立一个损失函数感到困惑,这样我就能够反向传播和训练网络

有人知道如何创建这种网络吗

我不知道如何为这个问题建立损失函数,所以 我能够支持传播和培训网络

以下是您应该如何处理它。实际上,您需要将标签转换为正负目标值(例如
+1
-1
),并解决回归问题。损耗函数可以是简单的L1或L2损耗。网络将尝试输出一个接近训练目标的预测,你可以随后解释它是否接近一个或另一个目标,即正或负。您甚至可以将一些目标放大(例如
+2
+10
),以强调这些示例非常重要。示例代码:


但是,我必须警告您,您的方法有严重的缺点,例如,请参阅。训练数据中的一个异常值很容易使你的预测产生偏差。使用softmax+交叉熵损失的分类更稳定,这就是为什么几乎总是一个更好的选择。

我对你的解决方案感到困惑。将标签设置为
+1
-1
是可以的,但我如何将其作为L2损失?我手动检查我的网络结果,看它是否为正值,那么,将某些目标变大是什么意思?也许问题是我在最后手动检查结果,有更好的方法可以做到这一点。因为在这种情况下,
true\u labels
是所有1的张量,
predicted\u labels
+1
-1
取决于其位置与否,L2损失可能是
(true\u labels-predicted\u labels)
,但这不会正常工作,因为梯度为0。另外,你说我的解决方案有缺点,这是否意味着不可能训练神经网络只输出正值?看起来这应该是一个相当简单的任务。我不确定我是否理解你的观点。L2损失是回归问题的常见选择。请参见我提供的示例,它使用的正是L2损耗。你试过了吗?此外,预测值不会完全等于目标值。我提到的问题讨论了你的方法的缺点。我只是试图预测正数,而不是某个特定的数字。因此,我查看结果并“预测”1,如果它为正,如果为负。那么,为什么你说预测值不完全等于目标值呢?我的预测值是1和-1,我的目标值是1?你们说的是解释,我说的是解决回归问题的神经网络。无论您对其输出执行什么操作,都与NN没有连接。换句话说,它不是backprop的一部分。