为什么在反向传播神经网络中必须使用非线性激活函数?

我一直在阅读关于神经网络的一些内容,我理解单层神经网络的一般原理。我明白需要额外的层,但为什么使用非线性激活函数呢?

这个问题接着是这个问题:在反向传播中,激活函数的导数有什么用途?


回答:

激活函数的目的是在网络中引入非线性

这样做可以让你对一个响应变量(也称为目标变量、类别标签或得分)进行建模,该变量与其解释变量之间呈非线性变化。

非线性意味着输出不能由输入的线性组合重现(这与呈现为直线的输出不同——这种情况的术语是仿射)。

另一种思考方式是:如果网络中没有非线性激活函数,无论神经网络有多少层,它的行为都将像单层感知器一样,因为这些层的总和只会给你另一个线性函数(见上面的定义)。

>>> in_vec = NP.random.rand(10)>>> in_vec  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])>>> # 常见的激活函数,双曲正切>>> out_vec = NP.tanh(in_vec)>>> out_vec array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

在反向传播中常用的激活函数(双曲正切)从-2到2的评估结果:

enter image description here

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中创建了一个多类分类项目。该项目可以对…

发表回复

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