行莫
行莫
发布于 2025-12-26 / 18 阅读
0
0

激活函数:为什么神经网络需要激活函数

激活函数:为什么神经网络需要激活函数

目录

  1. 引言:从画直线到画曲线
  2. 第一部分:没有激活函数会发生什么?
  3. 第二部分:激活函数的核心作用
  4. 第三部分:激活函数如何让网络变强大
  5. 第四部分:激活函数的本质理解
  6. 第五部分:激活函数在神经网络中的位置
  7. 总结与回顾

引言:从画直线到画曲线

一个简单的类比

想象你是一个画家,有两种画笔:

画笔A(没有激活函数)

  • 只能画直线
  • 无论怎么画,都只能画出直线
  • 即使叠加很多层,还是直线

画笔B(有激活函数)

  • 可以画曲线
  • 可以画复杂的图形
  • 可以画出任何你想要的形状

神经网络就像画家,激活函数就是让画笔能够画曲线的关键!

什么是激活函数?

**激活函数(Activation Function)**是神经网络中的一个关键组件,它决定了神经元是否"激活"(产生输出),以及输出的强度。

简单理解

  • 激活函数就像一个"转换器"
  • 它把输入信号转换成输出信号
  • 它让神经网络能够学习非线性关系

类比理解

  • 就像开关:决定信号是否通过
  • 就像放大器:决定信号放大的程度
  • 就像变形器:把直线变成曲线

第一部分:没有激活函数会发生什么?

问题1:多层网络退化为单层

类比:多个透明玻璃叠加

想象你有多块完全透明的玻璃,每块玻璃上画了一条直线:

玻璃1:画了一条直线
玻璃2:画了一条直线
玻璃3:画了一条直线

当你把这些玻璃叠加在一起时,你看到了什么?

答案:还是一条直线!

为什么?

  • 每块玻璃都是透明的(线性变换)
  • 直线叠加直线,还是直线
  • 无论叠加多少层,结果都一样

神经网络没有激活函数就是这样

  • 每层都是线性变换
  • 线性变换叠加线性变换,还是线性变换
  • 无论有多少层,都等价于单层

数学证明

假设有一个3层神经网络,没有激活函数

第1层
$$
h_1 = W_1 \cdot x + b_1
$$

第2层
$$
h_2 = W_2 \cdot h_1 + b_2 = W_2(W_1 \cdot x + b_1) + b_2
$$

展开后:
$$
h_2 = W_2 W_1 \cdot x + W_2 b_1 + b_2
$$

第3层(输出层)
$$
y = W_3 \cdot h_2 + b_3 = W_3(W_2 W_1 \cdot x + W_2 b_1 + b_2) + b_3
$$

最终可以写成:
$$
y = (W_3 W_2 W_1) \cdot x + (W_3 W_2 b_1 + W_3 b_2 + b_3)
$$

结论
$$
y = W_{等效} \cdot x + b_{等效}
$$

等价于一个单层线性模型

类比理解

  • 就像把3个线性函数叠加,结果还是线性函数
  • 就像把3个"画直线的工具"叠加,还是只能画直线
  • 就像把3个"透明玻璃"叠加,还是透明的

问题2:无法学习非线性关系

类比:只能解决"直线问题"

想象你要解决这些问题:

问题1:分类苹果和橙子

  • 可以用一条直线分开:✅ 可以解决

问题2:分类XOR问题

输入 (x₁, x₂)    输出
(0, 0)         0
(0, 1)         1
(1, 0)         1
(1, 1)         0
  • 无法用一条直线分开:❌ 无法解决

问题3:识别手写数字

  • 需要复杂的曲线边界:❌ 无法解决

问题4:理解自然语言

  • 需要理解上下文和语义:❌ 无法解决

没有激活函数的神经网络

  • ✅ 可以解决:线性可分的问题
  • ❌ 无法解决:非线性问题(现实中的大多数问题)

类比理解

  • 就像只能画直线的画家,无法画出曲线和复杂图形
  • 就像只能做加减法的计算器,无法做乘除法
  • 就像只能走直线的机器人,无法转弯

问题3:表达能力有限

类比:只能做简单运算

没有激活函数的网络

  • 只能做:线性组合
  • 就像:$y = ax + b$(一次函数)
  • 无法表达:$y = x^2$、$y = \sin(x)$、$y = e^x$ 等复杂函数

类比理解

  • 就像只能做加法的计算器,无法做乘法、除法、开方
  • 就像只能画直线的尺子,无法画圆、曲线
  • 就像只能走直线的路,无法走弯曲的路

第二部分:激活函数的核心作用

作用1:引入非线性

类比:给画笔增加"弯曲能力"

没有激活函数

输入 → 线性变换 → 输出(还是直线)

有激活函数

输入 → 线性变换 → [激活函数] → 非线性输出(变成曲线)

类比理解

  • 就像给直尺加上圆规,可以画圆了
  • 就像给直线画笔加上曲线画笔,可以画曲线了
  • 就像给只能走直线的车加上转向功能,可以转弯了

实际例子:识别圆形

任务:判断一个点是否在圆内

没有激活函数

  • 只能画直线边界
  • 无法准确判断圆形区域
  • ❌ 失败

有激活函数

  • 可以学习曲线边界
  • 可以准确判断圆形区域
  • ✅ 成功

类比理解

  • 就像用直尺无法准确测量圆形,但用圆规可以
  • 就像用直线无法包围圆形区域,但用曲线可以

作用2:让多层网络有意义

类比:多个"变形器"叠加

想象你有多个变形器

没有激活函数(线性变形器):

输入 → 变形器1(直线) → 变形器2(直线) → 变形器3(直线) → 输出
结果:还是直线(没有意义)

有激活函数(非线性变形器):

输入 → 变形器1(曲线) → 变形器2(更复杂的曲线) → 变形器3(非常复杂的曲线) → 输出
结果:可以表达非常复杂的形状(有意义)

类比理解

  • 就像多个透明玻璃叠加 vs 多个彩色玻璃叠加
  • 就像多个直线叠加 vs 多个曲线叠加
  • 就像多个简单工具叠加 vs 多个复杂工具叠加

数学理解

有激活函数的3层网络

第1层
$$
h_1 = f_1(W_1 \cdot x + b_1)
$$
其中 $f_1$ 是激活函数(非线性)

第2层
$$
h_2 = f_2(W_2 \cdot h_1 + b_2) = f_2(W_2 \cdot f_1(W_1 \cdot x + b_1) + b_2)
$$

第3层
$$
y = f_3(W_3 \cdot h_2 + b_3)
$$

关键:由于激活函数 $f_1$、$f_2$、$f_3$ 都是非线性的,所以整个网络变成了非线性函数,可以表达非常复杂的模式!

类比理解

  • 就像把多个非线性函数组合在一起
  • 就像把多个曲线叠加,形成复杂图形
  • 就像把多个工具组合,形成强大的工具

作用3:模拟神经元的阈值效应

类比:神经元的"开关"机制

生物神经元

  • 只有当输入信号足够强时,才会"兴奋"并产生输出
  • 就像开关:信号弱时关闭,信号强时打开

激活函数模拟这个过程

  • 输入信号弱 → 输出小(或不输出)
  • 输入信号强 → 输出大

类比理解

  • 就像水龙头:水压小时不出水,水压大时出水
  • 就像电灯开关:电压低时不亮,电压高时亮
  • 就像门禁系统:信号弱时不开门,信号强时开门

实际意义

没有激活函数

  • 神经元总是"兴奋"(总是输出)
  • 无法模拟阈值效应
  • 就像永远开着的门,没有选择性

有激活函数

  • 神经元有"阈值"(只有信号强时才输出)
  • 可以模拟生物神经元的行为
  • 就像有门禁的门,有选择性

作用4:控制输出范围

类比:不同类型的"输出器"

不同的任务需要不同的输出范围:

任务1:二分类(判断是/否)

  • 需要输出:0 或 1(概率)
  • 就像开关:只有开和关两种状态

任务2:多分类(识别数字0-9)

  • 需要输出:每个类别的概率(0-1之间,且总和为1)
  • 就像投票系统:每个选项的得票率

任务3:回归(预测价格)

  • 需要输出:任意数值
  • 就像温度计:可以显示任何温度值

激活函数可以控制输出范围

  • 有些激活函数输出 0-1(适合概率)
  • 有些激活函数输出 -1 到 1(适合对称输出)
  • 有些激活函数输出任意值(适合回归)

类比理解

  • 就像不同类型的容器:有的只能装0-1升,有的可以装任意量
  • 就像不同类型的显示器:有的只显示0/1,有的显示任意数字
  • 就像不同类型的乐器:有的音域窄,有的音域宽

第三部分:激活函数如何让网络变强大

能力1:学习复杂模式

类比:从简单到复杂的进化

没有激活函数(只能学习简单模式):

输入 → 简单模式 → 输出
就像:只能识别"直线"、"矩形"等简单形状

有激活函数(可以学习复杂模式):

输入 → 简单模式 → 复杂模式 → 更复杂模式 → 输出
就像:可以识别"猫"、"狗"、"人脸"等复杂对象

实际例子:图像识别

识别"猫"的过程

第1层(有激活函数)

  • 学习识别:边缘、线条
  • 就像基础特征提取器

第2层(有激活函数)

  • 学习识别:形状、纹理
  • 就像中级特征提取器

第3层(有激活函数)

  • 学习识别:眼睛、耳朵、鼻子
  • 就像高级特征提取器

输出层

  • 综合所有特征,判断是否为"猫"
  • 就像最终决策器

如果没有激活函数

  • 每层都只能做线性变换
  • 无法学习这种层次化的特征
  • 就像只能做简单运算的计算器,无法做复杂计算

类比理解

  • 就像从字母到单词到句子的层次结构
  • 就像从零件到部件到整机的组装过程
  • 就像从音符到旋律到歌曲的创作过程

能力2:处理非线性问题

类比:从一维到多维的扩展

线性问题(没有激活函数可以解决):

  • 就像一维问题:只需要一条直线
  • 例子:根据身高预测体重(大致线性关系)

非线性问题(需要激活函数):

  • 就像多维问题:需要曲线、曲面
  • 例子:根据像素识别图像(复杂的非线性关系)

实际例子:XOR问题

XOR问题(异或问题):

输入 (x₁, x₂)    输出
(0, 0)         0
(0, 1)         1
(1, 0)         1
(1, 1)         0

没有激活函数

  • 无法用一条直线分开
  • ❌ 无法解决

有激活函数

  • 可以用曲线分开
  • ✅ 可以解决

类比理解

  • 就像用直线无法包围圆形区域,但用曲线可以
  • 就像用平面无法包围球体,但用曲面可以
  • 就像用简单规则无法解决复杂问题,但用复杂规则可以

能力3:组合简单特征形成复杂特征

类比:从积木到建筑

没有激活函数

  • 就像只能叠加积木,无法改变形状
  • 无论叠加多少层,还是简单的积木堆

有激活函数

  • 就像可以组合积木,形成复杂建筑
  • 每一层都在前一层的基础上,增加新的复杂度

实际例子:自然语言理解

理解句子"我喜欢吃苹果"

第1层(有激活函数)

  • 识别:单词"我"、"喜欢"、"吃"、"苹果"
  • 就像词汇识别器

第2层(有激活函数)

  • 识别:语法结构(主谓宾)
  • 就像语法分析器

第3层(有激活函数)

  • 识别:语义关系(谁-动作-对象)
  • 就像语义理解器

输出层

  • 综合理解:表达"我喜欢吃苹果"这个意思
  • 就像意思理解器

如果没有激活函数

  • 每层都只能做简单的线性组合
  • 无法学习这种层次化的理解
  • 就像只能识别单词,无法理解句子

类比理解

  • 就像从音符到旋律到歌曲的层次结构
  • 就像从笔画到字到词到句的层次结构
  • 就像从像素到边缘到形状到物体的层次结构

第四部分:激活函数的本质理解

本质1:非线性变换器

类比:不同类型的"转换器"

激活函数就像一个转换器

线性转换器(没有激活函数):

  • 输入 → 输出(按比例放大/缩小)
  • 就像放大器:只能放大,不能变形

非线性转换器(有激活函数):

  • 输入 → 输出(可以变形、弯曲、压缩)
  • 就像变形器:可以改变形状

类比理解

  • 就像直尺 vs 圆规(一个只能画直线,一个可以画圆)
  • 就像放大器 vs 变形器(一个只能放大,一个可以变形)
  • 就像直线画笔 vs 曲线画笔(一个只能画直线,一个可以画曲线)

本质2:决策函数

类比:不同类型的"决策器"

激活函数就像一个决策器

决策1:是否激活?

  • 输入信号弱 → 不激活(输出小)
  • 输入信号强 → 激活(输出大)
  • 就像开关:决定是否打开

决策2:激活程度?

  • 输入信号不同 → 激活程度不同
  • 就像音量调节器:可以调节音量大小

类比理解

  • 就像门禁系统:决定是否开门,以及开多大
  • 就像水龙头:决定是否出水,以及出多少水
  • 就像电灯开关:决定是否亮,以及多亮

本质3:特征提取器

类比:不同类型的"过滤器"

激活函数就像一个过滤器

过滤1:筛选重要特征

  • 只让重要的信号通过
  • 就像筛子:只让符合条件的东西通过

过滤2:增强重要特征

  • 增强重要的信号
  • 就像放大器:放大重要的信号

类比理解

  • 就像过滤器:过滤掉不重要的信息,保留重要的信息
  • 就像放大器:放大重要的信号,减弱不重要的信号
  • 就像筛选器:筛选出有用的特征,忽略无用的特征

本质4:表达能力增强器

类比:从简单工具到复杂工具

没有激活函数

  • 表达能力:有限(只能表达线性关系)
  • 就像简单工具:功能有限

有激活函数

  • 表达能力:强大(可以表达非线性关系)
  • 就像复杂工具:功能强大

类比理解

  • 就像从直尺到圆规:增加了画圆的能力
  • 就像从加法器到计算器:增加了各种运算能力
  • 就像从简单画笔到复杂画笔:增加了画复杂图形的能力

第五部分:激活函数在神经网络中的位置

位置:每一层的输出

类比:流水线上的"加工站"

想象一个工厂流水线

原材料 → 加工站1 → [激活函数1] → 半成品1
         ↓
半成品1 → 加工站2 → [激活函数2] → 半成品2
         ↓
半成品2 → 加工站3 → [激活函数3] → 最终产品

神经网络就像这个流水线

输入 → 第1层 → [激活函数] → 隐藏层1
      ↓
隐藏层1 → 第2层 → [激活函数] → 隐藏层2
      ↓
隐藏层2 → 第3层 → [激活函数] → 输出

类比理解

  • 每一层就像一个加工站:对数据进行处理
  • 激活函数就像质量检测站:决定是否通过,以及通过的程度
  • 多层叠加就像多个加工站串联:逐步加工,最终得到产品

作用:连接相邻层

类比:不同层之间的"桥梁"

激活函数就像桥梁

没有激活函数(线性桥梁):

  • 只能传递线性信息
  • 就像直线桥梁:只能走直线

有激活函数(非线性桥梁):

  • 可以传递非线性信息
  • 就像曲线桥梁:可以走曲线

类比理解

  • 就像不同楼层之间的电梯:连接不同楼层
  • 就像不同城市之间的道路:连接不同城市
  • 就像不同模块之间的接口:连接不同模块

重要性:不可或缺的组件

类比:汽车的"发动机"

激活函数就像汽车的发动机

没有发动机

  • 汽车无法行驶
  • 就像没有激活函数的神经网络:无法学习复杂模式

有发动机

  • 汽车可以行驶
  • 就像有激活函数的神经网络:可以学习复杂模式

类比理解

  • 就像电脑的CPU:没有CPU,电脑无法运行
  • 就像手机的电池:没有电池,手机无法工作
  • 就像房子的地基:没有地基,房子无法建造

总结与回顾

核心概念回顾

1. 激活函数的本质:

  • 非线性变换器:把线性变换变成非线性变换
  • 决策函数:决定神经元是否激活,以及激活程度
  • 特征提取器:筛选和增强重要特征
  • 表达能力增强器:增强网络的表达能力

2. 为什么需要激活函数?

问题1:多层网络退化为单层

  • 没有激活函数:多层网络等价于单层
  • 有激活函数:多层网络才有意义

问题2:无法学习非线性关系

  • 没有激活函数:只能学习线性关系
  • 有激活函数:可以学习非线性关系

问题3:表达能力有限

  • 没有激活函数:表达能力有限
  • 有激活函数:表达能力强大

3. 激活函数的作用:

作用1:引入非线性

  • 让网络能够学习复杂模式
  • 就像给画笔增加"弯曲能力"

作用2:让多层网络有意义

  • 多层网络才能真正发挥作用
  • 就像多个"变形器"叠加

作用3:模拟神经元的阈值效应

  • 模拟生物神经元的行为
  • 就像"开关"机制

作用4:控制输出范围

  • 适应不同任务的需求
  • 就像不同类型的"输出器"

关键类比总结

概念类比理解
没有激活函数只能画直线表达能力有限
有激活函数可以画曲线表达能力强大
多层网络没有激活函数多个透明玻璃叠加还是透明(没有意义)
多层网络有激活函数多个彩色玻璃叠加形成复杂图案(有意义)
激活函数的作用变形器、开关、过滤器转换、决策、筛选

学习要点

  1. 理解激活函数的必要性:没有激活函数,神经网络无法学习复杂模式
  2. 理解激活函数的作用:引入非线性、让多层网络有意义、模拟神经元行为
  3. 理解激活函数的本质:非线性变换器、决策函数、特征提取器
  4. 理解激活函数的位置:每一层的输出,连接相邻层

实际应用建议

  1. 选择合适的激活函数:根据任务类型选择合适的激活函数
  2. 理解激活函数的作用:不要只是使用,要理解为什么需要
  3. 实验不同的激活函数:在实际项目中尝试不同的激活函数
  4. 关注激活函数的特性:了解不同激活函数的特点和适用场景

延伸思考

  1. 为什么不同的激活函数有不同的效果?

    • 不同的激活函数有不同的数学特性
    • 不同的激活函数适合不同的任务
  2. 如何选择激活函数?

    • 根据任务类型选择
    • 根据网络结构选择
    • 根据经验选择
  3. 激活函数的发展趋势?

    • 从简单到复杂
    • 从固定到自适应
    • 从单一到多样

评论