我试图用梯度下降法在N个参数中找到函数的最小值。不过,我想这样做,而限制参数的绝对值的总和为1(或< = 1,无所谓)。出于这个原因,我使用拉格朗日乘子法,所以如果我的函数是f(x),我将最小化f(x)+ lambda *(g(x)-1),其中g(x)是参数绝对值之和。带约束的梯度下降(拉格朗日乘子)
现在据我所知,当g(x)= 1时,这个函数的渐变只会是0,所以找到一个局部最小值的方法应该找到我的函数的最小值,其中我的条件也满足。问题是这个附加函数是无界的,所以渐变下降只是发现越来越大的lambda表达式(绝对值)越来越大,从不会收敛。
目前我使用Python的CG(scipy)实现,所以我更喜欢那些不需要我自己重写/调整CG代码但是使用现有方法的建议。
我使用的共轭梯度。感谢您的详细解答! – nickb
@克里斯 - 泰勒你的意思是拉格朗日的梯度或拉格朗日的平方的梯度平方?什么是梯度的平方? –
@ chris-taylor您可以为您的答案引入参考/论文/教科书(尤其是第三种解决方案)。我在JS中编写代码,它没有用于约束优化器的库,并且需要尝试简单的梯度下降来测试方法的可行性。 –