我正在尝试设计一个自定义二进制预测的神经网络。
通常做二进制预测,我会使用softmax作为我的最后一层,然后我的损失可能是我做的预测和真正的二进制值之间的差异。
但是,如果我不想使用softmax图层怎么办?相反,我输出一个实数值,并检查此数字上的某些条件是否为真。在一个非常简单的情况下,我检查这个数字是否为正数。如果是,我预测1
,否则我预测0
。让我们说我希望所有数字都是正数,所以真正的预测应该都是1,然后我想训练这个网络,使它输出所有正数。我很困惑如何为这个问题制定一个损失函数,以便我能够反向传播和训练网络。
有没有人知道如何创建这种网络?
答案 0 :(得分:1)
我很困惑如何为这个问题制定一个损失函数,所以 我可以回传播和训练网络。
这是你应该如何接近它。实际上,您需要将标签转换为正面和负面目标值(例如+1
和-1
)并解决回归问题。损失函数可以是简单的L1或L2损失。网络将尝试学习输出接近训练目标的预测,然后您可以解释它是否更接近一个目标或另一个目标,即正面或负面。您甚至可以继续制作更大的目标(例如+2
或+10
),以强调这些示例非常重要。示例代码:linear regression in tensorflow。
但是,我只需要警告您,您的方法存在严重缺陷,例如请参阅this question。训练数据中的一个异常值很容易扭曲您的预测。 softmax +交叉熵损失的分类更稳定,这就是为什么几乎总是更好的选择。