gpt4 book ai didi

python - 遗传算法如何在不知道搜索量的情况下优化神经网络的权重?

转载 作者:行者123 更新时间:2023-12-03 14:07:38 25 4
gpt4 key购买 nike

我已经实现了一个遗传算法训练的神经网络,其中包含一个变异算子,如下所示:

def mutation(chromosome, mutation_rate):
for gene in chromosome:
if random.uniform(0.00, 1.00) <= mutation_rate:
gene = random.uniform(-1.00, 1.00)

并且染色体最初是随机初始化的:

def make_chromosome(chromosome_length):
chromosome = []
for _ in range(chromosome_length):
chromosome.append(random.uniform(-1.00, 1.00))
return chromosome

执行交叉时,后代染色体只能在区间 [-1, 1]内有基因。因为亲代染色体也只有那个区间的基因。当后代发生突变时,它同样会将其基因保持在该区间内。

这似乎对某些问题有效,但对其他问题无效。如果神经元的最佳权重在 [-1, 1] 内,那么遗传算法是可行的,但是如果神经元的最佳权重在不同的区间内呢?

例如,如果我使用反向传播训练一个网络,终止条件是分类误差低于 5%,我可以查看网络权重并看到类似 -1.49 的值。 , 1.98 , 2.01等。我的遗传算法永远无法产生这些基因,因为基因是在 [-1, 1] 内初始化的。并且交叉和突变也不能产生超出该范围的基因。

看来我需要更好地定义搜索空间,如下所示:

# search space boundaries
S_MIN = -1.00
S_MAX = 1.00

# in mutation()
gene = random.uniform(S_MIN, S_MAX)

# in make_chromosome()
chromosome.append(random.uniform(S_MIN, S_MAX))

然后我可以根据问题设置搜索空间边界。但是我如何确定搜索空间呢?此信息不是先验已知的,而是通过训练网络找到的。但是如果训练需要知道搜索空间,那么我就处于停滞状态。

我可以将搜索空间设置为任意大(例如,肯定比必要的大),但是算法收敛得很慢。我需要至少知道遗传算法搜索空间的大致数字才能有效。

对于反向传播,搜索空间不是先验已知的,这无关紧要,但对于 GA 来说却是。

最佳答案

这似乎是对使用神经网络进行强化学习的核心挑战的重述。你有一个损失函数,它用数字量化解空间当前局部中可能的 Action 有多好,这样当采取 Action 时,你就会离全局最优(答案)更近/更远。 {IE。梯度 w.r.t.损失函数}

在开始之前,您无法知道答案的确切位置,因此您需要将探索策略定义为算法的一部分。这插入了对可能的解决方案空间的探索,以某些行动在接近损失函数定义的答案方面有多大改进为指导。

一开始的探索是非常积极的,并采取大胆的行动,以便它可以快速探索解决方案空间。然后,随着解决方案空间的区域出现更有希望,探索变得不那么大胆,试图收敛于解决方案。

在您的情况下,探索策略会改变染色体的突变大小、突变率和交叉。突变大小和速率将代表局部内的移动大小,而交叉将代表解空间中的维度转置。

因此,您将在解空间中拥有一个起始位置而不是最大值/最小值,并假设统一缩放和归一化的解空间特征,最好的猜测是单位空间中的任何随机点。

然后,探索策略将选择突变大小、速率和交叉,以便最初积极进行广泛探索。后代的选择会更喜欢那些更接近答案并且具有不那么激进的探索策略的人。因此,后几代往往更接近“答案”,并且采用不那么激进的探索策略,因此往往会趋于收敛。

本文对这些概念进行了更正式的回顾。

https://towardsdatascience.com/reinforcement-learning-demystified-exploration-vs-exploitation-in-multi-armed-bandit-setting-be950d2ee9f6

关于python - 遗传算法如何在不知道搜索量的情况下优化神经网络的权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61215209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com