深度學習/機器學習入門基礎數學知識整理(三):凸優化,Hessian,牛頓法
凸優化理論本身非常博大,事實上我也只是瞭解了一個皮毛中的皮毛,但是對於廣大僅僅想要了解一下機器學習或者深度學習的同學來說,稍微瞭解一點凸優化也就夠了。在實際工程問題中,比如現在我們用的最多的深度神經網路的求解優化問題,都是非凸的,因此很多凸優化理論中非常有價值的定理和方法,在非凸優化問題中不適用,或者說並沒有收斂保證等。但是,作為知識的基礎,依然有必要來理解和學習一下凸優化,本篇整理了非常基礎的一些概念。主要參考網上一些資料,和《凸優化》這本書的一些概念。
凸優化理論基礎中的基礎
1. 為什麼要學習凸優化?
凸優化在數學規劃領域具有非常重要的地位。一旦將一個實際問題表述為凸優化問題,大體上意味著相應問題已經得到徹底解決,這是非凸的優化問題所不具有的性質。其應用非常廣泛,機器學習中很多優化問題都要通過凸優化來求解;在非凸優化中,凸優化同樣起到重要的作用,很多非凸優化問題,可以轉化為凸優化問題來解決;
2. 什麼是優化問題?
3. 什麼是凸優化問題?
4. 什麼是凸函式?
有一個經典的示意圖:
凸函式的幾何意義表示為函式任意兩點的連線上的取值大於該點在函式上的取值
5. 凸函式的一階充要條件
一階條件的意義是,對於函式在定義域的任意取值,函式的值都大於或者等於對函式在這點的一階近似。用圖來說明就是下圖:
口語化理解就是說凸函式總是在其任意一點的切線的上方(或者可以有部分相切的)。通過圖可以很清楚地理解這個充要條件,但是,具體在應用中,我們不可能對每一個點都去計算函式的一階導數,因此後面會說道利用凸函式的二階特徵來進行判斷一個函式是否是一個凸函式。下面貼一下證明充分性和必要性的過程,來自《convex optimization》,不是很在意的同學可以跳過,直接看下一節。但是建議手推一下,還是比較簡單的:
6. 凸函式的二階充要條件
記函式的一階導數和二階導數為g和H,
其中要求函式
凸函式舉例 [10]
舉例用二階充要條件來證明log-sum-exp函式是convex的:
最後一步用到了柯西不等式,很巧妙。
Hessian矩陣與牛頓法
上面提到了函式的二階導數是Hessian矩陣,Hessian矩陣經常用於牛頓法優化方法中。牛頓法是一種迭代求解方法,有一階和二階方法,主要應用在兩個方面:1、求方程的根, 2、 最優化方法。
(1)牛頓迭代求解方程的根:
並不是所有的方程都有求根公式, 或者求根公式很複雜, 導致求解困難. 利用牛頓法, 可以迭代求解。原理是利用泰勒公式, 在處展開, 且展開到一階,