在1维攀登中,我尝试了两个邻居 - 左边的一个小三角形和我当前点的右边一个,然后保持一个给出更高的目标函数值。如何将其扩展到n维空间?如何定义n维空间的邻居?我是否必须尝试2 ^ n个邻居(应用于每个维度的增量)?
答案 0 :(得分:1)
您不需要比较每对邻居,您需要计算一组邻居,例如在半径为delta的圆上(球体/超球面更高的尺寸),然后将具有最高值的圆圈带到"爬上"。在任何情况下,您都将离散当前解决方案的邻域并计算每个邻居的得分函数。当您可以区分您的功能时,基于渐变上升/下降的算法可以解决您的问题: 1)计算梯度(最陡上升方向) 2)向渐变方向迈出一小步 3)如果解决方案没有改变就停止
这些算法的一个常见问题是,您通常只能找到局部最大值/最小值。您可以在此处找到关于梯度下降/上升算法的精彩概述:http://sebastianruder.com/optimizing-gradient-descent/
答案 1 :(得分:0)
在http://www.caam.rice.edu/tech_reports/1990/TR90-07.pdf描述的Torczon单纯形法,只需要O(n)个邻居而不是O(2 ^ n)个邻居的多维搜索算法的一个例子。我选择这个比较广为人知的Nelder-Mead方法,因为Torczon单纯形法有一个收敛证明(在一些合理条件下收敛到局部最优)。
答案 2 :(得分:0)
如果您使用的是IEEE-754浮点数,那么显而易见的答案就像(2^52*(log_2(delta)+1023))^(n-1)+1
delta>=2^(-1022)
(或多或少取决于您的搜索空间......),因为这是唯一的方法您可以确定没有更多邻近的解决方案,距离为delta
。
即使你假设你在一个给定的delta值距离内取一个随机固定大小的样本,让我们说delta = .1,你仍然会遇到这样一个问题:如果距离局部最优点的距离是.0001的概率仅在1维中找到一个改进将小于.0001/.1/2=0.05%
所以当你接近局部最优(你不知道值...)时,你需要采取越来越多的随机样本。
显然,爬山不适用于具有无限度的实数空间或理论图形空间。您应该使用全局搜索算法。