如何使用随机梯度下降在约束优化问题中计算拉格朗日乘数?

问题描述

我正在尝试在以下论文中复制随机梯度下降算法https://downloads.hindawi.com/journals/jmath/2021/8892636.pdf

论文第 4 页(算法 1)概述了该算法:

Data: given the initial value w(0)=w0,the number of samples n,the step size α,and the tolerance ε. 
Set k = 0.

Step 1: evaluate the augmented objective function from (16).
Step 2: compute the stochastic gradient from (20).
Step 3: set the random index j.
Step 4: update the vector w(k) from (21).
If ‖w(k+1) − w(k)‖ < ε,then stop the iteration. Otherwise,set k = k + 1,and repeat from Step 1.
Remark:
e tolerance is ε = 10− 6,and the learning rate is α = 0.001

我在第 1 步中挣扎,评估增强的目标函数 (16) 并试图了解拉格朗日乘数是如何导出的。功能如下:

f(w) = 0.5wTEw + l1(R - wTu) + l2(1 - wT1) + l3

where:
wT = Transpose of the weights vector (initial value set at (0.3,0.3,0.4) in the paper)
E = Covariance matrix (set equal to the example in the paper)
w = weights vector
l1 = Lagrange multiplier one
R = required rate of return (set equal to the paper example at 0.065)
u = vector of expected returns (set equal to the paper at (0.1073,0.0737,0.0627)
l2 = Lagrange multiplier two
l3 = Lagrange multiplier three which the paper states equals 0

除了拉格朗日乘数 1 和 2 之外,在每次迭代中,该方程中的所有变量都是已知的,我无法理解这些变量是如何导出的。拉格朗日 3 我理解为 0。

我不相信初始估计是做出的,因为我看不到 l1 和 l2 调整的阶段,即根据梯度调整权重,这让我认为这些值来自目标函数以某种方式勾勒轮廓,然后插入第 2 步计算梯度。

在该示例中,论文概述了它确实说明了基于最佳解决方案最终推导出的 l1 和 l2 值。

仅供参考,我正在用 Rust 编写算法。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)