主要包括:
- 为什么需要非线性激活函数?
- 常见的激活函数有哪些?
- python代码可视化激活函数在线性回归中的变现
- pytorch激活函数的源码
为什么需要非线性的激活函数呢?
只是将两个或多个线性网络层叠加,并不能学习一个新的东西,接下来通过简单的例子来说明一下:
假设
- 输入 x x x
- 第一层网络参数: w 1 = 3 , b 1 = 1 w_1 = 3, b_1=1 w1=3,b1=1
- 第二层网络参数: w 2 = 2 , b 2 = 2 w_2=2, b_2=2 w2=2,b2=2
经过第一层后输出为 y 1 = 3 × x + 1 y_1 = 3\times x + 1 y1=3×x+1经过第二层后的输出为: y 2 = 2 × y 1 + 2 = 2 × ( 3 × x + 1 ) + 2 = 6 × x + 4 y_2=2\times y_1 +2 = 2\times(3\times x+ 1) + 2=6 \times x +4 y2=2×y1+2=2×(3×x+1)+2=6×x+4
是不是等同于一层网络: w = 6 , b = 4 w=6,b=4 w=6,b=4
所以说简单的堆叠网络层,而不经过非线性激活函数激活,并不能学习到新的特征学到的仍然是线性关系。
接下来看一下经过激活函数呢?
仍假设
- 输入 x x x
- 第一层网络参数: w 1 = 3 , b 1 = 1 w_1 = 3, b_1=1 w1=3,b1=1
- 经过激活函数Relu: f ( x ) = m a x ( 0