深度学习入门(一)之感知机

文章目录

  • 前言
  • 什么是感知机
  • 简单的逻辑电路
    • 与门
    • 与非门和或门
  • 感知机的实现
    • 简单的实现
    • 导入权重和偏置
  • 感知机的局限性
    • 异或门
    • 线性和非线性
  • 多层感知机
    • 已有门电路的组合
    • 异或门的实现
  • 代码合集

前言

感知机是由美国学者1957年提出来,作为神经网络的起源算法。因此学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想。

严格的来讲,感知机因该称为人工神经元或者朴素感知机。

什么是感知机

感知机接收多个信号输入输出一个信号

介绍一个接收两个输入信号的感知机的例子

x1、x2是输入信号,y是输出信号,w1、w2是权重。图中的⭕成为“神经元”。输入信号被送到神经元时,乘固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有总和超过某个界限制时,才会输出1,也成为“神经元被激活”。界限值称为阈值,使用符号θ

在这里插入图片描述

感知机的运行原理只有这些!!!

公式表达:

y = { 0 , ( w 1 x 1 + w 2 x 2 ) ≤ θ 1 , ( w 1 x 1 + w 2 x 2 ) > θ y=\begin{cases} 0,(w1x1+w2x2)\leq\theta\\ 1, (w1x1+w2x2)\gt\theta\end{cases} y={0(w1x1+w2x2)θ1(w1x1+w2x2)>θ
感知机的多个输入信号都有各自的权重值,这些权重发挥着控制各个信号的重要性,权重越大,对应的信号就越强烈!!!!

接下来用感知机来解决简单问题……

简单的逻辑电路

与门

与门仅在两个输入均为1时输出1,其他情况为0。

x1x2y
000
010
100
111

下面考虑使用感知机实现。需要做的就是能满足上表。

实际上,满足上表中的条件需要参数的选择,参数的选择有无数个,比如当(w1,w2,θ)=(1.0,1.0,1.0)时可以满足与门的条件。

与非门和或门

与非门就是颠倒了与门的输出,仅当x1和x2同时为1时输出0,其他情况为1。

x1x2y
001
011
101
110

与非门的参数组合?其实就是把与门的参数符号取反就可以。

如当(w1,w2,θ)=(-1.0,-1.0,-1.0)时可以满足与非门的条件。

或门只要有一个输入信号是1时,输出就为1

x1x2y
000
011
101
111

这里决定感知机参数的并不是计算机,而是我们人,真值表中的数据类似于“训练数据”,我们想到参数的值。但是在机器学习中这个参数的决定是由计算机自动进行学习是确定合适参数的过程,而人要做的是思考感知机的构造模型,把训练数据交给计算机。

与门、与非门、或门的感知机构造是一样的,只是需要合适的调整参数

感知机的实现

简单的实现

定义一个接收参数的AND函数,在函数内初始化参数w1、w2、theta,当输入的加权总和超过阈值时返回1, 否则返回0。

def AND(x1, x2):w1, w2, theta = 0.5, 0.5, 0.7tmp = x1 * w1 + x2 * w2if tmp <= theta:return 0else:return 1
result = AND(0, 1)
print(result)

导入权重和偏置

修改为另外一种实现形式,把θ换成-b,于是形成一种公式
y = { 0 , ( b + w 1 x 1 + w 2 x 2 ) ≤ 0 1 , ( b + w 1 x 1 + w 2 x 2 ) > 0 y=\begin{cases} 0,(b+w1x1+w2x2)\leq0\\ 1, (b+w1x1+w2x2)\gt0\end{cases} y={0(b+w1x1+w2x2)01(b+w1x1+w2x2)>0
虽然符号不相同,但是内容完全相同,b成为偏置,w1和w2称为权重,感知机会计算输入信号和权重的乘积,再加上偏置。

import numpy as  np
x = np.array([0,1]) # [0 1]
w = np.array([0.5,0.5])
b = -0.7
print(np.sum(w*x)+b)

在NumPy数组的乘法运算中,当两个数组的元素个数相同时, 各个元素分别相乘

因此wx的结果就是它们的各个元素分别相乘([0, 1] * [0.5, 0.5] => [0, 0.5]),之后,np.sum(wx)再计算相乘后的各个元素的总和。

这里把**-θ叫为偏置为b**,注意偏置和权重w1,w2的作用不一样。具体的说w1和w2是控制输入信号的重要参数,而偏置是调整神经元被激活的容易程度的参数。比如b为-0.1时,则只需要输入信号的加权总和超过0.1,神经元就会被激活。偏置的值决定了神经元被激活的容易程度。

感知机的局限性

异或门

x1和x2二者不一样时输出1

x1x2y
000
011
101
110

实际上,前面介绍的感知机是无法实现这个异或门的。

为什么可以使用感知机实现与门,与非门和或门,但是无法实现异或门的

再或门的情况下,权重(b,w1,w2)=(-0.5,1.0,1.0)时,此时感知机可用下面表示
y = { 0 , ( − 0.5 + x 1 + x 2 ) ≤ 0 1 , ( − 0.5 + x 1 + x 2 ) > 0 y=\begin{cases} 0,(-0.5+x1+x2)\leq0\\ 1, (-0.5+x1+x2)\gt0\end{cases} y={0(0.5+x1+x2)01(0.5+x1+x2)>0
在这里插入图片描述

由直线-0.5+x1+x2=0分割开的两个空间。一个空间输出1,一个空间输出0。如果制作或门,需要用直线将上图的○和△分开。实际上,直线就将这四个点正确分开了。

在这里插入图片描述

想要用一条直线是无法将○和△分开

线性和非线性

在异或门中,无法用一条直线分开,但是如果将这个“直线”限制条件去除。

感知机的局限性就在于只能由一条直线分割的空间,下图的曲线无法用感知机表示。

**直线分割的空间称为线性空间。曲线分割的为非线性空间。**线性、非线性在机器学习领域中很常见

在这里插入图片描述

多层感知机

实际上,感知机可以进行叠加,在单层感知机中,不能对异或进行表示,但是多层感知机可以进行表示。

已有门电路的组合

要实现异或门,要对与门,与非门,或门进行配置。

在这里插入图片描述

严格的来讲,单层感知机无法表示异或门或者无法分离非线性空间,接下来我们可以通过多层感知机来实现异或门

在这里插入图片描述

通过与门,与非门,或门组合进行表示异或门。

在这里插入图片描述

异或门的实现

# 异或门的实现
def XOR(x1, x2):s1 = OR(x1, x2)s2 = NAND(x1, x2)return AND(s1, s2)
result = XOR(1,1)
print(result)

异或门是一种多层结构的神经网络。最左边的从第0层开始,前面介绍的与门,与非门,或门为单层感知机,异或门为多层感知机。

在这里插入图片描述

在上图中的两层感知机中,现在第0层和第1层的神经元之间进行信号的传送和接收,然后再第1层和第2层进行信号的传送和接收。

1.在第0层的两个神经元接收输入信号,并将信号发送到第1层的神经元。

2.第1层的神经元将信号发送到第2层,第二层的神经元输出y

感知机的叠加能够进行非线性的表示

代码合集

# 与门的实现
def AND(x1, x2):w1, w2, theta = 0.5, 0.5, 0.7  # 初始化参数tmp = x1 * w1 + x2 * w2if tmp <= theta:return 0else:return 1# 或门的实现
def OR(x1, x2):w1, w2, theta = 1, 1, 0  # 初始化参数tmp = x1 * w1 + x2 * w2if tmp <= theta:return 0else:return 1# 与非门的实现
def NAND(x1, x2):w1, w2, theta = -0.5, -0.5, -0.7  # 初始化参数tmp = x1 * w1 + x2 * w2if tmp <= theta:return 0else:return 1# 异或门的实现
def XOR(x1, x2):s1 = OR(x1, x2)s2 = NAND(x1, x2)return AND(s1, s2)
result = XOR(1,1)
print(result)

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

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

相关文章

新增Node.js运行环境、新增系统缓存清理功能,1Panel开源面板v1.7.0发布

2023年10月16日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.7.0版本。 在这个版本中&#xff0c;1Panel新增Node.js运行环境&#xff1b;新增系统缓存清理功能&#xff1b;应用安装时支持选择远程数据库。此外&#xff0c;我们进行了40多项功能更新和…

阿里云云服务器实例使用教学

目录 云服务器免费试用 详细步骤 Xshell 远程连接 云服务器免费试用 阿里云云服务器网址&#xff1a;阿里云免费试用 - 阿里云 详细步骤 访问阿里云免费试用。单击页面右上方的登录/注册按钮&#xff0c;并根据页面提示完成账号登录&#xff08;已有阿里云账号&#xff09;…

配置hpa后,target显示<unknown>/50%

背景&#xff1a; 有两个服务&#xff0c;server 负责主要后端请求&#xff0c;bill 负责计量计费请求。服务都是使用 helm 部署。测试提了一个缺陷&#xff0c;说全部服务没有配置hpa。 解决一 按照之前的代码结构添加了hpa后&#xff0c;发现&#xff1a; ➜ kubectl get…

软件外包开发团队人员构成

软件外包开发团队的人员构成可以因项目的规模、类型和要求而有所不同。通常&#xff0c;一个典型的软件外包开发团队可能包括以下关键角色&#xff0c;每个角色都有要完成的工作。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 项目经…

playwright: local variable ‘page‘ referenced before assignment

安装好playwright后&#xff0c;运行相关程序出现此错误&#xff0c;按照下述链接中的方法安装相关组件和浏览器驱动后&#xff0c;问题得以解决。 https://www.cnblogs.com/fengyangsheng/p/17531254.html安装playwright pip install -i https://mirrors.aliyun.com/pypi/si…

区块链运行原理

文章目录 前言区块链的结构区块链的交易过程区块链的共识机制区块链交易存在的问题特性总结 前言 上文《认识区块链》中可以知道区块链是一个通过各种加密算法、共识机制以及其他技术可以实现一个点对点的电子现金系统&#xff0c;从而达到去第三方的效果&#xff08;通常称之…

【Wifi】Wifi架构介绍

Wifi架构介绍 本文基于Android介绍其Wifi架构。Wifi是许多操作系统提供的重要功能之一&#xff0c;特别是越来越多的车载系统wifi是其必备功能。为啥wifi是必备功能&#xff1f; 一方面是传统的上网&#xff08;现在有些车载使用DCM模块管理网络&#xff09;&#xff0c;另一方…

没有前端如何测试后端跨域问题

一、问题 前段时间对项目中的跨域做了相关的处理&#xff0c;网上有很多跨域的解决方案。前端解决&#xff0c;后端解决&#xff0c;nginx代理解决。我采用的是在后端中使用Cors来解决跨域的问题。但是前端项目还没有搭建起来&#xff0c;并不知道Cors的解决方案是否会生效&am…

Apollo(阿波罗)分布式配置中心

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

CSS Vue/RN 背景使用opacity,文字在背景上显示

Vue <div class"training_project_tip"> <div class"tip">展示的文字</div> </div> .training_project_tip { font-size: 12px; font-weight: 400; text-align: left; color: #ffffff; margin-top: 8px; position: relative; dis…

如何将前后端分离项目部署到本地的Docker Desktop容器运行并且访问

文章目录 前言 完成了客户的一个前后端分离项目&#xff0c;要求部署到客户电脑上去展示&#xff0c;那肯定不能直接把代码弄上去跑呀~~~&#xff0c;于是我就想把他们都打包部署到本地的docker容器里面&#xff0c;方便运行和访问&#xff0c;so&#xff0c;以下内容就详细介…

LeetCode09——回文数

LeetCode09 自己写的解,转化为字符串再反转&#xff0c;比较笨。 import java.util.Scanner; public class Result01 {public static void main(String[] args) {System.out.println("请输入整数&#xff0c;我来帮您判断是否是回文数。");Scanner scanner new Sc…

Linux之解除ssh远程登录限制

背景&#xff1a;复制了一个虚拟机&#xff0c;将root密码重置为123456后&#xff0c;使用xshell通过ssh登录竟然失败&#xff0c;检查了很多次&#xff0c;确定root账号密码正确&#xff0c;以下是记录的排查过程。 1、查看ssh登录日志 Ubuntu&#xff1a;/var/log/auth.log…

2023年中国门把手产量、销量及市场规模分析[图]

门把手行业是指专门从事门把手的设计、制造、销售和安装等相关业务的行业。门把手是门窗装饰硬件的一种&#xff0c;用于开启和关闭门窗&#xff0c;同时也具有装饰和美化门窗的作用。 门把手行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#xff09; 随着消…

R/d2及S/C4估计总体标准差,比较其CPK及规格限概率的差异

R/d2 和 S/C4 是用于估计总体标准差的无偏估计方法&#xff0c;通常用于控制图中。这些估计方法的主要目的是通过样本数据来估计总体标准差&#xff0c;以便监测过程的稳定性和变异性&#xff0c;而不需要收集整个总体的数据。 具体来说&#xff1a; R图中的 R/d2 和 S图中的…

【数据结构】二叉树--OJ练习题

目录 1 单值二叉树 2 相同的树 3 另一颗树的子树 4 二叉树的前序遍历 5 二叉树的最大深度 6 对称二叉树 7 二叉树遍历 1 单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCode&#xff09; bool isUnivalTree(struct TreeNode* root) {if (root NULL){return true;}…

【linux】重定向+缓冲区

重定向缓冲区 1.重定向1.1重定向本质1.2重定向接口1.3重定向分类1.3.1>输出重定向1.3.2>>追加重定向1.3.3<输入重定向 2.理解 >&#xff0c; >>&#xff0c; <3.如何理解linux下一切皆文件4.缓冲区4.1理解缓冲区问题4.1.1为什么要有缓冲区4.1.2缓冲区刷…

【yolov5】改进系列——特征图可视化

文章目录 前言一、特征图可视化二、可视化指定层三、合并通道可视化总结 前言 对于特征图可视化感兴趣可以参考我的另一篇记录&#xff1a;六行代码实现&#xff1a;特征图提取与特征图可视化&#xff0c;可以实现分类网络的特征图可视化 最近忙论文&#xff0c;想在yolov5上…

Java系列 | 如何讲自己的JAR包上传至阿里云maven私有仓库【云效制品仓库】

什么是云效 云效是云原生时代一站式 BizDevOps 平台&#xff0c;产研数字化同行者&#xff0c;支持公共云、专有云和混合云多种部署形态&#xff0c;通过云原生新技术和研发新模式&#xff0c;助力创新创业和数字化转型企业快速实现产研数字化&#xff0c;打造“双敏”组织&…

Python数据挖掘入门进阶与实用案例:自动售货机销售数据分析与应用

文章目录 写在前面01 案例背景02 分析目标03 分析过程04 数据预处理1. 清洗数据2.属性选择3.属性规约 05 销售数据可视化分析1.销售额和自动售货机数量的关系2.订单数量和自动售货机数量的关系3.畅销和滞销商品4.自动售货机的销售情况5.订单支付方式占比6.各消费时段的订单用户…