??构建序列生成模型后,为了评价其性能,通常采用一些度量方法。本文将介绍一些常见的评价方法:
??困惑度(Perplexity)是一种用来衡量序列生成模型性能的指标。在给定一个测试文本集合的情况下,一个好的序列生成模型应该使得测试集合中句子的联合概率尽可能高。困惑度是信息论中的一个概念,用来度量一个分布的不确定性。
??对于离散随机变量
X
∈
X
X \in \mathcal{X}
X∈X,其概率分布为
p
(
x
)
p(x)
p(x),困惑度定义如下:
Perplexity
(
X
,
p
)
=
2
H
(
p
)
=
2
?
∑
x
∈
X
p
(
x
)
log
?
2
p
(
x
)
\text{Perplexity}(\mathcal{X}, p) = 2^{H(p)}=2^{- \sum_{x \in \mathcal{X}} p(x) \log_2 p(x)}
Perplexity(X,p)=2H(p)=2?∑x∈X?p(x)log2?p(x)这里的熵
H
(
p
)
H(p)
H(p) 衡量了分布
p
p
p 的不确定性。困惑度可以看作是对观察到的数据集的估计概率的逆。
??考虑一个序列长度为 (T) 的测试集,模型的困惑度为:
PPL ( θ ) = 2 ? 1 T ∑ n = 1 N ∑ t = 1 T n log ? 2 p θ ( x n , t ∣ x n , 1 t ? 1 ) \text{PPL}(\theta) = 2^{- \frac{1}{T} \sum_{n=1}^{N} \sum_{t=1}^{T_n} \log_2 p_\theta(x_{n,t} | x_{n,1}^{t-1})} PPL(θ)=2?T1?∑n=1N?∑t=1Tn??log2?pθ?(xn,t?∣xn,1t?1?)
其中 N N N 为测试集中序列的数量, T n T_n Tn? 为第 n n n 个序列的长度, p θ p_\theta pθ? 是模型对条件概率的估计。困惑度越低,表示模型在给定数据上的拟合越好。
??对于一个未知的数据分布 p true ( x ) p_{\text{true}}(x) ptrue?(x) 和一个模型分布 p θ ( x ) p_\theta(x) pθ?(x),困惑度可以用来衡量它们之间的差异。两者之间的交叉熵(cross entropy)为:
Cross?Entropy ( p true , p θ ) = ? 1 T ∑ n = 1 N ∑ t = 1 T n log ? 2 p θ ( x n , t ) \text{Cross Entropy}(p_{\text{true}}, p_\theta) = -\frac{1}{T} \sum_{n=1}^{N} \sum_{t=1}^{T_n} \log_2 p_\theta(x_{n,t}) Cross?Entropy(ptrue?,pθ?)=?T1?n=1∑N?t=1∑Tn??log2?pθ?(xn,t?)
困惑度可以表示为交叉熵的形式:
PPL ( θ ) = 2 Cross?Entropy ( p true , p θ ) / T \text{PPL}(\theta) = 2^{\text{Cross Entropy}(p_{\text{true}}, p_\theta) / T} PPL(θ)=2Cross?Entropy(ptrue?,pθ?)/T
困惑度越低,表示模型分布与真实数据分布越接近。
??困惑度为每个词条件概率的几何平均数的倒数。测试集中所有序列的概率越大,困惑度越小,模型越好。一般情况下,困惑度范围在50到1000之间。在自然语言处理中,困惑度是一个常用的评估指标,用于衡量语言模型的性能。
??BLEU(BiLingual Evaluation Understudy)算法是一种用于衡量机器翻译模型或其他序列生成任务中生成序列和参考序列之间的相似度的评价指标。该算法通过计算N元词组(N-Gram)的重合度来评估生成序列的质量。
??设 𝒙 为模型生成的候选序列, s ( 1 ) , ? , s ( K ) \mathbf{s^{(1)}}, ? , \mathbf{s^{(K)}} s(1),?,s(K) 为一组参考序列,𝒲 为从生成的候选序列中提取所有N元组合的集合。BLEU算法的精度(Precision)定义如下:
P N ( x ) = ∑ w ∈ W min ? ( c w ( x ) , max ? k = 1 K c w ( s k ) ) ∑ w ∈ W c w ( x ) P_N(\mathbf{x}) = \frac{\sum_{w \in \mathcal{W}} \min(c_w(\mathbf{x}), \max_{k=1}^{K} c_w(\mathbf{s}_k))}{\sum_{w \in \mathcal{W}} c_w(\mathbf{x})} PN?(x)=∑w∈W?cw?(x)∑w∈W?min(cw?(x),maxk=1K?cw?(sk?))?
其中 c w ( x ) c_w(\mathbf{x}) cw?(x) 是N元组合 w w w 在生成序列 x \mathbf{x} x 中出现的次数, c w ( s k ) c_w(\mathbf{s}_k) cw?(sk?) 是N元组合 w w w 在参考序列 s k \mathbf{s}_k sk? 中出现的次数。
??为了处理生成序列长度短于参考序列的情况,引入长度惩罚因子 b ( x ) b(\mathbf{x}) b(x):
b ( x ) = { 1 if? l x > l s exp ? ( 1 ? l s l x ) if? l x ≤ l s b(\mathbf{x}) = \begin{cases} 1 & \text{if } l_x > l_s \\ \exp\left(1 - \frac{l_s}{l_x}\right) & \text{if } l_x \leq l_s \end{cases} b(x)={1exp(1?lx?ls??)?if?lx?>ls?if?lx?≤ls??
其中 l x l_x lx? 是生成序列的长度, l s l_s ls? 是参考序列的最短长度。
??BLEU算法通过计算不同长度的N元组合的精度,并进行几何加权平均,得到最终的BLEU分数:
BLEU-N ( x ) = b ( x ) × exp ? ( 1 N ′ ∑ N = 1 N ′ α N log ? P N ( x ) ) \text{BLEU-N}(\mathbf{x}) = b(\mathbf{x}) \times \exp\left(\frac{1}{N'} \sum_{N=1}^{N'} \alpha_N \log P_N(\mathbf{x})\right) BLEU-N(x)=b(x)×exp ?N′1?N=1∑N′?αN?logPN?(x) ?
其中 N ′ N' N′ 为最长N元组合的长度, α N \alpha_N αN? 是不同N元组合的权重,一般设为 1 / N ′ 1/N' 1/N′。
??ROUGE(Recall-Oriented Understudy for Gisting Evaluation)算法最初被应用于文本摘要领域,类似于BLEU算法,但ROUGE算法关注的是召回率(Recall)。
??设 x \mathbf{x} x 为从模型分布 p θ p_{\theta} pθ? 中生成的一个候选序列, s ( 1 ) , ? , s ( K ) \mathbf{s^{(1)}}, ? , \mathbf{s^{(K)}} s(1),?,s(K) 为从真实数据分布中采样得到的一组参考序列, W \mathcal{W} W 为从参考序列中提取N元组合的集合,ROUGE-N算法的定义为:
ROUGE-N ( x ) = ∑ k = 1 K ∑ w ∈ W min ? ( c w ( x ) , c w ( s ( k ) ) ) ∑ k = 1 K ∑ w ∈ W c w ( s ( k ) ) \text{ROUGE-N}(\mathbf{x}) = \frac{\sum_{k=1}^{K} \sum_{w \in \mathcal{W}} \min(c_w(\mathbf{x}), c_w(\mathbf{s}(k)))}{\sum_{k=1}^{K} \sum_{w \in \mathcal{W}} c_w(\mathbf{s}(k))} ROUGE-N(x)=∑k=1K?∑w∈W?cw?(s(k))∑k=1K?∑w∈W?min(cw?(x),cw?(s(k)))?
其中 c w ( x ) c_w(\mathbf{x}) cw?(x) 是N元组合 w w w 在生成序列 x \mathbf{x} x 中出现的次数, c w ( s ( k ) ) c_w(\mathbf{s}(k)) cw?(s(k)) 是N元组合 w w w 在参考序列 s ( k ) \mathbf{s}(k) s(k) 中出现的次数。
定义: 通过人工评价来获取生成序列的质量,可以包括流畅性、准确性等方面。
解释: 人工评估是一种直观且综合性的评估方法,但相对来说较为主观。
在实际应用中,通常会综合使用多个评价指标,以全面评估生成模型的性能。