最近幾天看了一些優化理論方面的知識。但感覺把握還是不夠深刻,看都看懂了,但是不清楚說的是什麼,用在哪類問題上。
參考了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展開的。