洞明先生的博客

穷通悟理是极乐
  新随笔  :: 管理
 
  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* 的集合,就是可行解
再想办法从中找 更准确的解吧