WMX · 随记
·AI· 3 分钟阅读

ReLU 的分段线性:非线性来自哪里

多层线性变换连在一起仍可合并成一个线性变换。激活函数引入非线性,才让网络能表达更复杂的关系。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

But what is a neural network?

结合模型讲解理解本文实验的背景;正文提供可独立运行的简化示例。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

多层线性变换连在一起仍可合并成一个线性变换。激活函数引入非线性,才让网络能表达更复杂的关系。

理解核心机制

ReLU 返回 max(0,x),正区间斜率为一,负区间为零。它本身很简单,但不同神经元形成不同的分段区域,组合后能得到复杂函数。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python7 行 · 可横向滚动
def relu(x):
    return max(0.0, x)
def triangle(x):
    return relu(x) - 2 * relu(x - 1) + relu(x - 2)
values = [triangle(x) for x in (-1, 0, 0.5, 1, 1.5, 2, 3)]
assert values == [0.0, 0.0, 0.5, 1.0, 0.5, 0.0, 0.0]
print(values)

适用边界与常见误区

零点处经典导数不存在,框架会采用约定的梯度。长期落在负区间的单元可能缺乏梯度,但不能只凭一次零输出判断神经元已经失效。

继续练习

改变折点位置与各项系数,构造梯形函数,并解释为什么纯线性层无法产生相同的折点。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档