神经网络系列---感知机(Neuron)


文章目录

    • 感知机(Neuron)
      • 感知机(Neuron)的决策函数可以表示为:
      • 感知机(Neuron)的学习算法主要包括以下步骤:
      • 感知机可以实现逻辑运算中的AND、OR、NOT和异或(XOR)运算。


感知机(Neuron)

感知机(Neuron)是一种简单而有效的二分类算法,用于将输入数据划分为两个类别。它是机器学习中最早的分类算法之一,由罗森布拉特(Rosenblatt)在1957年提出。

感知机(Neuron)的基本思想是通过一个决策函数将输入数据映射到特定的输出类别。它通过对输入向量进行加权求和,并将结果传递给一个激活函数来产生输出。感知机(Neuron)的学习过程主要涉及确定合适的权重,以便对不同的输入样本进行正确的分类。

在这里插入图片描述

感知机(Neuron)的决策函数可以表示为:

    f(x) = sign(w * x + b)sign(x) = {+1, if x >= 0,-1, if x < 0}

在这里插入图片描述

它将大于等于0的值映射为+1,小于0的值映射为-1。在感知机(Neuron)中,"sign"函数被用于判断输入的加权和是否超过了某个阈值,从而确定输入被分类为哪个类别。
其中,x是输入向量,w是权重向量,b是偏置项,sign是符号函数,将输入的实数映射为+1或-1,表示两个不同的类别。

感知机(Neuron)的学习算法主要包括以下步骤:

  1. 初始化权重向量和偏置项。
  2. 针对训练数据中的每个样本,计算决策函数的输出。
  3. 根据实际输出和期望输出之间的差异,更新权重向量和偏置项。
  4. 重复步骤2和步骤3,直到所有训练样本都被正确分类或达到停止条件。

需要注意的是,感知机(Neuron)只适用于线性可分的问题,即可以通过一个超平面将两个类别的数据完全分开。对于线性不可分的问题,感知机(Neuron)算法无法收敛。

虽然感知机(Neuron)算法在解决简单分类问题上很有用,但它对于复杂问题的处理能力有限。后续发展出了更多强大的分类算法,如支持向量机(Support Vector Machine)和神经网络(Neural Networks)。


y=ax+c  ==> ax +(-y)+c =0  //表示一条线 一维形式z=ax+by+d  ==> ax +by+(-z)+d =0  //表示一个平面 二维形式
类似于神经网络中的 权重和偏置

在这里插入图片描述

ax +by+c =0  //表示所有数据都在这一条线上

在这里插入图片描述

ax +by+c > 0  //表示所有数据都在这一条线的上方

在这里插入图片描述

ax +by+c < 0  //表示所有数据都在这一条线的上下方

在这里插入图片描述

多维度表示:相乘在相加

在这里插入图片描述

用矩阵表示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下面用感知机(Neuron) 表达 与(AND)、 或(OR) 、非(NOT) 、异或(XOR) 、 运算。

在这里插入图片描述

感知机可以实现逻辑运算中的AND、OR、NOT和异或(XOR)运算。

这里我将为你详细说明如何使用感知机实现这些逻辑运算。

  1. AND运算:
    AND运算是一个二元运算,当且仅当两个输入都为1时,输出为1,否则输出为0。使用感知机可以实现AND运算,具体步骤如下:
  • 设置权重向量为 w = [1, 1],偏置项为 b = -1.5。
  • 对于输入向量 x = [x1, x2],计算加权和:z = w * x + b。
  • 使用符号函数(sign)作为激活函数,即 f(x) = sign(z)。也就是f(x) = sign(x1 + x2 - 1.5),其中sign函数将大于等于0的值映射为1,小于0的值映射为-1。
  • 当且仅当 f(x) = 1 时,表示 AND 运算结果为真,否则为假。
  1. OR运算:
    OR运算也是一个二元运算,当两个输入中至少一个为1时,输出为1,否则输出为0。使用感知机可以实现OR运算,具体步骤如下:
  • 设置权重向量为 w = [1, 1],偏置项为 b = -0.5。
  • 对于输入向量 x = [x1, x2],计算加权和:z = w * x + b。
  • 使用符号函数(sign)作为激活函数,即 f(x) = sign(z)。也就是f(x) = sign(x1 + x2 - 0.5),其中sign函数将大于等于0的值映射为1,小于0的值映射为-1。
  • 当且仅当 f(x) = 1 时,表示 OR 运算结果为真,否则为假。
  1. NOT运算:
    NOT运算是一个一元运算,当输入为1时,输出为0,当输入为0时,输出为1。使用感知机可以实现NOT运算,具体步骤如下:
  • 设置权重向量为 w = [-1],偏置项为 b = 0.5。
  • 对于输入 x,计算加权和:z = w * x + b。
  • 使用符号函数(sign)作为激活函数,即 f(x) = sign(z)。也就是f(x) = sign( -x + 0.5),其中sign函数将大于等于0的值映射为1,小于0的值映射为-1。
  • 当且仅当 f(x) = 1 时,表示 NOT 运算结果为真,否则为假。

异或运算 一个感知机无法实现

在这里插入图片描述

在这里插入图片描述

  1. 描述上图 异或(XOR)运算:
    异或运算是一个二元运算,当两个输入相同时,输出为0;当两个输入不同时,输出为1。使用单个感知机无法直接实现异或运算,因为它不是线性可分的。但可以通过组合多个感知机实现。具体步骤如下:

一种常用的方法是使用两个感知机构建一个多层感知机(Multi-Layer Perceptron,MLP)。MLP由输入层、隐藏层和输出层组成,每个层都由多个感知机(神经元)组成。以下是使用MLP实现异或运算的具体步骤:

  1. 构建输入层和隐藏层:
  • 输入层有两个神经元,表示输入的两个二进制位(x1和x2)
  • 隐藏层有两个神经元,用于引入非线性映射,帮助解决异或运算的非线性可分性。
  1. 设置隐藏层的权重和偏置项:
  • 第一个隐藏层神经元,先对x1进行非(NOT)运算,也就是01,非00

  • 然后再进行与(AND)运算。(h1)的权重向量为 w1 = [1, 1],偏置项为 b1 = -1.5。即:f(x) = sign(x1 + x2 - 1.5)。

  • 第二个隐藏层神经元,先对x2进行非(NOT)运算,也就是01,非00

  • 然后再进行与(AND)运算。(h2)的权重向量为 w2 = [1, 1],偏置项为 b2 = -1.5。即:f(x) = sign(x1 + x2 - 1.5)。

  1. 设置输出层的权重和偏置项:
  • 输出层有一个神经元(y),表示异或运算的结果。
  • 输出层进行或(OR)运算,权重向量为 w3 = [1, 1],偏置项为 b3 = -0.5。
  1. 计算前向传播:
  • 对于输入向量 x = [x1, x2],首先计算隐藏层神经元的输出:
    h1 = sign(w1 * x + b1)
    h2 = sign(w2 * x + b2)
  • 然后,将隐藏层神经元的输出作为输入传递给输出层神经元:
    y = sign(w3 * [h1, h2] + b3)
  1. 输出结果:
  • 当 y = 1 时,表示异或运算的结果为真(1)。
  • 当 y = -1 时,表示异或运算的结果为假(0)。

通过这样的多层感知机结构和非线性激活函数(如符号函数),可以实现异或运算。这个例子中使用了一个隐藏层,但在实际应用中可能需要更多的隐藏层和神经元来处理更复杂的问题。这种多层感知机结构是神经网络的基础,也被称为前馈神经网络(Feedforward Neural Network)。

5. 第二种 异或(XOR)运算:
异或运算是一个二元运算,当两个输入相同时,输出为0;当两个输入不同时,输出为1。使用单个感知机无法直接实现异或运算,因为它不是线性可分的。但可以通过组合多个感知机实现。具体步骤如下:一种常用的方法是使用两个感知机构建一个多层感知机(Multi-Layer Perceptron,MLP)。MLP由输入层、隐藏层和输出层组成,每个层都由多个感知机(神经元)组成。以下是使用MLP实现异或运算的具体步骤:1. 构建输入层和隐藏层:
- 输入层有两个神经元,表示输入的两个二进制位(x1和x2)。
- 隐藏层有两个神经元,用于引入非线性映射,帮助解决异或运算的非线性可分性。2. 设置隐藏层的权重和偏置项:
- 第一个隐藏层神经元(h1)的权重向量为 w1 = [1, 1],偏置项为 b1 = -0.5。
- 第二个隐藏层神经元(h2)的权重向量为 w2 = [-1, -1],偏置项为 b2 = 1.5。3. 设置输出层的权重和偏置项:
- 输出层有一个神经元(y),表示异或运算的结果。
- 输出层的权重向量为 w3 = [1, 1],偏置项为 b3 = -1.5。4. 计算前向传播:
- 对于输入向量 x = [x1, x2],首先计算隐藏层神经元的输出:h1 = sign(w1 * x + b1)h2 = sign(w2 * x + b2)
- 然后,将隐藏层神经元的输出作为输入传递给输出层神经元:y = sign(w3 * [h1, h2] + b3)5. 输出结果:
- 当 y = 1 时,表示异或运算的结果为真(1)。
- 当 y = -1 时,表示异或运算的结果为假(0)。

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

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

相关文章

android input命令支持多指触摸成果展示-千里马framework实战开发

hi input命令扩展提示部分 generic_x86_64:/ # input -h Error: Unknown command: -h Usage: input [<source>] <command> [<arg>...]The source…

数智化转型的三大关键点

一、重新认识数智化转型 消费红利时代&#xff0c;伴随中国宏观经济向好发展&#xff0c;相当一部分企业可以轻松实现快速增长&#xff0c;如同搭乘了一架高速运转的电梯一路飞升。然而&#xff0c;随着宏观经济增速放缓&#xff0c;时代的电梯逐渐失去效力&#xff0c;中国商…

python3 Flask jwt 简易token认证实例

直接上代码 from flask import Flask, jsonify, request, make_response import jwt import datetime from functools import wrapsapp Flask(__name__)# 这是一个示例密钥&#xff0c;实际应用中应该使用一个复杂且随机的密钥 app.config[SECRET_KEY] your_secret_keydef t…

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器&#xff0c;通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件&#xff0c;推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…

源代码管理——码云Gitee

目录 Git安装 Gitee配置SSH 源代码管理常规操作 1.idea配置git 2.常规操作 Git安装 安装Git是进行源代码管理的基本步骤之一。以下是在本地安装Git的通用步骤&#xff0c;适用于Windows系统&#xff1a; 下载Git安装程序: 访问Git官网的下载页面&#xff1a;Git官网下载地…

【前端素材】推荐优质后台管理系统Welly平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

现在学Oracle是49年入国军么?

今天周末&#xff0c;不聊技术&#xff0c;聊聊大家说的最多的一个话题 先说明一下&#xff0c;防止挨喷&#x1f606; 本人并不是职业dba&#xff0c;对数据库就是爱好&#xff0c;偶尔兼职&#xff0c;以下仅个人观点分析&#xff0c;如有不同观点请轻喷&#xff0c;哈哈&…

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)

1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种&#xff08;比如数组结构、链式结构、树型结…

【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习 题目…

openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议

文章目录 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 目前LLVM在数据库内核侧已默认打开&#xff0c;用户可结合上述的分析进行配置&#xff0c;总体建议如下&#xff1a; 设置合理的wor…

Nginx基本操作

目录 引言 一、Nginx配置文件详解 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;模块 二、全局配置文件 &#xff08;一&#xff09;关闭版本或修改版本 1.关闭版本号 2.修改版本信息 &#xff08;二&#xff09;修改启动的进程数 &#xff08;三&…

JavaScript+PHP实现视频文件分片上传

摘要 视频文件分片上传&#xff0c;整体思路是利用JavaScript将文件切片&#xff0c;然后循环调用上传接口 upload.php 将切片上传到服务器。这样将由原来的一个大文件上传变为多个小文件同时上传&#xff0c;节省了上传时间&#xff0c;这就是文件分片上传的其中一个好处。 上…

【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2、TypeScript初体验 2.1 安装编译TS的工…

hbuilderx创建、运行uni-app

创建uni-app 在点击工具栏里的文件 -> 新建 -> 项目&#xff1a; 选择uni-app类型&#xff0c;输入工程名&#xff0c;选择模板&#xff0c;点击创建&#xff0c;即可成功创建。 uni-app自带的模板有 Hello uni-app &#xff0c;是官方的组件和API示例。还有一个重要模…

解决easyExcel模板填充时转义字符\{xxx\}失效

正常我们在使用easyExcel进行模板填充时&#xff0c;定义的变量会填充好对应的实际数据&#xff0c;未定义的变量会被清空&#xff0c;但是如果这个未定义的变量其实是模板的一部分&#xff0c;那么清空了就出错了。 在这张图里&#xff0c;上面的是模板填充后导出的文件&…

Guitar Pro8.2吉他软件2024中文版功能特点介绍

Guitar Pro 8.2是一款功能强大的吉他乐谱软件&#xff0c;专为吉他手、音乐制作人和音乐爱好者设计。它提供了丰富的功能&#xff0c;帮助用户轻松创建、编辑、打印和分享吉他乐谱。以下是Guitar Pro 8.2的主要功能特点&#xff1a; Guitar Pro 2024 win-安装包下载如下&#x…

华为HCIP Datacom H12-831 卷24

多选题 1、如图所示&#xff0c;某园区部署OSPF实现网络互通&#xff0c;其中Area1部署为NSSA区域。某工程师为了实现R1访问R4的环回口地址&#xff0c;在R4的OSPF进程中引入直连路由。以下关于该场景的描述,错误的有哪些项? A、在R4引入直连路由后&#xff0c;R1通过转换后的…

【鸿蒙开发】第十四章 Stage模型应用组件-任务Mission

1 任务(Mission)管理场景 任务&#xff08;Mission&#xff09;管理相关的基本概念如下&#xff1a; AbilityRecord&#xff1a;系统服务侧管理一个UIAbility实例的最小单元&#xff0c;对应一个应用侧的UIAbility组件实例。系统服务侧管理UIAbility实例数量上限为512个。 Mi…

Code-Audit(代码审计)习题记录6-7

介绍&#xff1a; 自己懒得搭建靶场了&#xff0c;靶场地址是 GitHub - CHYbeta/Code-Audit-Challenges: Code-Audit-Challenges为了方便在公网练习&#xff0c;可以随地访问&#xff0c;本文所有的题目均来源于网站HSCSEC-Code Audit 6、习题6 题目内容如下&#xff1a; 源代…

探索水下低光照图像检测性能,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建海底生物检测识别分析系统

海底这类特殊数据场景下的检测模型开发相对来说比较少&#xff0c;在前面的博文中也有一些涉及&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《尝试探索水下目标检测&#xff0c;基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBA…