读论文 2021-AAAI-Continual Learning for Named Entity Recognition
0 写在前面
什么是持续学习?
我们人类有能够将一个任务的知识用到另一个任务上的能力,学习后一个任务时也不会忘记如何做前一个任务。这种能力叫持续学习 (continual learning/ life-long learning) 总结为两点:
- 如何能把之前任务的经验用上,使得更快更好的学习当前任务;
- 学习当前任务时,不会忘记之前已经学会的任务。
Introduction
Motivation
contribution
- 将CL技术应用到了NLU领域,以逐步学习NER的新的实体类型
- 方法可以是模型能够持续学习新的实体类型而不失去识别旧实体类型的能力
- 以半监督策略取得与完全监督设置相当的结果
Method
符号定义
最初已经训练好的模型为
M
i
M_i
Mi?,可识别的实体类型有
E
i
=
{
e
1
,
…
,
e
n
}
E_{i}=\left\{e_{1}, \ldots, e_{n}\right\}
Ei?={e1?,…,en?}
我们想要训练一个新的模型
M
i
+
1
M_{i+1}
Mi+1?,以期望识别新的实体类型
E
new?
=
{
e
n
+
1
,
e
n
+
2
,
…
,
e
n
+
m
}
E^{\text {new }}=\left\{e_{n+1}, e_{n+2}, \ldots, e_{n+m}\right\}
Enew?={en+1?,en+2?,…,en+m?}和旧的实体类型
E
i
E_i
Ei?
我们仅标注一个新的数据集
D
n
e
w
D^{new}
Dnew中的新实体类型
E
n
e
w
E^{new}
Enew
我们想要
M
i
+
1
M_{i+1}
Mi+1?能够学习到识别新实体类型
E
n
e
w
E^{new}
Enew,同时也不遗忘识别旧的实体类型
E
i
E_i
Ei?的能力
AddNER模型
结构:
教师模型就是原来用于识别
E
i
E_i
Ei?的
M
i
M_i
Mi?,学生模型
M
i
+
1
M_{i+1}
Mi+1?是在
M
i
M_i
Mi?的基础上,添加了一个新的输出层,用于识别
E
n
e
w
E^{new}
Enew
过程:
教师模型在
D
n
e
w
D^{new}
Dnew上预测输出关于
E
i
E_i
Ei?的soft labels,学生模型在仅标注
E
n
e
w
E^{new}
Enew的
D
n
e
w
D^{new}
Dnew进行训练
旧的输出层识别用于识别
E
i
E^{i}
Ei,输出one-hot结果
p
E
i
M
i
+
1
p_{Ei}^{M_{i+1}}
pEiMi+1??,与教师模型输出的soft labels 结果
p
E
i
M
i
p_{Ei}^{M_i}
pEiMi??计算两者之间的KL散度损失
L
K
L
A
d
d
=
K
L
(
p
E
i
M
i
,
p
E
i
M
i
+
1
)
L_{KL}^{Add}=KL(p_{E_i}^{M_i},p_{Ei}^{M_{i+1}})
LKLAdd?=KL(pEi?Mi??,pEiMi+1??)
新的输出层识别用于识别
E
n
e
w
E^{new}
Enew,输出one-hot结果
p
E
n
e
w
M
i
+
1
p_{E^{new}}^{M_{i+1}}
pEnewMi+1??与人工标注数据y来计算交叉熵损失
L
C
E
A
d
d
=
C
E
(
y
,
p
E
n
e
w
M
i
+
1
)
L_{CE}^{Add}=CE(y,p_{E^{new}}^{M_{i+1}})
LCEAdd?=CE(y,pEnewMi+1??)
模型是根据每个标注的两个损失函数的加权求和进行训练的,即
L
A
d
d
=
α
L
K
L
A
d
d
+
β
L
C
E
A
d
d
L^{Add}=\alpha L_{KL}^{Add}+\beta L^{Add}_{CE}
LAdd=αLKLAdd?+βLCEAdd?
QA
1. 不同输出层,对同一个token有不同的标注,如何处理?
比如南京市长江大桥, 可能是南京市,即标签为是I-,也可能是市长,即为B-
-
如果所有层都为O,则为O -
如果有一个为B-,其他为O,则输出B- -
如果多个输出层为B-,其他层为O,那么给最高概率的输出层B- -
如果预测一个标签为I-,那么前面的标签必须与之匹配,否则再次使用启发性算法确定最终输出
比如预测一个标签为I-loc,那么前面不能是B-Org,或者不能是O,等等
启发性算法在此处应该指按照标签的概率,顺序尝试其他的标签,直到找到能匹配的标签
疑问
1. 每次新增加类型,是不是都要新增加一个输出层,还是说,模型训练完,就把输出层给删除了,最后只保留一个输出层?
ExtendNER模型
结构:
M
i
+
1
M_{i+1}
Mi+1?是在
M
i
{M_i}
Mi?的基础上,对输出层进行了扩展,拓展部分能够识别
E
n
e
w
E^{new}
Enew(m个)新实体类型.假定
M
i
M_i
Mi?能识别n个实体类型,那么对应的标记矩阵为h×(2n+1),则
M
i
+
1
{M_{i+1}}
Mi+1?对应的标记层维度为h×(2n+2m+1)
h是token的数量, 每个实体标签有 一个B- 一个I- +1 是 O标签
过程
如果一个token被标记为新实体类型,那么将使用交叉熵损失函数,否则教室模型的软标签和结果使用KL散度损失
损失计算和AddNER一致,
获得最终 标签是通过Viterbi算法获取,其中发射矩阵时
M
i
+
1
M_{i+1}
Mi+1?的输出结果,转移矩阵是是防止出现不可能的转换,直接硬编码
疑问
发射矩阵时
M
i
+
1
M_{i+1}
Mi+1?的输出结果是one-hot还是软标签??
如果是one-hot,就不需要 维特比算法了
Experimental Evaluation
数据集
Experimental setup
CoNLL-03、OntoNotes分别划分为4、6个不相交的子集
D
1
,
D
2
,
D
3...
D_1,D_2,D3...
D1?,D2?,D3...
Experiment
AddNER&ExtendNER
避免实体的顺序之间有任何依赖关系,使用了不同的实体顺序
因为在训练过程中,每次新增的数据集只标注新的实体类型,防止某种顺序影响结果,定义多种顺序训练
对照实验
研究KD对传授先前知识的效果
使用一个no-KD的方法----自训练
前面提到过,主要区别是使用的hard label
对比迁移学习方法
和AddNER一样,在
M
i
{M_i}
Mi?基础上,增加一个输出层,不同的是,把老的输出层frozen,以保留识别老实体的能力,然后用
D
n
e
w
D^{new}
Dnew(仅标注了
E
n
e
w
E^{new}
Enew)训练新的输出层
从模仿AddNER的结构上,进行实验
result
free transfer model the average performance at step 2 was 56.21.(F1 score)
frozen transfer model , the average overall F1 scores at step 2 was 57.49
frozen transfer model 即限制编码器更新,这是限制了模型学习新实体的能力
free transfer model 这分数是因为先前知识的灾难性遗忘
疑问
-
识别老实体的能力不是在模型里吗??感觉没啥用 -
in this setting,we may choose to freeze the encoder when updating the model (frozen transfer) or not (free transfer).
D
n
e
w
D^{new}
Dnew仅标注
E
n
e
w
E^{new}
Enew和完全标注的对比
? 1. CL fully-annotated model
每一步,使用完全标注的
D
i
D_i
Di?进行训练
? 2. non-CL last slice model
每一步,使用
D
i
D_i
Di?从头开始训练
? 3. non-CL complete model
每一步,使用(
D
1
,
.
.
.
,
D
i
)
D_1,...,D_i)
D1?,...,Di?)进行训练
疑问
- CL fully-annotated model完全标注了,是怎么进行CL的
Result
-
在CoNLL-03数据集 student模型分数逐步增加,说明模型能学到识别新实体能力的同时,也保留识别老实体的能力 -
对比硬标签模型,CoNNL-03中平均比硬标签好0.37分,OntoNotes中比硬标签模型好0.81
感觉是这个文字游戏,在OntoNotes数据集中,整体好0.81…不过整体确实比硬标签模型好
-
比每一步的non-CL last slice model都要好,说明从
M
i
M_{i}
Mi?到
M
i
+
1
M_{i+1}
Mi+1?克隆编码器对student模型的成功至关重要,或者说,仅对新数据进行从头训练,即使新数据完全标注,也并不是特别有效 -
non-CL complete model和CL fully-annotated model显然会比extendNER结果好,但随着新的实体类型的增加,他们标注数据的代价太过昂贵,extendNER可以在仅标注新的数据类型,就可以达到良好的整天性能
验证学生模型是否能够在学习一个新的实体类型时,保留先前学习过的实体类型知识
在ExtendNER Student模型上进行测试,
e
1
e_1
e1?折线表示 每一步
s
t
e
p
i
step_i
stepi?中模型预测实体类型
e
1
e_1
e1?的平均F1 score,这表示了学生模型在每一步中保留识别
e
1
e_1
e1?知识的程度,
虽然部分出现下降的确实,但是这种下降并不显著,可以说明对先前知识有着很好的保留,甚至可以获取通过KD训练的实体的知识
Conclusions
提出了一种用于命名实体识别的持续学习的方法,通过拓展模型来识别新的实体类型,并且更新训练时,只需要标注数据集中的新实体类型,并利用知识蒸馏,防止遗忘和逐步学习新的实体类型
展望
|