zoukankan      html  css  js  c++  java
  • 机器学习中的数学基础_七月算法4月机器学习班第4次课程笔记

     
      desc
    优化问题的分类
    无约束优化
    梯度下降法
    深度梯度下降
    牛顿法
     
    有约束的优化:
    KKT条件(拉格朗日的扩充)
    转换为凸优化,使用内点法求解,matlab cov 命令
    认识两个符号
    这个符号 表示 半正定 和 正定
    对于 scalar 来说,本身具有正负性,而对于 矩阵来说 与正负性对应的就是其 正定性
    而不是 其对应 的行列式的 正负性
    正定矩阵的 地位在于 高维度 上的 数字的 正负性
    哪里出现了二次型
    在高维度的泰勒展开式当中
    对泰勒展开式的分析
    如果 f(xk) 的地方是极值,比如极小值
    那么 对 δ >0,有
    f(δ +x) > f(x) and f( x-δ) > f(x)
    因为 x 加减 δ 都要比 f(x) 大,所以 f'(x) 的地方一定是0,这样才能消除 f'(xk)·δ 的影响
    而 全部的因素考虑的是 后面的 即 f''(x)·δ^2  部分
    首先 δ^2 >=0,所以 如果 f''(x) >0 那么 f(x) 一定是极小值,
    如果 f''(x) <0,那么一定是极大值
     
    鞍点
    又名:拐点,驻点
    而二维空间,如 x^3 处叫做 拐点,驻点
    在 高维空间,如图,叫做鞍点
     
    仿射函数
    可以理解 线性变换函数
    所以对于 NN 来说,除了 仿射函数,还要有 非线性变换
    凸集的定义
    凸集概念的操作对象是 集合,即 对于集合C
    如果 对于 0<=Θ<= 1,有 x, y ∈C,那么一定有
    Θx + (1-Θ)y ∈ C
    凸函数的定义
    定义域是凸集,且对于 0<=Θ<= 1,函数满足:
    f(Θx + (1-Θ)y ) <= Θf(x) + (1-Θ)f(y)
    凸函数判定的充要条件
    一阶充要条件:
    有x1, x2,一定有:
    f(x2) >= f(x1) + f'(x1)·(x2-x1)
     
    二阶充要条件:函数f 二阶可导,且
    f''(x) >0
    或者 f''(x) 是正定矩阵
    关于二阶充要条件
    举例:
    那么f(x) 的二阶导就是P,如果 P正定,那么图像就是这个样子
    如果P 不是正定也不是负定,那么就是这个样子:
    方法是看二阶导数
    凸优化问题的定义
    目标函数是 凸函数
    可行域是 凸集
    hessian 矩阵的产生
    海森矩阵 其实就是 泰勒展开式的 二阶项的系数
    尤其是 泰勒展开式 在 n 维 向量上的系数
    即: x 变量 是一个vector 而不是标量,
    其需求就是 这个 f''(x) 变量成了 一个向量了,才产生了海森矩阵
    hessian 矩阵是什么
    是一个对称矩阵
    表达式为:
    哪里用到了hessian矩阵
    牛顿法和 判断极值点都用到了海森矩阵
    极值判断 用海森矩阵看 是极大值 还是 极小值
    牛顿法 在一阶导数基础上引入了 hessian,提升了 SGD
    为什么说 凸函数的极小值就是全局最优解
    思考这个问题 的方法很简单
    1. 什么是极值点,从文字转化为 数学公式:
    f(x) < f(x+δ) 且 f(x) < f(x-δ)
    2. 什么是凸函数,有 f(Θx + (1-Θ)y ) <= Θf(x) + (1-Θ)f(y)
    那么有:
    x2 属于 dom(f(x)) 即 x2 是f(x) 定义域内任意一点,那么只要 
    (1-Θ) 的值 取的适当,即 Θ 无线趋近于 1,那么 Θx + (1-Θ)x2  就能出现在 邻域x 的内
    而只要在 邻域内那么 就有 
    f(x) <= f( Θx + (1-Θ)x2 )  #到目前为止应用的是 极值点的定义
    现在使用凸函数的定义:
    即:
    f(x) <= f( Θx + (1-Θ)x2 ) <=  Θf(x) + (1-Θ)f(x2)
    即有 f(x) <=  Θf(x) + (1-Θ)f(x2),整理有可得:
    (1-Θ)f(x) <= (1-Θ)f(x2)
    f(x) <= f(x2)
    注意:这个 x2 是任取的
     
    summary:任取 x2,然后把 x2 放到 x 的邻域当中,然后使用凸函数的放缩技巧,得出
    f(x) <= f(x2) 的结论式子
    refer
    如何看待二次型
    二次型可以看做是一个函数,即:
    f(x) = xT·A·x,而 A 可以看做是 二次型的参数
    input of the function is x
    output 只关心其正负性
     
    对于二次型:
    定义法 几乎没意义,不具有 判断 能力,需要使用其判别式
    即 特征值全正
    建立 定义式 和 判别式 的概念
    一个概念 softmax 是函数,只是因为应用了 argmax 使其成为 分类器
    如何看待这个约束图
    虚线部分是 目标函数,
    而 抛物线 和 直线的相交区域是 可行域,即 点只能出在这里面
    而 要的是 目标值 min,所以 等值线扩大,一旦相切,就是 约束解
    深度梯度下降
    深度梯度下降每次也是 取梯度的负方向,即 
    dk = -f'(x)
    但是 与 SGD 不同之处在于,对于这个 步长进行了限制,即:
    每次的步长都是计算出来的,即:
    d(f(x+α·dk)) /dα = 0
    取极值时候的 α
    但是为什么有垂直这个概念,也还是不清楚。。。。。。。。。
    牛顿法
    牛顿法的基本思路就是 take the  hessian into consideratio
    即 把二阶导数 引入了进来
    。。。。但是为什么可以一步到位  还不清楚。。。。。
     
     
    KKT条件
    属性:
    是 拉格朗日法 的扩展
    拉格朗日法 只能用于 约束条件是等式的情况下,而不是 KKT 条件可以用于 非等式约束的情况
    具体的条件为:
     有约束条件的优化的一般式
    设 x* 为最优值,那么哟
    1) ai(x*) = 0   # 语义解释: 满足约束中的等式约束
    2) cj(x*) >=0  # 语义解释: 满足约束中的不等式约束
    3) f'(x*) = Σλi·ai'(x*) + Σμj·cj(x*)  # 语义解释:这一步体现了与拉格朗日法的关系,即对于 不等式约束不是直接添加系数加上去,而是在导数上存在这个 约束关系。
    4) μj·cj(x*) =0 # 语义解释:即如果 μj !=0,那么 cj(x*) =0,即 μj 与 cj(x*) 当中至少有一个为0
    5) μj >=0  # 语义解释:这个是在说明给 cj(x*) 乘上的系数的 正负性,都得是正的
     
    按照这个方法,找出满足这5个条件的 x* 的集合,就是可行解
    再想办法从中找 更准确的解吧
  • 相关阅读:
    青蛙学Linux—MySQL常用命令(二)
    青蛙学Linux—MySQL常用命令(一)
    青蛙学Linux—MySQL安装和初始化
    青蛙学Linux—MySQL
    青蛙学Linux—Apache提供HTTPS服务
    青蛙学Linux—Apache配置PHP支持
    青蛙学Linux—Apache+Tomcat实现动静分离以及负载均衡
    青蛙学Linux—Apache负载均衡的实现
    青蛙学Linux—Apache反向代理的实现
    青蛙学Linux—Apache的MPM模式和httpd-mpm.conf
  • 原文地址:https://www.cnblogs.com/jianzhitanqiao/p/5488653.html
Copyright © 2011-2022 走看看