当前位置: 首页 > news >正文

从零开始:神经网络(2)——MP模型

 声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。

神经元相关知识,详见从零开始:神经网络——神经元和梯度下降-CSDN博客

1、什么是M-P 模型

        人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。那么神经网络是如何实现这种模拟的,并且达到一个惊人的良好效果的?这要由“飞鸟派”即仿生派说起。仿生派就是把进化了几百万年的生物,作为“模仿”对象,搞清楚原理后,再复现这些对象的特征。其实现在所讲的神经网络包括深度学习,都在某种程度上,属于“飞鸟派”——它们在模拟大脑神经元的工作机理。追根溯源,模仿神经元的“飞鸟”实例,就是上世纪40年代提出但一直沿用至今的“M-P神经元模型”。

      1943年,由美国心理学家麦卡洛克(McCulloch, W. S. )和数学家皮特斯((Puts , W.) 按照生物神经元,建立起了著名的阈值加权和模型,即麦卡洛克-皮特斯模型(McCulloch-Pitts model),简称为M-P模型,其拓扑结构便是现代神经网络中的一个神经元。

       在这个模型中,神经元接收来自n个其它神经元传递过来的输入信号x(图中x_{1}~x_{n}),这些信号的表达,通常通过神经元之间连接的权重w(图中w_{1}~w_{n})大小来表示,神经元将接收到的输入值按照某种权重叠加起来,并将当前神经元的阈值θ进行比较,然后通过“激活函数(activation function)”f()向外表达输出,如图所示。

M-P模型的工作原理为:当所有的输入与对应的连接权重的乘积大于阈值\theta时,y输出为1,否则输出为0。即当w_{i}*x_{i}>\thetay=1;否则y=0 需要注意的是,x_{i} 也只能是0或1的值,而权重w_{i}\theta则根据需要自行设置。

      简单吧?很简单!但是还是看不懂,下面举例说明

2、M-P数学表达式

        如下图所示,假设某个模型:包含有3个输入,1个输出,以及2个计算功能。注意中间的箭头线。这些线称为“连接”(神经元中最重要的东西)。每个上有一个“权值”。

一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。

         举个例子,如果我们已知张三,李四重多少,想让神经网络输出两个人受到的重力加在一起是多少。我们其实知道关于重力的公式 G=m*g ,但是这个单层神经网络并不知道,那么怎么让他学习到这个关系呢?假设我们统计了很多个数据(输入),每个数据包含第一个人重 m_{1}kg,第二个人的重 m_{2}kg,以及他们一起的重力output(输出)。我们将这些数据丢给神经网络去学习,它最终会学习(调整)两个参数w_{1}w_{2} (权值),逼近于g的值。所以可以用这个数学公式来表示:

output=\sum m_{i}*w_{i}

         但此时,神经网络还只能做到线性的变换。但是其实在现实生活中很多问题,输入和输出不是线性的关系的。 比如一个狗狗图片,我们人眼看到它,大脑会分辨出这是一只狗。其中狗狗图片就是输入这是一只狗输出,其中大脑处理的过程肯定不是线性的变换。那怎么办?

       神经网络通过激活函数\sigma(也就是上图的非线性函数)来实现了这个非线性变换。你可能会问一个激活函数就有这么大的作用吗?就好比0和1一样,基于它们才有了我们现在的计算机,它甚至构造了整个虚拟世界。同样,如果有多个单层神经元组合起来,再加上可学习的参数调整,它能做的事情会很多,甚至出乎你的意料。最终上面的数学公式变成了:

output=\sigma (\sum m_{i}*w_{i})

       下面,我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成a*w,因此在连接的末端,信号的大小就变成了a*w。如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图:

    可见z是在输入和权值的线性加权和叠加了一个函数g的值。在M-P模型里,函数g是sgn函数(sgn是英文sign(标记)的缩写),即符号函数(sign function)。这个函数当输入大于0时,输出1,否则输出0。即

       下面对神经元模型的图进行一些扩展。首先将sum函数与sgn函数合并到一个圆圈里,代表神经元的内部计算。其次,把输入a与输出z写到连接线的左上方,便于后面画复杂的网络。最后说明,一个神经元可以引出多个代表输出的有向箭头,但值都是一样的。神经元可以看作一个计算与存储单元。计算是神经元对其的输入进行计算功能。存储是神经元会暂存计算结果,并传递到下一层。

  当我们用“神经元”组成网络以后,描述网络中的某个“神经元”时,我们更多地会用“单元”(unit)来指代。同时由于神经网络的表现形式是一个有向图,有时也会用“节点”(node)来表达同样的意思。 

  需要说明的是,至今为止,我们对神经网络的结构图的讨论中都没有提到偏置节点(bias unit)。事实上,这些节点是默认存在的。它本质上是一个只含有存储功能,且存储值永远为1的单元(即相当于输入a0=1,如下图中的+1)。在神经网络的每个层次中,除了输出层以外,都会含有这样一个偏置单元。那么,为什么要存在偏置呢?

             从生物学上解释,在脑神经细胞中,一定是输入信号的电平/电流大于某个临界值(阈值\theta)时,神经元细胞才会处于兴奋状态,即当:

w_{1}*x_{1}+w_{2}*x_{2}+w_{3}*x_{3}\geqslant \theta

时,该神经元细胞才会兴奋。我们把\theta挪到等式左侧来,变成-\theta ,然后把它写成 b ,变成了:

w_{1}*x_{1}+w_{2}*x_{2}+w_{3}*x_{3}+b\geqslant 0

于是偏置 b就诞生了!亦即,我们可以得到神经元的数学/计算模型如下所示:

        可以看出,偏置节点很好认,因为其没有输入(前一层中没有箭头指向它)。有些神经网络的结构图中会把偏置节点明显画出来,有些不会。一般情况下,我们都不会明确画出偏置节点。

在考虑了偏置以后上图的神经网络的矩阵运算为:z=g(\sum w_{i}*a_{i}+b)

(1)单个神经元的MP数学公式

则单个神经元的MP模型为:

y=f(x)=sgn(x)=\sigma ( \sum_{i=1}^{m} w_{i}*x_{i}+b)

其中,输入x_{i}(i=1,2,...,m):表示第 i个输入变量(自变量),m为输入变量的个数
          输入w_{i}(i=1,2,...,m):表示第 i个权重,与相同下标的x_{i} 相对应
          输入 b表示偏置 
          输出 y表示输出变量(因变量)
          \sigma(.) 表示一个激活函数,它对线性加权求和的结果进行非线性变换

把矩阵上的输入(实数值向量)映射到输出值f(x)上(一个二元值),其数学表达式为:

f(x)=\left\{\begin{matrix} 1&,if&x\geqslant 0, \\ 0&,if&x<0\end{matrix}\right. 式子(1)   

(2)单个神经元的MP数学公式

         如果将多个神经元的MP模型统一编号,可以表示成一个式子:

y_{k}=\sigma ( \sum_{i=1}^{m} w_{ki}*x_{i}+b_{k})

其中,输入x_{i}(i=1,2,...,m):表示第 i个输入变量(自变量),m为输入变量的个数
          输入w_{ki}(k=1,2,...,n,i=1,2,...,m):表示第k个神经元的第 i个权重
          输入 b_{k}表示第k个神经元的偏置
          输出 y_{k}(k=1,2,...,n)表示第k个神经元的输出变量(因变量)
         n表示神经元的个数

3、M-P模型逻辑规则的应用

(1)非运算

非运算是单输入和单输出,结构图如下:

则其表达式为:y=f(x)=\sigma (w_{1}*x_{1}+b)

运算原理:

x_{1}

x=w_{1}*x_{1}+b

代入求值的x=

y

根据sgn(x)的规则(见式子1),

可得偏置b取值范围

0b1b\geqslant 0即:0\leqslant b<-w_{1}
1w_{1}+b0b<-w_{1}

如:可取b= 1, w_{1}= -2,均满足b的取值范围,则y=f(x)=\sigma (-2*x_{1}+1)

(2)或运算

或运算以两个输入为例,结构图如下:

则其表达式为:y=f(x)=\sigma (w_{1}*x_{1}+w_{2}*x_{2}+b)

运算原理:

x_{1}x_{2}

x=w_{1}*x_{1}+w_{2}*x_{2}+b

代入求x的值

y

根据sgn(x)的规则(见式子1),

可得偏置b取值范围

00b0b< 0max{\begin{Bmatrix} -(w_{1}+w_{2}),-w_{1},-w_{2} \end{Bmatrix}}\leqslant b< 0
01w_{2}+b1b\geqslant -w_{2}
10w_{1}+b1b\geqslant -w_{1}
11w_{1}+w_{2}+b1b\geqslant -(w_{1}+w_{2})

如:可取w_{1}= 1,w_{1}= 1,b= -0.5,均满足b的取值范围,则y=f(x)=\sigma (1*x_{1}+1*x_{1}-0.5)

(3)与运算

逻辑与运算与逻辑或一致,把运算原理改改即可:

运算原理:

x_{1}x_{2}

x=w_{1}*x_{1}+w_{2}*x_{2}+b

代入求x的值

y

根据sgn(x)的规则(见式子1),

可得偏置b取值范围

00b0b< 0-(w_{1}+w_{2})\leqslant b< min\begin{Bmatrix}0,-w_{1},-w_{2} \end{Bmatrix}
01w_{2}+b0b< -w_{2}
10w_{1}+b0b<-w_{1}
11w_{1}+w_{2}+b1b\geqslant -(w_{1}+w_{2})

如:可取w_{1}= 1,w_{1}= 1,b= -1.5,均满足b的取值范围,则y=f(x)=\sigma (1*x_{1}+1*x_{1}-1.5)

(4)异或运算(不能实现)

仍然以二输入为例:表达式为:y=f(x)=\sigma (w_{1}*x_{1}+w_{2}*x_{2}+b)

运算原理:

x_{1}x_{2}

x=w_{1}*x_{1}+w_{2}*x_{2}+b

代入求x的值

y

根据sgn(x)的规则(见式子1),

可得偏置b取值范围

00b0b< 0因为既要大于-w_{1}-w_{2}又要小于-(w_{1}+w_{2}),b是无解的。
01w_{2}+b1b\geqslant -w_{2}
10w_{1}+b1b\geqslant -w_{1}
11w_{1}+w_{2}+b0b< -(w_{1}+w_{2})

如:可取w_{1}= 1,w_{1}= 1,b= -0.5,均满足b的取值范围,则y=f(x)=\sigma (1*x_{1}+1*x_{1}-0.5)

4、实例

      M-P模型可以实现逻辑非、或和与运算,但是当时还没有通过对训练样本进行训练来确定参数的方法,上述参数如权重参数和阈值只能人为事先计算后确定。这里没有具体的代码噢!!!

      该篇文章的目的,主要是让你明白M-P模型的计算公式,以及激活函数的取值为0-1折线型。
熟悉M-P模型在逻辑运算中的应用,体验人为添加权重和阈值,实现逻辑运算。其实,在之后的感知器(机)也是在这个神经元模型基础上去延伸发展的,使得神经网络的发展得到有效的突破。
 

相关文章:

从零开始:神经网络(2)——MP模型

声明&#xff1a;本文章是根据网上资料&#xff0c;加上自己整理和理解而成&#xff0c;仅为记录自己学习的点点滴滴。可能有错误&#xff0c;欢迎大家指正。 神经元相关知识&#xff0c;详见从零开始&#xff1a;神经网络——神经元和梯度下降-CSDN博客 1、什么是M-P 模型 人…...

Python调用edge-tts实现在线文字转语音

edge-tts是一个 Python 模块&#xff0c;允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。 项目源码 GitHub - rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an…...

植物病害识别:YOLO甘蔗叶片病害识别分类数据集

YOLO甘蔗叶片病害识别数据集, 包含尾孢菌叶斑病&#xff0c;眼斑病&#xff0c;健康&#xff0c;红腐病&#xff0c;锈病&#xff0c;黄叶病6个常见病类别&#xff0c;3300多张图像&#xff0c;yolo标注完整&#xff0c;全部原始图像&#xff0c;未应用增强。 适用于CV项目&…...

pyqt QTextEdit 捕获enter按键

参考&#xff1a; https://blog.csdn.net/qq_27061049/article/details/101550616 方法一&#xff1a; 在PyQt中&#xff0c;可以通过重写QTextEdit的keyPressEvent()函数来捕获Enter按键。下面是示例代码&#xff1a; from PyQt5.QtWidgets import QApplication, QMainWindo…...

一劳永逸的方法解决:LNK1168无法打开 xxx.exe 进行写入 报错问题

这种错误的产生原因&#xff1a; 运行程序退出不是按正常流退出&#xff0c;是按窗口右上角的 “X” 来关闭程序&#xff0c;但是后台的xxx.exe控制台程序还在运行&#xff1b;修改程序的代码后再运行&#xff0c;就会报LNK1168的错误&#xff1b; 报错示例&#xff1a; 解决方…...

程序员的金三银四求职宝典:面试技巧分享

​​​​​​​随着春天的到来,程序员们迎来了求职的旺季——金三银四。在这个时期,各大公司纷纷开放招聘,为求职者提供了丰富的选择机会。然而,如何在众多的面试中脱颖而出,成功获得心仪的职位,就需要掌握一些有效的面试技巧。下面,就让我们一起来探讨一下金三银四求职…...

【DevOps基础篇之k8s】如何应用Kubernetes中的Role Based Access Control(RBAC)

【DevOps基础篇之k8s】如何应用Kubernetes中的Role Based Access Control(RBAC) 目录 【DevOps基础篇之k8s】如何应用Kubernetes中的Role Based Access Control(RBAC)背景Kubernetes身份验证和授权基于角色的访问控制(RBAC)用户账户 vs. 服务账户角色 vs. 集群角色RoleBi…...

python知网爬虫论文pdf下载+立即可用(动态爬虫)

文章目录 使用代码 使用 自己工作需要&#xff0c;分享出来&#xff0c;刚刚修改完。 知需要修改keyword就可以完成自动搜索和下载同时翻页。 但是需要安装Chrome&#xff0c;也支持linux爬虫&#xff0c;也要安装linux Chrome非可视化版。 代码 import selenium.webdriver …...

DataFunSummit 2023:洞察现代数据栈技术的创新与发展(附大会核心PPT下载)

随着数字化浪潮的推进&#xff0c;数据已成为企业竞争的核心要素。为了应对日益增长的数据挑战&#xff0c;现代数据栈技术日益受到业界的关注。DataFunSummit 2023年现代数据栈技术峰会正是在这样的背景下应运而生&#xff0c;汇聚了全球数据领域的精英&#xff0c;共同探讨现…...

运行 Jmeter 文件生成 HTML 测试报告,我选择 ANT 工具

概述 ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具&#xff0c;大多用于 Java 环境中的软件开发。 在与 Jmeter 生成的 jmx 文件配合使用中&#xff0c;ant 会完成jmx计划的执行和生成jtl文件&#xff0c;并将jtl文件转化为html页面进行查看。 还可…...

TensorRT是什么,有什么作用,如何使用

TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理&#xff08;inference&#xff09;引擎。它专为生产环境中的部署而设计&#xff0c;用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍&#xff1a; TensorRT 是 NVIDIA 推出的…...

同比和环比

1.同比就是今年的某时期与去年这个时期 进行对比 (消除季节性差异) 例子:2018年一季度销量 2019年一季度销量 上升/下滑 2.环比是今年的某个时期与当前上一个时期进行对比(两个时期是连续的) 例子:2024年1月 营收额1000万元 2024年2月营收额3000万元 同比增长...

js中批量修改对象属性

首先&#xff0c;有这个对象 let a {id: 1,name: 张三,age: 18,sex: 0 }需求&#xff1a;同时修改name,id,并添加一个新属性c 常规写法&#xff1a; a.id 2; a.name 李四; a.c 1;但这种写法遇到批量就会很麻烦 解决方法&#xff1a; 方法1&#xff1a; 使用Object.assi…...

应用案例 | Softing echocollect e网关助力汽车零部件制造商构建企业数据库,提升生产效率和质量

为了提高生产质量和效率&#xff0c;某知名汽车零部件制造商采用了Softing echocollect e多协议数据采集网关——从机器和设备中获取相关数据&#xff0c;并直接将数据存储在中央SQL数据库系统中用于分析处理&#xff0c;从而实现了持续监控和生产过程的改进。 一 背景 该企业…...

使用大带宽服务器对网站有什么好处?

近年来大带宽服务器频频出现在咱们的视野当中&#xff0c;选用的用户也在与日增长。那么究其主要原因是什么?租用大带宽服务器的好处又有哪些? 今天德迅云安全带您来了解下。1.有效提升网站访问速度 一般来说&#xff0c;正规的网站对用户体验度都是非常有讲究的&#xff0c;…...

17-Java解释器模式 ( Interpreter Pattern )

Java解释器模式 摘要实现范例 解释器模式&#xff08;Interpreter Pattern&#xff09;实现了一个表达式接口&#xff0c;该接口解释一个特定的上下文 这种模式被用在 SQL 解析、符号处理引擎等 解释器模式提供了评估语言的语法或表达式的方式&#xff0c;它属于行为型模式 …...

mysql的安装启动

下载 2.解压后放在某个目录下&#xff1a; 3.修改系统变量 4.修改配置文件 &#xff08;创建一个ini文件放在解压后的目录下&#xff09; 内容如下 5.初始化mysql 1.用管理员模式下输入&#xff1a; mysqld --initialize --console C:\WINDOWS\system32>mysqld --initia…...

[Java安全入门]三.CC1链

1.前言 Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库&#xff0c;它提供了很多强大的数据结构类型和实现了各种集合工具类。Commons Collections触发反序列化漏洞构造的链叫做cc链&#xff0c;构造方式多种&#xff0c;这里先学习cc1链…...

为什么虚拟dom比真实dom更快

虚拟DOM&#xff08;Virtual DOM&#xff09;之所以在某些情况下比直接操作真实DOM更快&#xff0c;主要有以下几个原因&#xff1a; 批量更新&#xff1a;虚拟DOM可以将多个DOM操作批量更新为一次操作。当需要对真实DOM进行多次修改时&#xff0c;直接操作真实DOM会导致浏览器…...

力扣---腐烂的橘子

题目&#xff1a; bfs思路&#xff1a; 感觉bfs还是很容易想到的&#xff0c;首先定义一个双端队列&#xff08;队列也是可以的~&#xff09;&#xff0c;如果值为2&#xff0c;则入队列&#xff0c;我这里将队列中的元素定义为pair<int,int>。第一个int记录在数组中的位…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...