二、激活函数1、激活函数知识1.1 激活函数概念每个神经元做的事情线性变换非线性激活激活函数sigma就是“”非线性若没有它100层网络 1层网络线性描述的是一种按比例变化和可叠加的直接关系在几何上通常表现为一条直线。如果没有激活函数多层线性变换等价于单层线性变换yW3(W2(W1xb1) b2) b3 (W3W2W1)x常数无论堆多少层最终还是线性变换100层 1层激活函数在每一层之间插入一道非线性的弯让神经网络得以拟合任意复杂的函数。1.2 激活函数的基本要求要求说明非线性激活函数本身不能是线性的否则多层堆叠没有意义几乎处处可导反向传播需要计算梯度梯度稳定导数不能太大梯度爆炸或太小梯度消失计算高效前向和反向都要快会被调用上亿次1.3 激活函数发展史阶跃函数1958问题导数几乎处处为0反向传播时梯度无法通过。Sigmoid1986优点处处可导输出在0,1可解释为概率。缺点两端饱和导致梯度消失|x|大时导数趋近于0。Tanh1990优点输出在-1,1零中心优化更顺畅。缺点仍然是s型函数两端饱和问题存在。ReLU2010优点正半轴导数恒为1梯度畅通无阻计算极快比较运算产生稀疏激活负值输出0缺点死亡ReLU负值输出永远为0梯度为0无法恢复输出非零中心Leaky ReLU / GELU / Swish针对ReLU改进Leaky ReLU负半轴给一个小斜率避免神经元死亡GELU平滑近似Transformer标配SwishGoogle用NAS搜索出来的激活函数性能优秀1.4 激活函数选择指南场景推荐激活函数输出层二分类Sigmoid输出层多分类Softmax隐藏层普通CNN/RNNReLU隐藏层TransformGELU/SiLU死亡神经元多时Leaky ReLU / ELU1.5 激活函数总结