从零开始:神经网络(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模型在逻辑运算中的应用,体验人为添加权重和阈值,实现逻辑运算。其实,在之后的感知器(机)也是在这个神经元模型基础上去延伸发展的,使得神经网络的发展得到有效的突破。
 

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

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

相关文章

《剑指 Offer》专项突破版 - 面试题 76 : 数组中第 k 大的数字(C++ 实现)

目录 详解快速排序 面试题 76 : 数组中第 k 大的数字 详解快速排序 快速排序是一种非常高效的算法&#xff0c;从其名字可以看出这种排序算法最大的特点是快。当表现良好时&#xff0c;快速排序的速度比其他主要对手&#xff08;如归并排序&#xff09;快 2 ~ 3 倍。 快速排…

浏览器与Node.js事件循环:异同点及工作原理

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

记一次项目所学(中间件等)-动态提醒功能(RocketMQ)

记一次项目所学(中间件等&#xff09;–动态提醒功能&#xff08;RocketMQ&#xff09; 订阅发布模式与观察者模式 RocketMQ&#xff1a;纯java编写的开源消息中间件 高性能低延迟分布式事务 Redis : 高性能缓存工具&#xff0c;数据存储在内存中&#xff0c;读写速度非常快 …

Meta正打造一个巨型AI模型,旨在为其“整个视频生态系统”提供动力,一位高管透露

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Swift 入门学习:集合(Collection)类型趣谈-上

概览 集合的概念在任何编程语言中都占有重要的位置&#xff0c;正所谓&#xff1a;“古来聚散地&#xff0c;宿昔长荆棘&#xff1b;游人聚散中&#xff0c;一片湖光里”。把那一片片、一瓣瓣、一粒粒“可耐”的小精灵全部收拢、吸纳的井然有序、条条有理&#xff0c;怎能不让…

tcp流式服务和粘包问题

目录 1.概念 2.流式服务 3.粘包问题 1.概念 套接字是一个全双工的 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写,双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输. TCP连接是全双工的,即双方的数据读写可以通过一个连接进行,完成…

【C语言】linux内核ip_local_out函数

一、讲解 这个函数 __ip_local_out 是 Linux 内核网络子系统中的函数&#xff0c;部分与本地出口的 IPv4 数据包发送相关。下面讲解这段代码的每一部分&#xff1a; 1. 函数声明 int __ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb)&#xff1a; -…

react实战——react旅游网

慕课网react实战 搭建项目问题1.按照官网在index.tsx中引入antd出错&#xff1f;2.typescript中如何使用react-router3.react-router3.1 V63.2 V53.3V6实现私有路由 4.函数式组件接收props参数时定义数据接口&#xff1f;5.使用TypeScript开发react项目&#xff1a;6.要使一个组…

SQLite3中的callback回调函数注意的细节

调用 sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)该例程提供了一个执行 SQL 命令的快捷方式&#xff0c; SQL 命令由 sql 参数提供&#xff0c;可以由多个 SQL 命令组成。 在这里&#xff0c; 第一个参数 sqlite3 是打开的数据库对…

代码随想录算法训练营第day41|背包理论基础、416. 分割等和子集

目录 a.背包理论基础——01背包 1.二维数组的01背包表示 2.一维滚动数组表示 b. 416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; a.背包理论基础——01背包 背包问题分类&#xff1a; 对于面试的话&#xff0c;其实掌握01背包&#xff0c;和完全背包&#xff…

Excel F4键的作用

目录 一. 单元格相对/绝对引用转换二. 重复上一步操作 一. 单元格相对/绝对引用转换 ⏹ 使用F4键 如下图所示&#xff0c;B1单元格引用了A1单元格的内容。此时是使用相对引用&#xff0c;可以按下键盘上的F4键进行相对引用和绝对引用的转换。 二. 重复上一步操作 ⏹添加或删除…

SSM框架,MyBatis-Plus的学习(下)

条件构造器 使用MyBatis-Plus的条件构造器&#xff0c;可以构建灵活高效的查询条件&#xff0c;可以通过链式调用来组合多个条件。 条件构造器的继承结构 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xf…

首屏性能优化:提升用户体验的秘籍

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

复盘-excel

excel-选列没有用&#xff0c;选小标题才可以 将簇状柱形图放置在一个新表上##### excel: 添加数据模型时&#xff0c;要通过套用表格格式与外部断开连接 透视分析2010年人数未解决(第四套&#xff09; 通过日期显示星期几 判断星期几 因为前面已经通过星期六&#xff0c…

03_Tomcat

文章目录 Tomcat概念自制简易的服务器JavaEE规范Tomcat安装Tomcat启动Tomcat的资源部署直接部署虚拟映射 Tomcat的设置 Tomcat 概念 服务器&#xff1a;两层含义。 软件层面&#xff1a;软件&#xff0c;可以将本地的资源发布到网络中&#xff0c;供网络上面的其他用户来访问…

grafana table合并查询

注&#xff1a;本文基于Grafana v9.2.8编写 1 问题 默认情况下table展示的是一个查询返回的多个field&#xff0c;但是我想要的数据在不同的metric上&#xff0c;比如我需要显示某个pod的读写IO&#xff0c;但是读和写这两个指标存在于两个不同的metirc&#xff0c;需要分别查…

多种方法求解数组排序

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

C++——string模拟实现

前言&#xff1a;上篇文章我们对string类及其常用的接口方法的使用进行了分享&#xff0c;这篇文章将着重进行对这些常用的接口方法的内部细节进行分享和模拟实现。 目录 一.基础框架 二.遍历字符串 1.[]运算符重载 2.迭代器 3.范围for 三.常用方法 1.增加 2.删除 3.调…

数据库-第十一章 并发控制【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 数据库系统概论系列文章传送门&#xff1a; 第一章 绪论 第二/…

数据分析-Pandas数据画箱线图

数据分析-Pandas数据画箱线图 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&#xff…