实际上这些是3个问题:
如果我知道的话,我应该使用哪种优化算法来优化多层感知器的权重...
1)只有错误函数的值? (黑箱)
2)渐变? (一阶导数)
3)渐变和粗麻布? (二阶导数)我听说CMA-ES应该可以很好地用于1)和BFGS用于2)但我想知道是否有任何替代方案,我不知道要采用3)的算法。
答案 0 :(得分:2)
好的,所以这并没有真正回答你最初提出的问题,但它确实为你在评论中提到的问题提供了解决方案。
通常不通过改变错误度量来处理诸如处理连续动作空间之类的问题,而是通过改变整个网络的体系结构来处理。这使您可以继续使用相同的信息丰富的错误信息,同时仍然可以解决您想要解决的问题。
在question的解决方案中讨论了可以实现此目的的一些可能的体系结构更改。在我看来,我建议使用一种改进的Q学习技术,其中状态和动作空间都由自组织地图表示,这在上面链接中提到的论文中进行了讨论。
我希望这会有所帮助。
答案 1 :(得分:0)
我最终解决了这个问题:有一些有效的算法可以优化强化学习中的神经网络(具有固定拓扑),例如: G。 CMA-ES(CMA-NeuroES)或CoSyNE。
监督学习的最佳优化算法似乎是Levenberg-Marquardt(LMA)。这是一种专门针对最小二乘问题设计的算法。当有许多连接和权重时,LMA不能很好地工作,因为所需的空间很大。在这种情况下,我使用的是Conjugate Gradient(CG)。
粗麻布矩阵不会加速优化。近似二阶导数的算法更快,更有效(BFGS,CG,LMA)。
编辑:对于大规模学习问题,通常随机梯度下降(SGD)优于所有其他算法。