摘要
集成(ensemble)由多个学习器组成,能达到比单一学习器更好的泛化性能。遗传编程(genetic programming, GP)已经被应用于利用诸如bagging和boosting的不同策略来构建集成。然而,没有基于GP的集成方法专注于处理图像分类,这一在计算机视觉和机器学习中具有挑战性的任务。本文提出了一种使用GP的自动化集成学习框架(EGP)进行图像分类。新的方法将特征学习(feature learning)、分类函数选择(classification function selection)、分类器训练(classifier training)集成到单个程序树中。为了实现这一点,在EGP中开发了一个新的程序结构、一个新的函数集和一个新的终端集。
EGP的性能在九种不同难度的图像分类数据集上进行检验,并与大量常用方法(包括最近发布的方法)进行比较。结果表明,EGP比大多数竞争方法取得了更好的性能。进一步分析表明,EGP演化出良好的集成,能够同时平衡多样性和准确性。据我们所知,这项研究是使用GP自动生成集成用于图像分类的第一项工作。
相关概念
ensemble learning 集成学习
集成学习是一种机器学习范式,旨在通过构建并组合多个学习器来提高预测准确性。它的核心思想是通过结合多个模型来减少总体的误差,理论上,这些模型的组合可以比任何单个模型表现得更好。集成学习可以用于分类、回归和其他任务,适用于多种算法,包括决策树、神经网络、支持向量机等。有Bagging,Boosting和Stacking三种方法。
- Bagging:该方法通过对原始数据集进行多次重采样,构建多个训练子集,然后分别训练多个基学习器。最终的预测结果是通过对所有基学习器的预测结果进行平均或多数投票得到的。典型的算法有随机森林(Random Forest)。
- Boosting:按顺序训练基学习器,每个基学习器都尝试纠正前一个基学习器的错误。每一步的权重调整依赖于前一步的错误率,最终的模型是所有基学习器结果的加权和。著名的算法包括AdaBoost和梯度提升机(Gradient Boosting Machine, GBM)。
- Stacking:多个不同的基学习器被训练以解决相同的问题,然后一个新的学习模型(元学习器或二级学习器)被训练来综合这些基学习器的不同预测,以获得更准确的最终预测。
Genetic Programming 遗传编程
遗传算法(genetic algorithm)是计算数学中用于解决最优化的搜索算法,是进化算法(evolutionary algorithm)的一种,借鉴了生物学中的遗传、突变、自然选择及杂交等现象。对于一个最优化问题,一定数量的候选解可抽象表示为染色体,使种群向更好的解进化。在个体遗传信息的表示方式上,解可以用二进制字符串、实数编码、排列编码等方式表示,在每一代中评价整个种群的适应度,从当前种群中基于适应度随机选择多个个体,通过自然选择和突变产生新的下一代种群。
遗传算法存在如下问题:
- 不能描述层次化问题;
- 不能描述计算机程序;
- 线性字符串缺乏动态可变性。
GP采用遗传算法的基本思想,并使用基于树的表示,其中每个个体都由一棵树表示。GP树由一个根节点(root node)、多个内部节点(internal nodes)和叶节点(leaf nodes)组成。叶节点是通过从一个预定义的终端集(terminal set)中选择终端来构造的。终端集通常包含变量/特征以及常量参数,其中变量/特征与问题相关。根节点和内部节点是通过预定义函数集中选择函数来构建的,该预定义函数集中通常有许多函数,包括arithmetic functions和domain-dependent functions。
在标准的GP中,函数和终端只处理一种数据类型。为处理多种数据类型,strongly typed GP(STGP)被提出,在STGP中,需要指定每个函数的输入类型和输出类型,并且需要指定每个终端的输出类型。要构造GP树,节点的输入类型需与其子节点的输出类型相同。在此限制下,STGP非常适合处理多任务,其中每个人物可以使用不同的功能或终端。由于图像任务的复杂性,STGP通常用于图像分析,包括特征提取和图像分类。为了使用单个GP树处理多个任务,有必要开发一种程序结构。例如,GP的程序结构中可以具有输入层、过滤层、池化层和串联层,每层都有自己的功能,允许GP自动选择它们来构建GP树。
本论文对遗传编程的概念介绍基本如上,但还应补充一些遗传编程的基本概念和基本操作。
遗传编程的基本概念
1. 函数集(function set)包含
个函数:
,其中函数
可以是算术函数或依赖于特定领域的函数。
2. 终端集(terminal set)包含
个终端:
,终止符可以是变量或常量。
结合上文提到的GP树的结构,可以得到一棵GP树表示的函数如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6e93a4076391b0b7e87bcef7442de0d0.png)
3. 适应度(Fitness):个体适应度是衡量个体表达式逼近最优解的优劣程度。
遗传编程的基本操作
1. 初始种群生成
2. 遗传现象:复制、交叉、变异
由于我需要学习的主要是GP,EGP的学习暂且搁在一边吧。