我是一名本科生,正在进行关于遗传算法在视频游戏中可能发挥的作用的初步研究。在YouTube上,有视频展示人们如何使用这些算法来教计算机玩家如何玩游戏。
http://www.youtube.com/watch?v=ofVKsxeYa6U&feature=related
我理解遗传算法是一种搜索算法,当你知道希望达到的总体解决方案但不确定具体细节时,这种算法最有效。例如,在旅行商问题中,你知道你想找到最短的路线,或者在考试安排问题中,你希望所有学生都能以最少的“中断”来参加考试。在这些问题中,算法的使用是显而易见的。然而,我在理解遗传算法与“机器学习”概念的关系上遇到了困难。
当遗传算法被用来教计算机如何玩游戏时,它们是如何“学习”的?它们是如何学会玩游戏的?它们试图解决的“优化问题”是什么?
回答:
一种用途是特征选择。
很多时候,特别是在文本问题中——但不仅限于此——你的特征空间非常大,许多机器学习算法(例如KNN)对非信息性特征很敏感,并且随着特征数量的增加,性能会变差。
使用特征选择算法,你可以减少问题的维度——但问题是——如何选择哪些特征是冗余的?
有很多方法可以做到这一点,但其中一种方法是使用遗传算法作为搜索功能,并尝试优化你想要保留的特征子集。
这种用途很常见,甚至在开源机器学习库Weka的AttributeSelection包中作为GeneticSearch实现。