条件随机场
条件随机场(Conditional Random Field, CRF)是一种判别式序列标注模型。与 HMM 建模联合概率
概念详解
在线性链 CRF 中,输入序列为
数学公式及其推导
线性链 CRF 的条件概率定义为:
归一化因子为:
训练时最大化:
它提高真实路径分数,同时降低所有路径的归一化概率。
应用代码:Viterbi 解码
python
import numpy as np
tags = ["B", "I", "O"]
emission = np.array([[2.0, 0.1, 0.3], [0.2, 1.8, 0.4], [0.1, 0.5, 2.2]])
transition = np.array([[0.5, 1.0, 0.1], [0.1, 0.8, 0.7], [0.6, 0.1, 0.5]])
T, C = emission.shape
dp = np.zeros((T, C))
path = np.zeros((T, C), dtype=int)
dp[0] = emission[0]
for t in range(1, T):
for j in range(C):
scores = dp[t - 1] + transition[:, j] + emission[t, j]
path[t, j] = np.argmax(scores)
dp[t, j] = np.max(scores)
best = [int(np.argmax(dp[-1]))]
for t in range(T - 1, 0, -1):
best.append(path[t, best[-1]])
print([tags[i] for i in reversed(best)])小结
CRF 的优势是能显式建模标签之间的约束关系。BERT-CRF 等模型常用神经网络产生发射分数,再用 CRF 建模标签转移。