机器学习中的激活函数(真·函数)
学过机器学习的都知道,激活函数很重要,没有它们就只有线性神经网路(效果堪忧)。并且它们还决定了训练的精准度和速度。这主要是应为在做backpropagation的时候,决定一个神经网络中的hidden layer里的一个神经元的weight和bias改怎么调需要激活函数的导数。现在市面上主要的激活函数大概是这些:1. Sigmoid2. Tanh3. ReLU5. ELU6. SELU7. SiL
学过机器学习的都知道,激活函数很重要,没有它们就只有线性神经网路(效果堪忧)。并且它们还决定了训练的精准度和速度。这主要是应为在做backpropagation的时候,决定一个神经网络中的hidden layer里的一个神经元的weight和bias改怎么调需要激活函数的导数。
现在市面上主要的激活函数大概是这些:
1. Sigmoid
2. Tanh
3. ReLU
4. Leaky ReLU
5. ELU
6. SELU
7. SiLU
8. swish
9. mish
1. Sigmoid:

2. Tanh.

3. ReLU
有点不好搞,因为大部分的函数是这样的:
这虽然是个函数,但是我想自己想办法解决。
我们可以看到当x<=0的时候,x和|x|会相互抵消,所以会变成0。但是当x>0的时候,x和|x|会得到2x,所以要÷2。

4. Leaky ReLU
Leaky ReLU比ReLU更好,应为它可以解决ReLU的一个问题:神经元死亡问题(可以上网查,我在这里就不细讲了)。
现在,我需要用另一种方式。
首先,我需要找到一个公式,当x<0的时候,函数输出0,否则输出1。
OK,我也是直接找到这个公式好吧。
这个公式来源于之前的公式:
。
ReLU的公式在x<=0的时候,输出0,但是当x>0的时候输出x。
而我们这个公式把输出除以x,所以就能得到1。
Leaky ReLU的大部分函数是这样的,alpha的值一般在0.01。
而我自己的函数是这样的。
这个函数是一个从两个函数的出来的:
而这两个函数又可以被分解为:
会在x<0的情况下输出0,在x>=0的时候输出1。
所以大家理解一会就会懂了。

5. ELU
开始有一点复杂了。
一般alpha=1。
我们能推算出ELU的公式:
简化一下
我来解释一下:
设
首先,我们想要在x>0的时候用y=x这个方程, 并且,在x<=0的时候用,所以,我们要把D(x)乘以x,然后把它加到D(-x)乘以
。比如说,如果x>0,D(x)就会输出1,而D(-x)会输出零。所以整个算式就变成:
所以x>0的时候就会得到x。
但是如果x<=0,就会变成:
所以就会得到。

6. SELU
SELU和ELU差不多。
其实就是ELU前面乘了一个数,并且alpha被设为了一个特定的数。这两个数使用证明得出来的。

7. SiLU
SiLU的公式很简单:
熟悉激活函数的肯定一眼就能看出来SiLU就是x*sigmoid(x)。

8. swish
谷歌搞出来的。
公式为:
相信很多人一眼就看出来swish就是。

9. mish
SiLU的姐妹函数。
公式为:

最后,所有的公式都放到这个链接里面了。
致谢:
Sigmiod、Tanh、Relu、Mish...等激活函数的那点事儿 - 知乎
https://zhuanlan.zhihu.com/p/139696588
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)