1,神经元在做什么?
神经网络的每个神经元都在做2次运算
1,线性运算 z=wx+b 对输入进行加权求和,权重w和偏移量b
2,非线性映射 a=f(z)通过激活函数得到最终的信号输出
2,为什么要用非线性变换
没有激活函数,100 层 = 1 层
假设去掉所有激活函数,一个三层神经网络的输出:

把括号展开后整体退化为一次线性变换:

无论堆多少层,没有激活函数的神经网络始终是一个线性模型。
3,为什么不一步到位?
既然非线性这么重要,为什么不干脆把 Wx+b这一步就做成非线性?比如 z=Wx
2+b,省掉激活函数岂不更香?
从理论上讲没问题------但工程上做不到。
原因有两个:① 线性运算的工程红利太大,丢不起;② 强非线性叠加会引发数值灾难。
理由 ① 线性的工程红利
Wx+b看似平平无奇,背后是几十年的数值计算积累:
硬件加速
GPU / TPU 就是为矩阵乘法量身打造的,cuBLAS 几毫秒就能算完亿级规模的 Wx。
梯度极简

反向传播一行公式搞定。
一旦把它换成复杂非线性,这些红利全部消失。
理由 ② 数值会指数级膨胀
