【问题标题】:Which optimization algorithm should I use to optimize the weights of a multilayer perceptron?我应该使用哪种优化算法来优化多层感知器的权重?
【发布时间】:2011-11-05 04:49:48
【问题描述】:

其实这是3个问题:

如果我知道的话,我应该使用哪种优化算法来优化多层感知器的权重...

1) 只有误差函数的值? (黑盒)

2) 渐变? (一阶导数)

3) 梯度和粗麻布? (二阶导数)

我听说 CMA-ES 对于 1) 和 BFGS 对于 2) 应该工作得很好,但我想知道是否有任何替代方案,我不知道对于 3) 采用哪种算法。

【问题讨论】:

  • 您有什么特别的问题想要解决吗?我承认我想不出任何只使用误差函数的场景,因为大多数 ANN 使用的函数很容易计算导数。是什么阻止您使用反向传播?
  • 我有两类不同的问题要解决:1) 监督学习任务(脑机接口数据)2) 一些强化学习任务... a) 连续状态和离散动作空间。这里我有一个错误函数,可以应用反向传播。 b) 连续的状态和动作空间。我认为在这种情况下我不会有直接错误,因为 ANN 的输入是状态,输出是动作,我真的不知道哪个动作是最优的。但我有类似适应功能(返回)的东西。

标签: algorithm optimization neural-network


【解决方案1】:

好的,所以这并不能真正回答您最初提出的问题,但它确实为您在 cmets 中提到的问题提供了解决方案。

处理连续动作空间之类的问题通常不是通过更改误差度量来解决,而是通过更改整个网络的架构来解决。这使您可以在解决您想要解决的问题的同时继续使用相同的信息丰富的错误信息。

question 的解决方案中讨论了一些可能实现此目的的架构更改。在我看来,我建议使用改进的 Q-learning 技术,其中状态和动作空间都由自组织图表示,这在上述链接中提到的一篇论文中进行了讨论。

我希望这会有所帮助。

【讨论】:

  • 感谢您的回答,但我不想更改拓扑。实际上,我对 ANN 做了一个小的修改,我想用 RL 问题对其进行测试。如果您有一个连续的状态空间和一个离散的动作空间,您将创建一个具有输入 (s, a) 和输出 Q(s, a) 的 ANN,因此您可以生成一个策略(选择最大化 Q (s, a)) 通过计算所有 a 的 Q(s,a)。对于连续 a 这不起作用,因为您必须检查无限数量的动作。所以我会直接用一个剧集的回归作为适应度来近似 pi(s,a)。
  • 剩下的字符太少了... :) 我认为这个链接很棒:homepages.cwi.nl/~hasselt/papers/RL_in_Continuous_Spaces/…。尤其是“具有进化策略的策略搜索”部分。
【解决方案2】:

我终于解决了这个问题:有一些有效的算法可以优化强化学习中的神经网络(具有固定拓扑),例如。 G。 CMA-ES (CMA-NeuroES) 或CoSyNE

监督学习的最佳优化算法似乎是 Levenberg-Marquardt (LMA)。这是一种专门为最小二乘问题设计的算法。当有很多连接和权重时,LMA 不能很好地工作,因为所需的空间很大。在这种情况下,我使用的是共轭梯度 (CG)。

hessian 矩阵不会加速优化。近似二阶导数的算法更快、更高效(BFGS、CG、LMA)。

编辑:对于大规模学习问题,随机梯度下降 (SGD) 通常优于所有其他算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2016-08-04
    相关资源
    最近更新 更多