梯度下降与EM算法
機器學習兩個重要的過程:學習得到模型和利用模型進行預測。
下面主要總結對比下這兩個過程中用到的一些方法。
一,求解無約束的目標優化問題
這類問題往往出現在求解模型,即參數學習的階段。
我們已經得到了模型的表達式,不過其中包含了一些未知參數。
我們需要求解參數,使模型在某種性質(目標函數)上最大或最小。
最大似然估計:
其中目標函數是對數似然函數。為了求目標函數取最大值時的theta。
有兩個關機鍵步驟,第一個是對目標函數進行求導,第二個是另導數等于0,求解后直接得到最優theta。兩個步驟缺一不可。
梯度下降:
對目標函數進行求導,利用導函數提供的梯度信息,使參數往梯度下降最快的方向移動一小步,
來更新參數。為什么不使用最大似然估計的方法來求解呢?
上面是邏輯回歸的目標函數,可以看出J(θ)容易進行求導,如下所示:
但是如果通過使偏導數等于0,來求θ是非常困難的。
首先hθ?(xi)是關于所有θ的函數,而且h是邏輯回歸函數,
其次,每個等式中包含m個hθ?(xi)函數。因此只能利用梯度信息,在解空間中進行探索。
EM算法:
和上面一樣,也是要求優化一個目標函數。
不同的是,它只能得到目標函數,甚至連目標函數的導函數也求不出來。
如下面的高斯混合模型(GMM)的目標函數函數:
對上面的目標函數求導是非常困難的。
在比如下面的隱馬爾科夫模型(HMM)的目標函數:
都是不可以直接求導的,所以需要引入隱變量來簡化計算。
好處是:如果我們知道隱變量的值或者概率分布,那么原目標函數可以進行高效的求解(比如可以用最大似然估計法求解)。
通常的步驟是先有參數的先驗值和訓練數據得到隱變量,再由隱變量和訓練數據來最大化目標函數,得到參數。
(個人認為,隱變量可以隨便引入,只要能夠使原目標函數可以高效求解就行。)
坐標上升或下降(CoordinateAscent):
由先驗經驗初始化參數。然后每次選擇其中一個參數進行優化,其它參數固定(認為是已知變量),如此進行迭代更新。
它和EM的思想差不多,通過引入隱變量(固定的參數),來使得問題變得高效可解。
而引入的隱變量是通過上一次計算的參數得到的(只不過隱變量就等于部分參數本身而已),相當于參數信息落后了一代而已。
k-means和高斯混合模型(GMM)中的EM:
k-means是先由參數和數據得到數據的分類標簽,再由數據和分類標簽來計算參數。
高斯混合模型中的EM是先由參數和數據得到數據分類標簽的概率分布,再由數據和分類標簽分布來計算參數。
像k-means這樣求隱變量具體值的叫做hard-EM,想GMM這樣求隱變量的概率分布的叫做soft-EM。
EM算法收斂性證明:
摘抄自wikipedia中的Expectation–maximization algorithm文章詳細說明:
二,求解有約束的目標優化問題
總結
- 上一篇: M式编程规范
- 下一篇: Java 代码的基本知识