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

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

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

1、什么是M-P 模型

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

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

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

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

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

2、M-P数学表达式

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

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

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

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

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

下面,我们使用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**)** 。在神经网络的每个层次中,除了输出层以外,都会含有这样一个偏置单元。那么,为什么要存在偏置呢?

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

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

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

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

在考虑了偏置以后上图的神经网络的矩阵运算为:

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

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

其中,输入:表示第 i个输入变量(自变量),m为输入变量的个数

输入:表示第 i个权重,与相同下标的 相对应

输入 表示偏置

输出 表示输出变量(因变量)

表示一个激活函数,它对线性加权求和的结果进行非线性变换

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

式子(1)

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

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

其中,输入:表示第 i个输入变量(自变量),m为输入变量的个数

输入:表示第个神经元的第 i个权重

输入 表示第个神经元的偏置

输出 表示第个神经元的输出变量(因变量)

n表示神经元的个数

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

(1)非运算

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

则其表达式为:

运算原理:

|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|
| | 代入求值的x= | | 根据sgn(x)的规则(见式子1), 可得偏置b取值范围 ||
| 0 | | 1 | | 即: |
| 1 | | 0 | | 即: |

如:可取,均满足b的取值范围,则

(2)或运算

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

则其表达式为:

运算原理:

|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | | 代入求x的值 | | 根据sgn(x)的规则(见式子1), 可得偏置b取值范围 ||
| 0 | 0 | | 0 | | |
| 0 | 1 | | 1 | | |
| 1 | 0 | | 1 | | |
| 1 | 1 | | 1 | | |

如:可取,均满足b的取值范围,则

(3)与运算

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

运算原理:

|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | | 代入求x的值 | | 根据sgn(x)的规则(见式子1), 可得偏置b取值范围 ||
| 0 | 0 | | 0 | | |
| 0 | 1 | | 0 | | |
| 1 | 0 | | 0 | | |
| 1 | 1 | | 1 | | |

如:可取,均满足b的取值范围,则

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

仍然以二输入为例:表达式为:

运算原理:

|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | | 代入求x的值 | | 根据sgn(x)的规则(见式子1), 可得偏置b取值范围 ||
| 0 | 0 | | 0 | | 因为既要大于又要小于,b是无解的。 |
| 0 | 1 | | 1 | | 因为既要大于又要小于,b是无解的。 |
| 1 | 0 | | 1 | | 因为既要大于又要小于,b是无解的。 |
| 1 | 1 | | 0 | | 因为既要大于又要小于,b是无解的。 |

如:可取,均满足b的取值范围,则

4、实例

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

该篇文章的目的,主要是让你明白M-P模型的计算公式,以及激活函数的取值为0-1折线型。

熟悉M-P模型在逻辑运算中的应用,体验人为添加权重和阈值,实现逻辑运算。其实,在之后的感知器(机)也是在这个神经元模型基础上去延伸发展的,使得神经网络的发展得到有效的突破。

相关推荐
一尘之中2 小时前
使用 PyTorch TunableOp 加速 ROCm 上的模型
人工智能·pytorch·学习
Eric.Lee20213 小时前
数据集-目标检测系列- 牵牛花 检测数据集 morning_glory >> DataBall
人工智能·python·yolo·目标检测·计算机视觉·牵牛花检测
搏博3 小时前
卷积神经网络(CNN)中的全连接层(Fully Connected Layer)
人工智能·神经网络·cnn
tianyunlinger4 小时前
rope编码代码分享
pytorch·python·深度学习
如生命般费解的谜团5 小时前
LLM学习笔记(7)Scaled Dot-product Attention
人工智能·笔记·学习·语言模型·json
FreeIPCC7 小时前
电话机器人是什么?
大数据·人工智能·语言模型·机器人·开源·信息与通信
醉酒柴柴7 小时前
【代码pycharm】动手学深度学习v2-08 线性回归 + 基础优化算法
深度学习·算法·pycharm
字节数据平台7 小时前
火山引擎数据飞轮探索零售企业大促新场景:下放营销活动权限
大数据·人工智能
啊啊啊六子8 小时前
windows下安装wsl的ubuntu,同时配置深度学习环境
windows·深度学习·ubuntu
努力学习的啊张8 小时前
消息称三星正与 OpenAI 洽谈,有望令 Galaxy AI 整合ChatGPT,三星都要和chatgpt合作了,你会使用chatgpt了吗?
人工智能·chatgpt