神经网络如何使用遗传算法和反向传播来玩游戏?
How do neural networks use genetic algorithms and backpropagation to play games?
我碰到了this interesting video on YouTube on genetic algorithms。
正如您在视频中看到的,机器人学会了战斗。
现在,我研究神经网络有一段时间了,我想开始学习遗传算法。这不知何故结合了两者。
你如何结合遗传算法和神经网络来做到这一点?
还有,在这种情况下,您如何知道用于反向传播和更新权重以及训练网络的错误?还有你认为视频中的程序是如何计算它的适应度函数的?我猜想视频中的程序肯定发生了突变,但是交叉呢?
谢谢!
How do you combine genetic algorithms and neural networks to do this?
神经网络可以结合遗传算法和 back-propagation 算法进行训练,或者您可以使用反向传播算法训练一批网络,然后使用遗传算法选择您认为最有希望的一批形式。
And also how does one know the error in this case which you use to
back-propagate and update your weights and train the net?
误差计算可能因算法而异,但一般来说,如果您使用监督学习方法,则必须将误差计算与所需的学习目标相距一定距离。
我建议看看最先进的(当前)遗传算法之一是 NEAT。
好吧,这是一个强化学习问题,其中神经网络的输出是键盘上的键,为了最大化适应度函数给出的分数而按下.使用遗传算法 (GA) 并从初始神经网络架构开始,GA 倾向于找到一个更好的架构,以迭代方式最大化适应度函数。 GA 通过繁殖它们的种群来生成不同的架构,然后将它们用于任务(玩游戏),选择产生更高分数的架构(使用适应度函数)。下次 GA 使用最佳候选架构(GA 术语中的 parents)用于育种,并再次重复生成新种群(架构)的过程。当然,育种也包括突变。
此过程一直持续到满足终止条件(适应度函数的特定值或生成多个种群)。您可能会注意到,遗传算法的计算量非常大,因此会因 large-scale 问题而被放弃。自然地,当生成架构时,它会使用反向传播或任何其他适用的优化技术(包括 GA)进行训练。
例如,this video shows how genetic algorithms help selecting the "best" architecture to play Mario, and it does it very well! However, note that if GA selects an architecture to play Mario very well in one level, that architecture will not be necessarily doing well in next levels as shown in another video。在我看来,这是因为遗传算法和反向传播都倾向于找到局部最小值。所以还有很长的路要走...
来源
您可以使用通用算法作为优化神经网络的另一种方法。您可以使用遗传算法优化权重,而不是使用默认算法和迄今为止最常用的反向传播算法。
请看这个paper。我们在那里提出了一种称为神经进化的算法,它是神经网络与称为差异进化的遗传算法的组合。它用于使类人机器人检测人类情绪并据此进行交互。关于这个问题也有广泛的最新技术。希望对你有帮助。
我碰到了this interesting video on YouTube on genetic algorithms。
正如您在视频中看到的,机器人学会了战斗。
现在,我研究神经网络有一段时间了,我想开始学习遗传算法。这不知何故结合了两者。
你如何结合遗传算法和神经网络来做到这一点?
还有,在这种情况下,您如何知道用于反向传播和更新权重以及训练网络的错误?还有你认为视频中的程序是如何计算它的适应度函数的?我猜想视频中的程序肯定发生了突变,但是交叉呢?
谢谢!
How do you combine genetic algorithms and neural networks to do this?
神经网络可以结合遗传算法和 back-propagation 算法进行训练,或者您可以使用反向传播算法训练一批网络,然后使用遗传算法选择您认为最有希望的一批形式。
And also how does one know the error in this case which you use to back-propagate and update your weights and train the net?
误差计算可能因算法而异,但一般来说,如果您使用监督学习方法,则必须将误差计算与所需的学习目标相距一定距离。
我建议看看最先进的(当前)遗传算法之一是 NEAT。
好吧,这是一个强化学习问题,其中神经网络的输出是键盘上的键,为了最大化适应度函数给出的分数而按下.使用遗传算法 (GA) 并从初始神经网络架构开始,GA 倾向于找到一个更好的架构,以迭代方式最大化适应度函数。 GA 通过繁殖它们的种群来生成不同的架构,然后将它们用于任务(玩游戏),选择产生更高分数的架构(使用适应度函数)。下次 GA 使用最佳候选架构(GA 术语中的 parents)用于育种,并再次重复生成新种群(架构)的过程。当然,育种也包括突变。
此过程一直持续到满足终止条件(适应度函数的特定值或生成多个种群)。您可能会注意到,遗传算法的计算量非常大,因此会因 large-scale 问题而被放弃。自然地,当生成架构时,它会使用反向传播或任何其他适用的优化技术(包括 GA)进行训练。
例如,this video shows how genetic algorithms help selecting the "best" architecture to play Mario, and it does it very well! However, note that if GA selects an architecture to play Mario very well in one level, that architecture will not be necessarily doing well in next levels as shown in another video。在我看来,这是因为遗传算法和反向传播都倾向于找到局部最小值。所以还有很长的路要走...
来源
您可以使用通用算法作为优化神经网络的另一种方法。您可以使用遗传算法优化权重,而不是使用默认算法和迄今为止最常用的反向传播算法。
请看这个paper。我们在那里提出了一种称为神经进化的算法,它是神经网络与称为差异进化的遗传算法的组合。它用于使类人机器人检测人类情绪并据此进行交互。关于这个问题也有广泛的最新技术。希望对你有帮助。