基础数学知识(一)——拉格朗日乘子法

  这几天一直在看支持向量机,然后就是大量大量的数学公式,一直迷迷糊糊的,然后一直遇到拉格朗日,拉格朗日,原来数学基础也不好,没怎么学过,于是下定决心要把拉格朗日乘子法搞懂,花了几天,看了一些文章,算是对拉格朗日乘子法有了简单的了解,下面就和大家简单的分享分享啦!
  
  我们在求解优化问题的时候,可能小伙伴们遇到的最大的困难就是约束条件了,想想如果没有约束条件是一件多么愉快的事情,但是往往事与愿违哈哈!一般我们遇到比较简单一点问题的可能就是等式约束,但是稍微复杂一点的题目都会涉及到不等式约束,所以,这个时候就要根据实际情况选取不同的方法咯。一般情况下,最优化问题会有三类:

(一)、无约束条件
  这种情况想都不用想,直接对变量求导等于0,代入原函数验证即可。

(二)、等式约束条件
  我们假定目标函数为f(x),约束条件为h_k(x)。
     minf(x)     (最大值最小值问题可以相互转化)
    s.t. hk(x)=0k=1,2,3...
  我们原来高中学过的消元法不失为一种好方法,但是毕竟比较Low,体现不出优秀的你的水平哈哈,不开玩笑了,主要是消元的时候会很麻烦,比如说有高次的情况,开根号带来了计算时许多不便之处,而拉格朗日就厉害了,为什么这么讲呢,我们一起来看看:
  拉格朗日乘子法的求解流程大概包括以下几个步骤:
   1. 构造拉格朗日函数
   2. 解变量的偏导方程
   3. 代入目标函数即可
  是不是看上去很简单,其实的确不麻烦(==,吐槽一下当时看向量机的时候,还一直纠结着看不懂,但其实本身这个方法并没有想象的那么难)。关键在于构造拉格朗日函数,后面求解实际上就是高数里面基本的求偏导数的问题了。我们不妨另:
   F(x,λ)=f(x)+k=1lλkhk(x)    (公式不好打!!!)

  然后分别对每一个变量求导,得出来的解代入目标函数就ok了!

   Fλk=0 Fxi=0

(三)、不等式约束条件
  不等式约束相比于等式约束,要复杂一点,而且通常情况下,不等式约束和等式约束总喜欢一起出现,在这里,为了更好的解决该问题,除了拉格朗日乘子外,我们引入了KKT条件。什么是KKT条件呢?KKT条件是怎么来的呢?我们不妨先看看我们的问题:
       minf(x)
     s.t. hi(x)=0i=1,2,3...p
     s.t. gj(x)<=0j=1,2,3...q

  那么我们定义的拉格朗日函数又是什么呢,其实很容易想到:

   F(x,λ,l)=f(x)+i=1pλihi(x)+j=1qujgj(x)

  其中,f(x)是目标函数,hi(x)是第i个等式约束条件,λi是对应的约束系数,gj(x)是不等式约束,uj是对应的约束系数。这里把目标函数,等式约束,不等式约束融合到了一个式子里,这时候KKT约束就出场了:

 (1). F(x,λ,l)** 对 x求偏导为 0;

 (2). h(x)=0

 (3). ag(x)=0

  至于为什么这么来的,由于时间问题不跟大家作详细的推导啦,网上百度一下到处都有的。(附个链接:可以随便看看,讲的挺好的
  基于KKT条件,不等式约束条件的问题基本也就解决了,下面来说说我自己的一点心得吧!
第一点:拉格朗日乘子法求解优化问题是很有效的方法,对于限制条件比较多的情况下,特别是限制条件较为复杂的情况下,利用该方法可以很容易的求解出来。
第二点:约束条件其实就是限定了问题的解决范围,学会如何转化和考量限制条件是解决问题的关键。
第三点:基础知识的重要性,比如说高数如果学不好的话,在KKT条件的推导过程中,会遇到很多痛苦(对于数学基础不好的我感触尤深 = =)。
  
  就这样啦,第一次博客,问题挺多的,后面再加强!!!

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读