MATLAB手撕神经网络实现手写数字的识别——神经元介绍

最近对神经网络比较感兴趣,于是开始了神经网络的学习,首先神经网络最基础的就是BP神经网络,后面就为大家介绍通过BP神经网络实现手写数字识别。

首先简单详细介绍一下BP神经网络:BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。

BP神经网络的分析过程主要分为两个阶段:

第一阶段是信号的前向传播,从神经网络的输入层输入,经过隐含层,最后在输出层输出结果;第二个阶段就是误差的反向传播,通过构建误差函数,通过梯度下降原则,不断修正神经元中的权重和偏置值,最终使神经网络的效果达到最优。

神经元介绍

介绍BP神经网络,首先应该介绍一下其组成的基本单元——神经元

MATLAB手撕神经网络实现手写数字的识别——神经元介绍_第1张图片

上图所示的就是一个简单的神经元,从图中可以看出一个神经元周围有很多突触与其他神经元相连,并接受来自其他神经元的信号,该神经元对这些信号以不同的权重系数进行累加后,经过激活函数激活当前神经元,产生信号传递给与它相邻的下一个神经元。数以万计个神经元相连便形成了复杂的神经网络,可以实现非常复杂事情的处理。

图中Y即为从其他传来的信号,W为每个突触的权重系数,b为该神经元的偏置,该神经元将与其连接的所有突触传来的信号按照权重系数累加起来:

如果该神经元将y_out结果作为输出传给下一个神经元的话,那么整个神经元就相当于一个线性系统,很多非线性的问题将无法解决,限制神经网络的应用。因此研究学者们引入了激活函数将该神经元(非线性函数)进行激活,从而实现非线性问题的解决,常使用的激活函数有:sigmoid函数、双曲正切函数和softmax函数等,不同的激活函数效果不同。

①我们在手写数字识别项目中使用的激活函数是sigmoid激活函数,其函数表达式如下:

 下面是sigmoid激活函数的函数图:

MATLAB手撕神经网络实现手写数字的识别——神经元介绍_第2张图片

②softmax激活函数的表达式为:

 下面这个图(来源自网络)可以很清楚的讲解softmax函数是怎么计算的:

MATLAB手撕神经网络实现手写数字的识别——神经元介绍_第3张图片

 ③ReLu激活函数(线性整流激活函数)其表达式为:

 下面是ReLu激活函数的函数图:

MATLAB手撕神经网络实现手写数字的识别——神经元介绍_第4张图片

到此为止,我们对神经网络的基本单元——神经元,有了初步的了解,后面的博客我将详细介绍多个神经元连接起来组成的BP神经网络,并通过BP神经网络实现手写数字的识别。

 

 

 

 

 

 

你可能感兴趣的:(MATLAB,Algorithm,BP,BP,神经网络,手写数字识别,MATLAB,神经元)