基于自动学习的常用水字识别

2020-11-02 07:49汤辉张国锋张维勤
现代计算机 2020年26期
关键词:网络结构卷积神经网络

汤辉,张国锋,张维勤

(黔南民族师范学院计算机与信息学院,都匀558000)

0 引言

水书是我国的少数民族之一水族使用的典籍,被称为水族人民的百科全书和象形文字的活化石。水书多以水书先生代代相传,随着时间的推移,水书先生的数量在逐年减少,导致水书传承出现断层的危机。所以将水字信息化,有利于水书文献的抢救性保护和深层次研究。据不完全统计水字468 个,连同异体共收字1780 个,包括天干、地支、五行、九星、八卦、二十八宿、时节等类别[1]。水族古文字的结构主要有以下三种:一是象形字、二是仿汉字、三是宗教文字。水字是既有借汉字也有自造字,而参照造字又随意反书、倒书、侧书和增损笔画等造成了大量的异体字,导致了许多水字字形区别度不高,有很多形似字[2],因此给水字的识别带来了很大的挑战。

目前,很少有对水书文字图像进行识别的研究和讨论,而在其他少数民族文字图像识别方面,夏吾吉等人[3]针对藏文数字识别手工构建3 层卷积层、3 层池化层和1 层全连接层的CNN 模型,并选用Softmax 函数作为目标函数,参数更新法使用Adam 法,使得藏文数字识别率达到了97.85%。陈善雄等人[4]在古彝文的识别中构建了4 层CNN 网络,并以此为基础模型扩展出5 个模型,然后基于Alpha-Beta 散度自编码融合模型,通过2 个全连接层抽取特征,最终取得了93.97%的识别准确率。我们可以发现针对不同的学习任务需要搭建不同的CNN 模型去进行训练识别,同时还需要耗费大量的时间对CNN 模型的网络结构及其超参数进行调优。

本文采用自动机器学习的Auto-Keras 框架自动构建CNN 模型以识别水字图像。Auto-Keras 框架引入了神经网络核函数和树结构的采集函数优化方法,并使用贝叶斯优化指导神经网络架构进行网络态射,从而找到最优的识别水字的网络模型。同时我们手动构建了一个11 层的CNN 模型来与其做对比,以研究自动机器学习构建的模型在水字识别任务上的识别效果。

1 方法

1.1 卷积神经网络模型

在进行图像识别时,我们常常采用深度学习模型之一的卷积神经网络(Convolutional Neural Network,CNN),它能够直接以2D、3D 图像作为数据输入,自动提取图像特征。相比较于人工神经网络而言,卷积神经网络具有局部连接、权值共享、下采样三个基本特性,大大减少了网络参数的数量,降低了计算的复杂度和时间。同时卷积神经网络具有表征学习的能力,具体为卷积神经网络的卷积层和池化层可以提取输入图像的平移、缩放等不变特征。在表征学习的过程中,卷积神经网络模型可以组合低层特征形成更加抽象的高层特征,以发现数据的分布式特征表示[5]。

卷积神经网络是一种带有卷积结构的神经网络,其基本结构为输入层、隐含层和输出层。如图1 所示。输入层在卷积神经网络中可以处理序列、图像、视频等多维数据。隐含层包含卷积层、池化层、全连接层3 类常见结构,在其他算法中,还会用到Inception 模块、残差块等复杂结构。在卷积神经网络中,卷积层最主要的特征就是局部连接和权值共享。卷积层中的卷积核实际上是一组权值参数,它与上一层特征图进行局部连接计算,加偏置后传递给非线性激活函数,如ReLU 函数、Sigmoid 函数等,得到一个特征图,即实现对特征的提取。而权值共享就是卷积核在滑动卷积上一层特征图时,卷积核中的参数不变并且全图共享。因此与传统的全连接神经网络相比,卷积神经网络只需要很少的参数就可以完成训练,并减少了过拟合风险。池化层本质上是下采样,利用图像空间相关性原理对卷积层的特征图做下采样,减小下一层的输入大小,同时减少网络的参数量和计算量并保留有用的信息,提升了鲁棒性。常见的池化有最大池化、平均池化、L2 范数池化等。全连接层在CNN 中起到“分类器”的作用,就是将学习到的分布式特征表示映射到样本标记空间,即将前面卷积层和池化层提取到的局部特征进行非线性组合以输出。为了提升CNN 的网络性能,全连接层每一个神经元的激励函数一般会采用Re⁃LU 函数。输出层作为CNN 的最后一层,针对不同的问题需要选择合适的激活函数来进行分类,如Sigmoid函数可以用于二类分类、Softmax 函数则可以用于多类别分类。

图1 基本的卷积神经网络结构

VGGNet[6]、LeNet[7]、AlexNet[8]等是目前常用的CNN模型,它们是针对具体的任务调整过的CNN 模型。在本文中我们构建类似于VGGNet 的网络模型Artifi⁃cial_CNN 模型,它是一个11 层的网络结构,经过多次的实验对网络结构和超参数进行调整,本文最终选用3×3 的卷积核,采用零填充(Zero-padding),池化层使用2×2 的最大池化,激活函数选择ReLU 函数。此外,优化器选择RMSprop,学习率为0.001,dropout 率为0.7。其结构如图2 所示。

图2 Artificial_CNN网络结构

从文中人工搭建的Artificial_CNN 模型可以看出,针对具体的学习任务需要选择合适的网络结构,并且需要考虑使用多少层结构,每一层多少个神经元,使用哪一个激活函数等超参数才能找到合适的网络模型。因此需要使用者学习使用大量的专业知识和时间来找到神经网络架构和超参数之间的平衡。自动机器学习(Automated Machine Learning,AutoML)的目标就是使用自动化的数据驱动方式来解决上述问题,使用者只需提供数据,自动机器学习系统根据数据自动的决定最佳方案构成神经网络架构。

1.2 自动机器学习

通过使用神经结构搜索(Neural Architecture Search,NAS)算法[9]自动设计网络及超参数优化等问题,从而达到自动机器学习(AutoML)的目的。NAS 的目的就是在给定的学习任务和数据集上寻找最佳的神经网络结构。NAS 的流程如图3 所示。搜索空间就是一个可供搜索的网络结构的集合,其中包括了网络的结构及其操作(如:神经网络的深度、层之间链接类型和滤波器数量等)。搜索策略就是以何种方法来对搜索空间进行探索生成“子网络”,然后交由性能评估策略对“子网络”结构进行性能评估,并将评估结果返回给搜索策略进行更新以调整下一次网络结构的选择,循环上述步骤直至找到最优的网络结构。由于传统NAS 算法中涉及的搜索空间很大,并且评估“子网络”结构的性能涉及数据集的训练,使得这种方法会带来昂贵的计算开销及时间开销,如:NASNet[10],使用450个GPU 运行了大约3-4 天。为了解决这些问题,我们采用了AutoML 的开源框架Auto-Keras,依然使用NAS,但是提供了一种新的框架,即使用贝叶斯优化指导网络态射进行神经架构搜索,以此实现高效的神经架构搜索[11]。而且Auto-Keras 可以在CPU 和GPU 上并行运行,针对不同GPU 内存限制采用自适应搜索策略,如:使用1 块NVIDIA GTX 1080Ti 的GPU 运行12小时就可以得到一个最优的模型[12]。

图3 神经网络架构搜索流程

Auto-Keras 主要流程如图4 所示。在有限的时间内,API 接收用户的调用,然后将预处理的数据集传递给Searcher 模块,它是一个包含了贝叶斯优化器和高斯过程的模块。Graph 是一个处理神经网络计算图的模块,它具有用于网络态射操作的功能。Searcher 模块使用模拟退火算法控制Graph 模块是否将Model stor⁃age 模块中已经训练好的神经网络态射成新的网络结构。而Model Trainer 模块则是对新的网络结构进行训练,因为只是为了评估网络结构不进行充分训练,所以采用early stop 提升效率。然后将训练后的网络结构存放在Model Storage 模块中,网络结构的性能则反馈给Searcher 模块的高斯过程回归来预估更优秀网络结构。搜索网络结构和训练评估网络结构同时进行。最后就是对最优的网络结构进行充分的训练并对其进行评估得到Best model。

图4 Auto-Keras流程

Auto-Keras 之所以高效是使用贝叶斯优化引导网络态射的同时又以高斯过程模型来估计下一个最优结构,节省了架构搜索时间。在NAS 背景下,贝叶斯优化流程进行以下循环:①更新:用现有的图结构及其性能训练高斯过程模型。②生成:通过优化采集函数来生成下一个要观察的计算图。③观察:训练生成的新图以获得实际性能。由于神经网络本身可以映射为图结构,为了使贝叶斯优化能够在树结构搜索空间中进行,Auto-Keras 框架开发了神经网络核函数来表达一个图变形到另一个图的编辑距离,即经过多少操作可以变成另一个图。网络态射就是将一个图变形为另一个图的操作集合,它改变神经网络结构的同时仍保留其功能,使得子图可以重用父图的权重,减少了网络结构的训练时间,提升了模型的搜索效率。在树结构搜索空间使用上置信界[13]作为采集函数,并使用模拟退火算法进行优化,起到了平衡探索和利用问题。此外,为了应对结构在变形时保持中间输出张量形状的一致性,还定义了一个图级态射去发现和变形在整个网络中受层级操作影响的层。

2 实验及结果分析

2.1 数据集

本文采集的51 类水字训练数据分别来自正七卷和壬辰卷[14],共得到18264 张图片。测试集数据来自丧葬卷[15],共得到5984 张图片。把训练数据中30%划分为验证集,70%划分为训练集。为了使得水字图像可以取得更好的识别效果,所以对图像进行了以下图片预处理,结果如图5 所示。

图5 水书文字预处理

(1)从书卷中提取的图片大小不一,所以将图片的像素固定到32×32 的大小。

(2)为了提升识别效果,将图片全部转为黑底白字的灰度图像。

(3)将水字图片的像素值由(0,255)归一化到(0,1),提升模型的收敛速度和精度。

2.2 数据增强

数据和特征决定了机器学习的上限,算法和模型只是为了接近这个上限。由于现存的水族文字数据还比较匮乏,没有成规模的水字数据库,所以为了防止模型在训练时因数据量过少而导致过拟合,因此在本文中采用了图像数据增强(Image Data Augmentation)[16]的方法提升数据集的规模。本文采用的数据增强方法主要有水平翻转、垂直翻转、随机裁剪、高斯扰动、锐化和浮雕效果。在生成图片数据集时将随机选用一种效果进行增强,最终使每一类水字图片增加到1000 张,一共获得51000 张图片。如图6 所示为部分增强效果图。

图6 对图片进行数据增强

2.3 实验结果与分析

本文使用以往构建CNN 模型的经验人工构建Artificial_CNN 模型和使用Auto-Keras 自动搜索最优架构的Auto_CNN 模型进行对比,为了客观评价两种模型在数据增强前后的表现,两种模型训练和测试使用的数据集相同,并使用F1-score 值作为每个类别的评价指标,由于测试类别数量的不均衡,使用F1-Weighted avg 作为整个模型的评价指标。结果如表1所示。在未增强的训练数据上,我们使用Artifi⁃cial_CNN 和Auto_CNN 模型各进行三次训练并在测试集上预测,然后将三次在测试集上预测得到的F1-Weighted avg 值相加取平均值作为模型最终的识别准确率,分别取得了86.17%和88.21%的准确率。然后在增强的训练数据上2 种模型同样进行三次训练取平均值得到了94.30%和90.72%的准确率。说明在样本量较少时使用数据增强可以提高模型的泛化能力,从而提高模型的识别准确率。而人工构建的CNN 模型之所以达到了94.30%的准确率,主要是由于我们经过很长时间对网络结构、超参数进行调整,最终使得Artificial_CNN模型达到了一个令人满意的结果。Auto_CNN 模型仅仅只是提供数据集便可以自动搜索构建识别水字的CNN 模型从而得到90.72%平均识别率,足以看到自动搜索神经网络结构是可行的。

表1 Artificial_CNN 和Auto_CNN 模型增强数据前后平均识别率的对比

为了进一步分析每类水字识别效果,我们对每类水字的三次F1-score 值取平均值,水字分类识别结果如图7 所示。通过对比每类水字识别准确率可以看出,经过数据增强后水字识别准确率有明显的提升,但有多类水字在模型上的预测结果都不太理想。我们挑选了部分识别效果不理想的水字图片进行分析,如表2所示,从左到右依次为“五、辰、未、月、土”五个水字。通过人工对比训练集和测试集中这五类水字发现其在结构上存在书写差异,主要是因为水书的造字机制,水书中一种文字可能存在一种及以上的书写结构,导致模型在测试集上预测效果并不理想。还有一些其他水字由于手写者书写的随意性使得有些水字难以识别,影响了最终的识别效果。

表2 识别效果较差的水字

图7 两种模型水字识别分类结果

3 结语

随着时间发展在图片分类上的CNN 模型从简单的LeNet 模型到复杂的ResNet 模型都需要人为设计网络架构并调参,不仅耗时还容易出错。为此本文围绕自动机器学习框架Auto-Keras 自动搜索构建最优的CNN 模型来识别常用水字,避免了人工干预,同时与人工耗时调参构建的CNN 模型进行对比。在经过数据增强的数据集上训练的模型最终分别取得了90.72%和94.30%的平均识别率。

由于现阶段对水字识别的研究还比较少,且还没有成规模的手写水字数据集。采集到的水书文字因其造字机制、书写者手写水字的随意性等影响,致使模型在进行常用水字识别时使得某些水字的识别准确率并不理想。但从总体来看,本文初步完成了基于NAS 算法自动构建CNN 模型识别常用水字的研究,对于其他使用频率较低的水字识别是我们进一步的研究方向。

猜你喜欢
网络结构卷积神经网络
基于全卷积神经网络的猪背膘厚快速准确测定
基于神经网络的船舶电力系统故障诊断方法
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
试论分布式计算机网络结构分析与优化
带通信配网故障指示器故障监测方法及安装分析