优化算法迭代对比 / 22
真实三维二维目标函数优化实验台
打开方式
双击 index.html 即可。整个模型、WebGL 引擎、字体和图面内嵌。默认场景是一只旋转的凸二次“碗”;三种方法从同一点出发,使用界面中各自列出的学习率。页面下方同时提供等高线和收敛报告。
先完成一次比较
1. 观察三维图中的“共同起点”与“解析最小点”。拖动场景改变视角,或者用方向、缩放和恢复视角按钮。高度是原始 f 的线性归一化,底部有明确标记。
2. 按“起点”,用“+1 步”检查首步,然后回放或直接到终点。回放展示已经按真实算法求得的序列,步数滑块、三维路径、等高线和收敛图来自同一组点。
3. 修改一个方法的学习率,观察目标值、梯度范数、轨迹与停止原因。三种算法可以分别开关。结果不能脱离学习率、初始点及停止条件比较。
4. 点击二维等高线区域设置新起点,或精确输入 x、y。选择“步子太大时”可以看见越出观察窗与真正收敛的区别。
5. 导出轨迹 CSV、二维报告或三维 PNG,保存 JSON 留下全部条件。
三个目标函数
旋转凸二次:f=0.5(a u²+b v²),(u,v) 是 (x,y) 旋转后的坐标,a、b 为正,解析最小点为 (0,0)。旋转角改变谷地朝向;a、b 的差异改变条件数和路径表现。
Rosenbrock:f=(a−x)²+b(y−x²)²,解析最小点为 (a,a²)。狭长弯谷会让学习率、动量和有限迭代次数的影响更明显。
Rastrigin:f=x²+y²+A[2−cos(2πx)−cos(2πy)],A≥0,解析全局最小点为 (0,0),存在许多局部极小。这里不宣称算法必达全局最优。
目标函数及其梯度都在页面内部明确计算。没有任意 JavaScript 表达式执行入口。
真实算法
梯度下降:x_next=x−ηg。
经典动量:v_next=βv+g,x_next=x−ηv_next。
Adam:对梯度及梯度平方计算一阶/二阶指数矩,执行随步数变化的偏差修正,再以 sqrt(v_hat)+10⁻⁸ 缩放更新。这里使用完整确定性梯度;β 控制动量和 Adam 的 β1,β2 独立可调。
每种算法有自己的学习率。总步数最高 3000。停止原因分别报告梯度达到容差、浮点坐标不再变化、数值溢出、离开观察窗、达到步数上限。离开观察窗仅是防止无界迭代的保护,不是约束优化。CSV 保留越界尝试的原始坐标。
高度与图面的含义
默认显示“原始 f 归一化”,按所选观察窗采样的最大 f 缩放高度。另可选 log(1+f) 归一化,让极高区域与狭谷同时可读。高度模式及垂直倍率显示在场景上;这些设置不会进入优化更新。
三维曲面用有限网格采样,线宽与标记是可读性符号,不用于读数。精确数值以方法卡片、二维报告和 CSV 为准。二维收敛图使用 log10(f);绘图底限为 10⁻¹²,CSV 仍保留原始 f。解析最小点的标记与算法实际终点明确分开。
默认结果
函数为旋转 32° 的 a=1、b=18 凸二次,起点 (2.4,1.8),容差 10⁻⁵;GD、动量、Adam 的学习率依次为 0.085、0.04、0.13。
全部运行结束时:GD 在第 142 步达到梯度容差,f≈4.93926105×10⁻¹¹;动量第 232 步,f≈1.80307291×10⁻¹¹;Adam 第 233 步,f≈1.23534262×10⁻¹¹。它们是该组参数的实际结果,不是一般效率排名。默认场景显示第 70 步,便于看清路径差异。
保存与操作边界
完整 JSON 保存地形、算法、起点、步数、回放位置和显示模式;恢复时重新计算。撤销/重做最多 32 次;拖动游标以一次手势合并历史;取消、失焦或隐藏时保留当前值并结算,快照不会跨越后续编辑。回放可暂停;页面隐藏时暂停。JSON 导入有字段、数值范围与文件容量检查,较早的文件读取不会覆盖较新的输入。
浏览器暂存失败不影响手动保存。WebGL 不可用时,二维计算和导出仍可使用。页面离开会释放渲染资源,恢复页面时重新建立。
验证与来源
review 中保留默认、Rastrigin 编辑状态和越界实例的真实输出、CSV 和状态。8 项模型核对包含解析梯度对独立中心差分、首步手算、Adam 偏差修正、β=0 等价性、最小点立即停止、越界保留与最大文档回读。
三维图片由最终 HTML 的实际几何、矩阵、材质和着色器以原生 EGL 渲染,并合成同一 Artwork 的注释;二维图由同一 Canvas 绘制。它们不是网页截图,未做 DOM/CSS、实际指针、冷启、下载对话框或设备性能验收。
SciPy Rosenbrock:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.rosen.html
SciPy 梯度:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.rosen_der.html
Adam 原论文:https://arxiv.org/abs/1412.6980
字体子集与 SIL OFL 1.1 许可内嵌。三维引擎为随文件内嵌的 Atelier3D 1.0.1。