我一直在尝试理解http://www.ai-junkie.com/ann/evolved/nnt1.html上的神经网络教程。
我认为我能理解教程的前8页(最后一页),虽然可能不是,因为如果我真的理解了,我应该能理解最后一页,对吗?不幸的是,对我来说,这页解释得不好,因为显然应该“从代码中的注释中轻松理解”。而且,论坛似乎也不工作。
我希望有已经看过或完成过这个教程的人能帮助解释,但如果你没有看过并且想看,那就去吧。基本上,它结合了神经网络和遗传算法来控制小坦克的左右履带,以便它们在清扫地雷时移动。神经网络以最近的地雷位置和坦克的方向(lookat)向量作为输入,输出左右履带的值,用于更新坦克的速度和旋转。在一轮结束时,坦克会被繁殖以产生更好的新一代坦克。
但是…我就是不明白。具体来说,我不明白坦克履带值与坦克拾取地雷的能力之间的确切关系,我也不理解那些不拾取任何地雷的垃圾坦克和那些快速高效清扫地雷的好坦克之间的区别。
显然(如果你运行了演示程序),随着模拟时间的延长,坦克确实是在改进的。但是能有人向我解释(希望用托尼·罗宾逊的话说,用《Beano》读者能理解的语言)到底发生了什么吗?
谢谢!
回答:
根据我对你问题的理解,这是我能给出的最佳答案。如果这不是你所问的,请原谅,但你确实要求最基本的解释。
我不明白坦克履带值与坦克拾取地雷的能力之间的确切关系
坦克的工作方式是它有两个履带 – 左和右。每个履带都有速度。如果两个履带都以全速向前移动,坦克将沿直线向前移动。如果左履带向前移动,右履带以相同速度向后移动,坦克将顺时针旋转。所以这基本上是一个复杂的控制机制,旨在使练习比坦克可以接受“向北移动一格”类型指令的练习更有趣。
神经网络的整个目的是接受输入(当前坦克方向和最近地雷的位置)并生成输出,以正确地引导坦克使用其不稳定的左右履带控制向地雷移动。神经网络学会了如果地雷在其右侧,它需要将左侧设置为“向前”,右侧设置为“向后”,直到它指向地雷。然后它需要将左右两侧都设置为“向前”,这样它实际上会向前移动到地雷处。
我不理解那些不拾取任何地雷的垃圾坦克和那些快速高效清扫地雷的好坦克之间的区别。
垃圾坦克没有正确的NN来正确引导坦克。如果它看到右侧有地雷,它可能会向左旋转远离地雷,因为它不知道如何向右转。或者它可能会转离它已经指向的地雷,而不是向它移动。好的坦克“知道”如何向地雷移动,也就是说,当给出最近地雷的输入时,它们的NN会以某种方式加权,使这些NN倾向于向地雷移动而不是远离它。