感知机与门电路

news2024/11/15 19:35:50

前言:简述单层感知机特征及三种表示方式,并用单层感知机描述门电路,借由单层感知机无法处理非线性空间的问题,引出多层感知机。

单层感知机

感知机(preceptron)接收多个输入信号,输出一个信号。

如下图所示为有两个输入的感知机。其中, x 1 x_1 x1 x 2 x_2 x2 为输入信号, y y y 为输出信号, w 1 、 w 2 w_1、w_2 w1w2 为权重,输入信号分别乘上各自权重,若两者总和超过某一阈值 θ \theta θ,则输出1,类似于神经元被激活。
在这里插入图片描述

数学表示
y = { 0 , w 1 x 1 + w 2 x 2 ⩽ θ 1 , w 1 x 1 + w 2 x 2 > θ y= \begin{cases}0 , w_1 x_1+w_2 x_2 \leqslant \theta \\ 1 , w_1 x_1+w_2 x_2>\theta\end{cases} y={0,w1x1+w2x2θ1,w1x1+w2x2>θ
权重 w w w 表示信号的重要程度;阈值 θ \theta θ 表示神经元被激活的难易程度,若 θ \theta θ 为 -50,则神经元被激活难度大,反之难度小。

另一种数学表示
y = { 0 , w 1 x 1 + w 2 x 2 + b ⩽ 0 1 , w 1 x 1 + w 2 x 2 + b > 0 y= \begin{cases}0 , w_1 x_1+w_2 x_2+b \leqslant 0 \\ 1 , w_1 x_1+w_2 x_2+b>0\end{cases} y={0,w1x1+w2x2+b01,w1x1+w2x2+b>0
较上式,令 b = − θ b=-\theta b=θ,称为偏执。这种表示方法便于编程时借助矩阵运算。

几何表示:表示空间中的一条直线,无法表示曲线。由直线划分的空间称为线性空间,由曲线划分的空间表示非线性空间。



感知机 与 门电路

感知机能够表示与门、或门、非门。

与门

与门(AND gate)是有两个输入和一个输出的门电路,与门特点是全1则1,其余为0。下表为与门真值表,即输入和输出信号的对应表。

x 1 x_1 x1 x 2 x_2 x2 y y y
000
010
100
111

数学表示:
y = { 0 , 0.5 x 1 + 0.5 x 2 ⩽ 0.7 1 , 0.5 x 1 + 0.5 x 2 > 0.7 y= \begin{cases}0 ,0.5x_1+0.5x_2 \leqslant 0.7 \\ 1 , 0.5x_1+0.5x_2>0.7 \end{cases} y={0,0.5x1+0.5x20.71,0.5x1+0.5x2>0.7
几何表示:
在这里插入图片描述

Python 实现:

#数学表示1
def AND_gate(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = w1*x1 + w2*x2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1
    
# ===========================
# 数学表示2
import numpy as np
def AND_gate_1(x1, x2):
    x = np.array([x1, x2, 1])
    w = np.array([0.5, 0.5, -0.7])
    tmp = np.sum(w*x)
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

与非门

和「与门」的输出相反。
y = { 0 , − 0.5 x 1 − 0.5 x 2 ⩽ − 0.7 1 , − 0.5 x 1 − 0.5 x 2 > − 0.7 y= \begin{cases}0 ,-0.5x_1-0.5x_2 \leqslant -0.7 \\ 1 , -0.5x_1-0.5x_2>-0.7 \end{cases} y={0,0.5x10.5x20.71,0.5x10.5x2>0.7
Python实现:

import numpy as np
def NAND_gate(x1, x2):
    x = np.array([x1, x2, 1])
    w = np.array([-0.5, -0.5, 0.7])
    tmp = np.sum(w*x)
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

或门

有1则1,全0则0。
y = { 0 , 0.5 x 1 + 0.5 x 2 ⩽ 0.2 1 , 0.5 x 1 + 0.5 x 2 > 0.2 y= \begin{cases}0 ,0.5x_1+0.5x_2 \leqslant 0.2 \\ 1 , 0.5x_1+0.5x_2>0.2 \end{cases} y={0,0.5x1+0.5x20.21,0.5x1+0.5x2>0.2
Python 实现:

import numpy as np
def OR_gate(x1, x2):
    x = np.array([x1, x2, 1])
    w = np.array([0.5, 0.5, -0.2])
    tmp = np.sum(w*x)
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1

异或门

仅当 x 1 、 x 2 x_1、x_2 x1x2 中一方为1时,才会输出 1。

x 1 x_1 x1 x 2 x_2 x2 y y y
000
011
101
110

无法用一条直线划分两种标记,因为感知机不能表示空间曲线。
在这里插入图片描述

多层感知机

单层感知机无法表示非线性空间,但多层感知机(multi-layered perceptron)可以表示。

通过叠加与、非与、或门实现异或门,Python 实现如下:

def XOR(x1, x2):
    s1 = NAND_gate(x1, x2)
    s2 = OR_gate(x1, x2)
    y = AND_gate(s1, s2)
    return y

如下图所示为2层感知机,感知机总共由 3 层构成,但是因为拥有权重的层实质上只有 2 层(第 0 层和第 1 层之间,第 1 层和第 2 层之间),所以称为「2层感知机」。不过,若从 3 层结构来看,也可称为「3层感知机」。
在这里插入图片描述


参考书籍:
深度学习入门:基于Python的理论与实现 (斋藤康毅)

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

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

相关文章

【Kubernetes 企业项目实战】05、基于云原生分布式存储 Ceph 实现 K8s 数据持久化(上)

目录 一、分布式存储 Ceph 基本介绍 1.1 块存储&#xff08;rbd&#xff09; 1.2 文件系统 cephfs 1.3 对象存储 1.4 分布式存储的优点 二、Ceph 核心组件介绍 三、准备安装 Ceph 高可用集群的实验环境 3.1 机器配置 3.2 初始化环境 3.3 配置互信 3.4 配置 Ceph 安…

【精选博客】反爬过程中 x-ca-nonce、x-ca-signature 参数的解密过程

本篇博客在 请求头 x-ca-key、x-ca-nonce、x-ca-signature 加密分析第一篇 的基础上继续编写&#xff0c;大家学习时可以从上一篇入手。 文章目录x-ca-nonce 代码实现python 实现 uuidx-ca-signature代码实现在上一篇博客我们已经捕获了参数的JS代码&#xff0c;这篇博客重点要…

Java设计模式-策略模式Strategy

介绍 策略模式&#xff08;Strategy Pattern&#xff09;中&#xff0c;定义算法族&#xff08;策略组&#xff09;&#xff0c;分别封装起来&#xff0c;让他们之间可以互相替换&#xff0c;此模式让算法的变化独立于使用算法的客户。这算法体现了几个设计原则&#xff0c;第…

这些学习技巧学起来

技巧一&#xff1a;组合多个对象 在PPT页面插入多个图形后&#xff0c;想要移动这些元素时&#xff0c;很多小伙伴会挨个拖动进行位置调整。其实&#xff0c;我们大可以使用快捷键【CtrlG】将多个同类的元素进行组合&#xff0c;使其成为一个图形元素&#xff0c;这样就可以方…

springboot整合mybatis-plus及mybatis-plus分页插件的使用

springboot整合mybatis-plus及mybatis-plus分页插件的使用1. mybatis-plus?2. 引入依赖3. 编写配置文件4. 编写sql表5. mapper层5.1 mybatis-plus做了什么&#xff1f;及创建mapper接口5.2 baseMapper源码6. service层及controller层6.1 service层6.2 controller层6.2.1 page对…

【html】超链接样式

超链接样式超链接样式超链接样式 根据超链接的类型&#xff0c;显示不同图片的前缀 根据 <!doctype html> <html> <head> <meta charset"utf-8"> <title></title> <style type"text/css"> body {background: …

C# 托管堆遭破坏问题溯源分析

一&#xff1a;背景 1. 讲故事 年前遇到了好几例托管堆被损坏的案例&#xff0c;有些运气好一些&#xff0c;从被破坏的托管堆内存现场能观测出大概是什么问题&#xff0c;但更多的情况下是无法做出准确判断的,原因就在于生成的dump是第二现场&#xff0c;借用之前文章的一张…

Exynos4412 移植针对Samsung的Linux-6.1(四)NandFlash卡驱动

系列文章目录 Exynos4412 移植针对Samsung的Linux-6.1&#xff08;一&#xff09;下载、配置、编译Linux-6.1Exynos4412 移植针对Samsung的Linux-6.1&#xff08;二&#xff09;SD卡驱动——解决无法挂载SD卡的根文件系统Exynos4412 移植针对Samsung的Linux-6.1&#xff08;三…

C++基础——C++ 循环

C基础——C 循环C 循环循环类型循环控制语句无限循环C 循环 有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂…

计算机自动和声分析

思路&#xff1a;信号→和声 通过计算特征值&#xff08;特征向量&#xff09;区分音频的关键信息 Chroma特征向量 (32 条消息) 什么是 Chroma Features&#xff1f; - 知乎 (zhihu.com) 基本思想&#xff1a;音高听感的周期性 音高每高一个八度&#xff0c;就回到相似的听…

计算机相关专业提升学历的解决方案(博士研究生)

文章目录1、正规全日制博士1.1 申请 - 考核制1.2 硕博连读与直博2、继续教育&#xff08;非全日制&#xff09;2.1 在职博士2.2 同等学力申博3、海外博士3.1 海外博士3.2 中外合作博士博士录取政策 国内博士&#xff0c;没有具体的政策&#xff0c;招生权力下放到各个高校。 往…

Spark 行动算子

文章目录Spark 行动算子1、reduce2、collect3、count4、first5、take6、takeOrdered7、代码示例8、aggregate9、fold10、countByValue & countByKey (wordcount重点)Spark 行动算子 所谓的行动算子&#xff0c;其实就是触发作业执行的方法&#xff0c;之前的转换算子是不能…

Lua 模块与包

Lua 模块与包 参考至菜鸟教程。 模块类似于一个封装库&#xff0c;从 Lua 5.1 开始&#xff0c;Lua 加入了标准的模块管理机制&#xff0c;可以把一些公用的代码放在一个文件里&#xff0c;以 API 接口的形式在其他地方调用&#xff0c;有利于代码的重用和降低代码耦合度。 Lua…

一起自学SLAM算法:11.3 路径规划

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 路径规划其实就是在回答图11-1中机器人提出的第3个问题“我该如何去”&#xff0c;不管是在已知地图上导航或是在未知环境下通过一边探索地图一边导航&#xff0c;路径规划其实就是在地图上寻找到一条从起点到目…

CMMI3-5级如何高效落地?——CMMI落地4大工具

为了助力CMMI3-5级高效落地&#xff0c;近日CoCode旗下Co-ProjectV3.0智能项目管理平台全面升级&#xff0c;CMMI落地4大工具正式上线&#xff1a;CMMI成熟度自测工具、量化管理工具&#xff08;组织级过程改进工具和量化项目管理工具&#xff09;、组织级过程资产库。 01、CMM…

年后创业,该如何选择适合年轻人的小成本创业项目?

2023年创业大潮即将来袭&#xff0c;疫情政策的放开&#xff0c;会让越来越多的年轻人选择创业。单纯的工作已经不能满足年轻人的生活需求&#xff0c;那无经验、无人脉的年轻人该如何选择适合自己的创业项目&#xff1f;小编在这里总结了几点&#xff0c;适合年轻人的小成本项…

Android Kotlin 多线程编程 server

参考: 《第一行代码 第三版》 10.1 service 是什么 Service是实现程序后台运行的解决方案&#xff0c;适合执行非交互&#xff0c;后台预先的任务&#xff0c;即使用户打开其他应用&#xff0c;Service也能够正常运行 Service需要内部手动创建子线程 10.2 多线程编程 用法&a…

Makefile学习⑨:Makefile中的等号和shell命令的使用

Makefile学习⑨&#xff1a;Makefile中的等号和shell命令的使用 Makefile中的等号 “” 普通赋值符号&#xff0c;命令格式如下 变量值注意&#xff1a;变量的最终值为该文件中的最后进行赋值操作所赋的值。 &#xff08;不管在当前文件的何处进行赋值&#xff0c;在使用该…

【MySQL】MySQL经常使用时间日期相关函数

MySQL经常使用时间、日期相关函数 MySQL经常使用的时间、日期相关函数 1. 日期函数 显示当前日期函数&#xff1a;CURDATE(), CURRENT_DATE(), CURRENT_DATE SQL&#xff1a;select CURDATE(), CURRENT_DATE(), CURRENT_DATE from dual; 2. 时间函数 显示当前日期函数&…

Mysql专栏(五) Mysql高可用

Mysql专栏收尾之作&#xff0c;作为一名后端开发人员&#xff0c;对于Mysql的知识了解到这里已经足以应对99的场景了&#xff0c;毕竟没有必要非要跟DBA抢活儿干。 而且现在的趋势都是往云上走&#xff0c;云数据库已经帮我们处理了高可用和数据一致性的事情了&#xff0c;所以…