为什么需要非线性激活函数

这是神经网络正向传播方程,为什么不能直接使a[1] = z[1] , a[2] = z[2] ,即 g ( z ) = z 

这是因为他们直接把输入值输出了

为了说明问题,若a[2] = z[2 这个模型的输出y或y帽不过是你输入特征x的线性组合

a[1] = z[1] = w[1]x + b[1]

a[2] = z[2] = w[2]x + b[2]

带入a[1]的定义,就发现,a[2] = w[2]( w[1]x + b[1] )+ b[2] = ( w[2]w[1] )x  +  ( w[2]b[1] +b[2]  )

                                                                                         =            w' x    +    b'

可以看出,如果用线性激活函数,或者叫恒等激活函数,那么神经网络只是把输入的线性组合再输出

后续的例子中会看到,如果使用线性激活函数或者不使用激活函数,那么无论你的神经网络有多少层,一直在做的只是计算线性激活函数,所以不如直接去掉全部隐藏层。因为这种算法和没有任何隐藏层的标准逻辑logistic回归是一样的

只有一个地方可以使用线性激活函数g(z) = z 就是如果你要机器学习的是回归问题,所以y是一个实数,比如说,你想预测房地产价格,所以y不是0和1,而是一个实数,那么用线性激活函数也许可行。但是隐藏单元不能用线性激活函数,它们可以用ReLU或者tanh或者带泄露的ReLU或者别的东西。

所以唯一可以用线性激活函数的地方通常是输出层

原文地址:https://www.cnblogs.com/nhdmmdxq/p/9553428.html