共计 6852 个字符,预计需要花费 18 分钟才能阅读完成。
1. 根底指标简介
机器学习的评估指标有精度、准确率、召回率、P- R 曲线、F1 值、TPR、FPR、ROC、AUC 等指标,还有在生物畛域罕用的敏感性、特异性等指标。
在分类工作中,各指标的计算根底都来自于对正负样本的分类后果,用混同矩阵示意,如 图 1.1 所示:
- 准确率
$Accuracy=\dfrac{TP+TN}{TP+FN+FP+TN}$
即所有分类正确的样本占全副样本的比例。
- 准确率
精准率又叫做:Precision、查准率
- 召回率
召回率又叫:Recall、查全率
$Recall=\dfrac{TP}{TP+FN}\quad\text{}$
即所有正例的样本中,被找出的比例.
- P- R 曲线¶
P- R 曲线又叫做:PRC
图 2 PRC 曲线图
依据预测后果将预测样本排序,最有可能为正样本的在前,最不可能的在后,顺次将样本预测为正样本,别离计算以后的准确率和召回率,绘制 P - R 曲线。
- F1 值
$\quad F1=\dfrac{2*P*R}{P+R}\quad\quad$
- TPR
$TPR=\dfrac{TP}{TP+FN}$
真正例率,与召回率雷同
- FPR
假正例率
$FPR=\dfrac{FP}{TN+FP}\quad$
- ROC
依据预测后果将预测样本排序,最有可能为正样本的在前,最不可能的在后,顺次将样本预测为正样本,别离计算以后的 TPR 和 FPR,绘制 ROC 曲线。
- AUC
Area Under ROC Curve,ROC 曲线下的面积:
- 敏感性
敏感性或者灵敏度(Sensitivity,也称为真阳性率)是指理论为阳性的样本中,判断为阳性的比例(例如真正有生病的人中,被医院判断为有生病者的比例),计算形式是真阳性除以真阳性 + 假阴性(理论为阳性,但判断为阴性)的比值(能将理论患病的病例正确地判断为患病的能力,即患者被判为阳性的概率)。公式如下:
$sensitivity=\dfrac{TP}{TP+FN}\quad\text{}$
即有病(阳性)人群中,检测出阳性的几率。(检测出的确有病的能力)
- 特异性
特异性或特异度(Specificity,也称为真阴性率)是指理论为阴性的样本中,判断为阴性的比例(例如真正未生病的人中,被医院判断为未生病者的比例),计算形式是真阴性除以真阴性 + 假阳性(理论为阴性,但判断为阳性)的比值(能正确判断理论未患病的病例的能力,即试验后果为阴性的比例)。公式如下:
$specificity=\dfrac{TN}{TN+FP}\quad\text{}$
即无病(阴性)人群中,检测出阴性的几率。(检测出的确没病的能力)
2. 指标检测工作重:mAP
在指标检测工作中,还有一个十分重要的概念是 mAP。mAP 是用来掂量指标检测算法精度的一个罕用指标。目前各个经典算法都是应用 mAP 在开源数据集上进行精度比照。在计算 mAP 之前,还须要应用到两个根底概念:准确率(Precision)和召回率(Recall)
2.1 准确率和召回率
- 准确率:预测为正的样本中有多少是真正的正样本。
- 召回率:样本中的正例有多少被预测正确。
具体计算形式如图 2.1 所示。
如图 2.1 准确率和召回率计算形式
其中,上图还存在以下几个概念:
- 正例:正样本,即该地位存在对应类别的物体。
- 负例:负样本,即该地位不存在对应类别的物体。
- TP(True Positives):正样本预测为正样本的数量。
- FP(False Positives):负样本预测为正样本的数量。
- FN(False Negative):正样本预测为负样本的数量。
- TN(True Negative):负样本预测为负样本的数量。
这里举个例子来阐明准确率和召回率是如何进行计算的:假如咱们的输出样本中有某个类别的 10 个指标,咱们最终预测失去了 8 个指标。其中 6 个指标预测正确(TP),2 个指标预测谬误(FP),4 个指标没有预测到(FN)。则准确率和召回率的计算结果如下所示:
- 准确率:6/(6+2)= 6/8 = 75%
- 召回率:6/(6+4)= 6/10 = 60%
2.2 PR 曲线
上文中,咱们学习了如何计算准确率(Precision)和召回率(Recall),失去这两个后果后,咱们应用 Precision、Recall 为纵、横坐标,就能够失去 PR 曲线,这里同样应用一个例子来演示如何绘制 PR 曲线。
假如咱们应用指标检测算法获取了如下的 24 个指标框,各自的置信度(即网络预测失去的类别得分)依照从上到下进行排序后如 图 2 所示。咱们通过设置置信度阈值能够管制最终的输入后果。能够预想到的是:
- 如果把阈值设高,则最终输入后果中大部分都会是比拟精确的,但也会导致输入后果较少,样本中的正例只有局部被找出,准确率会比拟高而召回率会比拟低。
- 如果把阈值设低,则最终输入后果会比拟多,然而输入的后果中蕴含了大量负样本,召回率会比拟高而准确率率会比拟低。
图 2.2 准确率和召回率列表
这里,咱们从上往下每次多蕴含一个点,就能够失去最左边的两列,别离是累加的 recall 和累加的 precision。以 recall 为自变量、precision 为因变量能够失去一系列的坐标点(Recall,Precision)。将这些坐标点进行连线能够失去 图 2.3。
图 2.3 PR 曲线
而最终 mAP 的计算形式其实能够分成如下两步:
- AP(Average Precision):某一类 P - R 曲线下的面积。
- mAP(mean Average Precision):所有类别的 AP 值取均匀。
3.GAN 评估指标(评估生成图片好坏)
生成器 G 训练好后,咱们须要评估生成图片的品质好坏,次要分为主观评估和主观评估,接下来别离介绍这两类办法:
主观评估:人眼去察看生成的样本是否与实在样本类似。然而主观评估会存在以下问题:
- 生成图片数量较大时,察看一小部分图片可能无奈代表所有图片的品质;
- 生成图片十分实在时,主观认为是一个好的 GAN,但可能存在过拟合景象,人眼无奈发现。
主观评估:因为主观评估存在一些问题,于是就有很多学者提出了 GAN 的主观评估办法,罕用的办法:
- IS(Inception Score)
- FID(Fréchet Inception Distance)
- 其余评估办法
## 3.1 IS
IS 全称是 Inception Score,其名字中 Inception 来源于 Inception Net,因为计算这个 score 须要用到 Inception Net-V3(第三个版本的 Inception Net)。对于一个在 ImageNet 训练好的 GAN,IS 次要从以下两个方面进行评估:- 清晰度:把生成的图片 x 输出 Inception V3 模型中,将输入 1000 维 (ImageNet 有 1000 类) 的向量 y,向量每个维度的值示意图片属于某类的概率。对于一个清晰的图片,它属于某一类的概率应该十分大。
- 多样性:如果一个模型能生成足够多样的图片,那么它生成的图片在各个类别中的散布应该是均匀的,假如生成了 10000 张图片,那么最现实的状况是,1000 类中每类生成了 10 张。
IS 计算公式为:
$IS(G)=exp(E_{x\sim p_g}D_{KL}(p(y|x)||\hat{p}(y)))$
其中,$x∼p$:示意从生成器生成的图片;$p(y|x)$:把生成的图片 x 输出到 Inception V3,失去一个 1000 维的向量 y,即图片 x 属于各个类别的概率分布;
$pˆ(y)$:N 个生成的图片(N 通常取 5000),每个生成图片都输出到 Inception V3 中,各自失去一个的概率分布向量,而后求这些向量的均匀,失去生成的图片在所有类别上的边缘散布,具体公式如下:
$\hat p(y)=\dfrac1N\sum\limits_{i=1}^N p\left(y|x^{(i)}\right)$
$DKL$:示意对 $p(y|x)$ 和 $pˆ(y)$ 求 KL 散度,KL 散度公式如下:
$D_{KL}\left(P\|Q\right)=\sum\limits_{i}P\left(i\right)\log\dfrac{P\left(i\right)}{Q\left(i\right)}$
S 不能反映过拟合、且不能在一个数据集上训练分类模型,用来评估另一个数据集上训练的生成模型。
3.2 FID
FID 全称是 Fréchet Inception Distance,计算实在图片和生成图片的 Inception 特征向量之间的间隔。
首先将 Inception Net-V3 模型的输入层替换为最初一个池化层的激活函数的输入值,把生成器生成的图片和实在图片送到模型中,失去 2048 个激活特色。生成图像的特色均值 $μg$ 和方差 $C_g$,以及实在图像的均值 $μr$ 和方差 $Cr$,依据均值和方差计算特征向量之间的间隔,此间隔值即 FID:
$FID\left(P_r,P_g\right)=||\mu_r-\mu_g||+T_r\left(C_r+C_g-2\left(C_rC_g\right)^{1/2}\right)$
其中 Tr 指的是被称为「迹」的线性代数运算(即方阵主对角线上的元素之和)。
FID 办法比拟鲁棒,且计算高效。
3.3 其余评估办法
除了上述介绍的两种 GAN 主观评估办法,更多评估办法:
Mode Score、Modifified Inception Score、AM Score、MMD、图像、Image Quality Measures、SSIM、PSNR 等
4. Perplexity: 困惑度
Perplexity,中文翻译为困惑度,是信息论中的一个概念,其能够用来 掂量一个随机变量的不确定性,也能够用来掂量模型训练的好坏水平。通常状况下,一个随机变量的 Perplexity 数值越高,代表其不确定性也越高;一个模型推理时的 Perplexity 数值越高,代表模型体现越差,反之亦然。
4.1 随机变量概率分布的困惑度
对于离散随机变量 X,假如概率分布能够示意为 p(x)那么对应的困惑度为:
$2^{H(p)}=2^{-\sum_{x\in X}p(x)log_2p(x)}$
其中,H(p)为概率分布 p 的熵。能够看到,一个随机变量熵越大,其对应的困惑度也就越大,随机变量的不确定性也就越大。
4.2 模型散布的困惑度
困惑度也能够用来掂量模型训练的好坏水平,即掂量模型散布和样本分布之间的差别。一般来讲,在模型的训练过程中,模型散布越靠近样本分布,模型训练得也就越好。
假如当初有一批数据 $x1,x2,x3,…,x_n$,其对应的教训散布为 $pr(x)$。当初咱们依据这些样本胜利训练出了一个模型 $pθ(x)$,那么模型散布 $pθ(x)$ 的好坏能够由困惑度进行定义:
$2^{H(p_r,p\theta)}=2^{-\sum_i^n p_r(x_i)\log_2p\theta(x_i)}$
其中,$H(pr,pθ)$ 示意样本的教训散布 $pr^$ 和模型散布 $pθ$ 之间的穿插熵。假如每个样本 xi 的生成概率是相等的,即 $p_r(x_i)=1/n$,则模型散布的困惑度可简化为:
$2^{H(p_r p\theta)}=2^{-\frac{1}{n}\sum_i^n log_2p\theta(x_i)}$
4.3 NLP 畛域中的困惑度¶
在 NLP 畛域,语言模型能够用来计算一个句子的概率,假如当初有这样一句话 $s=w1,w2,w3,…,w_n$ 咱们能够这样计算这句话的生成概率:
$\begin{aligned}p(s)&=p(w_1,w_2,\ldots,w_n)\\ &=\prod\limits_{i=1}^np(w_i|w_1,w_2,\ldots,w_{i-1})\\ \end{aligned}$
在语言模型训练实现之后,如何去评判语言模型的好坏?这时,困惑度就能够发挥作用了。一般来讲,用于评判语言模型的测试集均是正当的、高质量的语料,只有语言模型在测试集上的困惑度越高,则代表语言模型训练地越好,反之亦然。
在理解了语句概率的计算后,则对于语句 $s=w1,w2,w3,…,w_n$ 其困惑度能够这样来定义:
$\begin{aligned}perplexity&=p(s)^{-\frac{1}{n}}\\ &=p(w_1,w_2,\ldots,w_n)^{-\frac{1}{n}}\\ &=\sqrt[n]{\frac{1}{p(w_1,w_2,\ldots,w_n)}}\\ &=\sqrt[n]{\prod_{i=1}^n\frac{1}{p(w_i|w_1,w_2,\ldots,w_{i-1})}}\\ \end{aligned}$
显然,测试集中句子的概率越大,困惑度也就越小。
5.BLEU: 机器翻译合理性
BLEU (BiLingual Evaluation Understudy) 最早用于机器翻译工作上,用于评估机器翻译的语句的合理性。具体来讲,BLEU 通过掂量生成序列和参考序列之间的重合度进行计算的。上面咱们将以机器翻译为例,进行探讨这个指标。
假如以后有一句源文 $s$,以及相应的译文参考序列 $r1,r2,…,r_n$。机器翻译模型依据源文 s 生成了一个生成序列 x,且 W 为依据候选序列 x 生成的 N 元单词组合,这些 N 元组合的精度为:
$P_N(x)=\dfrac{\sum_{w\in W}min(c_w(x),max_{k=1}^nc_w(r_k))}{\sum_{w\in W}c_w(x)}$
其中,$c_w(x)$ 为 N 元组合词 w 在生成序列 x 中呈现的次数,$c_w(r_k)$ 为 N 元组合词 w 在参考序列 $r_k$ 中呈现的次数。N 元组合的精度 $P_N(x)$ 即为生成序列中的 N 元组合词在参考序列中呈现的比例。
从以上公式能够看出,$P_N(x)$ 的核心思想是掂量生成序列 x 中的 N 元组合词是否在参考序列中呈现,其计算结果更偏好短的生成序列,即生成序列 x 越短,精度 $P_N(x)$ 会越高。这种状况下,能够引入长度惩办因子,如果生成序列 x 比参考序列 $r_k$ 短,则会对该生成序列 x 进行惩办。
$b(x)=\left\{\begin{matrix}1&\mathrm{if}\quad l_x>l_r\\ \exp(1-l_s/l_r)&\mathrm{if}\quad l_s\leq l_r\end{matrix}\right.$
其中,$l_x$ 示意生成序列 x 的长度,$l_r$ 示意参考序列 lr 的最短长度。
前边重复提到一个概念– N 元组合词 ,咱们能够依据生成序列 x 结构不同长度的 N 元组合词,这样便能够取得不同长度组合词的精度,比方 P1(x),P2(x),P3(x) 等等。BLEU 算法通过计算不同长度的 N 元组合的精度 PN(x),N=1,2,3…,并对其进行几何加权均匀失去,如下所示。
$\operatorname{BLEU-N}(x)=b(x)\times\exp(\sum\limits_{N=1}^{N’}\alpha_N\log P_N)\quad$
其中,$N′$ 为最长 N 元组合词的长度,$a_N$ 为不同 N 元组合词的权重,个别设置为 $\frac{1}{N^{\prime}}$,BLEU 算法的值域范畴是[0,1],数值越大,示意生成的品质越好。
BLEU 算法可能比拟好地计算生成序列 x 的字词是否在参考序列中呈现过,然而其并没有关注参考序列中的字词是否在生成序列呈现过。即 BLEU 只关怀生成的序列精度,而不关怀其召回率。
6.ROUGE 评估指标: 机器翻译模型
看过 BLEU 算法的同学晓得,BLEU 算法只关怀生成序列的字词是否在参考序列中呈现,而不关怀参考序列中的字词是否在生成序列中呈现,这在理论指标评估过程中可能会带来一些影响,从而不能较好评估生成序列的品质。
ROUGE (Recall-Oriented Understudy for Gisting Evaluation)算法便是一种解决方案,它可能掂量参考序列中的字词是在生成序列中呈现过,即它可能掂量生成序列的召回率。上面还是以机器翻译为例,来探讨一下 ROUGE 的计算。
假如以后有一句源文 s,以及相应的译文参考序列 $r_1,r_2,…,r_n$。机器翻译模型依据源文 s 生成了一个生成序列 x,且 W 为依据候选序列 x 生成的 N 元单词组合,则 ROUGE 算法的计算形式为:
$\operatorname{ROUGE-N}(x)=\dfrac{\sum_{k=1}^n\sum_{w\in W}\min(c_w(x),c_w(r_k))}{\sum_{k=1}^n\sum_{w\in W}c_w(r_k)}$
其中,$c_w(x)$ 为 N 元组合词 w 在生成序列 x 中呈现的次数,$c_w(r_k)$ 为 N 元组合词 w 在参考序列 rk 中呈现的次数。
从公式能够看到,ROUGE 算法能比拟好地计算参考序列中的字词是否在生成序列呈现过,但没有关注生成序列的字词是否在参考序列中呈现过,即 ROUGE 算法只关怀生成序列的召回率,而不关怀准确率。
援用
[1] 邱锡鹏. 神经网络与深度学习[M]. 北京:机械工业出版社,2021.
[2] 吴飞. 人工智能导论:模型与算法[M]. 北京:高等教育出版社,2020.