十多年前曾经在学校选修过一门神经网络的课程,使用神经网络的算法实现阿拉伯数字0-9的识别。没有想到今天人工智能能发展到这个程度,甚至两三年前感觉还可能马上会遇到下一个瓶颈。希望后续能逐步回顾下部分人工智能的经典算法,更好的理解神经网络的内在机制。

一、 神经网络的萌芽

  1. 1943 年:MP 神经元模型沃伦・麦卡洛克(McCulloch)和沃尔特・皮茨(Pitts)提出第一个人工神经元数学模型(MP 模型),模拟生物神经元 “兴奋 / 抑制” 的工作机制,定义了神经元的输入、加权求和、阈值激活的核心逻辑,这是人工神经网络的起点。

  2. 1958 年:感知机模型。弗兰克・罗森布拉特(Frank Rosenblatt)提出感知机(Perceptron),这是第一个可以实际训练的神经网络模型。它是单层神经网络,包含输入层和输出层,能通过梯度下降调整权重,实现简单的二分类任务(比如识别手写数字的简单特征)。当时被视为 “能模拟人类学习的机器”,引发第一次研究热潮。

二、 单层感知机的核心原理

        单层感知机的结构极其简单,只有两层输入层输出层,没有隐藏层,属于最基础的线性分类模型。

        1. 结构组成

层级 功能 细节说明
输入层 接收原始特征 由多个输入神经元组成,数量等于特征维度(比如识别 “是否是苹果”,输入特征可以是 “颜色、形状、大小”,对应 3 个输入神经元)
输出层 输出分类结果 只有 1 个神经元,输出0 或 1(分别代表两个类别,比如 0 = 不是苹果,1 = 是苹果)

        2. 数学模型(核心计算逻辑)

        单层感知机的预测过程分三步,完全模拟人工神经元的工作机制:

  1. 加权求和对每个输入特征 x_{i}分配一个权重 w_{i}​(权重代表该特征的重要性),再加上一个偏置项 b(调整分类阈值的偏移量),计算总和 z:z = \sum_{i=1}^{n} ​w_{i}x_{i}+b = w1​x1​+w2​x2​+...+wn​xn​+b。 

    • 举例:判断是否是苹果,输入特征 x1​= 颜色(红色 = 1,绿色 = 0)、x2​= 形状(圆形 = 1,方形 = 0);权重 w1​=0.8(颜色很重要)、w2​=0.7(形状也重要);偏置 b=−1.2。

    • 计算:z = 0.8×1+0.7×1−1.2 = 0.3

  2. 阈值激活(非线性判断)阶跃函数(感知机的激活函数)对 z 进行判断,输出最终分类结果 y:当z ≥ 0时,y = 1; 当z < 0时,y = 0。​  

    • 接上面的例子:z = 0.3 ≥ 0 ,输出 y=1,判定为是苹果

    • 若输入特征是 x1​ = 0(绿色)、x2 ​= 0(方形),则 z = 0.8 × 0 + 0.7 × 0 − 1.2 = −1.2 < 0, 输出 y=0,判定为不是苹果

       3. 权重与偏置的意义

           权重 wi​:代表输入特征对分类结果的影响程度。

           wi​ > 0:该特征会促进输出为 1(比如 “红色” 的权重为正,越红越容易被判定为苹果);

           wi​ < 0:该特征会抑制输出为 1(比如 “方形” 的权重为负,越方越难被判定为苹果)。

           偏置 b:调整分类的 “门槛”。

           b 增大:分类门槛降低,更容易输出 1;

           b 减小:分类门槛提高,更难输出 1。

三、 单层感知机如何实现预测分类(训练 + 预测流程)

        单层感知机的 “预测能力” 来自训练过程中对权重和偏置的优化,核心是通过感知机学习规则调整参数,让模型能准确区分两类数据。整个过程分训练阶段预测阶段

1. 训练阶段:调整参数,学习规律

        训练的目标是找到一组最优的 wi​ 和 b,让模型对所有训练数据的预测结果都和真实标签一致。步骤如下:

  1. 初始化参数给权重 wi​ 赋随机小值(比如 - 0.1~0.1),偏置 b 初始化为 0。

  2. 遍历训练数据对每一个训练样本 (x1​,x2​,...,xn​, Ytrue​):

    • 计算预测值 Ypred​:按照 “加权求和 + 阶跃激活” 的规则得到;

    • 计算误差:error=Ytrue​−Ypred​(真实标签和预测标签的差值);

    • 更新参数(感知机学习规则):wi​=wi​+η×error×xi​,b=b+η×error其中 η 是学习率(0<η<1,控制参数更新的步长,比如 0.1)。

      • 若 error=0(预测正确):参数不更新;

      • 若 error=1(真实是 1,预测是 0):增大权重和偏置,让下一次更容易输出 1;

      • 若 error=−1(真实是 0,预测是 1):减小权重和偏置,让下一次更难输出 1。

  3. 重复迭代反复遍历训练数据,直到模型对所有样本的预测误差为 0,或达到预设的迭代次数,此时参数 wi​ 和 b 就固定下来。

2. 预测阶段:用训练好的模型分类新数据

        当有新数据输入时,直接用训练好的 wi​ 和 b 计算,步骤如下:

  1. 输入新样本的特征 x1​,x2​,...,xn​;

  2. 计算加权和 z = \sum_{i=1}^{n} ​w_{i}x_{i}+b。

  3. 用阶跃函数判断:z ≥ 0 输出 1(类别 A),z < 0 输出 0(类别 B)。

3、 经典例子:用单层感知机实现 “与门” 分类

        “与门” 是一个简单的二分类问题,输入是两个二进制数(0 或 1),输出规则:只有两个输入都为 1 时,输出 1;否则输出 0

输入 x1​

输入 x2​

真实输出 ytrue​

0

0

0

0

1

0

1

0

0

1

1

1

1. 训练过程

  • 初始化:w1​=0.2,w2​=0.2,b=−0.3,η=0.1

  • 遍历样本 (1,1,1):

    • z = 0.2 × 1 + 0.2 × 1 − 0.3 = 0.1 ≥ 0,ypred​ = 1,error = 0,参数不更新。

  • 遍历样本 (0,0,0):

    • z = 0.2 × 0 + 0.2 × 0 − 0.3 = −0.3 < 0,ypred​ = 0,error = 0,参数不更新。

  • 遍历样本 (0,1,0):

    • z = 0.2 × 0 + 0.2 × 1 − 0.3 = −0.1 < 0,ypred​ = 0,error = 0,参数不更新。

  • 遍历样本 (1,0,0):

    • z = 0.2 × 1 + 0.2 × 0 − 0.3 = −0.1 < 0,ypred​=0,error=0 , 参数不更新。

        所有样本预测正确,训练结束。

2. 预测验证

        输入新样本 (1,1) ,z = 0.1 ≥ 0, 输出 1;输入新样本 (0,1) → z=−0.1<0 → 输出 0,完全符合与门规则。

4、 单层感知机的局限性

        单层感知机的最大缺陷是只能解决线性可分的分类问题,无法处理非线性问题(比如 “异或门”):

  • 线性可分:两类数据可以用一条直线(二维)、一个平面(三维)或超平面(高维)完全分开;

  • 非线性可分:比如异或门,无法用一条直线把 “输出 1” 和 “输出 0” 的样本分开,此时单层感知机无论怎么调整参数,都无法实现 100% 正确分类。

        这个局限性直接导致了神经网络的第一次研究寒冬,直到后来多层感知机 + 反向传播算法的出现,才解决了非线性分类问题。但单层感知机中出现的输入层、输出层、权重、偏置,训练和参数更新等概念在最新的神经网络训练中依然在继续使用,所以单层感知机作为第一个算法还是实至名归的。但单层感知机中的权重调整是极其初级的,比如做 “与门” 分类,误差只有 “预测对 / 错” 两种情况,权重要么加一点、要么减一点,完全是 “试错式” 调整,与后续的新算法有着极大的区别。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐