【李宏毅-深度学习】Structured Learning: Sequence Labeling


[TOC]

Sequence Labeling

序列标注问题,输入一个Sequence,对应在其每个position输出一个class。

如上,RNN可以做这个问题。但是我们今天的方法与 RNN 有差别,具体差别将在下面讲述。

POS tagging

今天以 POS tagging 为例,在英文上,这个问题甚至算是一个已经被解决的问题。

Outline

  • Hidden Markov Model (HMM)
  • Conditional Random Field (CRF)
  • Structured Perceptron / SVM
  • Towards Deep Learning

Hidden Markov Model (HMM)


我们人类怎么产生一个句子呢?首先,在心中产生一个文法,接着匹配单词。这是 HMM 的假设

我们假设,我们脑中的文法,是马尔可夫链(Markov Chain)构成的。我们的某个文法,有自己出现的概率。这是第一步。

接着,第二步,我们衡量各个单词在词义上的出现概率。

最终,我们由条件概率公式,得到$P(x,y)$。

总结一下,第一步是计算 Transition probability ,第二步是计算 Emission probability

Estimating the probabilities


HMM是基于计数的,依赖于我们的training data。我们由训练数据得到各个概率。

How to do POS Tagging?


如上, x 是给定的,我们找出最可能的 y 即可。上面也说明了Hidden Markov Model名字的由来。

但是,我们找 y 的过程,需要穷举 y 吗?可以使用 Viterbi Algorithm

Drawbacks


HMM 存在哪些问题呢?如上,尽管我们通过数据训练得到了两种 probability 的数据,并且也得出$y_1$最有可能是$V$的结论。

但是,$N: D: a$这个序列其实是实实在在出现过的数据,而我们实际使用时,遇到了$N: : a$却无法把$D$填在其中。

因此,HMM 会“脑补”一些序列。这件事有好有坏:

  • 可以弥补 training data 的不足;
  • 但是容易出现如上的问题。

或许我们可以建立更复杂的模型弥补缺点;但是,我们还可以使用 CRF ,并且不用建立更复杂的模型。

Conditional Random Field (CRF)


其假设,$P(x,y)$与$exp(w \cdot \phi(x,y))$成正比。可以做出变换如上。

其实,CRF 与 HMM 的区别并不大。

上述 $P(x) = \sum_{y’}P(x,y’)$ 使用的是全概率公式计算的。

P(x, y) for CRF


在 HMM 中,对 P(x, y) 取 log 。

如上,把最后一项做一个转换。为什么可以做这个转换呢?我们下面举一个直观的例子。

如上,李老师举了一个很直观的例子(其实最后,前面的求和符号应该去掉)。

我们对所有的项都做这个转换。

这样我们就相当于对两个向量求了内积。这样,HMM 与 CRF 其实就是一回事了。

可以说,HMM是CRF的一种特殊的情况,CRF的w并不做任何限制,是一个需要通过训练得到的vector,而HMM是限制w的取值之后得到的结果。

如上,我们在训练时,w是可正可负的,如果 w 是大于 0 的话,那由$P = e^w$转换,得到的$P$大于 1 ,则很奇怪。

因此,我们在 CRF 中,不做等号,而作“正比”关系。

Feature Vector——$\phi(x,y)$


如上,特征向量可分为两部分:

  • 第一部分,是 tag 与 word 间的关系,并且维度是二者维度的乘积;

  • 第二部分,是 tag 与 tag 之间的关系,要注意,要带上 Start 与 End 的向量。
  • 此外,你还可以在 CRF 中自己定义Feature Vector。

Training Criterion


有些像交叉熵,最大化我们见过的序列对,最小化我们没见过的序列对。

使用梯度上升即可。

Training


经过一些运算,得到一个具有物理含义的微分式子:

  • 出现次数越多,对应地 w 越大;
  • 如果 s 与 t 出现在任意其他对中出现的次数也很大,那则应该把 w 减小。
  • 二者有 trade-off ;
  • 无需穷举$y’$ ,可以用 Viterbi Algorithm 来求解。


有特征向量定义,得到最终更新式如上。

CRF v.s. HMM


如上,HMM 并不减少没出现过的项的几率。还是之前的例子,CRF 更倾向于通过历史数据调整概率值

Synthetic Data


如上,是一个对比 CRF 与 HMM 的实验。

如上,横纵轴代表 HMM 与 CRF 犯错的百分比。当 α < 1 2 \alpha < \frac{1}{2}α<21​ 时,CRF 的结果更好。

Structured Perceptron / SVM

Structured Perceptron


其在本文题的建模如上。

Structured Perceptron v.s. CRF


如上,Structured Perceptron 其实与 CRF 的更新式很像。

Structured SVM


如上,Structured SVM 中的特别之处就是,要考虑 error 这件事情。

如上,我们不再是找 a r g max ⁡ y [ w ⋅ ϕ ( x n , y ) ] arg \max_y [w\cdot \phi(x^n,y)]argmaxy​[wϕ(x**n,y)] ,而是带上了 Δ ( y ^ n , y ) \Delta (\hat{y}^n,y)Δ(y^​n,y) 。如果我们使用如上方式建模,定义 Δ ( y ^ n , y ) \Delta (\hat{y}^n,y)Δ(y^​n,y) ,可以求解,否则,不一定能求解。

Performance of Different Approaches


如上,Structured SVM 是表现最好的。

How about RNN?


如上,RNN的缺点是,没有考虑整个序列。但是双向的 RNN 可能会弥补这个缺点。

此外,我们可以把 label 的关系考虑进去,比如一定不考虑“声母接声母”。

但是,RNN 可以 Deep ,因此最终是 RNN 最强。

Integrated together⭐

我们可以将二者结合。

如上,我们用深度神经网络来计算 $P(x|y)$ ,再赋给结构化学习。我们做了一个小小的改变: $P(x|y) = \frac {P(y|x)P(x)} {P(y)}$,并且不管$P(x)$。


此外,在 Semantic Tagging 中,二者结合也十分常见。

Concluding Remarks


文章作者: CarlYoung
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CarlYoung !
  目录