改进误差反向传播法神经网络对手写数字识别

2021-12-07 07:45于文生张轩雄
电子设计工程 2021年23期
关键词:手写神经元神经网络

于文生,张轩雄

(上海理工大学光电信息与计算机工程学院,上海 200093)

随着科学技术的快速发展,生活在数字化的时代对数字的智能识别有很高的依赖性,而手写数字识别的应用与发展显得尤为重要。虽然目前手写数字识别技术的研究逐渐走向成熟,但相对优化准确率方面,仍然有很大的提升空间,并且对于其他文字的识别仍具有积极意义[1]。而相应地由于每个人书写样式的多样化,以及书写的习惯不同,给手写字体的识别精确度也带来了相当大的困难。针对数字识别提出了许多解决的办法,但是通过目前的分析,基于误差反向传播法的神经网络是主流的算法[2-3]。但是事实上,由于手写数字笔迹特征复杂或人为因素各有差异,导致手写数字的正确识别率并不比印刷汉字的识别率高,甚至不如联机手写汉字识别率高[4]。

神经网络具有推广能力、非线性和自动学习能力以及高速运算能力[5]。具体来说,在人工智能快速发展下,通过已建模型可以自动地从数据中学习到合适的权重参数[6]。现有的神经网络都没有优化激活函数和参数更新,而文中重点从这两个方面使用新的激活函数、优化参数的更新,通过简单的神经网络结构,就可以实现快速的学习速率以及精确的准确率[7-8],从而使神经网络的性能得到大幅度提升,并且在MNIST 数据集上对测试结果进行了验证。

1 神经网络的原理

为了更好地体现神经网络对图像处理的原理,通过图1 比较神经网络所具有的优势,在神经网络中,连图像中包含的重要特征量都是由机器来学习的,没有人为参与。由此也可以引出,基于误差反向传播法的神经网络也称为端到端的机器学习(endto-end machine learning)。端到端是指从一端到另一端,通常就是从原始数据(输入端)中获得目标结果(输出端)[9]。

图1 由人工设计转变为由神经网络从数据中学习

另外,神经网络的优点是针对所有的问题都可以采用同样的流程来解决。例如,不论要求识别数字4,还是动物或是识别人脸,神经网络都可以不断地学习提供的数据,将该数据直接作为原始数据,进行“端对端”的学习。而基于误差反向传播法的神经网络通常要与梯度下降法结合使其达到结构最优化,将神经网络的组成元素优化为层,罗列出相应的计算图,可以高效地计算梯度(误差反向传播法)。

误差反向传播法的神经网络是基于计算图设计的,以数学式为中心展开研究。文中的计算方法把神经网络每一层都用计算图表示出来,而神经网络模型的扩扑结构由输入层、隐含层、输出层组成[9],如图2 所示。

图2 神经网络3层结构图

对神经网络系统的搭建中,文中所用到的核心算法是误差反向传播法,主要是根据输出的值再反向求导传播到输入层。在前向传播中,数据由输入层处理转换,经隐含层的深度推理学习再传递给输出层,自然每一层的计算输出都经计算加工,作为下一个神经元节点的输入。

考虑到MNIST 数据集的实现与推理,文中设计的神经网络结构为3 层结构,输入层应有784 个神经元,隐含层有50 个神经元,输出层有10 个神经元。输入层的784 来源于将图像都经过尺度归一化,大小均为28×28=784 像素[10],根据数字为0~9 类别分类而设计出10 个神经元的输出层。隐含层的神经元数量可以是任意的,在设计中,考虑到矩阵乘法的数学运算,以及网络结构的泛化应用能力,隐含层选取50 个神经元。

2 改进优化的误差反向传播法

2.1 改进的误差反向传播法神经网络的激励算法

传统的误差反向传播法训练精度不准确、效率低,在数据训练时训练速度时间过长。针对以上出现的若干问题,文中改进了激励算法。该算法为了优化增益值对每个神经网络节点的自适应,把搜索方向的初始位置进行了更改。

该算法中对误差反向传播法更新表达式的计算是通过下面的计算推导过程完成的,先对误差e和对应的增益参数进行微分。

误差e的计算公式如下:

计算完成后,再通过对应的增益值进行更新,计算表达式如下所示:

式中,η为学习速率,tk为目标输出。

增益的输出节点和更新表达式的关系如下:

偏置和权重的表达式如下所示:

得出偏置输出节点和更新表达式的关系如下式所示:

通过算法应用批处理模式的训练过程,要对整个训练集、权重、增益和偏置参数输入后进行更新,每次更新训练后把均方误差和计算出来,然后再比较目标误差,直到找到低于期望目标值的均方误差。

2.2 使用改进的激活函数

神经网络激活函数h(x)的主要作用是把输入信号的总和转换为输出信号,其主要在于如何激活输入信号的总和。而输入信号的计算由于线性函数无法跟踪解决问题,所以要引用非线性模型,也就是说,神经网络的激活函数必须使用非线性函数,其实是为了发挥叠加层所带来的优势,激活函数必须使用非线性函数。常用的非线性激活函数有sigmoid 函数(sigmoid function),其数学表达式为h(x)=1/(1+exp(-x)),反向传播数学表达式为:

Relu函数[11](Rectified Linear Unit)数学表达式为:

目前,这两个激活函数广泛使用在神经网络中,但是都有各自的不足,sigmoid 函数容易产生梯度下降消失的现象;而Relu 函数由于负半轴为零,正半轴输入等于输出,在一定程度上对梯度下降消散问题的解决优于前者,但也可能无法更新权重值。结合前两个激活函数的优缺点,为了弥补Relu 函数在负半轴上反向传播有输出值,缓解梯度下降消失的现象,使其识别准确度增大,文中设计了一个全新的激活函数Srelu,其数学表达式为:

式(3)中,给定输入x后,会返回某个输出的转换器,当输入x大于0 时,激活函数经过计算转换输出,当x小于零时,激活函数转换sigmoid 输出传递的信号,传递给下一个神经元。

Srelu 函数曲线图如图3 所示。

图3 优化的激活函数

2.3 使用Adam代替梯度下降法(SGD)进行参数更新的最优化

只有参数的不断更新,基于误差反向传播的神经网络才能找到使损失函数的值尽可能小的参数,这就是寻找最优化参数的问题[12]。由于神经网络各层神经元参数空间庞大,在传统的方法上使用参数的梯度,沿着梯度方向更新参数,并且多次重复这个步骤,从而逐渐靠近最优参数,这个实现过程称为随机梯度下降法(SGD)。该方法虽然达到了90%以上的准确率,但在梯度方向的处理上还可以进行改善。而在实际的应用中,也可以把初始权值设定为尽可能小的参数,还要使正负能量尽量相等[13]。为了解决这些问题,使参数更新准确达到最优化,文中采用了Adam[14],可以实现超参数的高效搜索,准确地找到参数的最优化,其收敛速度快,适当调整了神经网络学习的更新程度。Adam 和SGD 解决最优化的比较如图4 所示,纵轴坐标Loss 表示损失函数的值,横坐标iterations 表示学习的迭代次数。对比分析结果图显示,相比SGD,Adam 学习和收敛速度都更快。

图4 基于数据集两种参数更新方法比较

2.4 针对当前的激活函数层前应用Batch Norm算法

Batch Norm[15]算法的思路意在调整各层的激活值分布,使其拥有适当的广度。在神经网络中插入对数据进行正规化的层,对初始值不用太依赖,并且会使初始值变得健壮。通常的神经网络都会使用Dropout[16]方法来抑制过拟合,而文中使用Batch Norm 算法来抑制过拟合,可降低Dropout 的必要性。该算法的数学模型推导公式如下所示:

通过式(12)的计算推导,有m个输入数据集B={x1,…,xm},首先第一步对mini-batch 求平均值μB,之后再根据求得的平均值求方差。ε是接近无穷小的值,目的是防止分母为0 的情况出现。

然后,Batch Norm 层会对正规化后的数据进行缩放和平移变换,可以用数学式表示如下:

式中,γ和β是参数,可以根据学习适当调整为合适的值。

3 手写字体识别结果分析

通过分析验证,实验采用的是MNIST 数据集,数据集主要分为两部分,一部分由60 000 个手写数字体组成,作为训练集,另一部分为10 000 个测试集。由于MNIST 数据集的训练数据过多,为了节省学习的时间,从训练数据中选取一批数据,可以从整个数据集中随机选取出100 笔数据,再利用这100 笔数据进行学习。基于误差反向传播的神经网络没有优化改进之前,激活函数采用sigmoid,由图5训练可知测试结果,而图6 采用的激活函数是Relu,通过结果分析可知,改进前神经网络的识别准确率最高为97%。

图5 传统方法手写数字集测试结果

图6 手写数字集测试结果

通过上述实验结果可知,显然神经网络在改进前的识别准确率没有达到最优,而图7 则是基于神经网络改进后的测试结果,可以看出,优化改进后的识别准确率达到了98.5%。

图7 改进优化后的数字集测试结果

改进后识别的结果相比其他两种方法分别提高了4%和1.5%,如表1 所示有显著的提升和优化,并且收敛速度和训练时间也加快了,各方面都有提升。

表1 在公用数据集上不同方法的识别准确率

4 结论

从以上训练数据结果可以看出,改进误差反向传播法神经网络的激励算法提升了训练效率,改进激活函数,提升了识别准确率的精度,使用Adam 加快了收敛速度,Batch 算法加速神经网络的学习和抑制过拟合,无论是训练时间还是训练精度和收敛性,都得到了优化和提升。在搭建简单的神经网络模型上有预期地进行实验,实验结果说明,改进的误差反向传播法是有效的。文中研究只应用了简单的3 层神经网络,还可以通过加深神经网络的层,应用更加复杂的算法,得到一个识别精度更高的神经网络模型,这些还需要在将来继续进行研究和改进。

猜你喜欢
手写神经元神经网络
我手写我心
抓住身边事吾手写吾心
神经网络抑制无线通信干扰探究
基于集成学习的MINIST手写数字识别
跃动的神经元——波兰Brain Embassy联合办公
深度学习在手写汉字识别中的应用综述
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用
基于二次型单神经元PID的MPPT控制
ERK1/2介导姜黄素抑制STS诱导神经元毒性损伤的作用