條件隨機場(四)

對全部類型的CRF模型,包括最大熵模型,都是採用極大似然估計的方法來進行參數估計,也就是說在訓練數據集$\mathcal T$上進行對數似然函數$\mathcal L$的極大化。根據上一篇《條件隨機場(三)》,咱們知道線性鏈CRF的模型爲html

\begin{equation} p_{\vec {\lambda}}(\vec y | \vec x) = \frac 1 {Z_{\vec {\lambda}} (\vec x)} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}算法

\begin{equation} Z_{\vec {\lambda}}(\vec x) =  \sum_{\vec {y} \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) \end{equation}dom

因此對數似然函數爲,函數

\begin{equation} \begin{aligned} \overline {\mathcal L} (\mathcal T)  & = \sum_{(\vec x, \vec y) \in \mathcal T} log p(\vec y | \vec x) \\ & = \sum_{(\vec x, \vec y) \in \mathcal T} [log (\frac {exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j))} { \sum_{y' \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y'_{j-1}, y'_j, \vec x, j))})] \end{aligned} \end{equation}學習

爲了不過擬合,對數似然函數增長一個懲罰因子$- \sum_{i=1}^m \frac {\lambda_{i}^2} {2 \sigma^2}$,其中$\sigma^2$是平衡因子,因而從新組織對數似然函數並做變換,htm

\begin{equation} \begin{aligned} \mathcal {L} (\mathcal T) & = \sum_{(\vec x, \vec y) \in \mathcal T} [log (\frac {exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j))} { \sum_{y' \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y'_{j-1}, y'_j, \vec x, j))})] - \sum_{i=1}^m \frac {\lambda_{i}^2} {2 \sigma^2} \\ & = \sum_{(\vec x, \vec y) \in \mathcal T} [(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)) - log (\sum_{y' \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y'_{j-1}, y'_j, \vec x, j)))] - \sum_{i=1}^m \frac {\lambda_{i}^2} {2 \sigma^2} \\ & = \underbrace {\sum_{(\vec x, \vec y) \in \mathcal T} \sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j)}_{\mathcal A}  \\ & \quad - \underbrace{\sum_{(\vec x, \vec y) \in \mathcal T} log \underbrace {(\sum_{y' \in \mathcal Y} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y'_{j-1}, y'_j, \vec x, j)))}_{Z_{\vec \lambda}(\vec x)}}_{\mathcal B}  - \underbrace{\sum_{i=1}^m \frac {\lambda_{i}^2} {2 \sigma^2}}_{\mathcal C} \end{aligned}\end{equation}blog

對數似然函數$\mathcal L(\mathcal T)$的各項$\mathcal A, \mathcal B, \mathcal C$分別對$\lambda_i$求偏導,排序

\begin{equation} \frac \partial {\partial {\lambda_i}} \sum_{(\vec x, \vec y) \in \mathcal T} \sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i (y_{j-1}, y_j, \vec x, j) = \sum_{(\vec x, \vec y) \in \mathcal T} \sum_{j=1}^n f_j(y_{j-1}, y_j, \vec x, j) \end{equation}jsx

上式的求導中,將$\lambda_i$看做變量,而$\lambda_k, k \neq i$看做常數。get

\begin{equation} \begin{aligned} \frac \partial {\partial {\lambda_i}} \sum_{(\vec x, \vec y) \in \mathcal T} log Z_{\vec \lambda}(\vec x) & = \sum_{(\vec x, \vec y) \in \mathcal T} \frac 1 {Z_{\vec \lambda}(\vec x)} \frac {\partial {Z_{\vec \lambda}(\vec x)}} {\partial \lambda_j} \\ & = \sum_{(\vec x, \vec y) \in \mathcal T} \frac 1 {Z_{\vec \lambda}(\vec x)} \sum_{\vec {y}' \in \mathcal Y} exp (\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i ( y'_{j-1}, y'_j, \vec x , j)) \cdot \sum_{j=1}^n f_i(y'_{j-1}, y'_j, \vec x , j) \\ & = \sum_{(\vec x, \vec y) \in \mathcal T} \sum_{{\vec y}' \in \mathcal Y} \underbrace{\frac 1 {Z_{\vec \lambda}(\vec x)} exp(\sum_{j=1}^n \sum_{i=1}^m \lambda_i f_i ( y'_{j-1}, y'_j, \vec x , j))}_{=p_{\vec \lambda}(\vec y | \vec x)} \cdot \sum_{j=1}^n f_i(y'_{j-1}, y'_j, \vec x , j) \\ & = \sum_{(\vec x, \vec y) \in \mathcal T} \left( \sum_{{\vec y}' \in \mathcal Y} p_{\vec \lambda}({\vec y}' | \vec x) \sum_{j=1}^n f_i(y'_{j-1}, y'_j, \vec x , j) \right) \end{aligned} \end{equation}

\begin{equation} \frac \partial {\partial{\lambda_k}} (- \sum_{i=1}^m \frac {\lambda_{i}^2} {2 \sigma^2}) = - \frac {\lambda_k} {\sigma^2} \end{equation}

上面的對數似然函數(4)式是凹函數:其中第一項是線性的,由於關於$\lambda_i$求導後的表達式不包含$\lambda_i$了,第二項求導後的表達式中有一個歸一化項,天然也與$\lambda_i$無關了,因此第二項也能夠當作$\lambda_i$的線性項,而第三項明顯是$\lambda_i$的凹函數,因此對數似然函數總體也是凹函數。

對數似然函數的$\mathcal A$項其實就是特徵函數$f_i$在經驗分佈下的指望值(我怎麼以爲要除以$| \mathcal T |$,然而這個對計算值沒影響,後文會解釋),

\begin{equation} \tilde{E}(f_i) = \sum_{(\vec x, \vec y) \in \mathcal T} \sum_{j=1}^n f_i (y_{j-1},y_j, \vec x, j) \end{equation}

$\mathcal B$項的求導則是CRF模型下的$f_i$的指望,

\begin{equation} \begin{aligned}  E(f_i) & = \sum_{(\vec x, \vec y) \in \mathcal Z} p(\vec x, \vec y) \sum_{j=1}^n f_i ({y_{j-1}}' , {y_j}' , \vec x, j)  \\ & =  \sum_{(\vec x, \vec y) \in \mathcal Z} p(\vec x) p(\vec y | \vec x) \sum_{j=1}^n f_i ({y_{j-1}}' , {y_j}' , \vec x, j) \\ & =  \sum_{(\vec x, \vec y) \in \mathcal Z} \tilde{p}(\vec x) p(\vec y | \vec x) \sum_{j=1}^n f_i ({y_{j-1}}' ,{y_j}' , \vec x, j) \\ & \propto \sum_{(\vec x, \vec y) \in \mathcal T} \sum_{{\vec y}' \in \mathcal Y} p_{\vec \lambda}({\vec y}' | \vec x) \sum_{j=1}^n f_i ({y_{j-1}}', {y_j}', \vec x, j) \end{aligned} \end{equation}

上式推導中使用經驗機率$\tilde{p}(\vec x)$代替$p(\vec x)$,最後一步的正比其實就是乘以了訓練集的數量$| \mathcal T|$,這與(8)式也是一致的,(8)中也是經驗指望乘以了$| \mathcal T |$,而第三項也能夠認爲是通過了乘以$| \mathcal T |$ 這一步,

因而對數似然函數的偏導爲,

\begin{equation} \frac {\partial {\mathcal {L} (\mathcal T)}} {\partial {\lambda_i}} = \tilde{E}(f_i) - E(f_i) - \frac {\lambda_i} {\sigma^2} \end{equation}

(8)和(9)式與最大熵模型(見條件隨機場二中的(12)~(16)式)相似,令上式等於0,因而乘以的$| \mathcal T |$這一項就能夠忽略了。

 計算$f_i$的經驗指望是很容易的,只要找出特徵$f_i$在訓練數據集中出現次數(按道理,應該除以$| \mathcal T |$,可是上文解釋過了,能夠忽略這一常數因子),計算$E(f_i)$則沒那麼容易了,由於分類序列的狀況比較多,即$| \mathcal Y |$值比較大。而在最大熵模型中能夠計算$E(f_i)$的緣由是由於其分類輸出爲單個,而非一個序列,顯然序列排序的狀況比單個的狀況多不少,好比分類總共有J個,則單個分類的狀況就是J個,而n長度的序列的可能狀況理論上則是 $J^n$個。在CRF中,因爲計算的複雜,咱們採用動態規劃的方法,與HMM中同樣,即前向-後向算法。以下圖

 

咱們令$T_{j}(s)$表示從位置j,狀態爲s的節點出發能夠到達下一個位置上全部狀態對應的節點,$T{j}^{-1}(s)$表示位置 j 且狀態爲s的節點能夠由上一個位置上全部可能的狀態節點轉換而來,根據前面HMM的介紹內容不難知道,對於線性鏈CRF模型,前向$\alpha$和後向$\beta$分別爲,

\begin{equation} \alpha_{j}(s| \vec x) = \sum_{s' \in T_{j}^{-1}(s)} \alpha_{j-1}(s' | \vec x) \cdot \Psi_{j}(\vec x, s', s) \end{equation}

\begin{equation} \beta_{j}(s | \vec x) = \sum_{s' \in T_{j}(s)}(s' | \vec x) \cdot \Psi_{j}(\vec x, s, s') \end{equation}

 其中勢函數$\Psi_{j}(\vec x, s', s)$能夠根據條件隨機場(三)中的(3)式和(5)式很容易獲得:$\Psi_{j}(\vec x, s, s') = \exp (\sum_{i=1}^m \lambda_i f_i (y_{j-1} = s, y_{j} = s' , \vec x , j)) $

 這裏,前向機率 $\alpha_{j}(s | \vec x)$表示輸入爲$\vec x$的條件下,位置 j 處的狀態爲 s 而且到位置 j 的前部分標記序列的非規範化條件機率,然後向機率 $\beta_{j}(s | \vec x)$ 表示輸入爲 $\vec x$的條件下,位置 j 的狀態爲s 且 j 位置到最後的那一部分標記序列的非規範化條件機率,必定要注意是非規範化的,由於沒有考慮因子$Z_{\vec {\lambda}}(\vec x)$。

定義第一個位置 j = 1 以前的起始位置 j = 0 的狀態記爲 $\bot$,最後一個位置 j = n 以後的一個位置 j = n + 1 的狀態記爲 $\top$,因而有

\begin{equation} \alpha_{0} (\bot | \vec x) = 1 \end{equation}

\begin{equation} \beta_{|\vec x| + 1}(\top | \vec x) = 1 \end{equation}

 有了上述信息,計算$f_i$的指望就能夠有效地實現了,根據(9)式,

條件機率$\sum_{{\vec y}' \in \mathcal T} p_{\vec {\lambda}}({\vec y}' | \vec x)$表示給定輸入$\vec x$的條件下,全部可能的輸出$\vec y$的條件機率之和,易知

$$\sum_{{\vec y}' \in \mathcal T} p_{\vec {\lambda}}({\vec y}' | \vec x) = \frac 1 {Z_{\vec {\lambda}}(\vec x)}  \sum_{s \in S}  \alpha_{j}(s | \vec x) \beta_{j}(s|\vec x) $$

代入(9)式得,

\begin{equation} \begin{aligned} E(f_i) & = \sum_{(\vec x, \vec y) \in \mathcal T} \frac 1 {Z_{\vec {\lambda}}(\vec x)}  \sum_{s \in S}  \alpha_{j}(s | \vec x) \beta_{j}(s|\vec x) \cdot \sum_{j=1}^n f_i({y_{j-1}}', {y_j}', \vec x, j)  \\ & =  \sum_{(\vec x, \vec y) \in \mathcal T} \frac 1 {Z_{\vec {\lambda}}(\vec x)} \sum_{j=1}^n \sum_{s \in S}   f_i({y_{j-1}}', {y_j}', \vec x, j) \alpha_{j}(s | \vec x) \beta_{j}(s|\vec x) \\ & = \sum_{(\vec x, \vec y) \in \mathcal T} \frac 1 {Z_{\vec {\lambda}}(\vec x)} \sum_{j=1}^n \sum_{s \in S} \sum_{s' \in T_{j}(s)} f_i((s, s', \vec x, j) \alpha_{j}(s | \vec x) \Psi_{j}(\vec x, s, s') \beta_{j+1}(s'|\vec x) \end{aligned} \end{equation}

上式計算過程能夠用下圖形象的表示出來

此外,歸一化因子能夠表示爲

$$Z_{\vec {\lambda}}(\vec x) = \beta_{0}(\bot | \vec x) $$

 因而解(10)式方程便可。

(未完待續,後面將持續統計學習相關的文章,鄙人也是邊學邊記錄)

ref

Classical Probabilistic Models and Conditional Random Fields

相關文章
相關標籤/搜索