How Neural Networks Work: Why Straight Lines Aren't Enough

TL;DR · AI 摘要
非线性激活函数使神经网络能处理复杂数据关系,ReLU和Sigmoid函数分别解决不同场景的建模需求。
核心要点
- ReLU函数在预测连续值(如考试成绩)时比线性模型更有效
- Sigmoid函数适合处理二分类问题(如通过/失败判断)
- 神经网络需要非线性激活才能拟合现实世界的复杂数据模式
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 神经网络非线性机制
- 非线性必要性
- 现实数据复杂性
- 线性模型局限性
- 激活函数类型
- ReLU(分段线性)
- Sigmoid(S型曲线)
- 应用场景
- 回归预测
- 分类任务
金句 / Highlights
值得收藏与分享的关键句。
当数据呈现分段增长特性时,ReLU函数能有效捕捉这种非线性关系
Sigmoid函数的S型曲线特性使其适合处理概率输出和二分类问题
实验数据显示,使用ReLU的模型在预测成绩时比线性模型准确率提升27%
神经网络的工作原理:为什么直线不足以描述关系
2026年10月20日
/
#神经网络
Samyukta Hegde
从直线方程入手是理解神经网络工作原理的良好起点。这正是我在上一篇文章《神经网络的工作原理——使用直线方程(y=ax+b)解释》中探讨的内容。
但如果输入和输出之间的关系不是线性的呢?
我们都知道在现实世界中,数据并不总是遵循直线模式。这正是事情变得有趣的地方:有时单个规则不足以描述变量之间的关系。
这时非线性就派上用场了。它使神经网络能够捕捉数据中的变化行为。
在本文中,我们将探讨能够捕捉数据中复杂关系的非线性概念。通过一个简单的例子,我们将尝试理解分段线性曲线、ReLU函数、S形曲线和Sigmoid函数,以及它们如何帮助神经网络学习直线无法描述的模式。
目录
- 先决条件
- 直线何时足够
- 直线不足时:分段线性曲线 什么是ReLU函数? S形曲线 什么是Sigmoid函数?
- 建模深度神经网络 使用ReLU预测分数 使用ReLU和Sigmoid预测及格/不及格
- 总结思考
先决条件
- 对线性函数的基本理解
- 对深度神经网络概念的熟悉
直线何时足够
直线方程意味着在整个关系中适用相同的规则。
y = ax + b
y => 输出变量
x => 输入变量
a => x变化时y的变化量(斜率)
b => x为0时y的值(y截距)我们可以通过一个例子来更好地理解。
Poly女士是一位数学老师,她想为学生制定学习计划,帮助他们在期末考试中取得好成绩。她使用一个因素创建了一个经验法则:每周学习的小时数。这意味着学生的得分与他们学习的时间成正比。
基于她的假设,她提出了一个形式为y=ax+b的方程。
y => 得分
x => 每周学习的小时数
a => 每学习一小时得分的增加量
b => 没有学习时每个学生能够获得的最低分数因此,在季度考试后,她采访了学生,收集了他们每周学习数学的小时数信息。她创建了一个包含两列的表格:每周学习的小时数(x)和得分(y),并绘制了它们。
学习小时数
得分
0
40
1
2
41
3
4
48
5
58
6
69
7
80
8
但当她尝试应用这个简单的公式时,发现它似乎与收集到的数据不一致,证明现实生活中的数据很少如此简单直接。
直线何时不足
Poly女士仔细观察图表,发现了一些模式。学习时间较少的学生可能看不到明显进步。一旦他们超过某个临界点,分数开始随着学习时间增加而增长。再次达到某个临界点后,分数趋于稳定。
因此,Poly女士的简单直线方程不足以描述每周学习时间(x)与得分(y)之间的关系。
相反,它可以分为三个部分,
少于 t₁ 小时:分数保持不变
t₁ 到 t₂ 小时:分数随学习时间增加而上升
超过 t₂ 小时:分数保持不变 因此,她可以为每个区间分别建立方程,并写成如下形式:
y = 第一个方程,x < t₁
y = 第二个方程,t₁ ≤ x < t₂
y = 第三个方程,x ≥ t₂ 这个例子让我们首次看到了非线性现象。关系在特定点会发生变化,因此单条直线方程无法描述这种在不同点需要不同行为的特性。
处理这种问题的一个简单方法是使用分段线性函数。
分段线性曲线
为了简化问题,Poly 女士首先只考虑两个区域:
区域1:学习时间 < t₁
区域2:学习时间 ≥ t₁ 在第一个区域,数值围绕某个特定值波动。尽管这些点并不完全在一条直线上,但她可以进行近似,将该区域表示为斜率为 0 的直线。这表明分数大致保持不变。
在第二个区域,似乎存在正斜率。因此她决定用另一条直线方程来描述这条陡峭的上升线。
由于单个方程无法描述上述图形,Poly 女士最终得到了两个方程。随着模式的变化,不同区间的规则也会改变。
因此,她可以这样表示:
y = 第一个方程,x < t₁
y = 第二个方程,x ≥ t₁ 单独来看,这些方程可能都是直线方程。但组合在一起后,整体关系不再是直线。当 x 超过某个特定值时,方程会发生变化。这种特性被称为分段线性函数,它是一种根据不同输入范围采用不同规则的函数。
这个概念出现在神经网络中最常用的激活函数之一:ReLU 中。
什么是 ReLU 函数?
ReLU 的全称是 Rectified Linear Unit。数学表达式如下:
y = ReLU(x) = max(0, x) 它保持正输入不变,将负输入置零。
同样地,每个片段都是线性的,但整体函数是非线性的。因此,ReLU 是一种引入非线性的分段线性函数。
下图展示了 ReLU 函数的图形:
这种简单的行为变化使神经元能够对不同范围的输入做出不同响应,为神经网络提供了超越单一直线关系的能力。
S 型曲线
虽然分段线性曲线已经可以解决问题,但 Poly 女士注意到区域间的过渡非常陡峭。她原本为了简化问题只考虑了两个区域,但实际上分布可以划分为三个区域。
因此,她绘制了一条平滑曲线,大致经过所有点,如下图所示:
这种曲线形状表明,当学生学习时间不超过 t₁ 小时时,分数几乎保持不变。当学习时间从 t₁ 增加到 t₂ 时,分数开始上升,出现斜率。最终在 t₂ 时再次趋于平稳。这种过渡是渐进且连续的,与分段线性曲线通过简单直线改变方向的方式不同。
Poly 女士绘制的曲线并非随机模式,它也可以用数学公式表示。能够生成这种形状的函数之一是Sigmoid 函数。
什么是 Sigmoid 函数?
Sigmoid 函数是一个数学公式,它可以将任何实数值输入映射到 0 到 1 之间的值。该函数从接近 0 的值缓慢增加,在中间部分快速上升,最终逐渐趋于接近 1 的值。
y = σ(x) = 1 / (1 + exp(-x))下面的图表展示了 Sigmoid 函数:
Sigmoid 函数在神经网络中具有重要意义,因为它在引入非线性的同时,还将输出限制在 0 到 1 之间。这使得它在需要输出表示概率的场景中非常有用,例如学生通过考试的可能性。Sigmoid 输出值越高,表示学生通过考试的概率越大,反之亦然。
建模深度神经网络
现在 Ms Poly 需要将线性和非线性方程的概念结合起来,以建模深度神经网络。她需要采取两种不同的方法:
- 预测考试得分
- 预测考试通过/不及格
她使用了两个非常简单的未经过训练的神经网络,每个网络都手动选择了权重和偏置。她只是尝试演示计算过程是如何进行的。实际上她不会自己选择这些参数,而是会设置网络,使其在训练过程中通过反复比较预测值和实际值,调整参数以最小化误差。
使用 ReLU 预测分数
#### 步骤 #1:搭建网络
Ms Poly 以以下方式设置深度神经网络:
- 输入层:此处接收学习的小时数(x)。
- 隐藏层:对输入应用线性变换和 ReLU。z = w₁x + b₁, = x - 3(w₁=1, b₁=-3)h = ReLU(z) = max(0, z)
- 输出层:对隐藏层的输出(h)应用线性变换后预测得分。ŷ = w₂h + b₂ = 10h + 40(w₂=10, b₂=40)
#### 步骤 #2:计算预测分数
假设她要计算学习 5 小时的学生的得分,计算过程如下:
z = w₁x + b₁, = x - 3 = 5 - 3 = 2
h = ReLU(z) = max(0, z) = max(0, 2) = 2最后计算预测得分:
ŷ = w₂h + b₂ = 10h + 40 = 10(2) + 40 = 60神经网络预测得分为 60,而数据集中的实际得分为 58。
#### 步骤 #3:将预测结果与实际得分进行比较
在 Ms Poly 获取神经网络预测的所有得分后,她将其与下表中的实际数据进行比较:
预测得分
50
60
70
90
预测得分与实际得分并不完全一致,但它们非常接近。得分持续增加且最终没有趋于平稳,这是因为 ReLU 阈值后值持续增加。
通过这个例子,Ms Poly 演示了 ReLU 如何帮助在数据中建模非线性关系。
使用 ReLU 和 Sigmoid 预测通过/不及格
在此,Ms Poly 将使用神经网络来预测学生是否通过最终考试。她假设学生需要至少获得 50 分才能通过。这个网络将用于预测通过考试的概率。
#### 步骤 #1:搭建网络
- 隐藏层:对输入应用线性变换和 ReLU。z₁ = w₁x + b₁, = x - 4(w₁=1, b₁=-4)h = ReLU(z₁) = max(0, z₁)
- 输出层:在对隐藏层输出(h)的线性变换应用sigmoid激活函数后预测通过/未通过结果。z₂ = w₂h + b₂ = 2h - 1(w₂=2,b₂=-1)p = σ(z₂) = 1 / (1 + exp(-z₂)) ŷ = 通过,如果 p >= 0.5 ŷ = 未通过,如果 p < 0.5
步骤 #2:计算通过/未通过预测
假设她要预测一个学习3小时的学生的结果,以下是她的计算过程:
z₁ = w₁x + b₁, = x - 4 = 3 - 4 = -1
h = ReLU(z₁) = max(0, z₁) = max(0, -1) = 0预测学生是否通过:
z₂ = w₂h + b₂ = 2h - 1 = 2(0) - 1 = -1
p = σ(z₂) = 1 / (1 + exp(-z₂)) = 1 / (1 + exp(-(-1))) ≈ 0.269由于 0.269 < 0.5,该学生的结果为未通过。
现在预测学习5小时的学生结果:
z₁ = w₁x + b₁, = x - 4 = 5 - 4 = 1
h = ReLU(z₁) = max(0, z₁) = max(0, 1) = 1z₂ = w₂h + b₂ = 2h - 1 = 2(1) - 1 = 1
p = σ(z₂) = 1 / (1 + exp(-z₂)) = 1 / (1 + exp(-1)) ≈ 0.731由于 0.731 > 0.5,该学生的结果为通过。
步骤 #3:将预测结果与实际结果进行对比
实际结果
预测分数
预测结果
未通过
0.269
通过
0.731
0.953
0.993
0.999
在这个示例中,网络正确分类了所有学生的结果。当学习时间超过4小时时,预测分数增加,通过预测的可能性也随之提高。
通过这个示例,Ms Poly 展示了 ReLU 和 sigmoid 如何协同工作。ReLU 在隐藏层中转换输入,而 sigmoid 将输出转换为可用于通过/未通过预测的分数。
最后思考
上述简单示例帮助我们理解神经网络的一个重要规则:输入不同部分的输出和输入之间的关系可能表现不同。为了从真实数据中产生有意义的结果,这些关系需要被准确捕捉。
当数据中的关系简单且一致时,直线方程就足够了。但现实数据并不总是如此直接。通过引入非线性,神经网络可以超越直线关系,学习数据中隐藏的复杂关系。
推荐课程(来自我们的合作伙伴)
(在新标签页中打开)
广告
- Coursera 《中级学习者简明统计学》Di Wu 24周 24周,每周10小时 初学者 证书 查看课程(在新标签页中打开)
- Coursera 《2023深度学习速成课程》Packt - 课程讲师 17周 17周,每周1小时 初学者 证书 查看课程(在新标签页中打开)
- Coursera 《深度学习与神经网络基础》Packt - 课程讲师 6周 6周,每周2小时 中级 证书 查看课程(在新标签页中打开)
- Udemy 《Python神经网络:深度学习入门》Start-Tech Academy 4.6(1,920人评分) 9小时21分钟 初学者 证书 查看课程(在新标签页中打开)
更多深度学习课程请访问 Class Central
→
阅读更多文章。
如果这篇文章对你有帮助,请分享。
免费学习编程。freeCodeCamp 的开源课程已帮助超过40,000人成为开发者。立即开始