吴恩达神经网络和深度学习-学习笔记-2-激活函数

sigmoid

在这里插入图片描述
除非在二元分类的输出层,否则千万不要用
吴老师几乎没用过,因为tanh几乎在所有场合都更优越

tanh

在这里插入图片描述
激活函数tanh()的效果几乎总比sigmoid函数好,因为tanh的输出位于[-1,1]之间,激活函数tanh的平均值就更接近0.
你可能需要平移所有数据,让数据平均值为0。使用tanh函数而不是sigmoid函数也有类似数据中心化的作用(使数据的平均值接近0)。而这实际上让下一层的学习更方便一些。

在大部分场合,tanh都要比sigmoid更优越一些。
但是在输出层output layer,将输出yhat定在[0,1]之间要更合理。所以sigmoid一般用于输出层。
也就是说在隐藏层hidden layer中用tanh代替sigmoid,在输出层output layer依旧使用sigmoid。

但是tanh函数和sigmoid函数都存在一个相同的问题,那就是当z过大或过小时,导数的梯度或者说这个函数的斜率就会变得很小,这样会拖慢梯度下降算法

ReLU(修正线性单元)

a=max(0,z)。ReLU是最常用的激活函数
即z<0时斜率为0,z>0时斜率为1。
在z=0的时候是没有导数的定义的,而且在实际应用中,数据为0.000……00……的概率非常小,所以把z=0处的导数定为1或0都是可以的。

在选择激活函数时有一些经验法则:
如果你的输出值时0和1,如果你在做二元分类,那么sigmoid函数很适合作为输出层的激活函数,然后其他单元都用ReLU。
ReLU现在已经变成激活函数的默认选择了。如果你不确定隐藏层应该用哪个,就用ReLU作为激活函数。
ReLU的一个缺点是,当z<0时导数等于0,虽然这在实践中没有什么问题。
但ReLU还有另一个版本,叫做带泄露的ReLU(leaky ReLU)。
在这里插入图片描述
当z<0时斜率不再为0,它有一个很平缓的斜率。leaky ReLU通常效果比ReLU要好,但在实际中的使用频率没有那么高。
ReLU的优点是,当z很大时,函数的斜率也和0差很远,所以神经网络的学习速度通常会快得多

事实上很难知道什么参数对你的问题最有效
所以一个建议是:如果你不确定哪种激活函数最有效,你可以先试试,在你的保留交叉验证数据集上跑跑,或者在开发集上跑跑(Q:什么是保留交叉验证数据集和开发集,怎么跑),看哪个参数效果更好,就用哪个

非线性激活函数的必要性

在这里插入图片描述
简单来说,如果不使用激活的函数的话(或使用线性激活函数),多层神经网络可以用一层网络来等效替代(因为多个线性函数的组合仍为线性函数)。
所以,想要实现更复杂的非线性功能,必须引入非线性的成分。
所以,要实现多层的神经网络,必须使用非线性的激活函数。

==
简单来说,唯一可以用线性激活函数的地方,通常就是输出层。
在隐藏层除了一些极特殊情况,都是用的非线性激活函数。==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值