深度学习入门之感知机

news2025/3/1 18:56:41

一. 感知机的定义

感知机接收多个输入信号,输出一个信号。这里所说的“信号”可以想象成电流或河流那样具备“流动性”的东西。像电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。但是,和实际的电流不同的是,感知机的信号只有“流/不流”(1/0)两种取值。
在这里插入图片描述

其中 x 1 、 x 2 x_1、x_2 x1x2是输入信号, y y y是输出信号, w 1 、 w 2 w_1、w_2 w1w2是权重。输入信号被送往神经元时,会被分别乘以固定的权重 ( w 1 、 w 2 ) (w_1、w_2) w1w2。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号 θ θ θ表示。用数学表达式表达如下:
在这里插入图片描述

二. 感知机实现基本逻辑电路

1. 与门

与门仅在两个输入均为1时输出1,其他时候则输出0。与门的真值表如下:
在这里插入图片描述

2. 或门

或门只要有一个输入信号是1,输出就为1。或门的真值表如下:
在这里插入图片描述

3. 与非门

与非门当两个输入信号同时为1时输出0,其他时候则输出1。与非门的真值表如下:
在这里插入图片描述

4. 异或门

异或门在两个输入信号相同(同时为0或者为1)时输出0,其他时候输出1。
在这里插入图片描述

5. 感知机实现基本逻辑电路

import numpy as np

# 与门
def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(x * w) + b
    if tmp <= 0:
        return 0
    else:
        return 1


# 与非门
def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(x * w) + b
    if tmp <= 0:
        return 0
    else:
        return 1

# 或门
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(x * w) + b
    if tmp <= 0:
        return 0
    else:
        return 1

if __name__ == '__main__':
    print("与门:输入x1 = 1,x2 = 1,输出 =",AND(1, 1))
    print("与门:输入x1 = 0,x2 = 1,输出 =", AND(0, 1))
    print("与门:输入x1 = 0,x2 = 0,输出 =", AND(0, 0))

    print("或门:输入x1 = 1,x2 = 1,输出 =", OR(1, 1))
    print("或门:输入x1 = 1,x2 = 0,输出 =", OR(1, 0))
    print("或门:输入x1 = 0,x2 = 0,输出 =", OR(0, 0))

    print("与非门:输入x1 = 1,x2 = 1,输出 =", NAND(1, 1))
    print("与非门:输入x1 = 1,x2 = 0,输出 =", NAND(1, 0))
    print("与非门:输入x1 = 0,x2 = 0,输出 =", NAND(0, 0))

运行结果:

与门:输入x1 = 1,x2 = 1,输出 = 1
与门:输入x1 = 0,x2 = 1,输出 = 0
与门:输入x1 = 0,x2 = 0,输出 = 0
或门:输入x1 = 1,x2 = 1,输出 = 1
或门:输入x1 = 1,x2 = 0,输出 = 1
或门:输入x1 = 0,x2 = 0,输出 = 0
与非门:输入x1 = 1,x2 = 1,输出 = 0
与非门:输入x1 = 1,x2 = 0,输出 = 1
与非门:输入x1 = 0,x2 = 0,输出 = 1

三. 感知机的局限性与解决

1. 单个感知机的局限

前面我们通过感知机已经实现了与门,或门,与非门,但是感知机无法实现异或门。

我们试着将或门的动作形象化。或门的情况下,当权重参数 ( b , w 1 , w 2 ) = ( − 0.5 , 1.0 , 1.0 ) (b, w_1, w_2) = (−0.5, 1.0, 1.0) (b,w1,w2)=(0.5,1.0,1.0)时,可满足或门的真值表条件。此时,感知机可用下式表示。
在这里插入图片描述
感知机会生成由直线 − 0.5 + x 1 + x 2 = 0 −0.5 + x_1 + x_2 = 0 0.5+x1+x2=0分割开的两个空间。其中一个空间输出1,另一个空间输出0。
在这里插入图片描述

或门在 ( x 1 , x 2 ) = ( 0 , 0 ) (x_1, x_2) = (0, 0) (x1,x2)=(0,0)时输出0,在 ( x 1 , x 2 ) (x_1, x_2) (x1,x2) ( 0 , 1 ) 、 ( 1 , 0 ) 、 ( 1 , 1 ) (0, 1)、 (1, 0)、 (1, 1) (0,1)(1,0)(1,1)时输出1。下图中, ○ ○ 表示0, △ △ 表示1。如果想制作或门,需要用直线将图中的 ○ ○ △ △ 分开。实际上,刚才的那条直线就将这4个点正确地分开了。
换成异或门的话会如何?如下图所示。
在这里插入图片描述
显然从图中可以看出,不能使用一条直线将图中的 ○ ○ △ △ 分开。

单个感知机的局限性就在于它只能表示由一条直线分割的空间

2. 多层感知机

感知机可以通过叠加实现非线性可分的问题。异或门可以通过与门,与非门,或门的叠加实现。
在这里插入图片描述

异或门编程实现
# 异或门
def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)

    return y
    
print("异或门:输入x1 = 1,x2 = 1,输出 =", XOR(1, 1))
print("异或门:输入x1 = 1,x2 = 0,输出 =", XOR(1, 0))
print("异或门:输入x1 = 0,x2 = 1,输出 =", XOR(0, 1))
print("异或门:输入x1 = 0,x2 = 0,输出 =", XOR(0, 0))

运行结果:

异或门:输入x1 = 1,x2 = 1,输出 = 0
异或门:输入x1 = 1,x2 = 0,输出 = 1
异或门:输入x1 = 0,x2 = 1,输出 = 1
异或门:输入x1 = 0,x2 = 0,输出 = 0

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后缀数组的应用:在哪个位置插入字符串使得字典序最大

题目描述 给定两个字符串 str1 和 str2&#xff0c;想把 str2 整体插入到 str1 中某个位置&#xff0c;形成最大的字典序&#xff0c;返回字典序最大的结果。其中 str1 长度为 NNN&#xff0c; str2 长度为 MMM&#xff0c;且 N>>MN >> MN>>M。 思路分析 …

【排序算法 下】带你手撕常见排序 (冒泡,快排,归并排序) (动图详解)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; “只要有花可开&#xff0c;就不允许生命与黯淡为伍。” 前言&#xff1a; 承接上篇&#xff0c;继续带大家手撕常见排序算法&#xff0c;这次讲剩余的两类&#xff1a;交换排序和归并排序。 注&#xff1a;…

C++——模板初阶与泛型编程

文章目录&#x1f490;专栏导读&#x1f490;文章导读&#x1f337;引例&#x1f337;函数模板&#x1f33a;函数模板的概念&#x1f33a;函数模板的格式&#x1f337;函数模板的原理&#x1f337;函数模板的实例化&#x1f33a;隐式实例化&#x1f33a;显式实例化&#x1f33a…

Maven安装

目录 1.Maven安装 1.1下载 1.2 安装步骤 1、解压 apache-maven-3.6.1-bin.zip&#xff08;解压即安装&#xff09; 2、配置本地仓库 3、配置阿里云私服 4、配置环境变量 1.3 安装检测 1.Maven安装 认识了Maven后&#xff0c;我们就要开始使用Maven了&#xff0c;那么首…

基于OpenCv的图像分割(分水岭算法)

文章目录图像分割distanceTransform()connectedComponents()watershed()查看图像的矩阵图像分割 图像分割对于图像处理和计算机视觉领域非常重要&#xff0c;可以用于对象识别、图像分析、图像压缩等应用。 注意&#xff1a;通常我们把前景目标的灰度值设为255&#xff0c;即白…

网络原理与网络通信

目录 网络互连原理 网络通信 IP地址和端口号 网络协议 五元组 协议分层 OSI七层模型 TCP/IP五层模型 封装和分用 网络互连原理 计算机在最开始的时候是没有网络的&#xff0c;每个计算机之间相互独立。这样处理信息就非常的麻烦&#xff0c;为了能够更高效的利用计算…

一个基于Java线程池管理的开源框架Hippo4j实践

文章目录概述定义线程池痛点功能框架概览架构部署Docker安装二进制安装运行模式依赖配置中心接入流程个性化配置线程池监控无中间件依赖接入流程服务端配置三方框架线程池适配拒绝策略自定义概述 定义 Hippo4j 官网地址 https://hippo4j.cn/ 最新版本1.5.0 Hippo4j 官网文档地…

硬件系统工程师宝典(17)-----你的PCB符合工艺要求吗?

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。上篇我们说到PCB设计中板子要符合EMC&#xff0c;信号的走线要平顺&#xff0c;信号回流阻抗尽量小。今天我们开始看看板子在生产制造时的工艺问题。…

【安全防御】防火墙(二)

目录 1、防火墙如何处理双通道协议 2、防火墙如何处理nat 3、防火墙支持哪些NAT&#xff0c;主要应用的场景是什么&#xff1f; 4、当内网PC通过公网域名解析访问内网服务器的时候&#xff0c;会存在什么问题&#xff0c;如何解决&#xff1f;请详细说明 5.防火墙使用VRRP…

面试题总结-JS

文章目录一、JS 系列1、原型、原型链2、闭包3、this指向4、call、 apply、 bind 的作用与区别&#xff1f;5、数组扁平化6、var、let、const 区别7、对称加密和不对称加密的区别8、js 的栈和堆9、对象的深拷贝和浅拷贝10、浏览器的事件循环机制11、宏任务和微任务12、script 标…

StringBuilder、StringBuffer、String的区别

StringBuilder与StringBuffer的append方法源码分析 #mermaid-svg-N8145OzAyMWzlewt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-N8145OzAyMWzlewt .error-icon{fill:#552222;}#mermaid-svg-N8145OzAyMWzlewt .er…

C#基础学习--泛型

目录 C#中的泛型 泛型类 声明泛型类 创建构造函数 创建变量和实例 类型参数的约束 Where 子句 泛型方法 声明泛型方法 ​编辑 调用泛型方法 扩展方法和泛型类 泛型结构 泛型委托 泛型接口 协变 逆变 接口的协变和逆变 C#中的泛型 泛型允许我们声明 类型参数化 的代码&…

Jetpack Compose大师乘势而上,创建引人入胜和直观的UI;实用技巧和技术

简述 Jetpack Compose 是 Android 上的一种全新的 UI 工具箱&#xff0c;旨在简化 Android UI 开发流程&#xff0c;提高开发效率和应用性能&#xff0c;并且提供更直观、更灵活、更强大的 UI 定义方式。 Jetpack Compose 提供了一套新的声明式 UI 编程模型&#xff0c;采用 …

【Redis】多级缓存(nginx缓存、redis缓存及tomcat缓存)

【Redis】多级缓存 文章目录【Redis】多级缓存1. 传统缓存的问题2. 多级缓存方案2.1 JVM进程缓存2.1.1 本地进程缓存2.1.2 Caffeine2.2 Nginx缓存2.2.1 准备工作2.2.2 请求参数处理2.2.3 nginx发送http请求tomcat2.2.3.1 封装http查询函数2.2.3.2 使用http函数查询数据2.2.4 ng…

Huffman 编码

1.Huffman编码 1952年提出一种编码方法&#xff0c;该方法完全依据字符出现概率来构造异字头的平均长度最短的码字&#xff0c;有时称之为最佳编码&#xff0c;一般就叫做Huffman编码(有时也称为霍夫曼编码)。 2.Huffman树 树是一种重要的非线性数据结构&#xff0c;它是数据元…

​2023年十大目标检测模型!

“目标检测是计算机视觉中最令人兴奋和具有挑战性的问题之一&#xff0c;深度学习已经成为解决该问题的强大工具。”—Dr. Liang-Chieh Chen目标检测是计算机视觉中的基础任务&#xff0c;它涉及在图像中识别和定位目标。深度学习已经革新了目标检测&#xff0c;使得在图像和视…

【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标

目录前言安装运行环境SAM模型的使用方法导入相关库并定义显示函数导入待分割图片使用不同提示方法进行目标分割方法一&#xff1a;使用单个提示点进行目标分割方法二&#xff1a;使用多个提示点进行目标分割方法三&#xff1a;用方框指定一个目标进行分割方式四&#xff1a;将点…

文件操作和IO—javaEE

文章目录1.文件1.1文件系统的结构1.2java中的文件操作&#xff08;metadata的操作&#xff09;2.io操作2.1定义2.2io划分2.3java的io流之输入流2.4java的io流之输出流1.文件 文件包含数据本身和文件的头信息&#xff08;metadata&#xff09;&#xff0c;文件的头信息包括文件…

VSCode的C/C++编译调试环境搭建(亲测有效)

文章目录前言1.安装VSCode和mingw642.配置环境变量3.配置VSCode的运行环境3.1设置CodeRunner3.2设置C/C4.调试环境配置前言 这片博客挺早前就写好了&#xff0c;一直忘记发了&#xff0c;写这篇博客之前自己配的时候也试过很多博客&#xff0c;但无一例外&#xff0c;都各种js…

SpringBoot(4)整合数据源

SpringBoot整合数据源数据层解决方案数据源技术持久化技术数据库技术NoSQL整合Redis整合MongDB整合ES数据层解决方案 MySQL数据库与MyBatisPlus框架&#xff0c;后面又用了Druid数据源的配置&#xff0c;所以现在数据层解决方案可以说是MysqlDruidMyBatisPlus。而三个技术分别…