1. 程式人生 > >第二講:生成學習演算法

第二講:生成學習演算法

目前為止,我們講過的學習演算法的模型都是 p ( y x ; θ ) p (y|x;\theta)

,也就是給定 x 下的 y 的條件分佈,以 θ \theta 為引數。例如,邏輯迴歸中就是以 h θ ( x
) = g ( θ T x ) h_\theta(x) = g(\theta^T x)
作為 p ( y x ; θ ) p (y|x;\theta) 的模型,這裡的 g 是一個 S型函式(sigmoid function)。接下來,咱們要講一下一種不同型別的學習演算法。

設想有這樣一種分類問題,我們要學習基於一個動物的某個特徵來辨別它是大象 ( y = 1 ) (y=1) 還是小狗 ( y = 0 ) (y=0) 。給定一個訓練集,用邏輯迴歸或者基礎版的**感知器演算法(perceptron algorithm)**這樣的一個演算法能找到一條直線,作為區分開大象和小狗的邊界。接下來,要辨別一個新的動物是大象還是小狗,程式就要檢查這個新動物的值落到了劃分出來的哪個區域中,然後根據所落到的區域來給出預測。

還有另外一種方法。首先,觀察大象,然後我們針對大象的樣子來進行建模。然後,再觀察小狗,針對小狗的樣子另外建立一個模型。最後要判斷一種新動物歸屬哪一類,我們可以把新動物分別用大象和小狗的模型來進比對,看看新動物更接近哪個訓練集中已有的模型。

例如邏輯迴歸之類的直接試圖建立 p ( y x ) p(y|x) 的演算法,以及感知器演算法(perceptron algorithm)等直接用投圖(mappings directly)的思路來判斷對應 X 的值落到了 0 , 1 {0, 1} 中哪個區域的演算法,這些都叫判別式學習演算法(discriminative learning algorithms)。和之前的這些判別式演算法不同,下面我們要講的新演算法是對 p ( x y ) p(x|y) p ( y ) p(y) 來進行建模。這類演算法叫做生成學習演算法(generative learning algorithms)。例如如果 y 是用來表示一個樣例是 小狗 ( 0 ) (0) 或者 大象 ( 1 ) (1) ,那麼 p ( x y = 0 ) p(x|y = 0) 就是對小狗特徵的分佈的建模,而 p ( x y = 1 ) p(x|y = 1) 就是對大象特徵分佈的建模。

p ( y ) p(y) (叫做 class priors,先驗概率) 和 p ( x y ) p(x|y) (叫做後驗概率)進行建模之後,我們的演算法就是用貝葉斯規則(Bayes rule)來推導對應給定的 x 的 y 的後驗分佈(posterior distribution):

p ( y x ) = p ( x y ) p ( y ) p ( x ) p(y|x)=\frac{p(x|y)p(y)}{p(x)}

這裡的**分母(denominator)**為: p ( x ) = p ( x y = 1 ) p ( y = 1 ) + p ( x y = 0 ) p ( y = 0 ) p(x) = p(x|y = 1)p(y = 1) + p(x|y = 0)p(y = 0) (這個等式關係可以根據概率的標準性質來推導驗證,譯者> 注:其實就是條件概率),這樣接下來就可以把它表示成我們熟悉的 p ( x y ) p(x|y) p ( y ) p(y) 的形式了。實際上如果我們計算 p ( y x ) p(y|x) 來進行預測,那就並不需要去計算這個分母,因為有下面的等式關係:

arg max y p ( y x ) = arg max y p ( x y ) p ( y ) p ( x )   = arg max y p ( x y ) p ( y ) \begin{aligned} \arg \max_y p(y|x) & =\arg \max_y \frac{p(x|y)p(y)}{p(x)}\ &= \arg \max_y p(x|y)p(y) \end{aligned}

1 高斯判別分析(Gaussian discriminant analysis)

咱們要學的第一個生成學習演算法就是高斯判別分析(Gaussian discriminant analysis ,縮寫為GDA)在這個模型裡面,我們假設 p ( x y ) p(x|y) 是一個多元正態分佈。所以首先咱們簡單講一下多元正態分佈的一些特點,然後再繼續講 GDA 高斯判別分析模型。

1.1 多元正態分佈(multivariate normal distribution)

n維多元正態分佈,也叫做多變數高斯分佈,引數為一個均值 n n 維向量 μ R n \mu \in R^n ,以及一個協方差矩陣 Σ R n × n \Sigma \in R^{n\times n} ,其中 Σ 0 \Sigma \geq 0 是一個對稱(symmetric)的半正定(positive semi-definite)矩陣。當然也可以寫成" N ( μ , Σ ) N (\mu, \Sigma) " 的分佈形式,密度(density)函式為:

p ( x ; μ , Σ ) = 1 ( 2 π ) n / 2 Σ 1 / 2 e x p ( 1 2 ( x μ ) T Σ 1 ( x μ ) ) p(x;\mu,\Sigma)=\frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}} exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))

在上面的等式中," Σ |\Sigma| "的意思是矩陣 Σ \Sigma 的行列式(determinant)。對於一個在 N ( μ , Σ ) N(\mu,\Sigma) 分佈中的隨機變數 X ,其平均值(跟正態分佈裡面差不多,所以並不意外)就是 μ \mu 了:

E [ X ] = x p ( x ; μ , Σ ) d x = μ E[X]=\int_x p(x;\mu,\Sigma)dx=\mu

隨機變數Z是一個有值的向量(vector-valued random variable),Z 的協方差(covariance)的定義是: C o v ( Z ) = E [ ( Z E [ Z ] ) ( Z E [ Z ] ) T ] Cov(Z) = E[(Z-E[Z])(Z-E[Z])^T ] 。這是對實數隨機變數的方差(variance)這一概念的泛化擴充套件。這個協方差還可以定義成 C o v ( Z ) = E [ Z Z T ] ( E [