###### tags: `ML數學分部`
<!-- {%hackmd @kk6333/theme-sty1 %} -->
# 拉格朗日乘數 ( Lagrange Multiplie )
拉格朗日乘數是用來解最佳化的一種方法
簡單來說,當我今天有一函數 $f(x,y)$ 和一個限制條件 $g(x,y)=0$
<font color=red>要求滿足 $g$ 條件在 $f$ 的極值,也可以看成是求 $g$,$f$ 相交面的極值</font>,就可用拉格朗日乘數求解

<br>
## 1. 求解方法
要求出兩函數相交的極值,就必須先找出兩者之間的關係
假設兩函數在相交的切線上為以下函數
:::info
$$f(x,y)=c$$
$$g(x,y)=0$$
> 對兩式子做偏微分 ( 這邊假設用 x )
$$ \frac{ \partial{f} }{ \partial{x} }=f_x + f_y \frac{\partial y}{\partial x}=0$$
$$ \frac{ \partial{g} }{ \partial{x} }=g_x + g_y \frac{\partial y}{\partial x}=0$$
> 可以得出 $f_x, f_y$ 分別為 $g_x, g_y$ 的 $\lambda$ 倍 ( 未知 )
> 最後寫成下式
$$\nabla f = \lambda \nabla{g}$$
> 通常又會該寫成下式,$\lambda$ 會因函數改寫而正負不同,但就是為一常數
<font color=red>$$\nabla L(x,\lambda)=\nabla f + \lambda \nabla{g} = 0$$</font>
<font color=red>$$L(x,\lambda)=f + \lambda{g}$$</font>
<font color=red>$$g(x,y)=0$$</font>
> 利用以上兩式關係,就可求出在 $g(x,y)$ 限制下 $f(x,y)$ 的最小值
> 也可以很容易用幾何關係看出
> 
> 之後進行求解步驟如下
> 1. 利用關係式求出 $\lambda$
> 2. 代回 $\lambda$ 求出函數極值
:::
<br>
## 2. KKT ( Karush-Kuhn-Tucker )
如果將約束條件改為
$$g(x,y) \le 0$$
> 
將範圍限制在 $g(x,y)$ 內部,而非 $g(x,y)$ 交點上
就會將原來的 Lagrange 乘數推廣到多個條件的約束
:::info
> 新增條件 $h(x,y)$ 和乘子 $\mu$
<font color=red>$$g(x,y) \le 0$$</font>
<font color=red>$$\lambda >0$$</font>
<font color=red>$$L(x,\lambda,\mu)=f + \sum_{i=1}^{m}\lambda_i{g_i} + \sum_{j=1}^{n}\mu_j{h_j}$$</font>
<font color=red>$$\nabla L(x,\lambda,\mu)=\nabla f + \lambda_i \nabla{g_i}+ \mu_j \nabla{h_j} = 0$$</font>
:::
<br>
## 3. reference
[Lagrange乘數 ( CUSTCourses )](https://www.youtube.com/watch?v=lDehPPIgQpI)
[線代啟示錄-Karush-Kuhn-Tucker (KKT) 條件](https://ccjou.wordpress.com/2017/02/07/karush-kuhn-tucker-kkt-%E6%A2%9D%E4%BB%B6/)
[机器学习中的数学——拉格朗日乘子法(一)](https://blog.csdn.net/hy592070616/article/details/119720240)
[机器学习中的数学——拉格朗日乘子法(二) KKT](https://blog.csdn.net/hy592070616/article/details/119839152)