水熊虫
水熊虫
不认命,就拼命!
262文章 52分类

机器学习之优化方法(二)

二阶优化

之前介绍的一阶的优化方法,能够找到迭代的方向,但是往往不能决定迭代的步长,本文介绍的牛顿相关方法能一定程度上解决这个问题。

牛顿法

首先我们来看看牛顿法的推导过程,
对于函数f(x)在$x_{k}$处进行二阶泰勒展开。
$$ f(x)=f(x_{k})+f'(x_{k})(x-x_{k})+\frac{1}{2}f''(x_{k})(x-x_{k})^{2} $$

前两阶求导等于0
$$\begin{gathered}f'(x_{k})+(x-x_{k})f''(x_{k})=0 \\ x_{n+1} = x_{n}+\frac{f'(x_{k})}{f''(x_{k})}\end{gathered}$$

迭代过程如下图。
牛顿法
从上面的迭代过程能够看出,对于底部碗装的线性,其效果会十分的差。如前两种线性。
image-1680147035002

割线法

通过上面的讲解,我们知道牛顿法是要求有二阶导数的,但是并不是所有的函数都存在二阶导数, 割线法主要就是解决这个问题的。
$$ f''(x_{k})=\frac{f'(x_{k})-f''(x_{k-1})}{x_{k}-x_{k-1}} $$
这样就能解决没有二阶导数的函数的牛顿法的使用上。

拟牛顿法

拟牛顿法也是解决类似的问题, 但是在矩阵上近似黑塞矩阵,这里就不做进一步的讲解啦。

约束优化

接下来咱们来介绍约束优化,什么样的优化是约束优化呢? 其实就是咱们原有的优化函数上加上约束条件而已。
$$\begin{gathered}min\ f(x) \\ s.t. \ h(x)=0\end{gathered}$$
h(x)可以是等式也可以是不等式。 实际上就是在约束范围内找到最优解。
其方法也是尽可能的消除掉约束,从而变成一个正常的优化问题。

消除转换

例如下面这个问题。
$$\begin{gathered}min\ xsin(x) \\ s.t. \ \ \ 2<x<6\end{gathered}$$
可以通过如下的转换
$$ x=t_{2,6}(x)=\frac{2+6}{2}+\frac{6-2}{2} \frac{2x}{1+x^{2}} $$
通过上面的转换,原来的公式就变成了

$$\begin{gathered}min\ \ t_{2,6}(x)sin(t_{2,6}(x)) \\ min\ \ [4+2( \frac{2x}{1+x^{2}})] sin[4+2( \frac{2x}{1+x^{2}})]\end{gathered}$$
这样就变成了一个无约束问题。

拉格朗日乘法

拉格朗日乘法主要是解决受限约束的函数是等式的情况下,如下公式。
$$\begin{gathered}min\ \ f(x)\\ s.t. \ \ h(x)=0\end{gathered}$$
利用拉格朗日乘法计算f的等高线与h(x)=0的等高线对齐的位置。由于函数在某个点的梯度垂直于该函数通过该店的等高线,我们知道h的梯度将垂直于等高线h(x)=0,因此需要找到f的梯度和h的梯度在哪里对齐。

$$ \nabla f(x)=\lambda \nabla h(x) $$
其拉格朗日函数为
$$ L(x, \lambda )=f(x)-\lambda h(x) $$

举例

看下面这个例子。求解如下的公式
$$\begin{gathered}min\ \ -exp(-(x_{1}x_{2}-\frac{3}{2})^{2}-(x_{2}-\frac{3}{2})^{2}) \\ s.t.\ \ x_{1}-x_{2}^{2}=0\end{gathered}$$
使用拉格朗日法
$$\begin{gathered}L(x_{1},x_{2},\lambda)=-exp(-(x_{1}x_{2}-\frac{3}{2})^{2}-(x_{2}-\frac{3}{2})^{2})-\lambda(x_{1}-x_{2}^{2}) \\ \frac{\partial L}{\partial x_{1}}=2x_{2} f(x)(\frac{3}{2}-x_{1}x_{2})-\lambda \\ \frac{\partial L}{\partial x_{2}}=2\lambda x_{2}+f(x)(-2x_{1}(x_{1}x_{2}-\frac{3}{2})-2(x_{2}-\frac{3}{2})) \\ \frac{\partial L}{\partial \lambda}=x_{2}^{2}-x_{1}\end{gathered}$$
分别令上面的导数为0,就能求出相应的x

惩罚方法

通过向目标函数增加惩罚项,可以使用惩罚方法将约束问题转化为非约束问题。
$$\begin{gathered}min \ \ f(x) \\ s.t.\\ f(x)<0 \\ h(x)=0\end{gathered}$$
一种简单的惩罚方法是计算违反的约束方程数量
$$ P_{count}(x)=\sum g_{i}(x)>0 + \sum (h_{i}(x) \neq 0) $$
那么新的方程就是
$$ min\ \ f(x)+a P_{count}(x) $$
a是乘法幅度。 惩罚方法从初始点x和一个很小的a开始,求解无约束优化方程。然后得到一个点作为另一个优化的起点,并增加惩罚,直到得到可行结果,或者达到了最大迭代次数。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×