遗传编程 (Genetic Programming, GP) 是一种模拟自然选择过程来自动创建计算机程序或数学表达式的进化计算技术。程序通常以树状结构表示,通过选择、交叉和变异算子进行进化。我对 GP 的研究主要集中在基于语法的 GP、神经架构搜索、符号回归以及更广泛的进化机器学习领域。

遗传编程基础

用于函数学习和符号回归的 GP

遗传编程可以自动发现描述数据集的数学表达式(程序),这一任务被称为符号回归。与其他回归方法不同,GP 生成的是可解释的表达式,可以由领域专家进行分析和验证。

针对函数学习 GP 的研究探讨了函数集、终结符集以及进化算子的选择如何影响 GP 从噪声数据中发现紧凑且精确表达式的能力。研究课题包括膨胀 (bloat) 控制、节俭压力以及表达式复杂度与泛化性能之间的关系。

GP 表示法与算子
研究遗传编程的不同表示法,包括树状、线性和基于图的表示。研究在减少膨胀和提高搜索效率的同时,能够保持程序语义的变异算子(交叉和变异)。开发了基于语义的算子,这些算子尊重程序的函数行为,而不仅仅是在语法结构上进行操作。

基于语法的遗传编程

语法进化 (Grammatical Evolution)
语法进化 (GE) 是 GP 的一种变体,它使用形式语法(通常采用 BNF 格式)来指定待进化程序的语言。GE 通过语法引导的映射过程,将二进制或整数串基因型关联到程序表现型。这种方法可以将搜索空间限制在语法有效的程序内,并支持使用任何编程语言进行程序进化。
用于深层神经网络的基于语法的 GP
将基于语法的遗传编程应用于深度神经网络架构的自动设计。形式语法定义了有效网络架构的空间,而遗传编程则在该空间中探索,寻找针对特定任务(如图像分割和分类)优化的架构。

用于神经架构搜索的 GP

利用 GP 设计卷积神经网络
开发基于语法的 GP 方法来自动设计卷积神经网络架构。语法编码了设计选择,如层类型、滤波器数量、卷积核大小和连接模式。进化搜索能够找到在保持计算效率的同时实现高准确率的架构。
多任务架构设计中的 GP
研究在进化方法中使用 GP 来设计用于异构多任务学习的多网络架构。GP 提供了一种灵活的表征方式,用于指定各项任务如何共享神经网络组件,从而使进化搜索能够发现高效的参数共享方案。

进化机器学习 (EML)

用于无监督学习的 EML
为《进化机器学习手册》(Handbook of Evolutionary Machine Learning) 撰写章节:专门介绍用于无监督学习任务的进化方法,涵盖聚类、降维和生成建模的进化途径。该章节回顾了当前技术水平并指出了进化无监督学习中尚未解决的研究问题。
其他基于搜索的优化中的进化途径
为 IEEE CIS 编写的《计算智能导论》(Introduction to Computational Intelligence) 撰写章节:涵盖了其他基于搜索的优化方法,包括遗传编程、模拟退火、蚁群算法和粒子群算法,重点探讨了它们与进化计算的联系。

精选论文