我有函数f从R2到R,它接受2个参数(a和b)并返回一个标量。 我想使用优化器来估计a和b的值,其中f返回的值最大化(或最小化,我可以使用-f)。
我已经从mllib查看了LBFGS优化器,请参阅:
我的问题是我不确定我是否完全理解这个优化器是如何工作的。
我之前在python和R中看到的优化器通常需要以下参数:目标函数的实现,目标函数参数的一组初始值(以及可选:目标函数的附加参数,边界对于应在其中搜索参数的域...)。
通常,优化器使用用户提供的一组初始参数迭代地调用函数,并计算梯度,直到目标函数返回的值收敛(或丢失)。然后返回最佳参数集和目标函数的对应值。非常标准的东西。
在这种情况下,我看到org.apache.spark.mllib.optimization.LBFGS.runLBFGS
期望得到标记数据的RDD和渐变。
data
RDD参数是什么?gradient
是目标函数渐变的实现吗? initialWeights
是什么?它是一个包含要优化的参数的初始值的数组吗?org.apache.spark.mllib.optimization.LBFGS.runLBFGS
优化简单的目标函数?谢谢!