BERT+CRF 怎么联合训练?
NER 任务中 BERT 与 CRF 各自作用、联合训练及优势
原题:请说明BERT结合CRF模型在命名实体识别等信息抽取任务中的工作原理,包括两者各自的作用、联合训练方式以及相比纯BERT的优势。
模型架构 · 360真题
回答与解析
BERT 与 CRF 的分工
BERT 为每个输入 token 产生上下文相关 hidden state h_i。线性层把 h_i 映射为每个标签的 emission logits/scores,不是彼此独立且已归一化的 P(y_i|x)。
线性链 CRF 再引入标签转移分数 A_{y_{i-1},y_i}。一条标签序列的总分为 emission 分数之和加 transition 分数之和:
score(x,y)=sum_i emission_i(y_i)+sum_i A[y_{i-1},y_i]
训练最大化正确序列的条件对数似然,分母用 forward algorithm 对所有标签序列求和;解码用 Viterbi 找总分最高的标签路径。梯度同时更新 BERT、线性头和 CRF 参数。
优势与边界
相比逐 token softmax,CRF 能学习相邻标签依赖,例如实体内部标签与边界模式。但普通 CRF 的转移矩阵只是学习偏好,不保证 BIO 规则绝对合法;若需要硬合法,必须显式 mask 非法转移或使用 constrained CRF。
BIO 中 I-PER → B-LOC 可以合法地结束人物实体并开启地点实体。典型非法例是 O → I-PER 或 B-ORG → I-PER。CRF 的收益取决于数据量、标签体系和 encoder 强度,也会增加训练/解码成本;应与 token classifier 在 span-F1、非法率和延迟上公平比较。
口语版讲法(约3分钟)
- 说明 BERT 和线性头的 emission 分数
- 解释 CRF 的序列总分与训练
- 用 Viterbi 做全局解码
- 区分学习偏好与硬 BIO 约束
BERT-CRF 做命名实体识别时,可以把职责分成三层。第一层是 BERT,它为每个 token 生成结合左右上下文的 hidden state。第二层是线性分类头,把每个 hidden state 映射成所有标签的 emission logits,也就是这个位置对 B-PER、I-PER、O 等标签的分数。这里不能直接叫独立概率,因为还没有经过逐位置 softmax,而且后面的 CRF 会做全局归一化。
第三层是线性链 CRF。它除了 emission 分数,还学习相邻标签之间的 transition score。一条候选标签序列的总分,等于每个位置选择标签的 emission 分数,加上相邻标签转移分数。训练时最大化正确序列的条件对数似然,分母需要用 forward algorithm 汇总所有可能路径;解码时用 Viterbi 找总分最高的完整标签序列。BERT、线性头和 CRF 可以联合反向传播。
相比逐 token 独立分类,CRF 的优势是能利用局部标签依赖。例如 B-ORG 后面更可能接 I-ORG,而不是随意跳到另一个实体内部标签。但边界要说准确:普通 CRF 只是从数据中学习转移偏好,并不保证所有输出严格符合 BIO 规则。若业务要求绝不产生非法路径,需要把非法转移显式设为不可选,使用 constrained CRF 或后处理。
BIO 的例子也很容易说错。I-PER 后接 B-LOC 可以合法地结束一个人物实体并开始地点实体;典型非法情况是 O 直接接 I-PER,或者 B-ORG 后接 I-PER,因为 I 标签类型与当前实体不匹配。
落地时我会把 BERT 加 token classifier 作为基线,再与 BERT-CRF 比较实体级 span-F1、非法序列比例、训练和解码延迟。若强 encoder 已经把边界学得很好,CRF 增益可能有限;小数据或标签转移规律强时,它可能更有价值。是否采用应由这些指标决定,而不是默认 CRF 一定更好。
实现中还有两个细节。BERT 使用子词后,原始实体标签要与 subword 对齐,可以只在首个子词监督或为后续子词扩展标签,但训练和评测规则必须一致。batch 内 padding 位置也要通过 mask 从 CRF 的路径分数、归一化和 Viterbi 解码中排除,否则模型会学习虚假的尾部转移。
我会用一个很短的手工样本检查 emission、transition 和最佳路径,确认 constrained mask 真能禁止非法 BIO 转移,再与独立 token 分类基线做相同数据切分的对照。若 CRF 只降低非法率却没有改善 span-F1,要评估增加的解码复杂度是否值得。回答到这里,既说明了全局序列建模的价值,也保留了工程选型边界。
数据标注规范同样影响结论。BIO 与 BIOES 的标签集合、特殊 token 是否参与打分、跨句实体如何处理,都要在训练和评测中固定。CRF 能学习局部转移,却不能补救相互矛盾的标注;发现高频非法路径时,也要回查数据而不是只加约束。
关键一句:学习到的转移分数只是软偏好,业务要求严格 BIO 合法时必须显式约束动态规划。
核验来源
面试官还可能这样问
- 问法 1 · 场景切入
假设一个 BIO 标注模型输出了 O→I-PER 这样的非法转移。BERT+线性头+CRF 会怎样建模 emission 与 transition,你又会怎样保证解码结果满足硬约束?
- 问法 2 · 层层追问
BERT 输出怎样变成每个标签的 emission score?……CRF 的序列总分如何组成?……训练和 Viterbi 解码分别做什么?……普通 CRF 是否保证 BIO 合法?……何时需要显式 transition mask?
- 问法 3 · 直球技术
说明 BERT+CRF 在 NER 中的分工、联合训练和解码,并用 O→I-PER 或 B-ORG→I-PER 解释学习转移偏好与硬约束的区别。