我想用一个参数最大化一个函数.
所以我运行渐变下降(或者,实际上升):我从一个初始参数开始并继续添加渐变(一些学习速率因子变得越来越小),重新评估给定新参数的渐变,依此类推,直到收敛.
但是有一个问题:我的参数必须保持正值,因此它不应该变为<= 0,因为我的函数将是未定义的.我的渐变搜索有时会进入这样的区域(当它是正数时,渐变告诉它要低一些,并且它会超过).
更糟糕的是,在这一点上的渐变可能是负面的,从而使搜索更加负面的参数值.(原因是目标函数包含日志,但梯度不包含.)
什么是处理这种约束优化问题的好(简单)算法?我希望只是对我的算法进行简单的修复.或者可能忽略渐变并进行某种线搜索以获得最佳参数?
我需要计算(稀疏)矩阵的最大特征值.我实现了幂迭代方法,但收敛速度太慢,所以我想使用一个包.有人有推荐吗?
什么是最好的C++特征值计算包?优选地,小的并且易于编译.