从感知机到神经网络:深度学习的起源

摘要:深度学习不是凭空出现的。它的根可以追溯到 1958 年一个叫"感知机"的简单算法。这篇文章沿着历史的线索,从感知机到多层神经网络,讲清楚深度学习的核心思想------以及为什么"深"才是关键。


一、一切始于一个神经元

生物神经元给我们的启发

人脑约有 860 亿个神经元,每个神经元通过"树突"接收信号,在"细胞体"中处理,然后通过"轴突"把信号传递给下一个神经元。

1943 年, McCulloch 和 Pitts 提出了一个大胆的想法:能不能用一个简单的数学函数模拟神经元的行为?

复制代码
生物神经元:                      人工神经元(M-P 模型):

  树突(接收信号)                  输入 x₁, x₂, ..., xₙ
      ↓                                ↓
  细胞体(加权求和+阈值判断)        加权求和 Σ(wᵢxᵢ) + b
      ↓                                ↓
  轴突(输出信号)                   激活函数 f(Σ) → 输出 y

这个想法,就是所有现代神经网络的最底层起点。


二、感知机:第一个"能学习"的神经元

1958 年,弗兰克·罗森布拉特的里程碑

1958 年,心理学家弗兰克·罗森布拉特(Frank Rosenblatt)在 M-P 模型的基础上,提出了感知机(Perceptron)------第一个能自动从数据中学习的算法。

感知机的数学形式非常简单:

复制代码
y = sign(w₁x₁ + w₂x₂ + ... + wₙxₙ + b)

其中:
  xᵢ = 输入特征
  wᵢ = 权重(可学习!)
  b  = 偏置
  sign() = 阶跃函数(输出 +1 或 -1)

为什么它重要? 因为权重 wᵢ 不是人手动设定的,而是通过数据自动学习的。

感知机学习算法

感知机的学习过程极其简单优雅:

复制代码
1. 随机初始化权重 w₁, w₂, ..., wₙ 和偏置 b
2. 对每个训练样本 (x, y_true):
   a. 计算预测值 y_pred = sign(Σ(wᵢxᵢ) + b)
   b. 如果预测错误:
      wᵢ = wᵢ + η × (y_true - y_pred) × xᵢ
      b  = b  + η × (y_true - y_pred)
      (η 是学习率,控制每次调整的幅度)
3. 重复步骤 2,直到所有样本都分类正确

核心思想:预测错了就调整权重,往正确的方向挪一点点。不断地试错、调整、再试错------这就是机器学习最原始的形态。

感知机能力的边界:XOR 问题

1969 年,马文·明斯基(Marvin Minsky)在《感知机》一书中指出了感知机的致命局限:

感知机只能解决线性可分的问题。

什么意思?来看一张图:

复制代码
线性可分(感知机能解决):         线性不可分(感知机解决不了):
                                    
       ○ ○                         ○   ○
         /                        ╲   ╱
    分类面                        ╲ ╱
       /                          ╱ ╲
     × ×                         ╱   ╲
                                 ×   ×
                                 
 AND(与门)✅                   XOR(异或门)❌

XOR(异或)问题是最经典的例子:

  • (0,0) → 0
  • (0,1) → 1
  • (1,0) → 1
  • (1,1) → 0

你无法用一条直线把四个点分成两类。单层感知机对此无能为力。

这个发现直接导致了 AI 的第一次"冬天"------人们对神经网络的热情陷入了低谷。


三、多层神经网络的诞生

解决方案:再加一层

解决问题的思路其实很简单:一条直线不行,那就用多条直线。

复制代码
XOR 问题的解法:

第一步:用一条线区分 (0,0) vs 其他
第二步:用另一条线区分 (1,1) vs 其他
第三步:把两个结果合并

本质上就是:第一层 → 特征变换 → 第二层 → 最终分类

这就是**多层感知机(MLP, Multi-Layer Perceptron)**的核心思想:

复制代码
输入层(Input Layer)     隐藏层(Hidden Layer)    输出层(Output Layer)
                        
    x₁ ────── h₁ ────
                     ╲
    x₂ ────── h₂ ─────── y
                     ╱
    x₃ ────── h₃ ────
  • 输入层:接收原始数据
  • 隐藏层:数据在这里被"变换"成更高层次的特征表示
  • 输出层:基于变换后的特征做出最终判断

为什么多层更强大?

单层感知机只能做线性分类 。多层神经网络可以做到非线性分类------因为隐藏层把原始输入映射到了一个新的特征空间,在这个新空间中数据变得线性可分。

可以这样理解:

单层网络:给你原始数据,直接做判断 → 粗放、能力有限

多层网络:先让数据经过一次"理解"和"提炼",再做判断 → 精细、能力强


四、"深"意味着什么?

深度 = 层次化的特征学习

当隐藏层从一层变成两层、三层、甚至上百层时,一个奇妙的现象出现了:网络自动学会了层次化的特征表示。

以图像识别为例:

复制代码
输入:一张人脸照片(像素点)
    ↓
第一层隐藏层:检测边缘和纹理(横线、竖线、色块)
    ↓
第二层隐藏层:组合边缘为部件(眼睛、鼻子、嘴巴)
    ↓
第三层隐藏层:组合部件为整体(人脸轮廓)
    ↓
输出层:判断是谁的脸

每一层都建立在上一层的基础上,学习更抽象、更高级的特征。这就是深度学习 中"深度"二字的真正含义------不是指更聪明,而是指有更多层次的特征抽象

深度 vs 宽度

维度 含义 效果
深度 层数多(纵向) 层次化抽象能力强,能学习复杂概念
宽度 每层神经元多(横向) 记忆容量大,但容易过拟合

研究发现,在一定范围内,增加深度比增加宽度更有效。这就是为什么现代网络越来越深(从几层到几百层),而不是越来越宽。


五、激活函数:给神经网络注入"非线性"

如果没有激活函数,多层神经网络就和单层没有区别------因为多个线性变换叠加仍然是线性变换。

激活函数的作用是引入非线性,让网络能够学习复杂的模式。

常见的激活函数

函数 公式 特点 适用场景
Sigmoid f(x) = 1/(1+e⁻ˣ) 输出范围 (0,1),平滑 二分类输出层
Tanh f(x) = (eˣ-e⁻ˣ)/(eˣ+e⁻ˣ) 输出范围 (-1,1),零中心 RNN、全连接层
ReLU f(x) = max(0, x) 计算极快,稀疏激活 现代深度学习默认选择
LeakyReLU f(x) = max(0.01x, x) 缓解 ReLU 死亡问题 深层网络
GELU 近似 x·Φ(x) 2024-2026 年最流行 Transformer、大模型

ReLU 为什么成了默认选择?

2012 年 AlexNet 之后,ReLU 迅速成为深度学习社区的首选激活函数,原因很简单:

复制代码
Sigmoid 的问题:
  - 大数值输入→输出接近1→梯度≈0→梯度消失→无法学习 ❌
  
ReLU 的优点:
  - x > 0 时梯度恒为 1 → 梯度不衰减 → 深层也能学 ✅
  - 计算只需比较大小 → 极快 ✅
  - 输出有大量零值 → 稀疏激活 → 高效 ✅

六、从单层到深度:能力对比

网络结构 能力 经典案例 局限性
单层感知机 线性分类 AND/OR 门 不能解决 XOR
单隐藏层 MLP 通用函数近似(任意连续函数) XOR、简单分类 复杂任务需要大量神经元
深度 MLP(3+层) 层次化特征学习 手写数字识别 参数多,需要大量数据
深度 CNN 空间特征提取 图像分类、目标检测 主要用于视觉数据
深度 Transformer 序列建模 + 全局注意力 大语言模型、多模态 计算量大

万能逼近定理

1989 年,Cybenko 证明了万能逼近定理(Universal Approximation Theorem)

一个足够宽的单隐藏层神经网络,可以以任意精度逼近任意连续函数。

这个定理的意义:神经网络在理论上可以学习任何东西。

但实际中有一个关键问题------"足够宽"可能意味着需要数万亿个神经元,这在计算上不可行。深度网络用"更少但更深的层"达到了同样甚至更好的效果,效率高得多。


七、总结

关键节点 年份 意义
M-P 神经元模型 1943 用数学模拟神经元的首次尝试
感知机 1958 第一个能学习的算法,开启神经网络时代
XOR 问题 1969 暴露了单层网络的局限,导致 AI 冬天
多层感知机 + 反向传播 1986 突破 XOR 局限,神经网络重获新生
深度学习(ReLU + GPU) 2012+ 深层网络变得可训练,引爆现代 AI

核心一句话:深度学习通过多层非线性变换,实现了自动的、层次化的特征学习。我们不需要手动告诉模型"什么是边缘、什么是眼睛"------让网络自己在数据中学。

下一篇文章,我们来看看神经网络到底是怎么"学习"的------反向传播与梯度下降,这是神经网络训练的核心引擎。

相关推荐
来让爷抱一个1 小时前
MonkeyCode vs Copilot vs Cursor:三大 AI 编程工具深度对比
人工智能·安全·开源·ai编程
ZC跨境爬虫1 小时前
跟着 MDN 学JavaScript day_5:技能测试——变量实战
java·开发语言·前端·javascript
星恒随风1 小时前
C++ 类和对象入门(一):从 class、访问限定符到 this 指针
开发语言·c++·笔记·学习·状态模式
Brilliantwxx1 小时前
【C++】 哈希表 unordered_map 与 unordered_set(底层原理 + 线性哈希表代码实现)
开发语言·c++·散列表
瑞雪兆丰年兮1 小时前
[0开始学Java|第二十四天]集合(Map&可变参数&集合工具类Collections)
java·开发语言·map·collections
老兵发新帖1 小时前
ROS2工作区目录结构分析
人工智能
AI Dog1 小时前
MathHub数学建模交流社区-V2
人工智能·机器学习·数学建模·阿里云
澹锦汐1 小时前
Serverless 架构下的支付系统设计:独立开发者的零运维订阅计费实战
人工智能
phltxy1 小时前
Spring AI Alibaba 多模态应用开发实践
java·人工智能·spring