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

文章目录

  • 第一章:感知机的局限性
    • 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。这种分阶段的方法可以为感知机的实用应用提供框架,即通过分层逐步增加网络的复杂性来逼近所需的功能。

总结

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


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

The provided password or token is incorrect or your account

IDEA使用git技巧 【/n】 01 问题出现场景 我的gitlab上个月生成的token到期了,于是今天推上去的时候报了这个错误 The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. See ht…

Unreal游戏GPU参数详解,游戏性能优化再升级

UWA GOT Online For Unreal GPU模式近期全新发布,方便开发者从渲染和带宽的角度进行GPU分析。同时,此次更新中UWA也增加了丰富的GPU参数,涵盖了GPU SoC和GPU Counter模块。这些新增的参数不仅能够帮助Unreal开发者从宏观层面监控GPU的压力状况…

【busybox记录】【shell指令】paste

目录 内容来源: 【GUN】【paste】指令介绍 【busybox】【paste】指令介绍 【linux】【paste】指令介绍 使用示例: 合并文件的行 - 默认输出(默认是行合并) 合并文件的行 - 一个文件占一行 合并文件的行 - 使用指定的间隔符…

Deeplab的复现(pytorch实现)

DeepLab复现的pytorch实现 本文复现的主要是deeplabv3。使用的数据集和之前发的文章FCN一样,没有了解的可以移步到之前发的文章中去查看一下。 1.该模型的主要结构 对于代码部分,主要只写了模型部分的,其他部分内容基本和FCN的一致&#xf…

【busybox记录】【shell指令】join

目录 内容来源: 【GUN】【join】指令介绍 【busybox】【join】指令介绍 【linux】【join】指令介绍 使用示例: 打印两个文件的共有行 - 默认输出 可以对字母排序 可以对数字排序 可以对字符串排序 打印两个文件的共有行 - 输出文件1或者文件2中…

市场营销的酒店营销策略研究意义

在市场经济条件下,市场营销策略已成为企业经营管理中最重要的组成部分,其在企业管理中的地位日益显现出来。 然而,由于酒店营销环境的特殊性,酒店营销策略研究一直是咱们从业者研究的热点之一。 对于酒店营销策略的研究&#xf…

【C++】从零开始认识多态

送给大家一句话: 一个犹豫不决的灵魂,奋起抗击无穷的忧患,而内心又矛盾重重,真实生活就是如此。 ​​​​ – 詹姆斯・乔伊斯 《尤利西斯》 _φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)&…

xv6源码分析 017

xv6源码分析 017 在buffer cache上面的就是logging层了,这一层主要的工作是维持每一个文件系统写入的操作的原子性。什么是原子性?通俗地来讲,原子性可以这样理解,如果一组操作(或者一个操作)在执行的时候…

【busybox记录】【shell指令】expand

目录 内容来源: 【GUN】【expand】指令介绍 【busybox】【expand】指令介绍 【linux】【expand】指令介绍 使用示例: 把制表符转化为空格 - 默认输出 把制表符转化为空格 - 修改制表符转空格的个数 把制表符转化为空格 - 修改制表符转空格的个数…

HackMyVM-Animetronic

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 feroxbuster steghide exiftool hydra ssh连接 提权 系统信息收集 socat提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7…

C语言——每日一题(轮转数组)

一.前言 前不久学习了时间复杂度的概念,便在力扣上刷了一道需要参考时间复杂度的题——轮转数组 https://leetcode.cn/problems/rotate-array/submissions这道题不能使用暴力算法,因为这道题对时间复杂度的要求不能为O(N^2)。因…

【数据库表的约束】

文章目录 一、NULL vs (空字符串)二、not null 和default三、列描述字段comment四、zerofill五、primary key 主键总结 一、NULL vs ‘’(空字符串) NULL和空字符串’’ NULL代表什么都没有。 空字符串’代表有,但串…

CI/CD 上云为何如此重要

近年来,敏捷度和速度日渐成为产品开发的关键。市场高速运行,时间就是金钱,也是企业发展的关键。游戏、金融、自动化产业等软件开发企业更像卷入了一场无休止的时间竞赛。 这也难怪 DevOps 备受欢迎。企业借助 DevOps 不断加速优质软件的交付…

​分享1.36G全国村名点数据

数据是GIS的血液! 我们在《2015年中国电子地图数据》一文中,为大家有偿分享了一份图层丰富,且有26.8G大小的全国电子地图。 这里再为大家分享一份有1.36G大小的全国村名数据,本数据来自网友分享,据说为2023年的村名数…

VMware 替代专题|14 个常见问题,解读 VMware 替代的方方面面

随着 VMware by Broadcom 调整订阅模式和产品组合,不少用户也将 VMware 替代提上日程。为了帮助用户顺利完成从 VMware 替代方案评估到产品落地的一系列环节,我们通过这篇博客,对 VMware 替代场景下用户经常遇到的问题进行了梳理和解答。 更…

【工作记录】openjdk-22基础镜像的构建

背景 近期使用到的框架底层都用的是springboot3.0,要求jdk版本在17甚至更高。 于是决定制作一个基于openjdk22的基础镜像,本文对这一过程进行记录。 作为记录的同时也希望能够帮助到需要的朋友。 期望效果 容器内可以正常使用java相关命令且版本是2…

再议大模型微调之Zero策略

1. 引言 尽管关于使用Deepspeed的Zero策略的博客已经满天飞了,特别是有许多经典的结论都已经阐述了,今天仍然被问到说,如果我只有4块40G的A100,能否进行全量的7B的大模型微调呢? 正所谓“纸上得来终觉浅,…

华为OD机试【路灯照明问题】(java)(100分)

1、题目描述 在一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间间距固定为100米。 每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。 2、输入描述 第一行为一个数N&#xff…

一文了解什么是SSL证书?——值得收藏

SSL证书,全称Secure Sockets Layer证书,是一种网络安全协议的实现方式,现在通常指的是其继任者TLS(Transport Layer Security)证书,不过习惯上仍称为SSL证书。它的主要作用是确保互联网上的数据传输安全&am…

ESP32 IDF linux下开发环境搭建

文章目录 介绍升级Python环境下载Python包配置编译环境及安装Python设置环境变量 ESPIDF环境搭建下载esp-idf 代码编译等待下载烧录成功查看串口打印 介绍 esp32 官方文档给的不是特别详细 参考多方资料 最后才完成开发 主要问题在于github下载的很慢本教程适用于ubuntu deban…