人工神经网络有哪些常用的激活函数?
4个回答
激活函数一般有两种情况。
第一种情况是,激活函数作用在前一层各个节点输出值的线性组合上。这个线性组合的结果是一个数值,而不是向量。这种情况下的常用激活函数有:
1. 恒等函数 identity function
$$f(x)=x$$
2. 分段线性函数 piece-wise linear function
$$f(x)=\begin{cases}0, \text{ if }x\leq u \\ ax+b, \text{ if } u < x < v \\ 1, \text{ if } x\geq v \end{cases}$$
$u,v,a,b$是参数。
3. 阶梯函数 step function
$$f(x)=\begin{cases}0, \text{ if }x\leq 0\\ 1, \text{ if }x>0\end{cases}$$
4. 双曲正切函数 tanh function
$$f(x)=\tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}$$
5. 修正线性函数 reLU function
$$f(x)=reLU(x)=\begin{cases}0, \text{ if }x<0 \\ x, \text{ if }x\geq 0\end{cases}$$
6. S形函数 Sigmoid function
$$f(x)=\frac{1}{1+e^{-x}}$$
7. 反正切函数 ArcTan function
$$f(x)=\text{arctan}(x)$$
8. 高斯函数 Gaussian
$$f(x)=e^{-x^2}$$
第二种情况是,激活函数直接作用在前一层输出值上。也就是说$x$此时是一个向量。这种情况下的常用激活函数有:
9. Softmax function
$$f(x_1,x_2,\cdots, x_m)_i=\frac{e^{x_i}}{\sum_{j=1}^me^{x_j}}$$
10. Maxout function
$$f(x_1,x_2,\cdots,x_m)=\max (x_1,x_2,\cdots, x_m)$$
参考wiki
SofaSofa数据科学社区DS面试题库 DS面经除了上面那位同学提到的那些基本的激活函数,还有一些改进的激活函数。
比如LeakyReLU,PReLU,ELU,ThresholdedReLU等等。
可以参考keras里的介绍。