# 条件随机场概率计算

这里的概率计算问题指的是:

给定条件随机场$$P(Y|X)$$输入序列$$x$$和输出序列$$y$$, 计算条件概率$$P(Y\_i=y\_i|x)$$, $$P(Y\_{i-1}=y\_{i-1},Y\_i=y\_i|x)$$以及相应数学期望的问题.

## 前向后向算法

像HMM一样, 使用**前向-后向向量**, 递归地计算以上概率及期望值.

### 前向向量

对于每个位置$$i=0,1,2,\cdots,n+1$$, 定义**前向向量**$$\alpha\_i(x)$$, 注意这是一个向量, 长度为状态$$y\_i$$可以取的状态数量, 即$$m$$维向量, 每个向量定义为:

$$\alpha\_0(y\_0|x)= \begin{cases} 1,\ y\_0=start \ 0,\ else \end{cases}$$

$$\alpha\_i^T(y\_i|x)=\alpha\_{i-1}^T(y\_{i-1}|x)M\_i(y\_{i-1},y\_i|x),\ i=1,2,\cdots,n+1$$

对于初始情况, 定义$$\alpha\_0(y|x)$$向量在初始状态$$start$$位置上为1, 其他位置都为0.

$$\alpha\_0(y|x)$$表示在位置$$i$$上, 标记为$$y\_i$$并且到位置$$i$$之前的所有位置上为标记序列对应的前半部分状态的非规范化概率. 上式又可表示为:

$$\alpha\_{i}^T(x)=\alpha\_{i-1}^T(x)M\_i(x)$$

### 后向向量

对于每个位置$$i=0,1,2,\cdots,n+1$$, 定义**后向向量**$$\beta\_i(x)$$, 向量的长度与前向向量相同:

$$\beta\_{n+1}(y\_{n+1}|x)= \begin{cases} 1,\ y\_{n+1}=stop \ 0,\ else \end{cases}$$

$$\beta\_i(y\_i|x)=M\_{i+1}(y\_i,y\_{i+1}|x)\beta\_{i+1}(y\_{i+1}|x),\ i=0,2,\cdots,n$$

$$\beta\_i(y\_i|x)$$表示在位置$$i$$上标记为$$y\_i$$且从$$i+1$$到$$n$$的后部分标记序列对应的非规范化概率

### 概率计算

根据**前向-后向向量**的定义, 计算状态序列在位置$$i$$上标记$$y\_i$$的条件概率:

$$\begin{aligned} P(Y\_i=y\_i|x)=\frac{\alpha\_i^T(y\_i|x)\beta\_i(y\_i|x)}{Z(x)} \end{aligned}$$

在位置$$i-1$$和位置$$i$$标记$$y\_{i-1}$$和$$y\_i$$的条件概率:

$$\begin{aligned} P(Y\_{i-1}=y\_{i-1},Y\_i=y\_i|x)=\frac{\alpha\_{i-1}^T(y\_{i-1}|x)M\_i(y\_{i-1},y\_i|x)\beta\_i(y\_i|x)}{Z(x)} \end{aligned}$$

其中$$Z(x)=\alpha\_n^T(x)\cdot\textbf{1}=\textbf{1}^T\cdot\beta\_1(x)$$

### 期望计算

计算特征函数关于联合分布$$P(X,Y)$$和条件分布$$P(Y|X)$$的数学期望.

特征函数关于条件分布$$P(Y|X)$$的数学期望为:

$$\begin{aligned} E\_{P(Y|X)}\[f\_k] &= \sum\limits\_{y}P(y|x)f\_k(y,x) \ &= \sum\limits\_{i=1}^{n+1}\sum\limits\_{y\_{i-1}y\_i}f\_k(y\_{i-1},y\_{i},x,i)\frac{\alpha\_{i-1}^T(y\_{i-1}|x)M\_i(y\_{i-1},y\_i|x)\beta\_i(y\_i|x)}{Z(x)},\ k=1,2,\cdots,K \end{aligned}$$

另外, 假设经验分布为$$\tilde{P}(X)$$, 特征函数关于联合分布$$P(X,Y)$$的数学期望为:

$$\begin{aligned} E\_{P(X,Y)}\[f\_k] &= \sum\limits\_{x,y}P(x,y)\sum\limits\_{i=1}^{n+1}f\_k(y\_{i-1},y\_{i},x,i) \ &= \sum\limits\_{x}\tilde{P}(X)\sum\limits\_{y}P(y|x)\sum\limits\_{i=1}^{n+1}f\_k(y\_{i-1},y\_{i},x,i) \ &= \sum\limits\_{x}\tilde{P}(X)\sum\limits\_{i=1}^{n+1}\sum\limits\_{y\_{i-1}y\_i}f\_k(y\_{i-1},y\_{i},x,i)\frac{\alpha\_{i-1}^T(y\_{i-1}|x)M\_i(y\_{i-1},y\_i|x)\beta\_i(y\_i|x)}{Z(x)},\ k=1,2,\cdots,K \end{aligned}$$

对于给定的观测序列$$x$$和状态序列$$y$$, 可以通过一次前向扫描计算$$\alpha\_{i}$$和$$Z(x)$$, 一次后向扫描计算$$\beta\_i$$, 从而得到所有概率和特征的期望.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kerasnoone.gitbook.io/garnet/ji-qi-xue-xi/gai-shuai-tu-mo-xing/pan-bie-shi-mo-xing/crf/tiao-jian-sui-ji-chang-gai-shuai-ji-suan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
