zoukankan      html  css  js  c++  java
  • 矩阵向量求导法则,拉格朗日函数

    转自http://www.cnblogs.com/huashiyiqike/p/3568922.html在学习算法的过程中,常常需要用到向量的求导。下边是向量的求导法则。

    拉格朗日乘子法:应用在求有约束条件的函数的极值问题上。

    通常我们需要求解的最优化问题有如下几类:

    (i) 无约束优化问题,可以写为:

            min f(x);  

    (ii) 有等式约束的优化问题,可以写为:

            min f(x), 

            s.t. h_i(x) = 0; i =1, ..., n 

    (iii) 有不等式约束的优化问题,可以写为:

            min f(x), 

            s.t. g_i(x) <= 0; i =1, ..., n

                 h_j(x) = 0; j =1, ..., m

    对于第(i)类的优化问题,常常使用的方法就是Fermat定理,即使用求取f(x)的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。

    对于第(ii)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束h_i(x)用一个系数与f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。

    对于第(iii)类的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。

    (a) 拉格朗日乘子法(Lagrange Multiplier)

    对于等式约束,我们可以通过一个拉格朗日系数a 把等式约束和目标函数组合成为一个式子L(a, x) = f(x) + a*h(x), 这里把a和h(x)视为向量形式,a是横向量,h(x)为列向量,之所以这么写,完全是因为csdn很难写数学公式,只能将就了.....。

    然后求取最优值,可以通过对L(a,x)对各个参数求导取零,联立等式进行求取,这个在高等数学里面有讲,但是没有讲为什么这么做就可以,在后面,将简要介绍其思想。

    (b) KKT条件

    对于含有不等式约束的优化问题,如何求取最优值呢?常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a, b, x)= f(x) + a*g(x)+b*h(x),KKT条件是说最优值必须满足以下条件:

    1. L(a, b, x)对x求导为零;

    2. h(x) =0;

    3. a*g(x) = 0;

    求取这三个等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。

  • 相关阅读:
    [20180808]exists and not exists.txt
    [20180806]tune2fs调整保留块百分比.txt
    [20180730]exadata与行链接.txt
    [20180801]insert导致死锁.txt
    [20180718]拷贝数据文件从dg库.txt
    [20180713]关于hash join 测试中一个疑问.txt
    [20180705]关于hash join 2.txt
    virtualbox 中ubantu虚拟机范文win7文件夹
    myeclipse10安装findbugs
    win7共享文件夹给局域网
  • 原文地址:https://www.cnblogs.com/cmybky/p/11773153.html
Copyright © 2011-2022 走看看