优化凹面功能

时间:2011-12-15 04:27:42

标签: algorithm optimization

我想解决以下问题:
$ min_C \ sum_i \ phi(c_i)$ s.t $ \ sum_i c_i = 1 $和$ c_i \ geq 0 $其中$ i = 1 \ cdots k $和$ C = [c_i] $。
这里$ \ phi(x)$是凹函数。例如$ \ phi(x)= 2x - x ^ 2 $。

鉴于任何有效的初始点,我知道解决方案将是$ [0 \ 0 \ 0 \ cdots 1] $。任何人都可以指导我推导出基于梯度下降的算法来实现这个解决方案。

2 个答案:

答案 0 :(得分:0)

我会查看Hastie,Tibshirani书:统计学习的元素。免费!这听起来非常像最大熵神经网络。约束类似于对数线性模型的约束,表明使用拉格朗日乘数作为解析解。但是你似乎也对softmax(logistic)更普遍的激活函数感兴趣。您可以参考项目追踪回归,该回归估计基于样条的激活函数。

答案 1 :(得分:0)

只是为了确保。这是一个凹函数,你想要最小化(不是最大化)。首先,你有可能陷入局部模仿b。你正在模仿凹函数。 无论如何,其中一种方法是使用光谱梯度投影(SPG)。为什么?因为你有一个可行集(即c_i> = 0 \ sum c_i = 1),你需要在可行集上投影梯度步骤以保持可行(即在集合内部)。如果您熟悉R,那么有一个很好的包可以帮到您。对于SPG,您需要提供成本函数的渐变和投影函数,以将任何图形映射到您的可行集。在您的情况下,计算梯度必须简单。要了解如何编写投影算法(特别是针对您的可行集),请查看:

http://www.athenasc.com/nonlinbook.html

并在simplex上寻找投影(这就是你可行的集合)