机器学习的目标是给出一个模型(一般是映射函数),然后定义对这个模型好坏的评价函数(目标函数),求解目标函数的极大值或者极小值,以确定模型的参数,从而得到我们想要的模型。
在这三个关键步骤(定义模型,目标函数,求解极值)中,前两个是机器学习要研究的问题,建立数学模型。第三个问题是纯数学问题,即最优化方法。
机器学习要求解的数学模型
1.有监督学习:目标函数的极值
对于有监督学习,我们要找到一个最佳的映射函数f(x),使得对训练样本的损失函数最小化。
N为训练样本数,L是对单个样本的损失函数,w是要求解的模型参数,是映射函数的参数, 为样本的特征向量,
为样本的标签值。
2.有监督学习:最大似然估计
或是找到一个最优的概率密度函数p(x),使得对训练样本的对数似然函数极大化(最大似然估计):
是要求解的模型参数,是概率密度函数的参数。
3.无监督学习
以聚类算法为例,算法求解每个类的样本离类中心的距离之和最小化:
在这里k为类型数,x为样本向量, 为类中心向量,
为第i个类的样本集合。
4.强化学习
找到一个最优的策略,即状态s到动作a的映射函数(确定性策略,对于非确定性策略,是执行每个动作的概率):
使得任意给定一个状态,执行这个策略函数所确定的动作a之后,得到的累计回报最大化:
这里使用的是状态价值函数。
最优化算法的分类
好的优化算法需要满足:能正确的找到各种情况下的极值点,并且速度快。优化算法分成两种类型:公式解,数值优化。前者给出一个最优化问题精确的公式解,也称为解析解,一般是理论结果。后者是在要给出极值点的精确计算公式非常困难的情况下,用数值计算方法近似求解得到最优点。
下图给出了这些算法的分类与它们之间的关系:
公式解算法
费马定理
对于一个可导函数,寻找其极值的统一做法是寻找导数为0的点,即费马定理。
对于多元函数,则是梯度为0:
导数为0只是函数取得极值的必要条件而不是充分条件,它只是疑似极值点。是不是极值,是极大值还是极小值,还需要看更高阶导数。
对于一元函数,假设x是驻点:
1.如果 (x)>0,则在该点处去极小值
2.如果 (x)<0,则在该点处去极大值
3.如果 (x)=0,还要看更高阶导数
对于多元函数,假设x是驻点:
1.如果Hessian矩阵所有特征值均大于0,矩阵正定,函数在该点有极小值
2.如果Hessian矩阵所有特征值均小于0,矩阵负定,函数在该点有极大值
3.如果Hessian矩阵所有特征值均等于0,矩阵不定,则不是极值点
注意:
1.鞍点:在导数为0的点,函数可能不取极值
2.局部极值:一个驻点是极值点,但不是全局极值
如果我们对最优化问题加以限定,可以有效的避免这两种问题。典型的是凸优化,它要求优化变量的可行域是凸集,目标函数是凸函数。
拉格朗日乘数法
对于带等式约束的极值问题,经典的解决方案是拉格朗日乘数法。
构造拉格朗日乘子函数:
在最优点处对x和乘子变量