感知机简介

感知机简介

  • 导语
  • 感知机
    • 简单逻辑电路实现
      • 权重和配置
      • 与/或/与非
        • 与门实现
        • 与非门实现
        • 或门实现
    • 线/非线性
    • 单/多层感知机
      • 异或
  • 总结
  • 参考文献

导语

学习感知机有助于更好的理解深度学习的神经元、权重等概念,感知机的结构和概念很简单,只要学过基本线性代数、数字电路逻辑就能理解,如果直接学习深度学习的神经元等概念,可能会比较难啃,但是在学过感知机之后,再走入深度学习的殿堂就变得简单了。

感知机

感知机的基本功能是允许接收多个输入信号,随后输出一个信号,有点类似程序设计语言中的函数,现实中比较好理解的例子有很多,比如说74ls138芯片,多路选择器这种,简单的原理如下图。

在这里插入图片描述
在这个感知机中, x 1 , x 2 x_1,x_2 x1,x2作为输入信号, y y y为输出信号, w 1 , w 2 w_1,w_2 w1,w2是权重,圆圈为节点,信号输入时会与对应的权重相乘,并将结果累和,当累和值超过阈值 θ \theta θ时, y y y才会有输出1,否则为0。

以图论的角度来理解的话,整个感知机是一个有向无环图, x 1 , x 2 x_1,x_2 x1,x2为点权, w 1 , w 2 w_1,w_2 w1,w2为边权, y y y的点权由点权×边权的累和与阈值判断来决定。

将图以数学式子来表示的话,就是下式。

y = { 0 , i f ( w 1 x 1 + w 2 x 2 ≤ θ ) 1 , i f ( w 1 x 1 + w 2 x 2 > θ ) y= \begin{cases} 0,&if &(w_1x_1+w_2x_2\le\theta)\\ 1,&if &(w_1x_1+w_2x_2\gt\theta) \end{cases} y={0,1,ifif(w1x1+w2x2θ)(w1x1+w2x2>θ)

权重越大,代表对应输入对最后结果的影响越大。

简单逻辑电路实现

从简单的数字电路逻辑实现来入手有助于对感知机进行理解,在此略过与或非等概念的解释,只给出实现

权重和配置

对于上一部分的式子,如果我们将 θ \theta θ移到左边,用一个新的字符 b b b来代替,可以发现得到的式子和深度学习所用到的式子非常类似,如下图。
y = { 0 , i f ( w 1 x 1 + w 2 x 2 + b ≤ 0 ) 1 , i f ( w 1 x 1 + w 2 x 2 + b > 0 ) y= \begin{cases} 0,&if &(w_1x_1+w_2x_2+b\le0)\\ 1,&if &(w_1x_1+w_2x_2+b\gt 0) \end{cases} y={0,1,ifif(w1x1+w2x2+b0)(w1x1+w2x2+b>0)

b b b在这里被视为偏置,用来修正先前部分计算的结果,按照书上的说法是调整神经元被激活的容易程度,按照我的理解, b b b类似于一种敏感度,一个门槛,当先前部分结果越过了这个门槛,其值才有效。

与/或/与非

下面是书上对各门电路的实现代码,按照自己的编程习惯改了点。

与门实现
import numpy as npdef AND(x1,x2):x=np.array([x1,x2])w=np.array([0.6,0.6])#w是可变的b=-0.8#b也一样#w=[0.5,0.5],b=-0.7也可y=np.sum(w*x)+bif y<=0:return 0else:return 1print(AND(0,0))
print(AND(0,1))
print(AND(1,0))
print(AND(1,1))

在这里插入图片描述

与非门实现
import numpy as npdef NAND(x1,x2):x=np.array([x1,x2])w=np.array([-0.6,-0.6])#w是可变的b=0.8#b也一样y=np.sum(w*x)+bif y<=0:return 0else:return 1print(NAND(0,0))
print(NAND(0,1))
print(NAND(1,0))
print(NAND(1,1))

在这里插入图片描述

或门实现
import numpy as npdef OR(x1,x2):x=np.array([x1,x2])w=np.array([0.6,0.6])#w是可变的b=-0.3#b也一样y=np.sum(w*x)+bif y<=0:return 0else:return 1print(OR(0,0))
print(OR(0,1))
print(OR(1,0))
print(OR(1,1))

在这里插入图片描述

线/非线性

在实现前面的各种门电路的时候,可以发现能够满足最后输出的权重值和偏置值是有多组的,为了更好的解释这个问题,书上结合了高中数学的线性规划知识点,用了一个非常巧妙的方法来解释这个问题,以或门的输出为例,具体如下图。
在这里插入图片描述
假设以 x 1 x_1 x1为横坐标, x 2 x_2 x2为纵坐标,图中三角形为输出为1的情况,圆形为输出为0的情况,可以清楚的看到,以虚线 l l l为分界线(即 b + w 1 ∗ x 1 + w 2 ∗ x 2 = 0 b+w_1*x1+w_2*x2=0 b+w1x1+w2x2=0)时,虚线正好把所有输出为0和输出为1的情况分开了,也就是说,构成了一个可以由一条直线分割的线性空间,通常情况下,这条直线是不唯一的,这也解释了偏置值和权重值存在多组的原因。

在实现了与门等简单电路后,我们可以探讨如何实现异或门,异或门是否也能像前三个一样实现?以异或门的输出构造的图如下。
在这里插入图片描述
可以发现,无论取怎样的直线,都不可能将1和0的情况完全分割开了,这个时候,直线已经无法分割了,也就是说不存在可用的线性空间了。

在这里插入图片描述

一计不成再生一计,当我们使用曲线时,就会发现,存在一个曲线能够将0和1的情况分割开来,与直线相对应的,即存在一个可用曲线分割的非线性空间

单/多层感知机

到这里,异或和感知机似乎无缘了,但是如果学习过数字电路逻辑就知道,异或是可以通过与门这些门电路进行实现的,在感知机上的具体体现,就是感知机可以通过“叠加层”来实现更复杂的结构。

像上述实现与门、或门这些的感知机,被称为单层感知机,因其输入输出间只有一层而得名,更具体来说,是因为单层感知机只能分割线性空间,而不能分割非线性空间,与单层感知机相对应的是多层感知机,输入输出间存在多层,可以分割非线性空间。

书中提到,理论上2层感知机可以表示任意函数(激活函数使用sigmod的感知机)。

异或

根据数字电路的知识,可以在与、或、与非门的基础上实现异或门,具体如下。

import numpy as npdef OR(x1,x2):x=np.array([x1,x2])w=np.array([0.6,0.6])#w是可变的b=-0.3#b也一样y=np.sum(w*x)+bif y<=0:return 0else:return 1def NAND(x1,x2):x=np.array([x1,x2])w=np.array([-0.6,-0.6])#w是可变的b=0.8#b也一样y=np.sum(w*x)+bif y<=0:return 0else:return 1def AND(x1,x2):x=np.array([x1,x2])w=np.array([0.6,0.6])#w是可变的b=-0.8#b也一样#w=[0.5,0.5],b=-0.7也可y=np.sum(w*x)+bif y<=0:return 0else:return 1def XOR(x1,x2):return AND(NAND(x1,x2),OR(x1,x2))print(XOR(0,0))
print(XOR(0,1))
print(XOR(1,0))
print(XOR(1,1))

在这里插入图片描述

图示如下,可以看到是一个有向无环图,其中 x 1 , x 2 x_1,x_2 x1,x2 s 1 , s 2 s_1,s_2 s1,s2是全连接,整个图有点像网络流。

在这里插入图片描述

总结

在数字电路和基本的线性规划基础上,理解感知机是不难的,感知机作为深度学习的起点和敲门砖,实在是一个非常巧妙的结构,此书也讲解的非常透彻、便于理解。

参考文献

  1. 《深度学习入门——基于Python的理论与实践》

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

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

相关文章

华为静态路由跨网段通信eNSP

拓扑图&#xff1a; 底层原理&#xff1a; 通信需要4个地址 源MAC 源IP 目标MAC 目标IP ARP地址解析协议 通过ip地址解析MAC 如果是相同的网段直接通过 arp直接发送广播 谁是192.168.1.2 我需要的MAC 1.2就会回应告诉 1.1他的MAC 1.1会封装4个地址 发送方的IP MAC 接受方IP和MA…

景源畅信:抖音小店有哪些人气品类?

抖音小店作为短视频平台中的一股清流&#xff0c;已经成为了众多商家和消费者关注的焦点。在这个平台上&#xff0c;有各种各样的商品琳琅满目&#xff0c;让人眼花缭乱。那么&#xff0c;抖音小店有哪些人气品类呢?下面就从四个不同的方面来详细阐述这个问题。 一、美妆护肤类…

【挑战30天首通《谷粒商城》】-【第一天】01、简介-项目介绍

文章目录 课程介绍一、 项目介绍1、项目背景A、电商模式1、B2B 模式2、B2C 模式3、C2B 模式4、C2C 模式5、O2O 模式 1.2、项目架构图1.3、项目技术 & 特色1.4、项目前置要求二、分布式基础概念(略)三、环境撘建(略) one more thing 课程介绍 1.分布式基础(全栈开发篇)2.分…

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园健康驿站管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

种植牙市场规模呈稳步增长态势 行业具有良好发展基础

种植牙市场规模呈稳步增长态势 行业具有良好发展基础 种植牙指的是一种以植入骨组织内的下部结构为基础来支持、固位上部牙修复体的缺牙修复方式。种植牙可以获得与天然牙功能、结构以及美观效果十分相似的修复效果&#xff0c;近年来受到市场越来越多的关注。 从行业整体来看&…

基于springboot+mybatis+vue的项目实战之增删改查CRUD

目录结构 PeotController.java package com.example.controller;import com.example.pojo.Peot; import com.example.pojo.Result; import com.example.service.PeotService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web…

Eigen求解线性方程组

1、线性方程组的应用 线性方程组可以用来解决各种涉及线性关系的问题。以下是一些通常可以用线性方程组来解决的问题&#xff1a; 在实际工程和科学计算中&#xff0c;求解多项式方程的根有着广泛的应用。 在控制系统的设计中&#xff0c;我们经常需要求解特征方程的根来分析…

2023年ICPC亚洲济南地区赛 G. Gifts from Knowledge

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5, b…

Java基于B/S医院绩效考核管理平台系统源码java+springboot+MySQL医院智慧绩效管理系统源码

Java基于B/S医院绩效考核管理平台系统源码javaspringbootMySQL医院智慧绩效管理系统源码 医院绩效考核系统是一个关键的管理工具&#xff0c;旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标&#xff0c;还能提升医疗服…

llama.cpp制作GGUF文件及使用

llama.cpp的介绍 llama.cpp是一个开源项目&#xff0c;由Georgi Gerganov开发&#xff0c;旨在提供一个高性能的推理工具&#xff0c;专为在各种硬件平台上运行大型语言模型&#xff08;LLMs&#xff09;而设计。这个项目的重点在于优化推理过程中的性能问题&#xff0c;特别是…

MultiBooth:文本驱动的多概念图像生成技术

在人工智能的领域&#xff0c;将文本描述转换为图像的技术正变得越来越先进。最近&#xff0c;一个由清华大学和Meta Reality Labs的研究人员组成的团队&#xff0c;提出了一种名为MultiBooth的新方法&#xff0c;它能够根据用户的文本提示&#xff0c;生成包含多个定制概念的图…

基于大语言模型的Agent的探索与实践

AI代理是人工智能领域的核心概念之一&#xff0c;它指的是能够在环境中感知、做出决策并采取行动的计算实体。代理可以是简单的&#xff0c;如自动化的网页爬虫&#xff0c;也可以是复杂的&#xff0c;如能够进行战略规划和学习的自主机器人。 AI代理的概念最早源于哲学探讨&am…

python:画折线图

import pandas as pd import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 设置新宋体字体的路径 font_path D:/reportlab/simsun/simsun.ttf# 加载新宋体字体 prop FontProperties(fnamefont_path)""" # 读取 xlsx 文件 d…

ESP-WROOM-32配置Arduino IDE开发环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、下载Arduino IDE二、安装工具集三、测试样例1.选则开发板2.连接开发板3.示例程序 四、使用官方示例程序总结 前言 之前用了很多注入STM32、树莓派Pico和Ar…

探索Java的未来

目录 一、云计算与大数据 二、人工智能与机器学习 三、物联网与边缘计算 四、安全性与性能优化 五、社区与生态 Java&#xff0c;作为一种广泛使用的编程语言&#xff0c;自其诞生以来就以其跨平台性、面向对象特性和丰富的库资源赢得了开发者的青睐。然而&#xff0c;随着…

【漏洞复现】Apahce HTTPd 2.4.49(CVE-2021-41773)路径穿越漏洞

简介&#xff1a; Apache HTTP Server是一个开源、跨平台的Web服务器&#xff0c;它在全球范围内被广泛使用。2021年10月5日&#xff0c;Apache发布更新公告&#xff0c;修复了Apache HTTP Server2.4.49中的一个路径遍历和文件泄露漏洞&#xff08;CVE-2021-41773&#xff09;。…

报错(已解决):无法加载文件 D:\code\NodeJs\pnpm.ps1,因为在此系统上禁止运行脚本。

问题&#xff1a; 在vscode运行uniapp项目需要拉取全部依赖&#xff0c;需要使用到pnpm&#xff0c;在vscode终端运行命令&#xff1a;pnpm install后报错&#xff1a; 解决办法&#xff1a; 1&#xff1a;我未安装pnpm&#xff0c;首先打开电脑cmd&#xff0c;运行下列命令&a…

锂电池恒流恒压CCCV充电模型MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; CCCV简介 CCCV充电过程是恒流充电&#xff08;CC&#xff09;和恒压充电&#xff08;CV&#xff09;的结合。在CC阶段对电池施加恒定电流&#xff0c;以获得更快的充电速度&#xff0c;此时电池电压持续升高…

现货黄金今日行情分析:昨日高低点法

进行交易之前&#xff0c;投资者要对现货黄金今日行情进行一波分析&#xff0c;我们交易决策应该建立在合理分析的基础之上。那么打开市场交易软件看到现货黄金今日行情之后&#xff0c;该如何着手进行分析呢&#xff1f;下面我们就来讨论一下具体的方法。 要进行现货黄金今日行…

MATLAB 点云随机赋色 (68)

MATLAB 点云随机赋色 (68) 一、算法介绍二、算法介绍1.代码2.结果三、数据链接一、算法介绍 读取的点云本身带有颜色信息,有时我们需要为每个点随机赋予一种颜色,下面是具体效果和实现代码,以及使用的数据: 二、算法介绍 1.代码 代码如下(示例): % 读取点云文件 f…