【问题标题】:Implementing steepest ascent to optimize probabilities实施最速上升以优化概率
【发布时间】:2013-05-28 04:24:26
【问题描述】:

我想重新实现一种涉及概率优化的方法。 我得到的笔记包括梯度 w.r.t 的计算。该参数和注释“推导在[0,1] 中有一个固定点,我们使用最陡上升”。

我搜索了有关实现它的提示,并找到了 thisWikipedia entry on hill climbing。 (两者都没有给出非常具体的建议。)

我认为将它与二进制搜索结合起来并计划以以下方式(伪代码)实现它是一个好主意:

steepest_ascent(param, min_itvl, max_itvl):
  if (max_itvl - min_itvl < 0.01):
    return param
  d = gradient(param)
  if (d == 0):
    return param
  if (d > 0):
    return steepest_ascent((param + max_itvl) / 2, param, max_itvl)
  if (d < 0):
    return steepest_ascent((min_itvl + param) / 2, min_itvl, param)

整个事情是一个迭代过程的一部分,所以它会被这样调用(因为它是一个概率区间是[0,1]):

 param_new = steepest_ascent(param_old, 0, 1)

这里有什么明显可以改进的地方吗?

【问题讨论】:

    标签: performance algorithm optimization machine-learning binary-search


    【解决方案1】:

    您已经实现了bisection method,这与gradient ascent 不同。 (我认为你的函数是凹陷的?)要做梯度上升,请重复更新param = param + alpha * gradient(param) @ refimedy选择的alpha> 0(太小并且计算需要很长时间,太大,它将永远不会融合永远不会融合) ,直到满足某个收敛标准。

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多