一、常用的几种激活函数
1、线性激活函数
2、Sigmoid激活函数
,,
3、ReLU激活函数
当 z ≥ 0时,g(z) = z,当 z<0时,g(z) = 0。也可以写成g(z) = max(0,z)
二、选择激活函数
1、选择输出层的激活函数,依据目标值y的类型:
- 当处理二进制分类问题时,激活函数优先选择Sigmoid函数,预测y=1的概率。
- 当处理回归问题,y可以是正数,也可以是负数时,激活函数优先选择线性函数。
- 当处理回归问题,y只能取非负数时,激活函数优先选择ReLU函数。
2、选择隐藏层的激活函数,目前最常用的是ReLU激活函数,原因:
- ReLU函数计算速度更快,只需要计算0和z的最大值
- ReLU函数只在图的一部分变得非常平坦,而Sigmoid函数在图的两侧会变得非常平坦,导致梯度下降会很慢
在TensorFlow中,代码实现如下:
隐藏层激活函数不要选择线性函数,原因:
示例1:输入一个值x,如果隐藏层和输出层的激活函数都选择线性函数:g(z)=z
把的激活函数代入到输出层的激活函数中计算得到,本质上是输入值x的线性函数,那就不需要隐藏层了。
可以得到,线性函数的线性函数本身是线性函数。
示例2:如果隐藏层的激活函数都是线性函数,输出层的激活函数是Sigmoid函数
从、激活函数代入计算到,仍然是输入值x的线性函数,输出层的激活函数仍然是Sigmoid函数,相当于隐藏层没有起什么作用。
因此,隐藏层激活函数不要选择线性函数。
学习来源:吴恩达机器学习,P61-P63,8.1-8.3节