目录
摘要
This week, I learned about the BERT and CRF models. The advantages of BERT include the ability to consider contextual information, the ability to utilize a large amount of unlabelled data for pre-training, and the ability to perform multi-task learning. However, the disadvantages of BERT are the requirement for significant computing resources and time for training and fine-tuning, and its unsuitability for processing long texts. On the other hand, CRF models are able to perform global annotation and have good robustness, but the disadvantages include high computational costs and the inability to handle contextual information.
本周,我学习了BERT和CRF模型。BERT优点在于能够同时考虑上下文信息、能够利用大量的未标记数据进行预训练,然后使用有标记数据进行微调以及能够进行多任务学习,缺点是需要大量的计算资源和时间进行训练和微调,并且不适合处理长文本;CRF模型则能进行全局标注,有较好的鲁棒性,缺点是计算开销大,不能处理上下文信息。
深度学习
1、BERT
1.1 概念
全称为Bidirectional Encoder Representation from Transformers,是一个预训练的语言表征模型。它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的masked language model(MLM),以致能生成深度的双向语言表征。
1.2 该模型主要的优点
1)采用MLM对双向的Transformers进行预训练,以生成深层的双向语言表征。
2)预训练后,只需要添加一个额外的输出层进行fine-tune,就可以在各种各样的下游任务中取得state-of-the-art的表现。在这过程中并不需要对BERT进行任务特定的结构修改。
1.2 BERT的主体结构
BERT利用MLM进行预训练并且采用深层的双向Transformer组件,来构建整个模型,因此最终生成能融合左右上下文信息的深层双向语言表征。
经过多层Transformer结构的堆叠后,形成BERT的主体结构:
BERT的输入: Input = token emb + segment emb + position emb
BERT的输出: C为分类token([CLS])对应最后一个Transformer的输出,
T
i
T_i
Ti则代表其他token对应最后一个Transformer的输出
1.4 BERT的预训练任务
如何做预训练:MLM(Maskde Language Model) + NSP(Next Sentence Prediction)
MLM: 作用是预测mask对应的字或词
方法:
首先在每一个训练序列中以15%的概率随机地选中某个token位置用于预测,假如是第i个token被选中,则会被替换成以下三个token之一
1)80%的时候是[MASK]。如,my dog is hairy——>my dog is [MASK]
2)10%的时候是随机的其他token。如,my dog is hairy——>my dog is apple
3)10%的时候是原来的token(保持不变,个人认为是作为2)所对应的负类)。如,my dog is hairy——>my dog is hairy
再用该位置对应的
T
i
T_i
Ti去预测出原来的token(输入到全连接,然后用softmax输出每个token的概率,最后用交叉熵计算loss)。
NSP: 作用是分辨下一句是否正确(预测两个句子是否连在一起)
为什么使用NSP? 一些如问答、自然语言推断等任务需要理解两个句子之间的关系,而MLM任务倾向于抽取token层次的表征,因此不能直接获取句子层次的表征。
方法:
对于每一个训练样例,我们在语料库中挑选出句子A和句子B来组成,50%的时候句子B就是句子A的下一句(标注为IsNext),剩下50%的时候句子B是语料库中的随机句子(标注为NotNext)。接下来把训练样例输入到BERT模型中,用[CLS]对应的C信息去进行二分类的预测。
1.5 AR与AE模型区别
AR: autoregressive,自回归模型,只考虑单侧的信息,典型的是GPT;
举例:P(我爱吃饭) = P(我)P(爱|我)P(吃|我爱)P(饭|我爱吃)
“我爱吃饭”出现的概率 = “我”出现的概率 × “我”出现的条件下“爱”出现的概率 × ···
AE: autoencoding,自编码模型,从损坏的输入数据中预测重建原始数据,可以使用上下文的信息,例如:BERT
举例:【我爱mask饭】(对句子做mask处理,最后得到mask对应的字或词)
P(我爱吃饭|我爱mask饭) = P(mask = 吃|我爱饭)
“我爱mask饭”出现的条件下“我爱吃饭”出现的概率 = “我爱饭”出现的条件下,“mask=吃”的概率
缺点:如果有多个mask,认为mask之间都是独立的
2、CRF(条件随机场)
2.1 概念
条件随机场(Conditional Random Field,CRF)是自然语言处理的基础模型,广泛应用于中文分词、命名实体识别、词性标注等标注场景。 随着深度学习的普及,BILSTM+CRF, BERT+CRF,TRANSFORMER+CRF等模型, 逐步亮相, 并在这些标注场景,效果有显著的提升。
设X与Y是随机变量, P ( Y ∣ X ) P(Y|X) P(Y∣X)是在给定X的条件下Y的条件概率分布。若随机变量Y构成一个由无向图 G = ( V , E ) G=(V, E) G=(V,E)表示的马尔可夫随机场, 即 P ( Y v ∣ X , Y w , w ≠ v ) = P ( Y v ∣ X , Y w , w ∼ v ) P(Y_v|X, Y_w, w \neq v) = P(Y_v|X, Y_w, w \sim v) P(Yv∣X,Yw,w=v)=P(Yv∣X,Yw,w∼v)对任意顶点v成立, 则称条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)为条件随机场。
- w ∼ v w \sim v w∼v表示在图 G = ( V , E ) G=(V, E) G=(V,E)中与顶点v有边连接的所有顶点w
- w ≠ v w \neq v w=v表示顶点v vv以外的所有顶点
- Y v Y_v Yv与 Y w Y_w Yw 为顶点v vv与w ww对应的随机变量
2.2 线性链条件随机场
常见的标注场景,如分词,实体识别和词性标注等,都是典型的线性链条件随机场。当X和Y有相同结构(线性表示的随机变量序列)的条件随机场就构成了线性链条件随机场。(这里指的线性, 指语言天然具有的先后顺序,成线性特性)
定义:
设
X
=
(
X
1
,
X
2
,
.
.
.
,
X
n
)
X=(X_1, X_2, ..., X_n)
X=(X1,X2,...,Xn),
Y
=
(
Y
1
,
Y
2
,
.
.
.
,
Y
n
)
Y=(Y_1, Y_2, ..., Y_n)
Y=(Y1,Y2,...,Yn)均为线性表示的随机变量序列,若在给定随机变量序列X的条件下,随机变量序列Y的条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)构成条件随机场, 即满足马尔可夫性
P
(
Y
i
∣
X
,
Y
1
,
.
.
.
,
Y
i
−
1
,
Y
i
+
1
,
.
.
.
,
Y
n
)
=
P
(
Y
i
∣
X
,
Y
i
−
1
,
Y
i
+
1
)
P(Y_i|X, Y_1, ..., Y_{i-1}, Y_{i+1}, ..., Y_n) = P(Y_i|X, Y_{i-1}, Y_{i+1})
P(Yi∣X,Y1,...,Yi−1,Yi+1,...,Yn)=P(Yi∣X,Yi−1,Yi+1)则称
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)为线性链条件随机场,其中
i
=
(
1
,
2
,
.
.
n
)
i=(1,2,..n)
i=(1,2,..n),在
i
=
1
i=1
i=1和
i
=
n
i=n
i=n时只考虑单边。
两种主要的线性链条件随机场的图结构如下:
由于线性链条件随机场应用非常广泛,所以习惯把“线性链条件随机场”简称为条件随机场(CRF)。
公式:
根据Hammersley Clifford定理,一个无向图模型的概率,可以表示为定义在图上所有最大团上的势函数的乘积。那么,CRF的条件概率可以在因子分解下表示为:
如上图,线性链CRF的因子分解,根据函数类型, 可细化为:
P
(
y
∣
x
)
=
1
Z
(
x
)
exp
(
∑
i
,
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
,
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
P(y|x) = \frac{1}{Z(x)} \exp (\sum_{i,k}\lambda_k t_k(y_{i-1}, y_i, x, i) + \sum_{i, l}\mu_l s_l (y_i, x, i))
P(y∣x)=Z(x)1exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))
其中,
Z
(
x
)
=
∑
y
exp
(
∑
i
,
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
,
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
Z(x) = \sum_y \exp (\sum_{i,k}\lambda_k t_k(y_{i-1}, y_i, x, i) + \sum_{i,l}\mu_l s_l(y_i, x, i))
Z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))
- t k t_k tk为转移特征函数, 在CRF++中转移特征由Bigram Template + 输入字(词)序列生成
- s l s_l sl为状态特征函数, 在CRF++中状态特征由Uigram Template + 输入字(词)序列生成
CRF中,通常有两类特征函数,分别为转移特征和状态特征。状态特征表示输入序列与当前状态之间的关系。转移特征表示前一个输出状态与当前输出状态之间的关系。CRF++中,特征模板需要人工设定,有一定的局限性。若结合深度神经网络,如BERT+CRF,则特征就可由模型自动学习得到,具体讲,BERT学习状态特征,CRF学习转移特征,并用viterbi获取最优路径。
总结
本周主要研究了上周学习的论文,学习了论文中的BERT和CRF模型,发现自己对概率这块数学知识不太了解,CRF模型还不是很明白其中的原理,下周计划学习HMM模型及CRF模型。