当前位置: 首页 > news >正文

从单层感知机到多层感知机(MLP)

MLP:Multi-Layer percretron 多层感知机

  1. 单层感知机的局限性
    • 单层感知机能做的只是用 一条直线 / 超平面 来分隔数据。
    • 问题:遇到 异或(XOR)问题 或者更复杂的数据分布,就没办法仅靠一条直线来分开。

例如:
• 点 (0,0) 和 (1,1) 属于一类
• 点 (0,1) 和 (1,0) 属于另一类

👉 这两个类别在二维平面上是“交叉”的,用一条直线永远分不开。

  1. 多个线性方程组合的想法 MLP:Multi-Layer percretron 多层感知机

虽然一条直线不够,但我们可以 多画几条直线,把空间划分成多个区域,再用这些区域的交集/并集来表示复杂分类边界。

数学上:
• 每一个感知机相当于一个线性方程(超平面)。
• 多个感知机组合起来,就可以圈定复杂形状的区域。

  1. 直观例子:用两个感知机圈定区域

设二维空间:
• 感知机 1:\(x_1 + x_2 - 1 \ge 0\) (一条直线)
• 感知机 2:\(x_1 - x_2 \ge 0\) (另一条直线)

这两条直线交叉后,会把平面划分成四个区域。
我们可以用 逻辑组合(例如“同时满足”)来圈定某个区域,从而表示异或等复杂分类。

  1. 代码实验:XOR 问题

我们用两个感知机组合,尝试分类 XOR 数据:

import numpy as np
import matplotlib.pyplot as plt# XOR 数据集
X = np.array([[0,0],[0,1],[1,0],[1,1]])
y = np.array([0,1,1,0])  # 异或输出# 定义两个线性函数(人为设定,不训练)
def h1(x): return 1 if x[0] + x[1] - 0.5 >= 0 else 0
def h2(x): return 1 if x[0] - x[1] >= 0 else 0# 组合:异或近似 = h1(x) XOR h2(x)
def xor_like(x):return h1(x) ^ h2(x)# 可视化
colors = ['red' if label == 1 else 'blue' for label in y]
plt.scatter(X[:,0], X[:,1], c=colors, s=100, edgecolors='k')# 画出直线
xx = np.linspace(-0.5, 1.5, 100)
plt.plot(xx, -xx+0.5, 'g--', label='h1: x1+x2=0.5')
plt.plot(xx, xx, 'm--', label='h2: x1=x2')plt.legend()
plt.title("多个感知机组合圈定区域 (XOR)")
plt.show()# 测试输出
for xi in X:print(xi, "->", xor_like(xi))

image

5:多个感知器圈定的数据 如下图
image

上述的问题和点的分布是思维试验,我们限定的点出现的范围然后通过方程进行限定和进行描述,可以通过线性代数的一个特解或者通解的形式获取到最终的描述函数,从而对结果进行预测,从二维推广到三维,甚至是更高的维度,三维的点分步我们可以通过平面对数据的分布进行分割,当然也可以通过多个平面去圈定目标数据,使得其在合理的范围内。
6:遗留的问题:
如果数据的分布不是我们想象的那么好圈定,我们无法通过直线的线性方程或者平面进行圈定目标数据,应该如何构建MLP
image
通过观察,我们利用已知的二维线性函数想要对上述图片中的蓝色点进行圈定,通过简单的线性圈定已经不满足,或者很难满足找到这样的一组线性的数学描述或者想要的数据,接下来我们就需要引入损失函数的概念

http://www.jsqmd.com/news/8132/

相关文章:

  • 机电公司管理小工具|基于微信小应用的机电公司管理小程序设计与实现(源码+数据库+文档)
  • 【性质】CF689D Friends and Subsequences
  • Chromium 138 编译指南 - Android 篇:环境搭建与准备(一) - 教程
  • Arduino+数码管 = 量电压 | A+B problem | alphabet
  • 详细介绍:【数据库知识】TxSQL 主从数据库同步底层原理深度解析
  • 详细介绍:【数据库知识】TxSQL 主从数据库同步底层原理深度解析
  • 详细介绍:TensorFlow(1)
  • (最新原创毕设)基于SpringBoot的分布式存储平台/10.3(白嫖源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案 - 指南
  • Python 之操作excel
  • 大语言模型中的“推理”:基本原理与构建机制解析
  • linux jenkins服务启动异常等,排查是否日志磁盘空间满 du df命令
  • 详细介绍:LeetCode 391 完美矩形
  • [NOI2025] 集合 题解
  • 技术Leader的1-3-5沟通法则:向上管理的艺术 - 指南
  • 【Phar反序列化】 - 教程
  • 完整教程:AI时代如何高效学习Python:从零基础到项目实战de封神之路(2025升级版)
  • cannot resolve method add in T 及 T 泛型类型生成Excel文件,区别是数据Model不同
  • MySQL慢查询深度解析:从诊断到优化的完整指南 - 实践
  • 手写MyBatis第88弹:从XML配置到可执行SQL的完整旅程 - 教程
  • 测试环境elasticSearch数据泄露排查
  • 深入解析:Spring boot中 限制 Mybatis SQL日志的大字段输出
  • 【AI时代速通QT】第九节:揭秘Qt编译全流程-从.pro材料到可执行程序
  • 考试心得5
  • 实用指南:Transformer模型:深度解析自然语言处理的革命性架构——从预训练范式到产业级实践
  • PocoEmit遥遥领先于AutoMapper之打通充血模型的任督二脉
  • Solar9月赛wp - 场
  • Elastic Search 安装部署最全教程(Docker)
  • 深入解析:Playwright同步、异步、并行、串行执行效率比较
  • Linux基础开发工具 --- vim - 详解
  • 2025十一集训——Day2模拟赛