提交 2e50a5fa 编写于 作者: C caoying03

fix bugs of several equations.

上级 82b0ec8d
......@@ -10,21 +10,20 @@ $$\mbox{[小明]}_{\mbox{Agent}}\mbox{[昨天]}_{\mbox{Time}}\mbox{在[公园]}_
通过这个例子可以看出,SRL是为了分析出句子描述的事件,以及事件的参与者(包括施事者、受事者)、事件发生的时间、地点和原因等。是许多自然语言理解任务, 如:信息抽取,篇章分析,深度问答等,的一个重要中间步骤。
传统的 SRL 系统大多建立在句法分析基础之上,通常包括多个步骤:构建一棵句法分析树;从句法树上识别出给定谓词的论元;最后,通过分类得到谓词和论元的语义角色标签等。然而,句法分析是一个非常困难的任务,目前技术下的句法分析准确率并不高,句法分析的细微错误都会导致语义角色标注的错误,进而极大地限制了 SRL 任务的准确率,这也是 SRL 任务面临的最主要挑战。
传统的 SRL 系统大多建立在句法分析基础之上,通常包括多个步骤:构建一棵句法分析树;从句法树上识别出给定谓词的论元;最后,通过分类得到谓词和论元的语义角色标签等。然而,句法分析是一个非常困难的任务,目前技术下的句法分析准确率并不高,句法分析的细微错误都会导致语义角色标注的错误,也限制了 SRL 任务的准确率。这是 SRL 任务面临的主要挑战。
为了回避无法获得准确率较高的结构树或依存结构树所造成的困难,研究提出了基于语块的语义角色标注方法,也是我们这篇文章所要介绍的方法。基于语块的语义角色标注方法将语义标注方法作为一个序列标注问题来解决,是一个相对简单的过程。一般采用 BIO 表示方式来定义序列标注的标签集,将不同的语块赋予不同的标签。即:对于一个角色为 A 的论元,将它所包含的第一个语块赋予标签 B-A,将它所包含的其它语块赋予标签 I-A,不属于任何论元的语块赋予标签 O。
为了回避 “无法获得准确率较高的句法树” 所造成的困难,研究提出了基于语块的 SRL 方法,也是我们这篇文章所要介绍的方法。基于语块的 SRL 方法将 SRL 作为一个序列标注问题来解决,是一个相对简单的过程。一般采用 BIO 表示方式来定义序列标注的标签集,将不同的语块赋予不同的标签。即:对于一个角色为 A 的论元,将它所包含的第一个语块赋予标签 B-A,将它所包含的其它语块赋予标签 I-A,不属于任何论元的语块赋予标签 O。
我们继续以上面的这句话为例,图1展示了 BIO 表示方法的执行过程,可以看到,根据序列标注的结果可以直接得到语义角色标注的结果,因此,论元识别和论元标注通常作为一个过程同时实现。
<div align="center">
<img src="image/bio_example.png" width = "90%" height = "90%" align=center />
<img src="image/bio_example.png" width = "90%" height = "90%" align=center /><br>
图1. BIO标注方法示例
</div>
<center>图1. BIO标注方法示例</center>
下面,我们以 [CoNLL-2004 and CoNLL-2005 Shared Tasks](http://www.cs.upc.edu/~srlconll/) 公共任务中 SRL 任务的公开数据集为例,实践下面的任务:
下面,我们以 [CoNLL-2004 and CoNLL-2005 Shared Tasks](http://www.cs.upc.edu/~srlconll/) 公共任务中 SRL 任务公开数据集为例,实践下面的任务:
给定谓词和一句话,通过序列标注的方式,从句子中找到谓词对应的论元,标注它们的语义角色。
给定谓词和一句话,通过序列标注的方式,从句子中找到谓词对应的论元,同时标注它们的语义角色。
在这个过程中,我们的目标是:只依赖输入文本序列,不依赖任何额外的语法解析结果或是复杂的人造特征,构建一个端到端学习的 SRL 系统。
......@@ -32,12 +31,12 @@ $$\mbox{[小明]}_{\mbox{Agent}}\mbox{[昨天]}_{\mbox{Time}}\mbox{在[公园]}_
循环神经网络(Recurrent Neural Network)是一种对序列建模的重要模型,在自然语言处理任务中有着广泛地应用。不同于传统的前馈神经网络(Feed-forward Neural Network),RNN 引入了循环,能够处理输入之间前后关联的问题。在语言中,由于句子前后单词并不是独立存在,标记句子中下一个词的语义角色,通常都依赖句子前面的词。很自然地,我们选择利用循环神经网络 “记忆历史” 的能力来构建我们的 SRL 系统。
在开始构建我们的序列标注模型之前,我们首先介绍三个重要的积木。
在开始最终的 SRL 模型之前,我们首先介绍三个重要的积木。
## 重要的积木
### 栈式循环神经网络(Stacked Recurrent Neural Network)
深度网络能够帮助我们学习层次化特征,网络的上层在下层已经学习到的初级特征基础上,学习更复杂的高级特征。
深度网络有助于形成层次化特征,网络的上层在下层已经学习到的初级特征基础上,学习更复杂的高级特征。
RNN 等价于一个展开地前向网络,于是,通常人们会认为 RNN 在时间轴上是一个真正的“深层网络”。然而,在循环神经网络中,对网络层数的定义并非如此直接。输入特征经过一次非线性映射,我们称之为神经网络的一层。按照这样的约定,可以看到,尽管 RNN 沿时间轴展开后等价于一个非常“深”的前馈网络,但由于 RNN 各个时间步参数共享,$t-1$ 时刻状态到 $t$ 时刻的映射,始终只经过了一次非线性映射,也就是说 :RNN 对状态转移的建模是 “浅” 的。
......@@ -53,72 +52,79 @@ RNN 等价于一个展开地前向网络,于是,通常人们会认为 RNN
### 条件随机场 (Conditional Random Field)
前层网络学习输入的特征表示,网络的最后一层在特征基础上,完成序列标注。条件随机场就是这样的一层,处于整个网络的末端。
前层网络学习输入的特征表示,网络的最后一层在特征基础上,完成 SRL 任务。条件随机场就是完成序列标注的一层,处于整个网络的末端。
条件随机场 (Conditional Random Filed, CRF)是一种概率化结构模型,可以看作是一个概率无向图模型(也叫作马尔科夫随机场),结点表示随机变量,边表示随机变量之间的概率依赖关系。
条件随机场 (Conditional Random Filed, CRF)是一种概率化结构模型,可以看作是一个无向图模型,或者马尔科夫随机场。
简单来讲,CRF 学习条件概率模型:$P(X|Y)$,其中 $X$ 是输入序列,$Y$ 是标记序列;解码过程是给定 $X$ 序列求解令 $P(Y|X)$ 最大的 $Y$ 序列,即:$Y^* = \mbox{arg max}_{Y} P(Y | X)$。
简单来讲,CRF 学习条件概率型:$P(X|Y)$,其中 $X = (x_1, x_2, ... , x_n)$ 是输入序列,$Y = y_1, y_2, ... , y_n$ 是标记序列;解码过程是给定 $X$ 序列求解令 $P(Y|X)$ 最大的 $Y$ 序列,即:$Y^* = \mbox{arg max}_{Y} P(Y | X)$。
我们首先来看一般的条件随机场是如何定义的。
我们首先来条件随机场是如何定义的。
**条件随机场** : 设 $G = (V, E)$ 是一个无向图, $V$ 是结点的集合,$E$ 是无向边的集合。$V$ 中的每个结点对应一个随机变量 $Y_{v}$, $Y = \{Y_{v} | v \in V\}$,其取值范围为可能的标记集合 $\{y\}$,如果以输入序列 $X$ 为条件,每个随机变量 $Y_{v}$ 都满足以下马尔科夫特性:
**条件随机场** : 设 $G = (V, E)$ 是一个无向图, $V$ 是结点的集合,$E$ 是无向边的集合。$V$ 中的每个结点对应一个随机变量 $Y_{v}$, $Y = \{Y_{v} | v \in V\}$,其取值范围为可能的标记集合 $\{y\}$,如果以随机变量 $X$ 为条件,每个随机变量 $Y_{v}$ 都满足以下马尔科夫特性:
$$p(Y_{v}|X, Y_{\omega}, \omega \not= v) = p(Y_{v} | X, Y_{\omega} , \omega \sim v)$$
其中,$\omega \sim v$ 表示两个结点在图 $G$ 中是临近结点,那么,$(X, Y)$ 是一个条件随机场。
CRF 用于序列标注由 Lafferty 等人 \[[4](#参考文献)\] 于2001年提出。 理论上,只要在标记序列中表示了一定的条件独立性, $G$ 的图结构可以是任意的。在序列标注任务中,只需要考虑 $X$ 和 $Y$ 具有相的,最简单的图结构:都是一个序列,于是建模一个序列可以形成如图2所示的一个简单的链式结构图。因此,序列标注问题使用的是一种定义在线性链上的特殊条件随机场,称之为线性链条件随机场(linear chain conditional random field)
上面的定义并没有对 $X$ 和 $Y$ 的结构给出更多约束,理论上来讲,只要标记序列表示了一定的条件独立性,$G$ 的图结构可以是任意的。对序列标注任务,我们只需要考虑 $X$ 和 $Y$ 都是一个序列,于是可以形成一个如图2所示的简单链式结构图。在图中,输入序列 $X$ 的元素之间并不存在图结构,因为我们只是将它作为条件,并不做任何条件独立假设
<div align="center">
<img src="./image/linear_chain_crf.png" width = "35%" height = "35%" align=center />
</div>
<p align="center">
<img src="./image/linear_chain_crf.png" width = "35%" height = "35%" align=center><br>
图2. $X$ 和 $Y$ 具有相同结构的线性链条件随机场
</p>
<center>图2. $X$ 和 $Y$ 具有相同结构的线性链条件随机场</center>
至此可以看到,序列标注问题使用的是以上这种定义在线性链上的特殊条件随机场,称之为线性链条件随机场(Linear Chain Conditional Random Field)。下面,我们给出线性链条件随机场的精确定义:
**线性链条件随机场** :设 $X = (X_{1}, X_{2}, ... , X_{n})$,$Y = (Y_{1}, Y_{2}, ... , Y_{n})$ 均为线性链表示的随机变量序列,若在给定随机变量序列 $X$ 的条件下,随机变量序列 $Y$ 的条件概率分布 $P(Y|X)$ 满足马尔科夫性:
**线性链条件随机场** :设 $X = (x_{1}, x_{2}, ... , x_{n})$,$Y = (y_{1}, y_{2}, ... , y_{n})$ 均为线性链表示的随机变量序列,若在给定随机变量序列 $X$ 的条件下,随机变量序列 $Y$ 的条件概率分布 $P(Y|X)$ 满足马尔科夫性:
$$p\left(Y_{i}|X, Y_{1}, ... , Y_{i - 1}, Y_{i + 1}, ... , Y_{n}\right) = p\left(Y_{i} | X, Y_{i - 1}, Y_{i + 1}\right)$$
$$p\left(Y_{i}|X, y_{1}, ... , y_{i - 1}, y_{i + 1}, ... , y_{n}\right) = p\left(y_{i} | X, y_{i - 1}, y_{i + 1}\right)$$
$$i = 1, 2, ..., n \mbox{(在} i = 1 \mbox{和} n \mbox{时只考虑单边)}$$
则称$P(Y|X)$为线性链条件随机场。$X$表示输入序列,$Y$ 表示对应标记序列。
则称$P(Y|X)$为线性链条件随机场。$X$表示输入序列,$Y$ 表示与之对应的标记序列。
根据线性链条件随机场上的因子分解定理 \[[5](#参考文献)\],在给定观测序列 $X$ 时,一个特定标记序列 $Y$ 的概率可以定义为:
$$p(Y | X) = \frac{1}{Z(X)} \text{exp}\sum_{i=1}^{n}\sum_{j}\left( \lambda_{j}t_{j} (y_{i - 1}, y_{i}, X, i) + \sum_{k} \mu_k s_k (y_i, X, i)\right)$$
$$p(Y | X) = \frac{1}{Z(X)} \text{exp}\left(\sum_{i=1}^{n}\left(\sum_{j}\lambda_{j}t_{j} (y_{i - 1}, y_{i}, X, i) + \sum_{k} \mu_k s_k (y_i, X, i)\right)\right)$$
其中:
$$Z(X) = \sum_{y \in Y} \text{exp}\left(\sum_{i = 1}^ {n}\sum_{k} \lambda_kt_k(y_{i-1}, y_i, x, i) + \sum_{i, l}\mu_l s_l (y_i, x, i)\right)$$
$$Z(X) = \sum_{y \in Y} \text{exp}\left(\sum_{i = 1}^ {n}\left(\sum_{j} \lambda_j t_j(y_{i-1}, y_i, X, i) + \sum_{k}\mu_k s_k (y_i, X, i)\right)\right)$$
是规范化因子。
上面的式子中 $t_j$ 是定义在边上的特征函数,依赖于当前和前一个位置,称为转移特征,表示对于观察序列 $X$ 及其标注序列在 $i$ 及 $i - 1$ 位置上标记的转移概率。$s_k$ 是定义在结点上的特征函数,称为状态特征,依赖于当前位置,表示对于观察序列 $X$ 及其 $i$ 位置的标记概率。$\lambda_j$ 和 $\mu_k$ 分别是转移特征函数和状态特征函数对应的权值。
上面的 $t_{j}$ 和 $s_{k}$ 都依赖于位置,是局部特征函数,为了描述的简洁性,可以将状态特征函数也写为
实际上 ,$t$ 和 $s$ 可以用相同的数学形式表示,$s$ 可以同样也写为以下形式
$$s(y_i, X, i) = s(y_{i - 1}, y_i, X, i)$$
的形式,然后对同一特征在不同位置求和,即:
假设有 $K_1$ 个转移特征,$K_2$ 个状态特征,定义特征函数 $f_k(y_{i-1}, y_{i}, X, i)$ :
$$f_{k}(y_{i-1}, y_{i}, X, i) = \left\{ \begin{aligned} t_j(y_{i - 1}, y_{i}, X, i), &&k= 1,2, ..., K_1\\ s_{l}(y_{i-1}, y_i, X, i) , && k = K_{1} + l; l= 1, 2, ..., K_2\end{aligned} \right. $$
$$f_{j}(y, x) = \sum_{i=1}^{n}f_j({y_{i - 1}, y_i, x, i})$$
再对转移特征和状态特在各个位置 $i$ 求和有:
$$f_{k}(Y, X) = \sum_{i=1}^{n}f_k({y_{i - 1}, y_i, X, i})$$
得到全局特征函数,于是 CRF 模型表示的条件概率 $P(Y|X)$ 可以简写为:
于是条件概率 $P(Y|X)$ 可以写为:
$$p(Y|X, \lambda) = \frac{1}{Z(X)}\text{exp}\sum_{j}\lambda_{j}f_{j}(y_{i - 1}, y_{i}, X, i)$$
$$p(Y|X, W) = \frac{1}{Z(X)}\text{exp}\sum_{k}\omega_{k}f_{k}(Y, X)$$
其中,$f$ 是特征函数,$\lambda$ 是特征函数对应的权值,是 CRF 模型要求解的参数。
$$Z_i(X) = \sum_{y_i \in Y} \text{exp} \sum_{k}\omega_k f_k (Y, X)$$
我们把 $f$ 统称为特征函数,$\omega$ 是权值,是 CRF 模型要求解的参数。
学习时,对于给定的输入序列和对应的标记序列的集合 $D = \left[(X_1, Y_1), (X_2 , Y_2) , ... , (X_N, Y_N)\right]$ ,通过正则化的极大似然估计,可以得到如下优化目标:
$$L(\lambda, D) = - \text{log}\left(\prod_{m=1}^{N}p(Y_m|X_m, \lambda)\right) + C \frac{1}{2}\lVert\lambda\rVert^{2}$$
$$L(\lambda, D) = - \text{log}\left(\prod_{m=1}^{N}p(Y_m|X_m, W)\right) + C \frac{1}{2}\lVert W\rVert^{2}$$
解码时,对于给定的输入序列 $X$,通过解码算法求令出条件概率$\bar{P}(Y|X)$最大的输出序列 $\bar{y}$。
## 深度双向 LSTM (DB-LSTM)SRL 模型
<div align="center">
<img src="image/db_lstm_network.png" width = "60%" height = "60%" align=center />
<img src="image/db_lstm_network.png" width = "60%" height = "60%" align=center /><br>
图3. SRL任务上的深度双向 LSTM 模型
</div>
<center> 图. SRL任务上的深度双向 LSTM 模型 </center>
# 数据准备
## 数据介绍与下载
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册