一序
本文属于极客时间基础课学习笔记系列。常见的人工智能的问题最终会归结为优化的问题求解,在复杂环境与多体交互中做出最优决策。
所以最优化是基础知识。
二 基础定义
最优化理论研究的问题是判定给定目标函数的最大值(最小值)是否存在,并找到令目标函数取到最大值(最小值)的数值。
目标函数(objective function)
目标函数就是实现最小化或最大化的目标函数,也被称为评价函数。大多数最优化问题可以通过是目标函数最小化解决,最大化问题可以通过最小化实现。
理想情况下是,最优化算法可能找到目标函数的全局最小值(global mininum),也可能找到局部最小值(local mininum)。
复诊情况下,如目标函数的参数较多,解空间较大时,在深度学习的场景下,只要目标函数的取值足够小,可以把这个值当做全局最小值使用,作为一个折中方案。
根据约束条件不同,最优化问题可以分为:无约束优化(unconstrained optimization)和约束优化(constrained optimization)两类。
线性规划
属于典型的约束优化,它的目标函数和约束条件都是线性的,通常使用拉格朗日乘数法用于求解条件极值问题的思想:
假设有 二元函数,一个约束条件.为了求解在附加条件下的极值,我们先作出拉格朗日函数
分别对一阶偏导数分别等于=0.求解方程组得到的驻点,是在约束条件限制下的可能的极值点。
从数学上讲:原来函数与约束条件构成的拉格朗日函数与原函数有共同的最优点集和最优的目标函数值,从而保证了最优解的不变性。
梯度下降法
求解无约束优化问题常用的方法是梯度下降法。直观地说,就是沿着目标函数下降最快的方向寻找最小值,
举例:爬山时沿着坡度最陡的路径寻找山顶。在数学上,梯度的方向是目标函数导数的反方向
当输入为向量时,目标函数的图像就变成了高维空间的曲面,这时的梯度就是垂直于曲面等高线并指向高度增加方向的向量,要上目标函数以最快的速度下降,就要让自变量在负梯度的方向移动(数学上表达就是“多远函数沿负梯度方向下降最快”)
另一个重要的是步长,也就是每次更新f(x)时x的变化值。较小的步长会导致收敛过程较慢,步长过大可能会导致一步迈过了最小值点。
以上是针对单个样本的梯度下降法,当可用的训练样本有多个时,样本的使用批处理模式和随机梯度下降法模式。
再NLP学习笔记整理过梯度下降法的目标函数推导过程。
NLP学习笔记21-逻辑回归2:决策边界,目标函数,凸函数,梯度下降
批处理模式梯度下降法(batch processing)
计算出每个样本上目标函数的梯度,再将不同样本的梯度进行求和,求和的结果作为本次更新中目标函数的梯度。
随机梯度下降法(stochastic gradient descent)
在每次更新中只使用一个样本,下一次更新中使用另一样本,在不断迭代更新过程中实现对所有样本的遍历。在训练集规模较大时,随机梯度下降法的性能更好。
梯度下降法使用了目标函数的一阶导数,没用使用目标函数的二阶导数。
牛顿法(Newton's method)
牛顿法是将二阶导数引入优化过程,对二阶近似后的目标函数求导,并让导数为0,得到向量表示的就是下降最快的方向,牛顿法比梯度下降法快收敛速度更快。
线性搜索法(line search)
无论是梯度下降算法还是牛顿法,寻找最小值基本思想是先确定方向,再确定步长,需要使用目标函数的一阶导数和二阶导数。
置信域算法(trust region)
寻找最小值是先确定步长,再确定搜索方向。以步长为参数划定一个区域,再在这个区域内寻找最快下降的方向。
启发式算法(heuristics)
灵感来源于20世纪50年代诞生的仿生学,将生物进化等自然现象的机理应用于现实世界复杂问题的优化之中,并取得了不俗的效果。核心是大自然中的“优胜劣汰”的生存法则,在算法的实现中添加了选择和突变等经验因素。
启发式算法的实例包括
- 模拟生物进化规律的遗传算法(genetic algorithm)
- 模拟统计物理中固体结晶过程的模拟退火算法(simulated annealing)
- 模拟低等运动产生集群智能的蚁群算法(ant colony optimization)
启发式算法其实也是搜索,是依赖经验的碰运气式的搜索,相比之下,基于梯度的这些方法更像是地毯式搜索,两者相结合的话,就是在搜索效率和解的最优性上做些折中。
神经网络算法就是一类启发式算法,模拟的是大脑中神经元竞争和协作的机制。这块NLP也是讲了BP算法。
总结