optimization

最近几天看了一些优化理论方面的知识。但感觉把握还是不够深刻,看都看懂了,但是不清楚说的是什么,用在哪类问题上。

参考了cmu机器学习课程的recitation of optimization

optimization在机器学习中是用来干嘛的?

  • 找到最优化的系数?
  • 其他应用?

1、convex set 和convex function的定义。

什么是convex set?

什么是convex function?

两者的联系是什么?convex function的below-set是一个convex set

2、unconstrained convex optimization

unconstrained: 无约束就是什么约束都没有,dx可以是任意方向的

基本算法:

1) gradient descent

分成batch 和stochastic 两种

一般来说,learning_rate是利用一维搜索找到的(line search). line search中一个重要问题是step的大小确定(beta)。有什么方法可确定这个beta大小?

batch就是每次用所有的点来调整系数。stochastic就是每次只用随机的一部分点。

gradient descent优点是计算量小,存储变量少,初始变量要求不高。但是靠近极值点时收敛速度不够快。一般是作为优化问题的前期迭代。

类比:可以不用迭代,直接用数学方法求出theta系数。参考http://blog.sina.com.cn/s/blog_698213630101576y.html

 

(XT*X)^-1 *XT就是所谓的伪逆矩阵。如果X是可逆矩阵,则(XT*X)^-1 *XT=X^-1.

但是直接计算的话,计算量太大。这也是为什么用迭代法的原因吧。

2)newton's method

不太理解牛顿法的过程。但是牛顿法是基于taylor展开的。

在taylor expansion不给力的地方,牛顿法的收敛速度和gradient descent一样慢
在极值点附近(满足上图的边界条件),呈现二次收敛的速度
 
牛顿法的问题是计算量特别大。
牛顿法的适用情况:
原文地址:https://www.cnblogs.com/chenhuanfa/p/3050913.html