1. 激活函数(Activation functions)

1.1 激活函数(Activation functions)

  • 选择激活函数的经验法则

如果输出是0、1值(二分类问题),则输出层选择sigmoid函数,然后其它的所有单元都选择Relu函数。

这是很多激活函数的默认选择,如果在隐藏层上不确定使用哪个激活函数,那么通常会使用Relu激活函数。有时,也会使用tanh激活函数,但Relu的一个优点是:当是负值的时候,导数等于0。

这里也有另一个版本的Relu被称为Leaky Relu。

当是负值时,这个函数的值不是等于0,而是轻微的倾斜,如图。

这个函数通常比Relu激活函数效果要好,尽管在实际中Leaky ReLu使用的并不多。

1. 激活函数(Activation functions)_第1张图片

  • 概括一下不同激活函数的过程和结论

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

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

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



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

事实证明如果在隐藏层用线性激活函数,在输出层用sigmoid函数,那么这个模型的复杂度和没有任何隐藏层的标准Logistic回归是一样的。

在这里线性隐层一点用也没有,因为这两个线性函数的组合本身就是线性函数,所以除非引入非线性,否则无法计算更有趣的函数,即使网络层数再多也不行。

只有一个地方可以使用线性激活函数------g(z)=z,就是在做机器学习中的回归问题。 是一个实数,举个例子,比如想预测房地产价格, 就不是二分类任务0或1,而是一个实数,从0到正无穷。如果是个实数,那么在输出层用线性激活函数也许可行,你的输出也是一个实数,从负无穷到正无穷。

总而言之,不能在隐藏层用线性激活函数,可以用ReLU或者tanh或者leaky ReLU或者其他的非线性激活函数,唯一可以用线性激活函数的通常就是输出层。

你可能感兴趣的:(神经网络与深度学习—吴恩达,深度学习)