王同珍, 黄明炜, 黄宏安, 林进浔, 陈国栋
(1.福州大学 物理与信息工程学院,福建 福州 350108;2.福建数博讯信息科技有限公司,福建 福州 350002)
药物的最终质量和效果与生产环境的温度有着密不可分的关系,生产及保存过程中的温度波动都有可能造成药物的失效,后果严重。因此制药厂对于温度传感器的准确性要求较高。但是现有的高精度温度传感器价格过于高昂,故对于部分场景,以较低成本实现较高精度的温度传感器校准有很大的研究价值与应用意义。然而,很大一部分温度传感器由于设计水平、制造工艺以及生产成本的制约存在一定的误差,此外,在实际使用过程中由于设备老化、环境多变等因素的影响,也会产生一定的误差[1]。因此,通过后续加入校准模块来减小乃至消除部分误差就显得尤为重要。制药厂一般要求温度在18℃~26℃范围内保持恒定,故将温度传感器校准范围具体至10℃~30℃。
BP神经网络[2]由输入层、隐藏层、输出层组成。数据通过输入层输入神经网络,经线性变换处理,再由激活层进一步到隐藏层输出。BP算法利用梯度搜索技术使神经网络的实际输出值与期望输出值的均方误差最小[3]。BP神经网络的学习有两个过程:信号的前向传播和误差的反向传播。在前向传播中,前向神经网络作为非线性函数映射装置。输入数据经隐含层作用于输出节点,通过非线性映射函数映射到高维特征空间,预测输出结果。当前向传播后的输出数据与期望的输出数据不匹配时,就变为误差反向传播过程。在误差反向传播过程中,各单元对误差进行分配,并将误差在隐含层中逐层传递到输入层。反向传播的目的是修改权值以获得最优集。
BP神经网络通过梯度下降法训练网络,而其初始参数随机生成,若选择不当,会造成局部最优和收敛速度慢等问题。故采用遗传算法[4]对其进行优化。遗传算法模拟了自然选择和遗传机制,是一种高效的并行全局搜索优化方法[5]。其基本流程可概括如下:
1)实数编码:随机生成一些权值和阈值,进而对其编码生成染色体。
2)初始化种群:由染色体组成一定规模的种群,并同时开始进化。
3)适应度计算:首先对染色体进行解码,然后进行网络训练。采用适应度函数对每个个体进行评价。高适应度个体参与遗传操作,低适应度个体被淘汰。
4)杂交与变异:经遗传操作(选择、交叉、变异)的个体集合形成新一代种群,重复执行此过程直到满足终止条件。
5)最优种群:通过遗传算法将后代中的最优个体放入最优种群中。
控制温湿箱温度以1℃为增量,在10℃~30℃范围内整数递增,同时测得对应温度传感器示数,重复实验5次,共记录5组100对数据集。其中前三组数据作为训练集,第四组数据作为验证集,第五组数据作为测试集。由于温度传感器DS18B20的最小分辨率为0.0625℃,且在-10℃~85℃范围内精度为±0.5℃,故将所有示数作保留小数点后一位处理。对数据做标准化处理,将其缩放至[-1,1]范围后送入BP神经网络进行训练。
系统首先随机生成网络初始参数,根据网络结构依次计算隐含层及输出层的输出,然后计算输出与标签之间的误差,采用LM算法对BP神经网络进行反向训练,更新BP神经网络中的权重及偏置。重复上述步骤,直到达到理想精度或预设训练次数。如图1所示,BP神经网络训练25轮后达到最优性能。
图1 传统BP神经网络训练过程
利用遗传算法优化BP神经网络不再简单的随机生成初始参数,而是对种群进行多次迭代初始化,淘汰较差的参数,最终产生合适的网络初始参数[6-7]。
首先定义一组神经网络的参数为一个个体,共50组初始参数(50个个体)为一个种群。对BP神经网络的权重及偏置参数进行编码。然后根据式(1)计算判断个体的适应性。式中:yi表示BP神经网络第i个输出,oi表示第i个训练标签。
(1)
然后进行遗传操作,即通过选择、交叉、变异方式进行运算。为了选择出更好的个体,产生更好的基因,采用轮盘赌选择法,根据式(2)、(3)计算适应度值的倒数及每个个体被选择的概率。个体适应性越好,F越小,f越大,p越大,因此适应性更好的个体更易被选中,模拟优胜劣汰的过程。选中的个体组成新的种群,再根据式(4)随机交换不同个体的相应基因,接着根据式(5)(6)进行基因变异,产生新的个体。重复上述操作100次,得到最优个体,将其作为初始参数来训练。之后过程与传统方式一致。式中:b、r1、r2为0-1之间的随机数,g是当前迭代次数,Gmax是最大迭代次数。
fi=k/Fi
(2)
(3)
(4)
(5)
f(g)=r2(1-g/Gmax)2
(6)
如图2所示,遗传算法优化后的BP神经网络只需训练13轮即可达到最优性能。
图2 遗传算法优化后的BP神经网络训练过程
将测试集数据分别输入传统方式训练的BP神经网络及利用遗传算法优化后的BP神经网络进行校准,如图3所示,经过遗传算法优化后的BP神经网络校准能力得到了进一步提升。
图3 GA-BP神经网络校准前后误差
利用MATLAB训练好校准网络后,将其搭载至硬件系统。考虑到成本、性能、开发速度、等因素,选用以Cortex-M3为内核的STM32F103系列MCU开发温度传感器校准系统[8]。完整校准系统架构图如图4所示:温度传感器DS18B20将读取到的未校准温度值通过通信模块传输至控制模块,控制模块先对数据进行标准化后再通过校准模块校准,得到的校准值送回控制模块进行反标准化,最后在LCD上显示校准前后的温度值。硬件系统完成后采用测试集数据进行测试,如图5所示,其校准精度与Matlab测试结果一致。
图4 温度传感器校准系统架构图
图5 温度传感器校准系统测试图
如表1所示,利用传统BP神经网络进行训练的校准网络训练收敛轮数为25,最大误差从校准前的0.5℃提升到了0.24℃,均方误差从0.0875降到了0.0174。当利用遗传算法对BP神经网络的初始参数进行优化后,收敛轮数从25降为13;最大误差从0.24℃降为0.21℃,精度提升了12.5%;均方误差从0.0174降到了0.0111。由此可知,利用遗传算法优化BP神经网络初始参数可极大的加快训练收敛速度,并提升校准结果精度。
表1 遗传算法优化前后对比