Sequence Labeling(序列标注问题),可以用RNN解决,也可以用Structured Learning(two steps,three problems)解决
常见问题:
- POS tagging(标记句子中每个词的词性):
如:John saw the saw–>PN V D N
Hidden Markov Model(HMM)
问题引入
- 生成一个句子的两个步骤:
- Step1:
- 基于语法,生成一个POS sequence(词性标注序列)
- Step2:
- POS sequence 转变为 word sequence
- 图示如下:
详细步骤如下:
Step1:根据脑中的文法,生成一个Markov Chain。
Step2:
- Step1:
HMM是什么
HMM的定义:Estimating the probabilities
描述我们是如何说出一句话的,即描述根据POS tagging sequence说出word sequence的几率。也就是下图x和y同时出现的几率,因此这里涉及到两个概率:P(y)和P(x|y)
HMM的两个概率:
我们可以得到下面的详细公式,P(y)代表的是Transition probability(转换概率),P(x|y)代表的是Emission probability(输出概率)。
那么我们应该如何得到上面两个概率呢?我们可以通过Training data获取上面两个概率:
如何处理POS Tagging:
任务:给定一个句子x,找出词性y,其实就是要计算出P(x,y)。
思路:
步骤:
穷举所有的y,判断哪个P(x,y)最大。穷举所有的y,可能会很大,因此我们用到了Viterbi algorithm
HMM- Summary:
HMM也是Structured Learning的一种方法,因此我们要回答下述问题:
HMM-Drawbacks:
- 在做Inference时,我们希望让(x,y head)> (x,y),但是HMM可以做到这件事情吗?我们发现,HMM并没有保证让P(x,y head)>P(x,y)一定成立。
案例如下:
这时候,已知了yl-1 = N,xl = a,则我们得到yl = V的概率是0.9*0.5 = 0.45与,yl = D的概率是0.1*1 = 0.1,通过概率计算,我们知道yl = V的概率比较大。
- 然而,如果今天N->V->c在training data中出现9次,P->V->a在training data中出现9次,N->D->a在training data中出现1次。那么,按照结构图来说(N->?->a),?应该为D。
- 而概率计算却告诉我们,应该为N->V->a
HMM优缺点分析:
缺点:从未在training data中出现的(x,y),甚至比在training data中出现过的(x,y)概率更高;
优点:但training data比较少的时候。
缺点解决方法:更加复杂的模型可以解决这个问题。
Conditional Random Field(CRF)
CRF引入
P(x,y)∝exp(w·Φ(x,y))
- Φ(x,y)是一个feature vector
- w是一个weight vector,它可以从training data中得到
- exp(w·Φ(x,y))是一个正值,它有可能大于1
我们可以根据这个正比公式做推导:
那么CRF和HMM有什么区别呢?
1. 在HMM中,我们可以得到以下推导:
- 在CRF中,我们可以得到以下推导,N这一项,代表的是s,t在(x,y)pair中出现的次数:
为什么可以做上述变换呢,下面看一个例子:
那么对其他项我们也可以做上述变换:
接下来对上述变换做element-wise,我们可以用w代表紫色部分,由于红色部分每个都是和x,y有关的,所以我们可以说这个是(x,y)pair形成的function,所以我们的P(x,y) = exp(w·Φ(x,y)):
我们可以把w和HMM中的几率做对应,如下:
所以,你可以对w做exp,就可以得到概率,然而由于weight中的element没有任何限制,可正可负,所以我们说P(x,y)∝exp(w·Φ(x,y)):
Feature Vector
- 那么Feature Vector长什么样呢?
根据上面推导,我们知道Φ(x,y)应该由下面两部分构成:
- Part1:词性和单词之间的关系
- Part2:词性之间的关系
那么如果是有|S|个可能的tags,|L|个可能的words,那么Part1就是|S|×|L|维的,Part2就是|S|×|S|+2|S|(2|S|是因为还有个Start和End)维的。
CRF-Training Criterion
- 我们这里需要求得是给定一组training data,我们需要找到一个weight vector w*使得给定一个x,找到正确的y head的概率取log后求和后越大越好(最大化)。我们发现这里的O(w)和之前的cost function有点像,maximizing正确的几率再取log。
接下来,由于下图右上角的公式,所以我们可以得到下面的log公式,所以CRF在做training时,由于要O(w)最大化,所以,我们需要让前一项的,也就是我们观察到的(x,y)的概率变大,我们没观察到的(x,y)的概率变小。
CRF-Gradient Ascent
- 如何maximizing O(w),这里就需要Gradient Ascent:
- 经过一串运算后,我们知道下面公式可以分为两项,我们来分析这两项的物理意义,第一项来说,当(s,t)pair在正确的(x^n,y head ^n)中出现的次数越多表示w越大,求解出来的Gradient Ascent也就越大;第二项来说,减掉任意一个(x,y)pair中(s,t)出现的次数,所以今天当(s,t)pair在任意一个(x,y) pair中出现的次数越多,表示,这时我们需要减小w。:
所以针对所有的Gradient,这个Gradient就是正确的y head形成的feature vector减掉任意的一个y形成的vector在乘上那个y的几率:
CRF-Inference
- 我们要做的事情就是给定一个x,我们要找一个y,让P(y|x)最大。
CRF vs HMM
CRF更有可能得到正确的结果。
Synthetic Data
当α=1时是一般的HMM,α越小表现越差。
比较不同α上HMM和CRF的表现,每个圈圈是不同α得到的结果,横轴和纵轴表示HMM 和CRF的犯错的百分比,因为这个task的data是由HMM产生的,所以当α大于1/2表示,模型比较接近HMM或CRF的model,
CRF-Summary
Structured Perceptron/SVM
Structured Perceptron
Structured Perceptron vs CRF
Structured Perceptron和CRF的Gradient Ascent非常相似,Structured Perceptron只减掉某一个y,但它所减掉的是可以让w·Φ(x,y)最大的y;CRF其实就是用所有的y做Gradient Ascent。
CRF:所有y可能形成的feature做Gradient Ascent。
如果今天y’中只有一项几率为1,其他都是0,那么CRF和Structured Perceptron就是一样的。
Structured SVM
- Structured SVM中很不一样的是要考虑:Error function:Δ(y head^n, y),这项是用来考虑y和y head^n的区别的。
- 我们之前说过Structured SVM的cost function其实就是Error 的upper bound,所以如果去minimize cost function就是在计算Error的upper bound。
- Error function可以是任何适当的衡量两个y之间差异的function
- 但是,无论是使用Gradient Descent还是Quadratic Programming,我们都要知道如何解决下面的Problem2.1,下面提供一个计算Δ的例子(计算两个sequence的错误率)。
Structured SVM vs HMM vs CRF vs Structured Perceptron
Towards Deep Learning
sequence label可以用以下几种方法来解,那么用什么方法好呢?
RNN,LSTM vs HMM、CRF、Structured Perceptron/SVM
- RNN/LSTM的缺点1:如果用的是单向RNN或LSTM是只看了sequence的一部分(看不到t+1的),而HMM等看过了全部的sequence。
- RNN/LSTM的缺点2:Cost和Error不一定有关系。
- HMM等的优点1:可以考虑output sequence的label的constraint,可以把这个constraint加到viterbi中,只穷举符合constraint的sequence。
- HMM等的优点2:Cost is upper bound of error。
我们可以把左边和右边的方法加起来:
底层用RNN/LSTM,在外面用HMM/CRF/Structured Perceptron/SVM:
那么如何把CNN/RNN或LSTM/DNN+HMM呢?
将emission probability用RNN取代掉,然后在做HMM。
我们要的是P(xi|yi),我们可以修改这个公式,P(yi|xi)就是RNN;P(yi)就是看training data中label出现的几率;那么因为在HMM的Inference中我们是给定一个x,看哪一个y可以让这个几率最大,所以x是给定的,所以P(xi)的值无论多少都不会影响到我们最终的结果。
Bi-directional RNN/LSTM+CRF/Structured SVM相互结合
Concluding Remarks