我有个问题。我观看了有关在C ++中实现人工神经网络的非常详细的教程。现在,我对神经网络如何工作以及如何实际编程和训练神经网络有了基本的了解。

因此,在本教程中,双曲正切用于计算输出,并且显然使用其导数来计算梯度。但是,我想转到其他功能。特别是泄漏的RELU(以避免死亡的神经元)。

我的问题是,它指定此激活功能应仅用于隐藏层。对于输出层,应使用其他函数(softmax或线性回归函数)。在教程中,那个家伙教过神经网络是XOR处理器。那么这是分类问题还是回归问题?

我试图用谷歌搜索两者之间的区别,但我不太了解XOR处理器的类别。是分类问题还是回归问题?
所以我实现了Leaky RELU函数及其派生函数,但是我不知道是否应该对输出层使用softmax或回归函数。

同样,为了重新计算输出梯度,我使用Leaky RELU的导数(现在),但是在这种情况下,我也应该使用softmax的/回归导数吗?

提前致谢。

最佳答案

我试图用谷歌搜索两者之间的区别,但我不太了解XOR处理器的类别。是分类问题还是回归问题?


简而言之,分类是针对离散目标,回归是针对连续目标。如果它是浮点运算,则您有回归问题。但是这里XOR的结果是01,所以它是一个二进制分类(Sid已建议)。您应该使用softmax图层(或sigmoid function,这特别适用于2个类)。注意,输出将是概率向量,即实数值,用于选择离散目标类别。


  同样,为了重新计算输出梯度,我使用Leaky RELU的导数(现在),但是在这种情况下,我也应该使用softmax的/回归导数吗?


正确。对于输出层,您需要一个cross-entropy loss函数,该函数与softmax层相对应,它是向后传递的派生类。
如果存在仍然使用Leaky ReLu的隐藏图层,则对于这些特定图层,您还需要相应地使用Leaky ReLu的派生类。

强烈建议this post on backpropagation details

关于machine-learning - 人工神经网络RELU激活函数和梯度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46620286/

10-12 16:43
查看更多