zoukankan      html  css  js  c++  java
  • 为什么需要非线性激活函数

    这是神经网络正向传播方程,为什么不能直接使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或者别的东西。

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

  • 相关阅读:
    异或和之和
    Wannafly挑战赛19C:多彩的树
    HDU 6035 树形dp
    利用C++套接字发送邮件
    洛谷P3368树状模板(区间更新+单点查询+差分)
    CCF 201903-1 小中大
    关于树状数组
    CODEVS 4189 (前缀是否出现)
    关于字典树
    hdu 1022 Train Problem
  • 原文地址:https://www.cnblogs.com/nhdmmdxq/p/9553428.html
Copyright © 2011-2022 走看看