当前位置: 首页 > 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记录在数组中的位…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...