如何使用遗传算法进行实际人工智能?

3
我一直在研究遗传算法。我的目标是实现一个简单的模拟,在此模拟中,玩家(不受外部人类玩家控制)需要躲避障碍物并走向奖励。
我知道遗传算法属于进化算法,对于这种情况来说很好,因为我不需要提供培训数据。它将自己学习。
我阅读的这些介绍谈到了编码为二进制字符串的种群,我不明白种群和改进种群以产生新一代与此问题领域有何关系。
请问有人能解释一下吗?

Adeeb,已经有人指出它们不属于强化学习。遗传算法属于进化算法的范畴。如果你想要使用“强化学习”,可以研究一下神经网络。 - Captain Skyhawk
2个回答

4
简而言之,您将使用遗传算法生成决定AI行为的规则。这些规则的编码和解释方式取决于您想要实现什么目标。
也许您希望遗传算法生成神经网络连接权重,进而处理玩家的行为。在这种情况下,您将把权重编码为二进制字符串。
另一个例子是将二进制字符串解释为决策树
当您编码表示后,遗传算法将生成具有不同基因或二进制字符串的个体。然后根据其表现分配适应度值,GA将希望随着时间的推移找到一个良好的AI(根据您的适应度函数和表示)。 编辑:假设您有以下网络,有三个连接,并选择每个权重使用四位进行编码。那么您的二进制字符串可能会简单地将这三个权重串联起来。

enter image description here


由于编码取决于我想要实现的内容,是否有一种算法或直接的方式来选择编码方式?我只想让玩家收集奖励,我已经使用神经网络来避免与障碍物相撞。 - Adeeb
然后,您将使用二进制字符串编码有关神经网络的信息,例如节点、层和权重。也许您可以从静态拓扑开始,仅在二进制字符串中编码连接权重。 - PureW
我现在明白你的意思了,我的人工神经网络有3层,所以我可以直接添加其他权重吗? - Adeeb
是的,您可以将任何想要优化的内容编码到二进制字符串中。在您的情况下,您可以将所有网络权重相加并放入二进制字符串中。只需记住,更长的字符串需要更多时间才能为遗传算法进行优化。 - PureW

0

请查看丹·阿什洛克的Tartarus论文。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接