目标函数
在机器学习中,把需要最大化或者最小化的函数称为目标函数。而在其中一大部分都是最小化,在最小化的优化中,目标函数又被称为代价函数(cost function)或者损失函数(loss function)。
导数和偏导数
假设有一个函数 y=f(x) ,导数 f′(x) 代表了 f(x) 在点x上的斜率。求导对于机器学习中优化问题的有很重要的意义。例如在梯度下降中,优化的方向就是导数为负的方向。
通常,导数为零的点就是我们的优化目的地,不管是全局的优化还是局部的优化。
当一个函数的变量有很多的时候,我们如果只想知道在点x处只有一个变量 xi 变化时函数的变化,此时,就需要用到偏导数的概念了。
Jacobian矩阵
有时我们需要计算输入和输出都为向量的函数的所有偏导数,包含这样的偏导数的矩阵被称为Jacobian矩阵。如果我们有一个函数
f
,那么
二阶导数和Hessian矩阵
二阶导数
假设在时间-路程的关系中,速度这个概念就是导数的概念,它表示了路程随之间的变化率的关系,那么加速度就是二阶导数的概念,二阶导数代表着导数的导数,即速度的变化率。
Hessian矩阵
当我们的函数具有多维输入时,我们可以将这些导数合并为一个矩阵,称为Hessian矩阵。其定义为: H(f)(x)i,j=∂2∂xi∂xjf(x)
由于有:
∂2∂xi∂xjf(x)=∂2∂xj∂xif(x)
所以有 Hi,j=Hj,i ,由此可以知道Hessian矩阵是个对称矩阵。
一阶优化和二阶优化
在梯度下降中,使用的是梯度,也就是一阶导数,而在牛顿法中,使用的是Hessian矩阵,是二阶导数。
约束优化
有时候,在x的所有可能值下最大化或者最小化一个目标函数不是我们所希望的。我们有时会有一些限定条件,在这些限定条件下去寻找最优化的目标,这种行为称为约束优化