吴恩达深度学习 —— 3.8 激活函数的导数

当你对你的神经网络使用反向传播的时候,你真的需要计算激活函数的斜率或者导数,我们看看激活函数的选择,以及如何计算这些函数的斜率。
在这里插入图片描述
可以看到很熟悉的sigmoid激活函数,所以对于任意给定的z值,也许这个z的函数会有某个对应的斜率和导数。在图上某个点画一条线,用高度除以宽度,有一个小三角形,如果 g ( z ) g(z) g(z) s i g m o i d sigmoid sigmoid函数,那么函数的斜率就是 d d z g ( z ) \frac{d}{dz}g(z) dzdg(z)。我们从微积分知道,这就是 g ( x ) g(x) g(x)在z处的斜率,其求导结果为 d d z g ( z ) = g ( z ) ∗ ( 1 − g ( z ) ) \frac{d}{dz}g(z)=g(z)*(1-g(z)) dzdg(z)=g(z)(1g(z)),我们看一下这个式子是否合理。

首先,如果z非常大,比如说z=10,那么g(z)就很接近1,其求导公式告诉我们,在该点的导数很接近0.从图中也可以看出来,当z很大时,g(z)的斜率接近0。相反,如果z等于-10,那么g(z)很接近0,在此处的导数很接近0。在z=0处,g(z)=0.5,通过求导公式可知其导数值为0.25。
在这里插入图片描述
下面看一下tanh激活函数,其求导公式为 d d z g ( z ) = 1 − ( t a n h ( z ) ) 2 \frac{d}{dz}g(z)=1-(tanh(z))^2 dzdg(z)=1(tanh(z))2,其中 t a n h ( z ) = e z − e − z e z + e − z tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}} tanh(z)=ez+ezezez。当z很大或者z很小时,其导数都接近0。当z=0时,tanh(z)=0,斜率实际上等于1。
在这里插入图片描述
最后看一下ReLU和带泄漏的ReLU激活函数的导数。对于ReLU,其公式为 g ( x ) = m a x ( 0 , z ) g(x)=max(0,z) g(x)=max(0,z),如果z小于0,其导数等于0,如果z大于0,其导数等于1。在z=0的地方斜率是没有定义的,因为此处不可导。但如果你在软件中实现这个算法,可能数学上不是百分之百正确,但实际上是可行的,如果z刚好在0,可以令导数为1或者令导数为0,这其实无关紧要的。
在这里插入图片描述
最后如果你在训练自己的网络时用带泄漏的ReLU激活函数,其公式为 g ( z ) = m a x ( 0.01 ∗ z , z ) g(z)=max(0.01*z,z) g(z)=max(0.01z,z),所以如果z小于0时,其导数为0.01,。如果z大于0,其导数为1。z等于0时,此处是不可导的,但是可以写一段代码去定义这个梯度,在z=0处令其导数为0.01或者1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值