如何在自动编码器的背景下使用遗传编程?

人工智能 参考请求 应用 自动编码器 基因编程
2021-10-22 08:14:41

我试图了解如何在自动编码器的上下文中使用遗传编程。目前,我正在阅读2篇论文

  1. 使用遗传算法训练前馈神经网络(经典算法)

  2. 通过 VLC 遗传算法训练深度自编码器

然而,这些论文并没有真正帮助我在这个特定的背景下掌握基因编程的概念,可能是因为我对 GP 不是很熟悉。

我知道自动编码器应该重建他们训练过的特定类的实例。如果另一个馈送实例没有按预期重建,那么它可能被称为异常。

但是如何在自动编码器的环境中使用遗传编程呢?您仍然需要创建一个神经网络,但是,您使用自动编码器而不是前馈网络,但具体如何呢?

我将不胜感激任何教程或解释。

1个回答

您目前的第一篇经典论文使用了遗传算法(GA),而您提到了遗传编程(GP)。简而言之,GA 使用进化过程来进化固定长度的向量,通常是位串,而 GP 进化可变长度的决策树,它可以是计算机程序或数学函数。

自动编码器是自动编码或解码某些东西的东西。例如,噪声图像被解码为原始图像(我知道非常简化),这里的重点是自动,因此,无需任何定义的过程,自动编码器就可以“学习”如何从图像中去除噪声。

通常,自动编码器是使用神经网络 (NN) 制成的。噪声图像作为输入读入,输出是清晰的图像。为了训练 NN,使用了反向传播。为了使反向传播工作,需要一个错误来计算权重变化。或者,可以将权重编码为向量。然后使用 GA 演化一个固定长度的向量来演化 NN 的权重。这就是提到的“经典论文”所做的。

使用 GA 来演化 NN 的权重并不是很有效,因为权重会相互影响,这意味着每次发生交叉时权重都会完全混乱,并且 GA 很容易陷入局部最优。梯度下降可能更有效。

多层网络的结构很重要。在这里,梯度下降仍然用于更新权重,但可以使用 GP 来进化 NN 的结构。

或者,GP 本身可用于在不使用 NN 的情况下进化自编码器。在这里,染色体将包含诸如数学运算或计算机代码之类的节点,这些节点会改变输入以产生输出。