人工神经网络的RELU激活函数和梯度

我有一个问题。我观看了一个关于在C++中实现人工神经网络的非常详细的教程。现在我对神经网络的工作原理以及如何编程和训练一个神经网络有了不仅仅是基础的理解。

在教程中使用了双曲正切函数来计算输出,显然也使用了它的导数来计算梯度。然而,我想尝试使用不同的函数。具体来说是Leaky RELU(以避免神经元死亡)。

我的问题是,教程中提到这个激活函数应该只用于隐藏层。对于输出层,应该使用不同的函数(要么是softmax,要么是线性回归函数)。在教程中,这个人教神经网络成为一个XOR处理器。那么这是分类问题还是回归问题呢?

我尝试通过谷歌搜索了解两者的区别,但对于XOR处理器的分类我还是不太明白。这是分类问题还是回归问题?所以我实现了Leaky RELU函数及其导数,但我不知道在输出层是应该使用softmax还是回归函数。

另外,对于重新计算输出梯度,我目前使用的是Leaky RELU的导数,但在这种情况下,我是否也应该使用softmax或回归的导数呢?

提前感谢。


回答:

我尝试通过谷歌搜索了解两者的区别,但对于XOR处理器的分类我还是不太明白。这是分类问题还是回归问题?

简而言之,分类是针对离散目标,回归是针对连续目标。如果是浮点运算,你就有了一个回归问题。但在这里,XOR的结果是01,所以这是一个二元分类问题(Sid已经暗示过)。你应该使用一个softmax层(或者一个Sigmoid函数,它特别适用于两个类别)。请注意,输出将是一个概率向量,即实值,用于选择离散目标类别。

另外,对于重新计算输出梯度,我目前使用的是Leaky RELU的导数,但在这种情况下,我是否也应该使用softmax或回归的导数呢?

正确。对于输出层,你需要一个交叉熵损失函数,它对应于softmax层,并且需要它的导数用于反向传播。如果还有使用Leaky ReLu的隐藏层,你也需要相应地使用Leaky ReLu的导数,适用于这些特定层。

强烈推荐阅读这篇关于反向传播细节的文章

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注