优化理论

所有优化的问题包含两个步骤

  1. 制定优化的目标, 对优化问题而言, 一般是一个目标函数, 当目标函数是求最大值的时候, 称为效用/收益/奖励函数. 当目标函数是求极小值时, 目标函数通常称为损失函数.

  2. 逐步执行去达成这个目标 (迭代或者逐步逼近)

举例来说, 有一个目标函数

\[f(x) = 2x^2 + 8x + 11\]

现在要求使得 \(f(x)\) 最小, 那么 x 取值是多少? 用公式可以把该优化问题描述为

\[\min_{x \in R} f(x) = 2x^2 + 8x + 11\]

上面公式表示, x 的取值方位是所有实数, 问题的目标是找到合适的 x, 使得目标函数能够取得最小值. f(x) 取得最小值时的 x 是该问题的最优值, 可以表示为

\[x^* = \arg \min_{x \in R} f(x)\]

要求解该优化问题, 需要保证几个前提 #. 优化问题的解存在, 由数学理论可以知道, 该目标函数是一个开口向上的二次函数, 所以其最小值必然存在, 该问题有解.

由数学知识可以立即得出该问题的最优解 \(x^* = -2\) . 但是对更一般的问题, 无法或者不能直接得出最优解, 此时就需要用迭代的方法去求解. 迭代的过程可以描述为 #. 给定一个初始的解 \(x_0\) #. 从初始值出发,算法一步一步地迭代,每次都在解空间中移动一小步。这样就形成了一系列迭代的变量值:\(x_1, x_2, \cdots, x_k, x_{k+1}, \cdots\), 最终逐渐接近真实的解 \(x^*\)

迭代的过程中需要解决一个问题, 就是新的解 \(x_{k+1}\) 要比旧的 \(x_k\) 要好, 数学上可以描述为

\[f(x_{k+1}) < f(x_k)\]

进而需要解决两个问题

  1. \(x_{k+1}\)\(x_{k}\) 的什么方向 (梯度下降方向)

  2. \(x_{k+1}\) 距离 \(x_k\) 多远 (迭代步长)

参考资料