从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(下)

文章目录

  • 第一章:感知机的局限性
    • 1.1 异或门的挑战
    • 1.2 线性与非线性问题
  • 第二章:多层感知机
    • 2.1 已有门电路的组合
    • 2.2 实现异或门
  • 第三章:从与非门到计算机

文章文上下两节

  • 从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(上)
  • 从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(下)

第一章:感知机的局限性

在前几章中,我们已经看到了感知机如何有效地实现基本的逻辑门,如与门、与非门和或门。然而,当我们尝试用感知机实现更复杂的逻辑门,例如异或门(XOR gate),我们遇到了一些困难。本章将探讨感知机的这些局限性,并解释为什么它们存在。

1.1 异或门的挑战

异或门是一种逻辑电路,只有当其中一个输入为1时,输出才为1。这种操作在逻辑中被称为"异或"(XOR),意味着两个输入不同时才为真。以下是异或门的真值表,展示了其输出行为:

在这里插入图片描述

实际上,用基本的单层感知机模型无法实现这个异或门。为什么可以用感知机实现与门和或门,但不能实现异或门呢?我们可以通过画图来探索这一问题。

假设我们试图使用以下感知机公式来模拟或门的行为,其参数为 b = − 0.5 b=−0.5 b=0.5 w 1 = 1.0 w_1=1.0 w1=1.0 w 2 = 1.0 w_2=1.0 w2=1.0
y = { 0 if  ( − 0.5 + x 1 + x 2 ≤ 0 ) 1 if  ( − 0.5 + x 1 + x 2 > 0 ) y = \begin{cases} 0 & \text{if } (-0.5 + x_1 + x_2 \leq 0) \\ 1 & \text{if } (-0.5 + x_1 + x_2 > 0) \end{cases} y={01if (0.5+x1+x20)if (0.5+x1+x2>0)
这个感知机会产生一个决策边界,如下图所示,这条直线将输入空间分为两部分:一部分输出0,另一部分输出1。下面的直线即为 − 0.5 + x 1 + x 2 = 0 −0.5+x_1+x_2=0 0.5+x1+x2=0,灰色区域是感知机输出0的区域,这个区域与或门的性质一致。对于或门,当输入为 (0,0) 时输出为 0;而当输入为 (1,0),(0,1),或 (1,1) 时,输出为 1。下图显示了这些点和决策边界,其中圆圈表示输出0,三角形表示输出1。

在这里插入图片描述

如果我们尝试使用类似的方法来解决异或问题,我们会发现没有单条直线能完美地分离输出为1和输出为0的点。以下是异或操作的可视化,显示了无法仅用一条直线来分割输出1和输出0的区域。

在这里插入图片描述

这说明基本的单层感知机无法处理异或问题,这是因为异或是一个非线性问题,而单层感知机只能解决线性可分问题。这展示了单层感知机的一个主要局限性:它无法解决非线性问题。

1.2 线性与非线性问题

在上面我们看到,无论如何尝试,用一条直线都无法完美地区分所有的○和△符号。这突显出了单层感知机处理复杂逻辑函数,如异或(XOR)函数的局限性。

异或门的输出不能通过单层感知机处理,因为它要求非线性的决策边界。如下图所示,一个可能的解决方案是使用曲线来分隔输出为1和输出为0的区域。这样的曲线无法通过单层感知机来实现,因为单层感知机的决策边界总是线性的(即由直线描述)。

在这里插入图片描述

在机器学习中,线性空间和非线性空间的区别极为关键。线性模型,如单层感知机,只能解决线性可分问题,即那些可以通过一个平面或直线分隔的问题。然而,许多实际问题,如异或问题,是非线性的,需要通过更复杂的模型如多层感知机来解决。

第二章:多层感知机

感知机不能表示异或门让人深感遗憾,但也无需悲观。实际上,感知机的绝妙之处在于它可以“叠加层”(通过叠加层来表示异或门是本节的要点)。这里,我们暂且不考虑叠加层具体是指什么,先从其他视角来思考一下异或门的问题。

2.1 已有门电路的组合

异或门的制作方法有很多,其中之一就是组合我们前面做好的与门、与非门、或门进行配置。下图展示了与门、与非门、或门的符号表示。图中与非门前端的圆圈表示反转输出的意思。

在这里插入图片描述

要实现异或门的话,需要如何配置与门、与非门和或门呢?

在这里插入图片描述

严格地讲,感知机的局限性应该描述为“单层感知机无法表示异或门”或者“单层感知机无法分离非线性空间”。但通过组合感知机(叠加层)就可以实现异或门。

异或门可以通过下图所示的配置来实现。这里, x 1 x_1 x1 x 2 x_2 x2 表示输入信号, y y y 表示输出信号。 x 1 x_1 x1 x 2 x_2 x2 是与非门和或门的输入,而与非门和或门的输出则是与门的输入。

在这里插入图片描述

这里把 s 1 s_1 s1 作为与非门的输出,把 s 2 s_2 s2 作为或门的输出,填入真值表中。结果如下图所示,观察 x 1 x_1 x1 x 2 x_2 x2 y y y,可以发现确实符合异或门的输出。

在这里插入图片描述

2.2 实现异或门

下面我们试着用Python来实现异或门。使用之前定义的AND函数、NAND函数、OR函数,可以像下面这样实现。

def XOR(x1, x2):s1 = NAND(x1, x2)s2 = OR(x1, x2)y = AND(s1, s2)return y

这个XOR函数会输出预期的结果。

  • XOR(0, 0) 输出 0
  • XOR(1, 0) 输出 1
  • XOR(0, 1) 输出 1
  • XOR(1, 1) 输出 0

这样,异或门的实现就完成了。下面我们试着用感知机的表示方法(明确地显示神经元)来表示这个异或门,结果如下图所示。异或门是一种多层结构的神经网络。这里,将最左边的一列称为第0层,中间的一列称为第1层,最右边的一列称为第2层。

在这里插入图片描述

上图中的感知机总共由3层构成,但是因为拥有权重的层实质上只有2层(第0层和第1层之间,第1层和第2层之间),所以称为“2层感知机”。不过,有的文献认为上图的感知机是由3层构成的,因而将其称为“3层感知机”。

在上图所示的2层感知机中,先在第0层和第1层的神经元之间进行信号的传送和接收,然后在第1层和第2层之间进行信号的传送和接收,具体如下所示:

  1. 第0层的两个神经元接收输入信号,并将信号发送至第1层的神经元。
  2. 第1层的神经元将信号发送至第2层的神经元,第2层的神经元输出 y y y

这种2层感知机的运行过程可以比作流水线的组装作业。第1段(第1层)的工人对传送过来的零件进行加工,完成后再传送给第2段(第2层)的工人。第2层的工人对第1层的工人传过来的零件进行加工,完成这个零件后出货(输出)。

像这样,在异或门的感知机中,工人之间不断进行零件的传送。通过这样的结构(2层结构),感知机得以实现异或门。这可以解释为“单层感知机无法表示的东西,通过增加一层就可以解决”。也就是说,通过叠加层(加深层),感知机能进行更加灵活的表示。

第三章:从与非门到计算机

多层感知机展示了其在实现复杂电路方面的强大能力,不仅限于基本逻辑门,如与门或或门,甚至可以扩展到更复杂的功能,例如加法器和编码器。这些设备通常需要多步骤的逻辑处理,通过感知机模型,我们可以构建这些复杂的逻辑函数。

计算机与感知机的相似性

感知机的基本工作原理 —— 接收输入,处理数据后输出结果 —— 在很大程度上模仿了计算机的操作。这种简单的对比帮助我们理解,即使是最复杂的计算机系统,其核心也依赖于基础的逻辑处理单元。

与非门的强大作用

在数字电路设计中,与非门的重要性不容小觑。事实上,仅仅使用与非门,就可以构建任何其他的逻辑门,进而实现完整的计算机处理能力。这种从简到繁的能力展示了感知机在逻辑设计中的潜力。

感知机与计算机架构

尽管理论上两层感知机就足以模拟任何计算功能,实际上要通过这种方式实现一个高效的计算机架构是非常困难的。例如,创建一个使用激活函数的多层感知机来精确模拟ALU或CPU的行为,这在理论上是可行的,但在实践中可能需要极其复杂的网络结构和精细的权重调整。

分阶段实现的逻辑复杂性

在实际的硬件设计中,构建一个计算机通常涉及多个阶段,每个阶段完成特定功能的组件,如逻辑门、加法器、算术逻辑单元(ALU),最终组合成完整的CPU。这种分阶段的方法可以为感知机的实用应用提供框架,即通过分层逐步增加网络的复杂性来逼近所需的功能。

总结

尽管多层感知机理论上可以模拟复杂的计算机系统,但实际应用中,它们更常见于模拟具体功能或处理特定类型的数据。感知机的这种适用性和灵活性,使其在现代计算和机器学习领域中成为了一个宝贵的工具。同时,了解感知机如何模拟基本计算机操作也对深入理解计算机运作和优化现有技术架构提供了洞见。


上一节:从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(上)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/321430.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机科学速成课】笔记三——操作系统

文章目录 18.操作系统问题引出——批处理设备驱动程序多任务处理虚拟内存内存保护Unix 18.操作系统 问题引出—— Computers in the 1940s and early 50s ran one program at a time. 1940,1950 年代的电脑,每次只能运行一个程序 A programmer would write one at…

QX-mini51学习---(2)点亮LED

目录 1什么是ed 2led工作参数 3本节相关原理图分析 4本节相关c 5实践 1什么是ed 半导体发光二极管,将电能转化为光能,耗电低,寿命长,抗震动 长正短负,贴片是绿点处是负极 2led工作参数 3本节相关原理图分析 当…

【软测学习笔记】Python入门Day02

🌟博主主页:我是一只海绵派大星 📚专栏分类:软件测试笔记 📚参考教程:黑马教程❤️感谢大家点赞👍收藏⭐评论✍️ python安装 1、进入Python的官方下载页面: Download Python | Py…

环保访谈|浙江双视专注红外机器视觉及智能化应用,保障安全生产

近期,中联环保圈希姐采访了浙江双视科技股份有限公司环保行业销售总监孙波,深入了解了双视科技的发展历程、产品和解决方案、合作流程、核心竞争力以及未来规划。 双视于2014年创立,专注于红外机器视觉、人工智能技术与应用开发,…

《十八》QThread多线程组件

本章将重点介绍如何运用QThread组件实现多线程功能。 多线程技术在程序开发中尤为常用,Qt框架中提供了QThread库来实现多线程功能。当你需要使用QThread时,需包含QThread模块,以下是QThread类的一些主要成员函数和槽函数。 成员函数/槽函数 …

本地部署大模型ollama+docker+open WebUI/Lobe Chat

文章目录 大模型工具Ollama下载安装运行Spring Ai 代码测试加依赖配置写代码 ollama的web&Desktop搭建部署Open WebUI有两种方式Docker DesktopDocker部署Open WebUIDocker部署Lobe Chat可以配置OpenAI的key也可以配置ollama 大模型的选择 本篇基于windows环境下配置 大模型…

HarmonyOS实战开发教程-如何开发一个2048游戏

今天为大家分享的是2048小游戏,先看效果图: 这个项目对于新手友友来说可能有一点难度,但是只要坚持看完一定会有收获。因为小编想分享的并不局限于ArkTs语言,而是编程思想。 这个游戏的基本逻辑是初始化一个4乘4的数组&#xff…

论文笔记ColdDTA:利用数据增强和基于注意力的特征融合进行药物靶标结合亲和力预测

ColdDTA发表在Computers in Biology and Medicine 的一篇一区文章 突出 • 数据增强和基于注意力的特征融合用于药物靶点结合亲和力预测。 • 与其他方法相比,它在 Davis、KIBA 和 BindingDB 数据集上显示出竞争性能。 • 可视化模型权重可以获得可解释的见解。 …

并发编程之阻塞队列BlockingQueue实战及其原理分析

1. 阻塞队列介绍 1.1 队列 是限定在一端进行插入,另一端进行删除的特殊线性表。 先进先出(FIFO)线性表。 允许出队的一端称为队头,允许入队的一端称为队尾。

轻松应对数据恢复挑战:雷神笔记本,不同情况不同策略

在数字化时代,数据无疑是我们生活中不可或缺的一部分。无论是重要的工作文件、珍贵的家庭照片,还是回忆满满的视频,一旦丢失,都可能给我们的生活带来诸多不便。雷神笔记本作为市场上备受欢迎的电脑品牌,用户在使用过程…

【JS篇之】异常

前言:在代码编写过程中,最常遇到的就是程序异常。其实异常并非坏事,它可以让开发人员及时发现、定位到错误,提醒我们做正确的事情,甚至在某些时候,我们还会手动抛出异常。 1.异常的分类 在JS中&#xff0…

ABB RobotStudio学习记录(一)新建工作站

RobotStudio新建工作站 最近遇到 虚拟示教器和 Rapid 代码不能控制 视图中机械臂的问题,其实是由于机械臂和工作站不匹配。以下是解决方法。 名称版本Robot Studio6.08 新建一个”空工作站“; 在目标位置新建一个目标文件夹 C:\solution\test&#xff0…

数据交换和异步请求(JSONAjax))

目录 一.JSON介绍1.JSON的特点2.JSON的结构3.JSON的值JSON示例4.JSON与字符串对象转换5.注意事项 二.JSON在Java中的使用1.Javabean to json2.List to json3.Map to JSONTypeToken底层解析 三.Ajax介绍1.介绍2.Ajax经典应用场景 四.Ajax原理示意图1. 传统web应用2.Ajax方法 五.…

平面模型上提取凸凹多边形------pcl

平面模型上提取凸凹多边形 pcl::PointCloud<pcl::PointXYZ>::Ptr PclTool::ExtractConvexConcavePolygons(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud) {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);p…

java10基础(this super关键字 重写 final关键字 多态 抽象类)

目录 一. this和super关键字 1. this关键字 2. super关键字 二. 重写 三. final关键字 四. 多态 五. 抽象类 1. 抽象方法 2. 抽象类 3. 面向抽象设计 一. this和super关键字 1. this关键字 this 当前对象的引用 this.属性 this.方法名() this() -- 调用构造函数 …

Vue阶段练习:初始化渲染、获取焦点、记账清单

阶段练习主要承接Vue 生命周期-CSDN博客 &#xff0c;学习完该部分内容后&#xff0c;进行自我检测&#xff0c;每个练习主要分为效果显示、需求分析、静态代码、完整代码、总结 四个部分&#xff0c;效果显示和准备代码已给出&#xff0c;我们需要完成“完整代码”部分。 练习…

技术速递|使用 .NET 为 Microsoft AI 构建可扩展网关

作者&#xff1a;Kara Saucerman 排版&#xff1a;Alan Wang Microsoft AI 团队构建了全面的内容、服务、平台和技术&#xff0c;以便消费者在任何设备上、任何地方获取他们想要的信息&#xff0c;并为企业改善客户和员工的体验。我们的团队支持多种体验&#xff0c;包括 Bing、…

Java 线程池 ( Thread Pool )的简单介绍

想象一下&#xff0c;你正指挥着一支超级英雄团队&#xff0c;面对蜂拥而至的敌人&#xff08;任务&#xff09;&#xff0c;不是每次都召唤新英雄&#xff08;创建线程&#xff09;&#xff0c;而是精心调配现有成员&#xff0c;高效应对。这就是Java线程池的魔力&#xff0c;…

毕业就业信息|基于Springboot+vue的毕业就业信息管理系统的设计与实现(源码+数据库+文档)

毕业就业信息管理系统 目录 基于Springboot&#xff0b;vue的毕业就业信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1学生信息管理 2 公司信息管理 3公告类型管理 4公告信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…

探索GitHub上的GPTs项目:泄露和被破解的GPT提示

GPTs项目是一个在GitHub上由用户linexjlin发起的开源项目&#xff0c;专注于提供泄露的GPT&#xff08;生成式预训练转换器&#xff09;提示。这些提示用于指导和优化AI模型的输出&#xff0c;进而提升代码生成的质量和效率。项目页面提供了丰富的功能和资源&#xff0c;旨在帮…