从本质上讲,人工智能的目标就是最优化,在复杂环境中与多体交互中做出最优决策。
几乎所有的人工智能问题都会归结为一个优化问题
目标函数(评价函数):要实现最大化/最小化的函数
最优化理论研究的问题是:
大多数最优化问题都可以通过使目标函数最小化解决
理想情况下,最优化算法的目标是 找到全局最小值
当目标函数的输入参数较多、解空间较大时,绝大多数的实用算法都不能满足全局搜索对计算复杂度的要求,因而只能求出局部极小值。
在AI领域,只要目标函数取指足够小,就可以把这个值当做全局最小值实用,作为对 性能和复杂度的折衷
根据约束条件的不同,最优化问题可以分为无约束优化(unconstrained optimization)和约束优化(constrained optimization) 两类。
在有限的成本约束下取得最大的收益,通过拉格朗日算子可以将含有 n n n 个变量和 k k k 个约束条件的问题转化为含有 n + k n+k n+k 个变量的无约束优化问题。
L ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) L(x,y,\lambda)=f(x,y)+\lambda\varphi(x,y) L(x,y,λ)=f(x,y)+λφ(x,y)
从数学意义上讲,由原目标函数和约束条件共同构成的拉格朗日函数与原目标函数有共同的最优点集和共同的最优目标函数值,从而保证了最优解的不变形
先确定方向,再确定步长
沿目标函数值下降最快的方向寻找最小值,方向为梯度的反方向
梯度
当输入为数值,目标函数的图像为二维空间上的曲线,梯度为导数的反方向
当输入为向量,目标函数的图像就变成了高维空间上的曲面,梯度为垂直于曲面等值线并指向函数值增加方向的方向向量。
梯度下降
要让目标函数以最快下降,就是要让自变量在负梯度方向上移动——多元函数沿其负梯度方向下降最快
步长 :每次更新 f ( x ) f(x) f(x) 时 x x x 的变化值
在梯度下降法中,步长选择的整体规律是逐渐变小
批处理模式
计算每个样本上目标函数的梯度,再将不同样本的梯度进行求和,求和的结果作为本次更新中目标函数的梯度。
在批处理模式中,每次更新都要遍历训练集中所有样本,因而运算量比较大
随机梯度下降法
每次更新中只使用一个样本,下一次更新再使用另一个样本,在不断迭代中实现对所有样本的遍历
梯度下降法只用到了目标函数的一阶导数
一阶导数描述的是目标函数如何随输入的变化而变化
二阶导数提供了关于目标函数的曲率信息
曲率影响的是目标函数的下降速度
曲率为正,目标函数会比梯度下降法预期下降的更慢
曲率为负,目标函数则会比梯度下降法预期下降的更快
只能利用目标函数的局部性质,因而难免盲目的搜索,导致收敛过慢
通过一阶导数,可以获知目标函数可能在多个方向上都有增加的导数,意味着下降的梯度有很多种选择。但不同选择的效果有好有坏
但无法获取导数的变化信息,即无法得知导数长期为负的方向
将二阶导数引入优化过程,得到的典型方法就是牛顿法
将目标函数泰勒展开成二阶近似形式,再对近似形式求导并令其为0,得到的向量为下降最快的方向
先确定步长,以步长为参数划定一个区域,再在这个区域内寻找最快大的下降方法
算法过程:
设置 置信域半径 s s s ,并在以当前点为中心、 s s s 为半径的封闭圆球形区域作为 置信域
在置信域内寻找目标函数的二次近似模型的最优点,最优点与当前点的距离就是 备选位移
在备选位移上,
如果目标函数的二次近似产生了充分下降,就将当前点移动到计算出的最优点,并以此规则迭代,适当增加 s s s
如果目标函数的近似下降不明显,则说明步长太大,需要缩小 s s s 并重新计算备选位移
直到满足备选位移
核心思想:优生劣汰的生存法则,并在算法中增加了选择和突变等经验因素
智能程度高的表现在于善用启发式策略,不用经过大量搜索也能解决问题
生物进化——遗传算法
统计物理中固体结晶过程——模拟退火算法
低等动物产生集群智能——蚁群算法
大脑中神经元竞争和协作的机制——人工神经网络