从零开始:神经网络(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.hqwc.cn/news/526089.html

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

相关文章

Android UI自动化测试框架—SoloPi简介

1、UI自动化测试简介 软件测试简介 ​软件测试是伴随着软件开发一同诞生的&#xff0c;随着软件规模大型化&#xff0c;结构复杂化&#xff0c;软件测试也从最初的简单“调试”&#xff0c;发展到当今的自动化测试。 ​ 自动化测试是什么呢&#xff1f;自动化测试是把以人为…

Solidity Uniswap V2 价格预言机

预言机是连接区块链与链下服务的桥梁&#xff0c;这样就可以从智能合约中查询现实世界的数据。Chainlink 是最大的oracle网络之一&#xff0c;创建于 2017 年&#xff0c;如今已成为许多 DeFi 应用的重要组成部分。https://github.com/XuHugo/solidityproject Uniswap 虽然是链…

Learn OpenGL 03 着色器

GLSL 着色器的开头总是要声明版本&#xff0c;接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数&#xff0c;在这个函数中我们处理所有的输入变量&#xff0c;并将结果输出到输出变量中。 一个典型的着色器有下面的结构&#xff1a; #version vers…

深入理解Java泛型:灵活、安全、可重用的编程利器

Java泛型是一项强大的编程特性&#xff0c;为程序员提供了一种灵活、类型安全、可重用的编码方式。通过泛型&#xff0c;我们能够编写更加通用、适应多种数据类型的代码&#xff0c;从而提高了代码的灵活性和可维护性。在这篇博客中&#xff0c;我们将深入探讨Java泛型的各个方…

【Flink】Flink 的八种分区策略(源码解读)

Flink 的八种分区策略&#xff08;源码解读&#xff09; 1.继承关系图1.1 接口&#xff1a;ChannelSelector1.2 抽象类&#xff1a;StreamPartitioner1.3 继承关系图 2.分区策略2.1 GlobalPartitioner2.2 ShufflePartitioner2.3 BroadcastPartitioner2.4 RebalancePartitioner2…

全栈的自我修养 ———— css中常用的布局方法flex和grid

在项目里面有两种常用的主要布局:flex和grid布局&#xff08;b站布局&#xff09;&#xff0c;今天分享给大家这两种的常用的简单方法&#xff01; 一、flex布局1、原图2、中心对齐3、主轴末尾或者开始对其4、互相间隔 二、grid布局1、基本效果2、加间隔3、放大某一个元素 一、…

政安晨:【深度学习处理实践】(四)—— 实施一个温度预测示例

在开始使用像黑盒子一样的深度学习模型解决温度预测问题之前&#xff0c;我们先尝试一种基于常识的简单方法。 它可以作为一种合理性检查&#xff0c;还可以建立一个基准&#xff0c;更高级的机器学习模型需要超越这个基准才能证明其有效性。对于一个尚没有已知解决方案的新问…

HTML 学习笔记(四)图片

<!--通过图片标签"<img src "图片路径">"来调用图片在网页中进行显示--> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthd…

Linux网络套接字之预备知识

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、预备知识 1.理解源IP地址和目的IP地址 …

Chain of Verification(验证链、CoVe)—理解与实现

原文地址&#xff1a;Chain of Verification (CoVe) — Understanding & Implementation 2023 年 10 月 9 日 GitHub 存储库 介绍 在处理大型语言模型&#xff08;LLM&#xff09;时&#xff0c;一个重大挑战&#xff0c;特别是在事实问答中&#xff0c;是幻觉问题。当答案…

Day27:安全开发-PHP应用TP框架路由访问对象操作内置过滤绕过核心漏洞

目录 TP框架-开发-配置架构&路由&MVC模型 TP框架-安全-不安全写法&版本过滤绕过 思维导图 PHP知识点 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框架开发等 技…

时间感知自适应RAG(TA-ARE)

原文地址&#xff1a;Time-Aware Adaptive RAG (TA-ARE) 2024 年 3 月 1 日 介绍 随着大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;出现了新兴能力的概念。前提或假设是LLMs具有隐藏的和未知的能力&#xff0c;等待被发现。企业家们渴望在LLMs中发现一些无人知晓…