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

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

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


回答:

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

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

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

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

>>> 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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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