神经网络:为什么我们需要激活功能?

时间:2016-04-01 03:18:14

标签: machine-learning neural-network backpropagation

我尝试运行一个没有任何激活功能的简单神经网络,并且网络不会收敛。我正在使用MSE成本函数进行MNIST分类。

但是,如果我将整流线性激活函数应用于隐藏层(输出= max(0,x),其中x是加权和),那么它会收敛。

为什么从前一层消除负面输出有助于学习?

2 个答案:

答案 0 :(得分:5)

线性与非线性

基本感知器仅仅是其输入信号的加权线性组合。一层感知器仍然是线性回归器/分类器。如果我们使函数逼近器(神经网络)非线性化,网络将只能解决非线性问题。这可以通过在层的输出信号上应用非线性激活函数来完成,例如ReLU函数。

整流线性单位

The ReLU function

当输出信号只是max(0, y)时,ReLU是一个非线性激活函数?答案在于抵消负值(用0替换它们)。由于您无法用直线描述ReLU功能曲线,因此ReLU不是线性激活功能。

The ReLU curve

答案 1 :(得分:1)

原因很简单。你需要为你的神经网络添加某种非线性,否则你最终会得到一个简单的线性方程。

假设您有一个输入向量x和两个由权重矩阵W1和W2表示的隐藏层。没有任何激活功能,您的神经网络将输出y = x W1 W2,其等于y = x W,使得W = W1 W2。这只不过是矩阵乘法。

如果你使用激活函数,如ReLU或Sigmoid等,你会得到一个很好的非线性函数,它能够适应一些有趣的数据。