吴恩达deeplearning.ai课程系列笔记03

#写在最前,deeplearning.ai系列课程相较于之前的Andrew Ng在coursea上2014发布的机器学习课程内容更加丰富。
重要的是此次课程示例代码都是用python来实现,不需要去熟悉octave,对大部分需要用python来学习机器学习的同学来说是个福音!
原课程视频请移步网易云课堂或者coursera上学习。
#本文内容部分来自网络,只为分享供更多的人学习使用微笑
1、关于激活函数

几种不同的激活函数 g(x)

还在路上,稍等...
其中:
  • sigmoid: a=11+ez  
    • 导数: a=a(1a)
  • tanh: a=ezezez+ez  
    • 导数: a=1a2
  • ReLU(修正线性单元): a=max(0,z)
  • Leaky ReLU: a=max(0.01z,z)

常见激活函数比较:
对于sigmoid函数,一般只用在二元分类的输出层,因为二元分类一般要求输出结果 y0,1 y∈0,1,而σ函数刚好其阈值就在0,1之间。而其它层更加建议用其他的激活函数。所以一个神经网络可以使用多种激活函数(用g[i]表示第i层的激活函数),一般来说,在输出层我们选用sigmoid函数。
对于tanh(z)函数,相比于σ(z)表现更好的原因是因为它的均值在0附近,有数据中心化的效果,所以下一层在学习的时候要更加方便和快速。但是σ(z)tanh(z)有一个共同的缺点,就是当z很大或很小的时候,它们的斜率就会趋向于0,这会使得梯度下降的学习速率降低。
对于ReLu函数,可以极大地加快收敛速度,相比tanh函数,收敛速度可以加快6倍。它表现效果很好,所以在不确定使用何种激活函数的时候可以选择这个函数。
相比sigmoid和tanh函数,Relu激活函数的优点在于:
梯度不饱和 。梯度计算公式为:1{x>0}。因此在反向传播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。
计算速度快 。正向传播过程中,sigmoid和tanh函数计算激活值时需要计算指数,而Relu函数仅需要设置阈值。如果x<0,f(x)=0,如果x>0,f(x)=x。加快了正向传播的计算速度。

对于Leaky ReLu函数,其实就是在ReLu函数的基础上改进了一点。即当x值小于0的时候,其值不为0,而是一个很小的正数。
综上,对于选择哪个激活函数,也没有固定的答案,具体问题具体分析。
对于激活函数,为什么要用非线性函数呢?因为当激活函数是线性函数的时候,每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与只有一个隐藏层效果相当,这种情况就是多层感知机(MLP)了。

2、梯度下降法

以浅层神经网络为例,我们给出神经网络的梯度下降法的公式。

  • 参数: W[1],b[1],W[2],b[2]
  • 输入层特征向量个数: nx=n[0]
  • 隐藏层神经元个数: n[1]
  • 输出层神经元个数: n[2]=1
  • W[1] 的维度为 (n[1],n[0]) b[1] 的维度为 (n[1],1)
  • W[2] 的维度为 (n[2],n[1]) b[2] 的维度为 (n[2],1)

下面为该例子的神经网络反向梯度下降公式(左)和其代码向量化(右):


在编程过程中,我们要尽量避免使用for循环语句,而采用向量化的方法,效率会高很多。
3、关于随机初始化
在初始化的时候,如果两个神经元的参数设置相同,则会引起对称的权重问题,即两个神经元对输出的单元的影响完全一样。
如果是这样,则通过反向梯度下降去进行计算的时候,会得到同样的梯度大小,所以在经过多次迭代后,两个隐藏层单位仍然是对称的。无论设置多少个隐藏单元,其最终的影响都是相同的,那么多个隐藏神经元就没有了意义。
因此在初始化的时候, W 参数要进行随机初始化, b 则不存在对称性的问题它可以设置为0。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlexJunCpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值