Commit 421b39a3 by xiaotong

wording and layout

parent 42a13bd3
......@@ -8,9 +8,9 @@
\node[anchor=west,hide](yn-1)at([xshift=2em]dots.east){$y_{n-1}$};
\node[anchor=west,hide](yn)at([xshift=2em]yn-1.east){$y_n$};
\node[anchor=north,draw,line width=1pt,inner sep=2pt,fill=red!30,minimum height=2em,minimum width=12em](see)at ([yshift=-3em,xshift=2em]y3.south){$X=x_1,x_2,\ldots,x_{n-1},x_n$};
\node[anchor=south,font=\footnotesize] at ([yshift=1em,xshift=2em]y3.north){(待预测的隐藏状态序列)};
\node[anchor=north,font=\footnotesize] at ([yshift=-1em]see.south){(可见状态序列)};
\node[anchor=north,draw,line width=1pt,inner sep=2pt,fill=red!30,minimum height=2em,minimum width=12em](see)at ([yshift=-3em,xshift=2em]y3.south){$X=(x_1,x_2,\ldots,x_{n-1},x_n)$};
\node[anchor=south,font=\footnotesize] at ([yshift=1em,xshift=2em]y3.north){待预测的隐藏状态序列};
\node[anchor=north,font=\footnotesize] at ([yshift=-1em]see.south){可见状态序列};
\draw[line width=1pt] (y1.east) -- (y2.west);
\draw[line width=1pt] (y2.east) -- (y3.west);
......
\begin{tikzpicture}
\tikzstyle{unit} = [draw,minimum size=1em,circle]
\node[unit,fill=green!20] (g1) at (0,0){};
\node[anchor=west,unit,fill=green!20] (g2)at([xshift=1.8em]g1.east){};
\node[anchor=west,unit,fill=green!20] (g3)at([xshift=1.8em]g2.east){};
\node[anchor=west,unit,fill=green!20] (g4)at([xshift=1.8em]g3.east){};
\node[unit,fill=ugreen!20] (g1) at (0,0){};
\node[anchor=west,unit,fill=ugreen!20] (g2)at([xshift=1.8em]g1.east){};
\node[anchor=west,unit,fill=ugreen!20] (g3)at([xshift=1.8em]g2.east){};
\node[anchor=west,unit,fill=ugreen!20] (g4)at([xshift=1.8em]g3.east){};
\node[anchor=north,unit,fill=red!30] (r1)at([yshift=-4em]g1.south){};
\node[anchor=north,unit,fill=red!30] (r2)at([yshift=-4em]g2.south){};
......@@ -12,15 +12,15 @@
\node[anchor=north,unit,fill=red!30] (r4)at([yshift=-4em]g4.south){};
\begin{pgfonlayer}{background}
\node [draw=green!20,rectangle,inner sep=2pt,rounded corners=4pt,dashed,line width=1.5pt] [fit = (g1)(g2)(g3)(g4)] (box1) {};
\node [draw=red!30,rectangle,inner sep=2pt,rounded corners=4pt,dashed,line width=1.5pt] [fit = (r1)(r2)(r3)(r4)] (box2) {};
\node [draw=ugreen!70,rectangle,inner sep=2pt,rounded corners=4pt,dashed,line width=1.0pt] [fit = (g1)(g2)(g3)(g4)] (box1) {};
\node [draw=red!70,rectangle,inner sep=2pt,rounded corners=4pt,dashed,line width=1.0pt] [fit = (r1)(r2)(r3)(r4)] (box2) {};
\end{pgfonlayer}
\node[anchor=north,draw,inner sep=2pt,rounded corners=2pt,fill=blue!30,minimum width=6em](cla) at ([yshift=-1em]box1.south){分类器};
\node[anchor=south,font=\scriptsize] at ([yshift=0.4em,xshift=1.4em]g2.north){(待预测标签)};
\node[anchor=north,font=\scriptsize] at ([yshift=-0.4em,xshift=1.4em]r2.south){(待标注标签)};
\node[anchor=south,font=\scriptsize] at ([yshift=0.4em,xshift=1.4em]g2.north){待预测标签序列};
\node[anchor=north,font=\scriptsize] at ([yshift=-0.4em,xshift=1.4em]r2.south){观测序列};
\draw[->,thick] (cla.north) -- (box1.south);
\draw[->,thick] (box2.north) -- (cla.south);
......
\begin{tikzpicture}
\tikzstyle{unit} = [draw,minimum size=1em,circle]
\node[unit,fill=green!20] (g1) at (0,0){};
\node[anchor=west,unit,fill=green!20] (g2)at([xshift=1.8em]g1.east){};
\node[anchor=west,unit,fill=green!20] (g3)at([xshift=1.8em]g2.east){};
\node[anchor=west,unit,fill=green!20] (g4)at([xshift=1.8em]g3.east){};
\node[unit,fill=ugreen!20] (g1) at (0,0){};
\node[anchor=west,unit,fill=ugreen!20] (g2)at([xshift=1.8em]g1.east){};
\node[anchor=west,unit,fill=ugreen!20] (g3)at([xshift=1.8em]g2.east){};
\node[anchor=west,unit,fill=ugreen!20] (g4)at([xshift=1.8em]g3.east){};
\node[anchor=north,unit,fill=red!30] (r1)at([yshift=-1.8em,xshift=1.4em]g2.south){};
\node[anchor=south,font=\scriptsize] at ([yshift=0.4em,xshift=1.4em]g2.north){(待预测标签)};
\node[anchor=north,font=\scriptsize] at ([yshift=-0.4em]r1.south){(待标注标签)};
\node[anchor=south,font=\scriptsize] at ([yshift=0.4em,xshift=1.4em]g2.north){待预测标签序列};
\node[anchor=north,font=\scriptsize] at ([yshift=-0.4em]r1.south){观测序列};
\draw[-,thick] (g1.east) -- (g2.west);
\draw[-,thick] (g2.east) -- (g3.west);
......
\begin{tikzpicture}
\tikzstyle{unit} = [draw,minimum size=1em,circle]
\node[unit,fill=green!2] (g1) at (0,0){};
\node[anchor=west,unit,fill=green!20] (g2)at([xshift=1.8em]g1.east){};
\node[anchor=west,unit,fill=green!20] (g3)at([xshift=1.8em]g2.east){};
\node[anchor=west,unit,fill=green!20] (g4)at([xshift=1.8em]g3.east){};
\node[unit,fill=ugreen!20] (g1) at (0,0){};
\node[anchor=west,unit,fill=ugreen!20] (g2)at([xshift=1.8em]g1.east){};
\node[anchor=west,unit,fill=ugreen!20] (g3)at([xshift=1.8em]g2.east){};
\node[anchor=west,unit,fill=ugreen!20] (g4)at([xshift=1.8em]g3.east){};
\node[anchor=north,unit,fill=red!30] (r1)at([yshift=-1.8em]g1.south){};
\node[anchor=north,unit,fill=red!30] (r2)at([yshift=-1.8em]g2.south){};
\node[anchor=north,unit,fill=red!30] (r3)at([yshift=-1.8em]g3.south){};
\node[anchor=north,unit,fill=red!30] (r4)at([yshift=-1.8em]g4.south){};
\node[anchor=south,font=\scriptsize] at ([yshift=0.4em,xshift=1.4em]g2.north){(待预测标签)};
\node[anchor=north,font=\scriptsize] at ([yshift=-0.4em,xshift=1.4em]r2.south){(待标注标签)};
\node[anchor=south,font=\scriptsize] at ([yshift=0.4em,xshift=1.4em]g2.north){待预测标签序列};
\node[anchor=north,font=\scriptsize] at ([yshift=-0.4em,xshift=1.4em]r2.south){观测序列};
\draw[->,thick] (g1.east) -- (g2.west);
\draw[->,thick] (g2.east) -- (g3.west);
......
......@@ -324,7 +324,9 @@ $计算这种切分的概率值。
\subsubsection{2. 经典概率图模型}
\vspace{0.5em}
\noindent a) {\small\bfnew{隐马尔可夫模型}}
\vspace{0.5em}
\parinterval 隐马尔可夫模型是一种经典的序列模型\upcite{Baum1966Statistical,baum1970maximization}。它在语音识别、自然语言处理的很多领域得到了广泛的应用。隐马尔可夫模型的本质概率化的马尔可夫过程,这个过程隐含着状态间转移和可见状态生成的概率。
......@@ -345,7 +347,7 @@ $计算这种切分的概率值。
\parinterval 由于隐含状态序列之间存在转移概率,并且隐马尔可夫模型中隐含状态和可见状态之间存在着发射概率,因此根据可见状态的转移猜测隐藏状态序列并非无迹可循。图\ref{fig:3.3-3}描述了如何使用隐马尔可夫模型根据``抛硬币''结果推测挑选的硬币序列。可见,通过隐藏状态之间的联系(绿色方框及它们之间的连线)可以对有序的状态进行描述,进而得到隐藏状态序列所对应的可见状态序列(红色圆圈)。
\parinterval 从统计建模的角度看,上述过程本质上在描述隐含状态和可见状态出现的联合概率。这里,用$\mathbf{X}=\{x_1,...,x_m\}$表示可见状态序列,用$\mathbf{Y}=\{y_1,...,y_m\}$表示隐藏状态序列。(一阶)隐马尔可夫模型假设:
\parinterval 从统计建模的角度看,上述过程本质上在描述隐含状态和可见状态出现的联合概率。这里,用$\mathbf{X}=(x_1,...,x_m)$表示可见状态序列,用$\mathbf{Y}=(y_1,...,y_m)$表示隐藏状态序列。(一阶)隐马尔可夫模型假设:
\begin{itemize}
\vspace{0.5em}
......@@ -360,7 +362,7 @@ $计算这种切分的概率值。
\begin{eqnarray}
\funp{P}(\mathbf{X},\mathbf{Y}) & = & \funp{P}(\mathbf{X}|\mathbf{Y})\funp{P}(\mathbf{Y}) \nonumber \\
& = & \funp{P}(x_1,...,x_m|y_1,...,y_m) \funp{P}(y_1,...,y_m) \nonumber \\
& = & \prod_{i=1}^{m} \funp{P}(x_i|y_1,...,y_m) \prod_{i=1}^{m} \funp{P}(y_i | y_{i-1}) \nonumber \\
& = & \prod_{i=1}^{m} \funp{P}(x_i|x_1,...,x_{i-1},y_1,...,y_m) \prod_{i=1}^{m} \funp{P}(y_i | y_{i-1}) \nonumber \\
& = & \prod_{i=1}^{m} \funp{P}(x_i|y_i) \prod_{i=1}^{m} \funp{P}(y_i | y_{i-1}) \nonumber \\
& = & \prod_{i=1}^{m} \funp{P}(x_i|y_i) \funp{P}(y_i | y_{i-1}) \label{eq:joint-prob-xy}
\end{eqnarray}
......@@ -418,11 +420,11 @@ $计算这种切分的概率值。
\parinterval 根据贝叶斯定理,该概率被分解为$\funp{P}(\mathbf{Y}|\mathbf{X})=\frac{\funp{P}(\mathbf{X},\mathbf{Y})}{\funp{P}(\mathbf{X})}$,其中$\funp{P}(\mathbf{X})$是固定概率,因为$\mathbf{X}$在这个过程中是确定的不变量。因此只需考虑如何求解分子,即将求条件概率$\funp{P}(\mathbf{Y}|\mathbf{X})$的问题转化为求联合概率$\funp{P}(\mathbf{Y},\mathbf{X})$的问题:
\begin{eqnarray}
\hat{\mathbf{Y}} = \arg\max_{\mathbf{Y}}\funp{P}(\mathbf{X},\mathbf{Y})
\hat{\mathbf{Y}} = \arg\max_{\mathbf{Y}}\funp{P}(\mathbf{X},\mathbf{Y}) \label{eq:markov-sequence-argmax}
\label{eq:3.3-4}
\end{eqnarray}
\parinterval 将式\ref{eq:joint-prob-xy}带入上式可以得到最终计算公式,如下:
\parinterval 将式\ref{eq:joint-prob-xy}带入\ref{eq:markov-sequence-argmax}可以得到最终计算公式,如下:
\begin{eqnarray}
\hat{\mathbf{Y}} = \arg\max_{\mathbf{Y}}\prod_{i=1}^{m}\funp{P}(x_i|y_i)\funp{P}(y_i|y_{i-1})
......@@ -440,19 +442,20 @@ $计算这种切分的概率值。
\end{figure}
%-------------------------------------------
\vspace{0.5em}
\noindent b) {\small\bfnew{条件随机场}}
\vspace{0.5em}
\parinterval 隐马尔可夫模型有一个很强的假设:一个隐藏状态出现的概率仅由上一个隐藏状态决定。这个假设也会带来一些问题。举一个例子:在某个隐马尔可夫模型中,隐藏状态集合为\{A, B, C, D\},可见状态集合为\{T, F\}。其中隐藏状态A可能的后继隐藏状态集合为\{A, B\},隐藏状态B可能的后继隐藏状态集合为\{A, B, C, D\},于是有:
\parinterval 在隐马尔可夫模型中隐藏着这样的假设:某隐藏状态的概率仅由上一个隐藏状态决定。这个假设也会带来一些问题。举一个例子:在某个隐马尔可夫模型中,隐藏状态集合为{A、B、C、D},可见状态集合为{T、F},待预测的可见序列为T F F T。其中隐藏状态A可能的后继隐藏状态集合为{A、B},隐藏状态B可能的后继隐藏状态集合为{A、B、C、D},于是有:
\begin{eqnarray}
\funp{P}({\rm A}|{\rm A})+\funp{P}({\rm A}|{\rm B})=1
\label{eq:3.3-6}
\end{eqnarray}
\begin{eqnarray}
\funp{P}({\rm A}|{\rm B})+\funp{P}({\rm B}|{\rm B})+\funp{P}({\rm C}|{\rm B})+\funp{P}({\rm D}|{\rm B})=1
\label{eq:3.3-7}
\funp{P}({\rm A}|{\rm A})+\funp{P}({\rm A}|{\rm B}) & = & 1 \label{eq:3.3-6} \\
\funp{P}({\rm A}|{\rm B})+\funp{P}({\rm B}|{\rm B})+\funp{P}({\rm C}|{\rm B})+\funp{P}({\rm D}|{\rm B}) & = & 1 \label{eq:3.3-7}
\end{eqnarray}
\parinterval 其中,$\funp{P}(y|x)$表示由状态$x$转移到状态$y$的概率。由于式\ref{eq:3.3-6}中的分式数量少于式\ref{eq:3.3-7},这就导致在统计中获得的$\funp{P}({\rm A}|{\rm A})$$\funp{P}({\rm A}|{\rm B})$的值很可能会比$\funp{P}({\rm A}|{\rm B})$$\funp{P}({\rm B}|{\rm B})$$\funp{P}({\rm C}|{\rm B})$$\funp{P}({\rm D}|{\rm B})$要大。如图\ref{fig:3.3-5}所示,假设初始隐藏状态是A,图中线上的概率值是对应的转移概率与发射概率的乘积,比如图中隐藏状态A开始,下一个隐藏状态是A且可见状态是F的概率是0.45,下一个隐藏状态是B且可见状态是F的概率是0.55。图中可以看出,由于有较大的值,当可见状态序列为T F F T时,隐马尔可夫计算出的最有可能的隐藏状态序列为A A A A。但是如果对训练集进行统计可能会发现,当可见序列为T F F T 时,对应的隐藏状态是A A A A的概率可能是比较大的,但也可能是比较小的。这个例子中出现预测偏差的主要原因是:由于比其他状态转移概率要大得多,隐藏状态的预测一直停留在状态A。
\noindent 其中,$\funp{P}(b|a)$表示由状态$a$转移到状态$b$的概率。由于式\ref{eq:3.3-6}中的分式数量少于式\ref{eq:3.3-7},这就导致在统计中获得的$\funp{P}({\rm A}|{\rm A})$$\funp{P}({\rm A}|{\rm B})$的值很可能会比$\funp{P}({\rm A}|{\rm B})$$\funp{P}({\rm B}|{\rm B})$$\funp{P}({\rm C}|{\rm B})$$\funp{P}({\rm D}|{\rm B})$要大。
\parinterval\ref{fig:3.3-5}展示了一个具体的例子。有一个可见状态序列T F F T,假设初始隐藏状态是A,图中线上的概率值是对应的转移概率与发射概率的乘积,比如图中隐藏状态A开始,下一个隐藏状态是A 且可见状态是F 的概率是0.45,下一个隐藏状态是B 且可见状态是F的概率是0.55。图中可以看出,由于有较大的值,当可见状态序列为T F F T时,隐马尔可夫计算出的最有可能的隐藏状态序列为A A A A。但是如果对训练集进行统计可能会发现,当可见序列为T F F T 时,对应的隐藏状态是A A A A的概率可能是比较大的,但也可能是比较小的。这个例子中出现预测偏差的主要原因是:由于比其他状态转移概率要大得多,隐藏状态的预测一直停留在状态A。
%----------------------------------------------
\begin{figure}[htp]
......@@ -465,27 +468,27 @@ $计算这种切分的概率值。
\parinterval 上述现象也被称作{\small\bfnew{标注偏置}}\index{标注偏置}(Label Bias)\index{Label Bias}。条件随机场模型在隐马尔可夫模型的基础上,解决了这个问题\upcite{lafferty2001conditional}。在条件随机场模型中,以全局范围的统计归一化代替了隐马尔可夫模型中的局部归一化。除此之外,条件随机场模型中并非使用概率计算而是特征函数的方式对可见状态序列$\mathbf{X}$对应的隐藏状态序列$\mathbf{Y}$的概率进行计算。
\parinterval 条件随机场中一般有若干个特征函数,都是经过设计的、能够反映序列规律的一些二元函数\footnote{二元函数的函数值一般非1即0},并且每个特征函数都有其对应的权重$\lambda$。特征函数一般由两部分组成:能够反映隐藏序列之间转移规则的转移特征$\textbf{t}(y_{i-1},y_i,\mathbf{X},i)$和状态特征$\textbf{s}(y_i,\mathbf{X},i)$。其中$y_i$$y_{i-1}$分别是位置$i$和前一个位置的隐藏状态,$\mathbf{X}$则是可见状态序列。转移特征$\textbf{t}(y_{i-1},y_i,\mathbf{X},i)$反映了两个相邻的隐藏状态之间的转换关系,而状态特征$\textbf{s}(y_i,\mathbf{X},i)$则反映了第$i$个可见状态应该对应什么样的隐藏状态。这两部分共同组成了一个特征函数$F(y_{i-1},y_i,\mathbf{X})$,即
\parinterval 条件随机场中一般有若干个特征函数,都是经过设计的、能够反映序列规律的一些二元函数\footnote{二元函数的函数值一般非1即0},并且每个特征函数都有其对应的权重$\lambda$。特征函数一般由两部分组成:能够反映隐藏序列之间转移规则的转移特征$t(y_{i-1},y_i,\mathbf{X},i)$和状态特征$s(y_i,\mathbf{X},i)$。其中$y_i$$y_{i-1}$分别是位置$i$和前一个位置的隐藏状态,$\mathbf{X}$则是可见状态序列。转移特征$t(y_{i-1},y_i,\mathbf{X},i)$反映了两个相邻的隐藏状态之间的转换关系,而状态特征$s(y_i,\mathbf{X},i)$则反映了第$i$个可见状态应该对应什么样的隐藏状态。这两部分共同组成了一个特征函数$F(y_{i-1},y_i,\mathbf{X})$,即
\begin{eqnarray}
F(y_{i-1},y_i,\mathbf{X})=\textbf{t}(y_{i-1},y_i,\mathbf{X},i)+\textbf{s}(y_i,\mathbf{X},i)
F(y_{i-1},y_i,\mathbf{X}) & = & t(y_{i-1},y_i,\mathbf{X},i)+s(y_i,\mathbf{X},i)
\label{eq:3.3-8}
\end{eqnarray}
\parinterval 实际上,基于特征函数的方法更像是对隐藏状态序列的一种打分:根据人为设计的规则(特征函数),测试隐藏状态之间的转换以及隐藏状态与可见状态之间的对应关系是否符合这种规则。在处理序列问题时,假设可见状态序列$\mathbf{X}$的长度和待预测隐藏状态序列$\mathbf{Y}$的长度均为$I$,且共设计了$k$个特征函数,则有:
\parinterval 实际上,基于特征函数的方法更像是对隐藏状态序列的一种打分:根据人为设计的模板(特征函数),测试隐藏状态之间的转换以及隐藏状态与可见状态之间的对应关系是否符合这种模板。在处理序列问题时,假设可见状态序列$\mathbf{X}$的长度和待预测隐藏状态序列$\mathbf{Y}$的长度均为$m$,且共设计了$k$个特征函数,则有:
\begin{eqnarray}
\funp{P}(Y|X)=\frac{1}{Z(X)}\exp(\sum_i^I\sum_k\lambda_kF_k(y_{i-1},y_i,x,i))
\funp{P}(\mathbf{Y}|\mathbf{X}) & = & \frac{1}{Z(\mathbf{X})}\exp(\sum_{i=1}^m\sum_{j=1}^{k}\lambda_{j}F_{j}(y_{i-1},y_i,x,i))
\label{eq:3.3-9}
\end{eqnarray}
\parinterval 公式\ref{eq:3.3-9}中的$Z(X)$即为上面提到的实现全局统计归一化的归一化因子,其计算方式为:
\begin{eqnarray}
Z(X)=\sum_y\exp(\sum_i^I\sum_k\lambda_kF_k(y_{i-1},y_i,x,i))
Z(\mathbf{X})=\sum_{\mathbf{Y}}\exp(\sum_{i=1}^m\sum_{j=1}^k\lambda_{j}F_{j}(y_{i-1},y_i,x,i))
\label{eq:3.3-10}
\end{eqnarray}
\parinterval 由公式\ref{eq:3.3-10}可以看出,归一化因子的求解依赖于整个可见状态序列和每个位置的隐藏状态条件随机场模型中的归一化是一种全局范围的归一化方式。图\ref{fig:3.3-6}为条件随机场模型处理序列问题的示意图。
\parinterval 由公式\ref{eq:3.3-10}可以看出,归一化因子的求解依赖于整个可见状态序列和每个位置的隐藏状态,因此条件随机场模型中的归一化是一种全局范围的归一化方式。图\ref{fig:3.3-6}为条件随机场模型处理序列问题的示意图。
%----------------------------------------------
\begin{figure}[htp]
......@@ -496,6 +499,7 @@ Z(X)=\sum_y\exp(\sum_i^I\sum_k\lambda_kF_k(y_{i-1},y_i,x,i))
\end{figure}
%-------------------------------------------
\parinterval 虽然,式\ref{eq:3.3-9}和式\ref{eq:3.3-10}的表述相较于隐马尔可夫模型更加复杂,但是其实现有非常高效的方式。比如,可以使用动态规划方法完成整个条件随机场模型的计算,具体方法读者可以参看参考文献\upcite{lafferty2001conditional}
\parinterval 条件随机场模型处理命名实体识别任务时,可见状态序列对应着文本内容,隐藏状态序列对应着待预测的标签。对于命名实体识别任务,需要单独设计若干适合命名实体识别任务的特征函数。例如在使用BIOES标准标注命名实体识别任务时,标签``B-ORG''\footnote{表示机构实体名的开始标签}后面的标签必然是``I-ORG''或是``E-ORG'',而绝不可能是``O'',针此规则可以设计相应特征函数。
......@@ -511,7 +515,7 @@ Z(X)=\sum_y\exp(\sum_i^I\sum_k\lambda_kF_k(y_{i-1},y_i,x,i))
\begin{figure}[htp]
\centering
\begin{tabular}{l l l}
\subfigure[HMM处理序列标注]{\input{./Chapter3/Figures/figure-process-sequence-labeling-by-hmm}} & \subfigure[CRF处理序列标注]{\input{./Chapter3/Figures/figure-process-sequence-labeling-by-crf}} & \subfigure[分类算法处理序列标注]{\input{./Chapter3/Figures/figure-process-sequence-labeling-by-classfication}}
\subfigure[HMM处理序列标注]{\input{./Chapter3/Figures/figure-process-sequence-labeling-by-hmm}} & \subfigure[CRF处理序列标注]{\input{./Chapter3/Figures/figure-process-sequence-labeling-by-crf}} & \subfigure[分类模型处理序列标注]{\input{./Chapter3/Figures/figure-process-sequence-labeling-by-classfication}}
\end{tabular}
\caption{HMM、CRF、分类算法三种方法对比}
\label{fig:3.3-7}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论