我有一个问题。我看了一个关于在C ++中实现人工神经网络的非常详细的教程。现在我对神经网络如何工作以及如何实际编程和训练神经网络有了一个基本的了解。
因此在本教程中,双曲正切用于计算输出,显然它是计算梯度的导数。但是我想继续使用不同的功能。特别是Leaky RELU(以避免死亡的神经元)。
我的问题是,它指定此激活功能仅应用于隐藏层。对于输出层,应使用不同的函数(softmax或线性回归函数)。在教程中,这个人教导神经网络是一个XOR处理器。这是分类问题还是回归问题?
我试图谷歌两者之间的差异,但我不能完全掌握XOR处理器的类别。这是分类还是回归问题? 所以我实现了Leaky RELU功能及其派生,但我不知道是否应该对输出层使用softmax或回归函数。
另外,为了重新计算输出梯度,我使用Leaky RELU的衍生物(目前),但在这种情况下,我是否也应该使用softmax&s /回归导数?
提前致谢。
答案 0 :(得分:1)
我试图谷歌两者之间的差异,但我不能完全掌握XOR处理器的类别。这是分类还是回归问题?
简而言之,分类用于离散目标,回归用于连续目标。如果是浮点运算,则会出现回归问题。但是这里XOR的结果是0
或1
,所以它是二进制分类(已经由Sid建议)。您应该使用softmax图层(或sigmoid function,它特别适用于2个类)。请注意,输出将是概率的向量,即实值,用于选择离散目标类。
另外,为了重新计算输出梯度,我使用Leaky RELU的导数(现在),但在这种情况下我应该使用softmax的/回归导数吗?
正确。对于输出层,您需要一个cross-entropy loss函数,它对应于softmax图层,它是向后传递的导数。 如果仍然存在仍然使用Leaky ReLu的隐藏层,那么对于这些特定层,您还需要相应的Leaky ReLu衍生物。