什么是感知机——图文并茂,由浅入深

news2024/10/2 22:21:59

什么是感知机——图文并茂,由浅入深

文章目录

  • 什么是感知机——图文并茂,由浅入深
    • 引言
    • 感知机的引入
      • 宝宝版
      • 青年版
      • 老夫聊发少年狂版
      • 激活函数
    • 感知机的应用
      • 与门
      • 或门
    • 感知机与深度学习
      • 感知机与神经网络
      • 感知机和深度学习什么关系呢?

引言

生活中常常伴随着各种各样的逻辑判断,比如看到远方天空中飘来乌云,打开手机看到天气预报说1小时后40%的概率下雨,此时时候我们常常会做出等会下雨,出门带伞的判断。

上述思考过程可以抽象为一个”与“的”神经逻辑“。当”看到乌云“和”天气预报40%下雨“同时满足的时候,我们才会做出”等会下雨,出门带伞“的判断;假如只看到”乌云“,但天气预报说0%的概率下雨,抑或是没看见乌云,天气预报40%的概率下雨,我们会做出等下不会下雨的判断。

现在我们抽象一下刚刚的过程。

image-20230419183259978

逻辑的输入有两个:看见乌云、天气预报。经过逻辑判断,决定是否带伞。

在判断时,有人会更加相信肉眼所见的乌云,天气预报只是辅助,毕竟天气预报经常报不准;有人更加信任天气预报,心想谁知道这个乌云会不会等会飘走呢,有云又未必下雨。因此我们引入”信任度“这个概念。我更加信任天气预报,如果完全相信是1(也可以是2、3、3.4等等),那么我给”天气预报“0.7的信任度,给”看见乌云“0.3的信任度。

image-20230419184253390

相信读者一定有了一定概念,但是目前这样笼统的”判断“和”信任度“没有办法实际解决问题。主要有以下疑问:

  • ”信任度“是如何作用于判断呢?
  • ”判断”是如何进行的?
  • 笔者讲的这个判断和感知机什么关系?

下面我们将问题数学化,来定量得确定出这其中的逻辑关系,这个过程通常被叫做“数学建模”。

生活中有许许多多的判断,有的如同上述是否带伞一样简单,有的如同解答高数题一样复杂。这些判断都是根据许许多多外界环境输入到我们人脑中的信号,经过头脑中复杂的神经网络得出来的。

上面的例子是一个非常简单的判断,可以想象如果这种简单的判断以成千上万的数量组合,便可以形成一个非常庞大且复杂的“神经网络”,能够处理的事情。组成这张神经网络的单位,我们称之为“神经元”,粗略得说,我们也可以叫他“感知机”。

感知机的引入

宝宝版

分别用 x 1 x_1 x1表示“看见乌云”, x 2 x_2 x2表示“天气预报”。如果看见了乌云,那么 x 1 = 1 x_1=1 x1=1否则 x 1 = 0 x_1=0 x1=0;同样的,如果天气预报说40%概率下雨, x 2 = 1 x_2=1 x2=1,如果是0%的概率下雨, x 2 = 0 x_2=0 x2=0

y y y表示“是否带伞”,带伞时 y = 1 y=1 y=1,否则 y = 0 y=0 y=0

image-20230419190651723

为了叙述方便,我们这里把0.3、0.7信任度,称为加权。现在我们引入“加权和” a a a。他是输入变量的加权和。
a = 0.3 x 1 + 0.7 x 2 a=0.3x_1 + 0.7x_2 a=0.3x1+0.7x2
x 1 , x 2 x_1,x_2 x1,x2的可能取值总共只有4个,我们不妨把他们列举出来,暂且把表格称为真值表吧:(此处,我们认为,只有看到乌云和天气预报同时满足,我们才带伞)

x 1 x_1 x1 x 2 x_2 x2 a a a y y y
0000
100.30
010.70
1111

观察表格可以指定如下规则,用于判断:当 a a a大于某值 θ \theta θ,时, y y y取1,也就是带伞。
y = { 0 0.3 x 1 + 0.7 x 2 ≤ θ 1 0.3 x 1 + 0.7 x 2 > θ y= \left\{\begin{matrix} 0\quad 0.3x_1 + 0.7x_2\le \theta \\ 1\quad 0.3x_1 + 0.7x_2> \theta \end{matrix}\right. y={00.3x1+0.7x2θ10.3x1+0.7x2>θ
通过观察真值表,我们可以非常容易得到 θ \theta θ的取值,0.8或是0.9都可以,取值范围如下:
θ > 0.7 \theta>0.7 θ>0.7
至此现在我们把“判断”成功数学建模,如下:

image-20230419192855334

至此,一个完整的,具有实际意义的感知机建造完成,上图中间的圆圈便是感知机,它有两个输入信号,一个输出信号。我把他命名为“宝宝感知机”。

青年版

宝宝感知机的成长

宝宝感知机的判断逻辑是:
y = { 0 0.3 x 1 + 0.7 x 2 ≤ θ 1 0.3 x 1 + 0.7 x 2 > θ y= \left\{\begin{matrix} 0\quad 0.3x_1 + 0.7x_2\le \theta \\ 1\quad 0.3x_1 + 0.7x_2> \theta \end{matrix}\right. y={00.3x1+0.7x2θ10.3x1+0.7x2>θ
现在我们对它简单变换下:
y = { 0 0.3 x 1 + 0.7 x 2 + ( − θ ) ≤ 0 1 0.3 x 1 + 0.7 x 2 + ( − θ ) > 0 y= \left\{\begin{matrix} 0\quad 0.3x_1 + 0.7x_2+(-\theta)\le0 \\ 1\quad 0.3x_1 + 0.7x_2+(-\theta)> 0 \end{matrix}\right. y={00.3x1+0.7x2+(θ)010.3x1+0.7x2+(θ)>0
我们令 b = ( − θ ) b=(-\theta) b=(θ),公式可以进一步化简:
y = { 0 0.3 x 1 + 0.7 x 2 + b ≤ 0 1 0.3 x 1 + 0.7 x 2 + b > 0 y= \left\{\begin{matrix} 0\quad 0.3x_1 + 0.7x_2+b\le0 \\ 1\quad 0.3x_1 + 0.7x_2+b> 0 \end{matrix}\right. y={00.3x1+0.7x2+b010.3x1+0.7x2+b>0
紧接着,感知机示意图如下:

image-20230419194256640

还记得我们在引入宝宝感知机的时候,引入的加权和变量 a a a嘛,
a = 0.3 x 1 + 0.7 x 2 a=0.3x_1 + 0.7x_2 a=0.3x1+0.7x2
此时,我们不如再次借助它的概念来清晰化感知机的概念,我们令a新的表达如下:
a = 0.3 x 1 + 0.7 x 2 + b a=0.3x_1 + 0.7x_2+b a=0.3x1+0.7x2+b
则逻辑判断表述可以简化为:
h ( a ) = y = { 0 a ≤ 0 1 a > 0 h(a)=y= \left\{\begin{matrix} 0\quad a\le0 \\ 1\quad a> 0 \end{matrix}\right. h(a)=y={0a01a>0

此处我们用符号 h h h代替 f f f,仅仅是符号的改变,不改变含义。

画出简化后的感知机示意图会让概念更清晰:

image-20230419201103199

至此,一个完整的,具有实际意义的感知机建造完成,上图中求和与 h ( a ) h(a) h(a)一起构成感知机,它有三个输入信号,一个输出信号。我把他命名为“青年感知机”。

image-20230419201458220

老夫聊发少年狂版

要开始抽象介绍概念喽。

在深度学习领域,我们对上面提到的“信任度”、输入信号、输出信号等等都有专用的名词,现在我们来介绍下。首先把先前讨论的“信任度”0.3和0.7表示为: w 1 , w 2 w_1,w_2 w1w2

image-20230419202201795

总结一下上述的讨论:
h ( a ) = { 0 a ≤ 0 1 a > 0 h(a)= \left\{\begin{matrix} 0\quad a\le0 \\ 1\quad a> 0 \end{matrix}\right. h(a)={0a01a>0

a = w 1 x 1 + w 2 x 2 + b a=w_1x_1 + w_2x_2+b a=w1x1+w2x2+b

变量名称
w w w权重权重越高,信号在判断中的作用越大
b b b偏置依据判断结果进行调整
h ( a ) h(a) h(a)激活函数有多种选择,此处举例使用的是阶跃函数

至此完整的感知机便呈现在大家眼前,概念和专业名称均已阐明。

一般时候,我们把感知机表示成如下形式:

image-20230419203330446

激活函数

激活函数可以有多种选择,上述我们举例使用的是阶跃函数,表达式如下:
h ( a ) = { 0 a ≤ 0 1 a > 0 h(a)= \left\{\begin{matrix} 0\quad a\le0 \\ 1\quad a> 0 \end{matrix}\right. h(a)={0a01a>0
image-20230419203752372

此外还有sigmoid、ReLu可供选择。以sigmoid为例,表达式为:
h ( x ) = 1 1 + exp ⁡ ( − x ) h(x)=\frac{1}{1+\operatorname{exp}(-x)} h(x)=1+exp(x)1
image-20230419204158994

刚刚入门深度学习,可以先不去细究为什么要引入不同的激活函数,sigmoid函数作用是什么,怎么长得那么奇怪,相对于阶跃函数的优势在哪,在后面的学习中会体会到激活函数的作用。只需要知道,此处激活函数有多种选择就可以。

感知机的应用

与门

真值表如下:

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

我们现在对着感知机的图,确认取值。

image-20230419202201795

权重值和偏置 w 1 , w 2 , b w_1,w_2,b w1,w2,b有多种取值方式,比如分别取:0.5,0.5,-0.7.

x 1 x_1 x1 x 2 x_2 x2 a a a y y y
0000
10-0.20
01-0.20
110.31

image-20230419204912912

也可以分别取:1,1,-1.3.

x 1 x_1 x1 x 2 x_2 x2 a a a y y y
0000
10-0.30
01-0.30
110.71

或门

真值表如下:

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

权重值和偏置 w 1 , w 2 , b w_1,w_2,b w1,w2,b有多种取值方式,比如分别取:0.5,0.5,-0.2.

x 1 x_1 x1 x 2 x_2 x2 a a a y y y
0000
100.31
010.31
110.71

感知机与深度学习

感知机与神经网络

单一感知机只能实现简单的功能,但是数以万计、数以亿计的感知机配合起来,可以处理的问题就不那么简单喽。我们把感知机组成的整体,称为“神经网络”

感知机和深度学习什么关系呢?

以感知机的应用部分的“与门”为例,我们根据与门的真值表,人工给他确定了权重和偏置,让感知机实现了与门的功能。可是数以万计的感知机组成的网络,会有难以计数的权重和偏置,这个时候人工确认它们的取值不再现实。深度学习算法便可以解决这个问题,深度学习会根据真值表,学习出一个可能的权重和偏置,来实现与门的功能,不再需要人来确认参数。

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

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

相关文章

【4月比赛合集】19场可报名的「创新应用」和「程序设计」大奖赛,任君挑选!

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注! 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考,以比赛官网为准 目录 创新应用赛&…

【SpringBoot】一:SpringBoot的基础(上)

文章目录 1. 脚手架创建项目1.1使用Spring Initializr1.2 IDEA中使用脚手架创建项目 2. 代码结构2.1 单一结构2.2 多模块2.3 包和主类2.4 pom文件2.4.1 父项目2.4.2 启动器2.4.3 不使用父项目 3. 运行SpringBoot项目 1. 脚手架创建项目 脚手架辅助创建程序的工具,S…

《Java8实战》第12章 新的日期和时间 API

原来的Java的时间类Date、java.util.Calendar类都不太好,以语言无关方式格式化和解析日期或时间的 DateFormat 方法也有线程安全的问题 12.1 LocalDate、LocalTime、LocalDateTime、Instant、Duration 以及 Period 12.1.1 使用 LocalDate 和 LocalTime LocalDate…

Maven的概述

Maven是干什么用的 maven提供了一套标准的项目结构,这样可以让不同编译器所写的代码在任何一个编译器上都可以运行。 maven提供了一套标准化的构建流程 编译,测试,打包,发布->maven提供了简单的命令可以完成这些操作&#xf…

1秒解决notion客户端所有问题-历史上最简单

1 前言 你是否安装了enhancer后,notion打不开,一直报错?你是否为实现notion客户端汉化和大纲的各种操作而各种苦恼?你是否不习惯使用网页的开始,很想有一个客户端的notion! 全部解决! 2 网页…

如何理解线程池

线程池的核心状态 核心状态说明 在线程池的核心类ThreadPoolExecutor中&#xff0c;定义了几个线程池在运行过程中的核心状态&#xff0c;源码如下&#xff1a; private static final int COUNT_BITS Integer.SIZE - 3;private static final int CAPACITY (1 << CO…

不良事件报告系统源码,PHP医院安全(不良)事件报告系统源码,在大型医院稳定运行多年

PHP医院安全&#xff08;不良&#xff09;事件报告系统源码&#xff0c;不良事件系统源码&#xff0c;有演示&#xff0c;在大型医院稳定运行多年。 系统技术说明 技术架构&#xff1a;前后端分离&#xff0c;仓储模式 开发语言&#xff1a;PHP 开发工具&#xff1a;VSco…

AE开发20210531之色彩设置、渐变色、符号颜色、属性框内数据操作、另存图层、设计添加属性对话框

笔记 选择ID变化后&#xff0c;清空symbol&#xff0c;添加进新的来&#xff0c;渐变色设置符号颜色对属性框中数据进行操作另存图层&#xff0c;save方法savelayer打开属性对话框自己设计添加属性对话框 课程设计下一节课&#xff0c;图层的渲染 点符号&#xff0c;线符号&…

satoken+ gateway网关统一鉴权 初版

一&#xff1a;感谢大佬 本博客内容 参考了satoken官网实现&#xff0c;satoken官网地址&#xff1a; https://sa-token.cc/doc.html#/micro/gateway-auth 二&#xff1a;项目层级介绍 jinyi-gateway 网关服务jinyi-user-service 用户服务 2.1 jinyi-user-api 2.2 jinyi-use…

Docker 快速上手

目录 一、初始Docker 二、Docker基本操作 1、镜像操作命令 2、容器相关命令 3、数据卷 三、Deckerfile自定义镜像 1、镜像结构 2、自定义镜像 四、DockerCompose 一、初始Docker 镜像(lmage):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起&am…

Docker中配置Mysql主从复制

新建主服务器容器实例3307 进入/mydata/mysql-master/conf目录下新建my.cnf vim my.cnf [mysqld] ## 设置server_id&#xff0c;同一局域网中需要唯一 server_id101 ## 指定不需要同步的数据库名称 binlog-ignore-dbmysql ## 开启二进制日志功能 log-binmall-mysql-bin …

Spring中读取和存储Bean对象(5000字详解)

在Spring项目的创建和使用(Spring项目的创建和使用_蜡笔小心眼子&#xff01;的博客-CSDN博客)中&#xff0c;我们详细讲解了如何通过配置XML文件存取Bean对象&#xff0c;但是没新增一个Bean对象时就需要添加一个Bean标签&#xff0c;而且如果同一个Bean对象被多次注册到Sprin…

轻松掌握K8S命名空间、Pod、Deployment部署工具

1、NameSpace命名空间 在官方可视化工具界面为如下 也可以使用kubectl命令行具体看使用命令行操作 2、Pod应用组 k8s所说的应用通常就是指pod&#xff0c;一个pod可以部署多个容器。容器间共享网络空间&#xff0c;共享存储 3、根据应用类型选择部署Pod的工具 k8s官方也有对…

运行Omniverse Replicator Headlessly

运行Replicator Headlessly 学习目标 本教程的目的是向您展示如何不费吹灰之力地使用 Replicator。 Headless 在这种情况下意味着计算设备没有显示器或外围设备&#xff0c;例如键盘和鼠标。 为了做到这一点&#xff0c;我们将对 Replicator 的核心功能 - “Hello World”中解…

MyBatis-Plus Generator v2.0.8 ~ v3.1.1 最新代码自动生成器

一、概述 官网&#xff1a;https://baomidou.com/ 官方文档 &#xff1a;https://baomidou.com/pages/56bac0/ 官方源码地址&#xff1a; https://gitee.com/baomidou/mybatis-plus 官方原话&#xff1a; AutoGenerator 是 MyBatis-Plus 的代码生成器&#xff0c;通过 Auto…

高级篇七、InnoDB数据存储结构

1、数据库的存储结构&#xff1a; 页 1.1 磁盘与内存交互的基本单位&#xff1a;页 1.2 页结构概述 页a&#xff0c;页b&#xff0c;页c … 页n 这些页可以不在物理结构上相连&#xff0c;只要通过双向链表相关联即可每个数据页中的记录会按照主键值从小到大的顺序组成一个单项…

Qt5.12实战之图形编程初识

演示效果: 1.绘制条件: 1. 绘图设备-> QPainter 2.画笔->QPen --->字体 (QFont) 3.画刷->QBrush-->自己定义画刷(QPixmap) 4.绘制事件->QPaintEvent 绘图步骤: 1.重写基类的虚函数 void paintEvent(QPaintEvent *event); 2.在虚函数 void paintEvent…

C++---状态压缩dp---愤怒的小鸟(每日一道算法2023.4.19)

注意事项&#xff1a; 难度警告&#xff01;这题在NOIP中也算偏难的题&#xff0c;量力而行。 本题为"状态压缩dp—最短Hamilton路径"的扩展题&#xff0c;建议先阅读这篇文章并理解。 本题是"重复覆盖问题"可以使用"Dancing Links"做&#xff0…

MySql-高级( 面试问题简析) 学习笔记

文章目录 1. MySql 中 MyISAM 和 InnoDB 存储引擎区别1.1. MyISAM1.2. InnoDB 2. 索引的数据结构2.1. B Tree索引2.2. BTree索引2.3. MySql 做的优化 3. 为什么使用BTree索引而不使用Hash索引&#xff1f;4. 为什么使用BTree索引而不使用B-Tree索引&#xff1f;5. MyISAM 存储引…

检测并打印C++编译器支持的feature(附Visual Studio 2022测试结果)

C标准快速迭代&#xff0c;不同的系统平台和编译器对C各种新功能的支持不同&#xff0c;通过这个程序可以测试所用编译器对各个版本C的支持情况。另一方面&#xff0c;可以在代码中通过这些宏针对不同版本编写不同的代码分支。 源码下面附上Visual Studio 2022的测试结果&#…