1. 引言
得益于科学技术的发展,函数拟合深入到科学研究、科创制造的各个领域之中。许多科学研究都离不开函数拟合的支持,例如:分子扩散分析[1]、药物敏感性分析[2]和飞船轨迹预测[3]。
给定一个函数表达式,可以适当选取自变量的值,代入表达式后计算因变量的值,将自变量和因变量的值组合后在坐标系中描点,再依次连线,即可获取函数图像。在计算机技术高度发达的今天,以上过程实现起来显得更加容易。但给出一个复杂的函数图像,没有任何其他辅助提示,直接用数学表达式描述这个函数图像是很困难的[4]。首先,函数表达式的组合非常复杂,难以有统一的表达式形式描述所有的函数图像。其次,函数图像到函数表达式的过程是一个一对多的过程,函数图像在数学表达中,可对应多种形式的表达式。与通过函数描点连线所得到的具有唯一性的结果不同,函数图像的表达式呈现出非唯一性的特征。
总之,将函数表达式进行描点、连线,绘制出函数图像较为容易,而对给定的函数图像表述为函数表达式较为困难。现有的研究主要有参数化方法、非参数化方法、机器学习方法、启发式方法等,但是仍未能有效地解决潜在的问题。
针对难以有统一的表达式形式描述所有函数的问题,泰勒公式[5]给出了可行的解决方案。泰勒公式可以将一些复杂的函数近似地表示为简单的多项式函数,从而实现了函数表达式形式的统一。
针对难以用函数表达式表述函数图像的问题,遗传算法[6]给出了可行的解决方案。遗传算法通过模拟生物进化过程,可以在迭代过程中搜索最优解,非常适用于将函数图像表述为函数表达式的研究。实验结果表明,遗传算法在全局搜索和内在启发式随机搜索方面具有优势,并且可以显著改善自适应模糊神经系统的学习效果[7],因此将遗传算法应用于函数拟合具有较大的可行性。
2. 研究现状
近些年,研究函数拟合主要有参数化方法、非参数化方法、机器学习方法、启发式方法等。
参数化方法假设函数具有特定的形式,通过调整参数来最小化误差。调整参数最经典的方案是最小二乘法,而特定的函数形式包括但不限于多项式函数、指数函数、三角函数。Smyth [8]在早些年就提出了基于最小二乘法的固定形式函数拟合的相关方案,给后续的研究提供了很多思路。
非参数化方法不提前预设具体的函数形式,利用数据的局部或全局特性进行拟合。Nadaraya [9]和Watson [10]提出了通过核函数对数据点进行加权平均,以平滑估计回归函数,从而避免对函数形式的假设。这样的方案被称为Nadaraya-Watson核回归,能够灵活拟合非线性关系,使回归曲线更加平滑,适用于噪声数据的回归分析。
机器学习方法通过学习数据特征来进行拟合,很适用于复杂或高维的数据。代表方法有多层感知机、支持向量机。Bishop等人[11]系统性地介绍了模式识别和机器学习的基本原理,包括贝叶斯方法、神经网络、支持向量机等模型,并结合概率图模型进行深入分析,为后续的研究提供了一套系统的机器学习理论框架。Vapnik [12]提出了统计学习理论并奠定了支持向量机的数学基础,强调了结构风险最小化原则,为后续机器学习理论提供了严密的统计基础,使得支持向量方法在高维、小样本问题上取得了良好的泛化能力。
启发式方法通过构建优化目标与迭代过程来探索最优解,适用于复杂、非线性、无显示表达式的情况,代表方法有粒子群优化、遗传算法。Kennedy等人[13]提出了粒子群优化算法,受鸟群和鱼群群体行为的启发,通过个体与群体信息的交互搜索最优解,为后续的研究提供了一种高效的全局优化方法,广泛应用于机器学习、工程优化和控制领域。Lambora等人[14]详细描述了遗传算法的渊源、基本方案,为后续启发式算法的研究奠定了坚实的基础。
3. 理论与方法
3.1. 泰勒公式和遗传算法的简述
泰勒公式是高等数学中的一项重要内容,可以将一些复杂的函数近似地表示为简单的多项式函数,实现化繁为简的效果。中学阶段可以接触到三角函数、幂函数、指数函数、对数函数等的泰勒公式,最终都表述为了多项式函数的形式。在计算机科学中,许多数学函数的计算实际上是通过截取泰勒级数的前几项来实现的,这种方法广泛应用于科学计算和工程技术中。
遗传算法基于生物繁殖和进化理论。自然选择是一种普遍接受的理论,它阐明了优胜劣汰的理论。生物体通过选择、基因重组和基因突变进行迭代繁殖[15],其中更适合环境的基因更有可能被保留下来。在遗传算法中,编程中的复杂问题被抽象为自然选择的过程[16],适应度是衡量种群适应环境的能力的指标。遗传算法的整体流程如图1所示。
Figure 1. Overall flow of solving practical problems with genetic algorithm
图1. 用遗传算法解决实际问题的整体流程
在遗传算法的设计中,个体的表现型决定了基因的编码和解码方式。该研究将初等函数的泰勒展开式的多项式参数视为遗传信息。与经典遗传算法相比,本研究在设计遗传算子时考虑了全局最优解和局部最优解的差异,充分注意了保留最优个体的优先性。
3.2. 基于泰勒公式和遗传算法的函数拟合设计
确定决策变量和约束条件方面,个体表现型的约束条件为有意义的函数表达式,决策变量为表达式组合,包含操作数和运算符的组合。将初等函数的泰勒展开式[17]的多项式的参数作为遗传信息,用于实现遗传信息编码与解码的过程。泰勒展开式的多项式的每一项都为加项,所以无需考虑运算符的编码。
该研究对传统遗传算法的算子进行了改进,以便缓解自然选择的不确定性对函数拟合收敛的影响。传统遗传算法的选择算子采取了简单的随机联赛法,该研究兼顾了随机联赛法和最优部分个体的保留。这样的改进有利于生物进化整体上向着好的方向进行,从而得到理想的适应度衰减曲线。
适应度评估决定了遗传算法的优化方向。函数拟合的目的是找到一个尽可能地表述图像轨迹的表达式,因此该研究将目标表达式的图像与待拟合的图像之间的面积作为适应度。通过高等数学中定积分的思想,将这个面积转化为有限个曲面梯形的面积累加计算,其中,累加值越小,说明目标表达式越理想[18]。
初始群体的基因序列由随机数生成。函数表达式的复杂度决定了随机生成的个体的基因序列的长度。越复杂的函数表达式,随机生成的个体的基因序列越长。选择算子、交叉算子和变异算子的设计对应着自然选择的迭代流程,是遗传算法的核心内容。
该研究用随机联赛法设计了选择算子。每代中全部的80个个体被平均分为8组,每组中适应度最小的一半个体是优胜者。为了实现全局最优解的保留,每代中40个优胜者进行自我复制用于保留到下一代。40个优胜者的原始个体将执行后续的交叉算子和变异算子。该研究设计这样的选择算子缓解了遗传算法不确定性大的问题。真实的自然选择过程中有海量的个体,即便不进行最优个体的备份也很有可能保留优秀基因。而遗传算法中的群体大小是受限的,通过这样额外的设计可以实现较好的迭代效果。
该研究用单点交叉法设计了交叉算子。选择算子中随机联赛法生成了40个优胜者,这40个优胜者随机配对后繁衍产生下一代。繁衍过程中,基因重组会以一定的概率发生。单点交叉法指的是随机生成一个位置点,该位置点之前的位置点不进行基因重组,该位置点与其之后的位置点进行基因重组,如图2所示。单点交叉法有利于保留局部基因片段的结构,适用于函数拟合、路径优化等具有局部依赖关系的优化问题。
Figure 2. Example of gene recombination by single-point crossover method
图2. 单点交叉法基因重组示例
该研究用基本位变异法设计变异算子。在生物发育时基因会以一定的概率发生突变。基本位变异法指的是随机生成首、尾两个位置点,这两个位置点及其之间的位置点进行基因突变的操作,其他位置点保留原始基因,如图3所示。基本位变异法可以控制突变发生在局部的片段,在提高算法收敛效率的同时,避免了过度破坏个体的基因结构。
Figure 3. Example of gene mutation by basic bit mutation method
图3. 基本位变异法基因突变示例
该研究对超参数进行了特定的取值。个体编码串的长度设置为5,在函数拟合问题中体现为函数表达式的复杂度。群体规模设置为80,在函数拟合问题中体现为函数表达式的数量。发生基因重组的概率设置为0.5,发生基因突变的概率设置为0.1,迭代次数设置为200。
遗传算法作为一种优化搜索算法,在函数拟合分析中具有重要的应用价值。不过,该算法存在计算过程较长的固有特性,且不同用户所使用的机器在硬件配置上存在显著差异。硬件性能的不同会直接影响计算速度,因此难以确保每台机器都能在瞬间得出计算结果。鉴于此,当用户使用本系统中对给定函数图像进行拟合分析的功能时,需要耐心等待遗传算法完成计算。此外,遗传算法本质上是基于概率的搜索算法,其搜索过程具有较大的不确定性。这就导致在实际应用中,无法保证一定能求得效果理想的拟合函数。为了在保证拟合效果与计算效率之间达成平衡,本函数拟合系统将群体个体数设定为80,迭代数设定为200。这样的参数设置,既能够在一定程度上有效地开展函数拟合工作,又能使系统进行遗传算法计算的时间尽可能缩短。
4. 实验与讨论
水平线性拟合、一般线性拟合、类抛物线拟合、不规则图形拟合的函数表达式结果、拟合效果如图4所示。可以发现,该研究提出的基于泰勒公式和遗传算法的函数拟合方法既尽可能地拟合了目标图形,又避免了过度拟合,这样的效果对任何难以预料的函数图像具有很强的鲁棒性。
Figure 4. Demonstration of the effects of various fitting examples
图4. 各种拟合示例的效果展示
水平线性拟合、一般线性拟合、类抛物线拟合、不规则图形拟合的适应度衰减曲线如图5所示。可以发现,该研究提出的基于泰勒公式和遗传算法的函数拟合方法可以通过迭代在较短的时间内取得很小的适应度,说明该研究的方案具备很高的时效性。
Figure 5. Fitness decay curves for various fitting examples
图5. 各种拟合示例的适应度衰减曲线
不同的图形,遗传算法的迭代计算时间也会略有差异。遗传算法对难以拟合的图形需要的计算量更大,因而计算时间会更长。在CPU (i7-9750H)、GPU (GTX1660Ti)的硬件支撑下,实现对给定函数图像进行拟合分析的功能时,完成80个个体迭代200次的函数拟合任务的平均运行时间约为2分钟38秒。
依据软件工程学的等价类划分、边界值分析的理论[19],使用多组测试用例进行了对给定函数图像进行拟合分析功能的测试,运行过程均流畅。将适应度下降的比例称为遗传算法的优化增益,计算公式为:
(1)
其中,
表示初代群体的最佳适应度,
表示末代群体的最佳适应度。与以往的研究进行了比较,以往研究简记为GA [20],该研究记为TGA,实验结果如表1所示。
Table 1. Performance comparison results of function fitting
表1. 函数拟合的性能对比结果
方法 |
指标 |
水平线性拟合 |
一般线性拟合 |
类抛物线拟合 |
不规则图形拟合 |
GA |
|
10.36 |
2.93 |
283.18 |
None |
GA |
|
54.13 |
871.54 |
571.71 |
None |
GA |
|
80.86% |
99.66% |
50.47% |
None |
TGA |
|
13.49 |
78.15 |
164.76 |
403.41 |
TGA |
|
1156.16 |
3177.39 |
1590.96 |
2945.15 |
TGA |
|
98.83% |
97.54% |
89.64% |
86.30% |
优化增益在85%以上的标记为绿色,70%~85%的标记为橙色,70%以下的标记为红色。通过表1可以发现,该研究对各种测试样例均有较好的优化增益,说明该研究通过泰勒公式和遗传算法的综合设计实现了较为稳定的进化效果,可以获得较为理想的函数拟合效果。
我们使用均方误差(MSE)对拟合效果进行了进一步分析,实验结果如表2所示。
Table 2. Comparison results of the mean squared error of function fitting
表2. 函数拟合的均方误差对比结果
方法 |
水平线性拟合 |
一般线性拟合 |
类抛物线拟合 |
不规则图形拟合 |
GA |
1.55 |
2.79 |
759.95 |
None |
TGA |
2.21 |
26.42 |
176.29 |
785.68 |
从表中可以看出,相比于GA,该研究的方法在类抛物线函数拟合、不规则图形拟合上取得了令人较为满意的MSE值。尽管TGA在水平线性拟合、一般线性拟合中的MSE值略高于GA,但仍是可接受的值,间接反映了TGA防止过拟合的能力。综合来看,该研究的方法具备更强的鲁棒性,能够更好地适应复杂形状的函数。
5. 局限性与未来展望
目前,本文采用目标表达式图像与待拟合图像之间的面积差作为适应度,该方法对整体形状差异具有良好的度量能力,但对图像平移较为敏感。例如,两个形状相似但位置偏移较大的图像有较大的面积差,然而实际上可能是拟合效果较好的图像。未来的工作中将改进适应度评价机制,综合衡量拟合的形状、图像位置偏差等内容。
此外,由于无需预设函数形式实验的独特设置,本文仅与有限的研究现状进行了实验性能对比。未来团队将查阅更多参考文献,同时自行设计支持向量回归、神经网络等经典方法进行性能对比。
6. 结论
该研究提出了一种基于泰勒公式和遗传算法的函数拟合方法,在没有任何预设的函数形式的情况下较为高效地实现了对函数图像拟合出函数表达式。具体来说,该研究使用泰勒公式将一些复杂的函数近似地表示为简单的多项式函数,从而实现了函数表达式形式的统一;使用遗传算法在迭代过程中搜索最优解,解决了用函数表达式表述函数图像的难题。实验结果表明,该研究提出的方案具备较高的遗传算法优化增益,函数拟合效果较优。
NOTES
*通讯作者。