zoukankan      html  css  js  c++  java
  • deeplearning.ai课程学习(3)

    第三周:浅层神经网络(Shallow neural networks)

    1、激活函数(Activation functions)

    sigmoid函数和tanh函数两者共同的缺点是,在z特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于0,导致降低梯度下降的速度。

    Relu和Leaky ReLu相对于Sigmoid和tanh函数的优点如下:

    第一,在的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于0,在程序实现就是一个if-else语句,而sigmoid函数需要进行浮点四则运算,在实践中,使用ReLu激活函数神经网络通常会比使用sigmoid或者tanh激活函数学习的更快。

    第二,sigmoidtanh函数的导数在正负饱和区的梯度都会接近于0,这会造成梯度弥散,而ReluLeaky ReLu函数大于0部分都为常熟,不会产生梯度弥散现象。(同时应该注意到的是,Relu进入负半区的时候,梯度为0,神经元此时不会训练,产生所谓的稀疏性,而Leaky ReLu不会有这问题)

    不同激活函数的过程和结论:

    sigmoid激活函数:除了输出层是一个二分类问题基本不会用它。

    tanh激活函数:tanh是非常优秀的,几乎适合所有场合。

    ReLu激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用ReLu或者Leaky ReLu

    总结:如果不确定哪一个激活函数效果更好,可以把它们都试试,然后在验证集或者发展集上进行评价。

    2、为什么需要非线性激活函数?(why need a nonlinear activation function?)

    如果使用线性激活函数或者没有使用一个激活函数,那么无论你的神经网络有多少层一直在做的只是计算线性函数,所以不如直接去掉全部隐藏层。

    3、随机初始化(Random+Initialization)

    对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,如果把权重或者参数都初始化为0,那么梯度下降将不会起作用。

    如上图,假设有两个输入特征n0,两个隐藏单元n1,初始化权重矩阵W1为0,b1=0。

    前向传播时,a11和a12总是会相等,两个激活单元就会相同。

    因为两个隐含单元计算同样的函数,当你做反向传播计算时,这会导致dz1和dz2,使得W2也将为0

  • 相关阅读:
    第五天
    第四天
    第三天
    四则运算2
    对于搜狗输入法
    用户及用户场景分析
    总结
    第一阶段总结
    第七天
    第六天
  • 原文地址:https://www.cnblogs.com/kamekin/p/10093670.html
Copyright © 2011-2022 走看看