聊一聊rank-1和rank-5准确度

栏目: 数据库 · 发布时间: 6年前

内容简介:在我们看来,计算机就是一台严丝合缝、精密运转的机器,严格按照程序员下达的指令工作。虽然产品上线之后经常碰到迷之问题,但我们通常会检讨程序设计得不够完美,而不会认为这是理所当然。因为我们相信只要程序设计严谨,将各种意外情况考虑在内,就会消除这种不确定问题。然而到了机器学习,特别是深度学习,很多结果都是以概率的形式提供的。就拿图片分类来说,通常模型预测出图片属于每个类别的概率,而不是直接给出一个确定的结果。这就如同天气预报员预报明天的天气:晴天的概率多少多少,下雨的概率多少多少。估计如果这样预报天气,很多人会抓
聊一聊rank-1和rank-5准确度

在我们看来,计算机就是一台严丝合缝、精密运转的机器,严格按照 程序员 下达的指令工作。虽然产品上线之后经常碰到迷之问题,但我们通常会检讨程序设计得不够完美,而不会认为这是理所当然。因为我们相信只要程序设计严谨,将各种意外情况考虑在内,就会消除这种不确定问题。

然而到了机器学习,特别是深度学习,很多结果都是以概率的形式提供的。就拿图片分类来说,通常模型预测出图片属于每个类别的概率,而不是直接给出一个确定的结果。这就如同天气预报员预报明天的天气:晴天的概率多少多少,下雨的概率多少多少。估计如果这样预报天气,很多人会抓狂。问题是,天气预报说明天是晴天,明天就一定是晴天吗?这其实仍然是一个概率问题。虽然我们掌握了足够的气象资料,天气预报也越来越准确,但是我们依然无法保证每次都是准确的。

既然在深度学习中分类问题是各类别的概率,我们很容易选择一种策略:某个类别的概率最高,我们就认为预测结果属于哪种类别。比如下面这张蛙的图片:

聊一聊rank-1和rank-5准确度

使用CIFAR-10数据集训练出的模型进行推断,各个类别的概率如下:

聊一聊rank-1和rank-5准确度

其中,Frog类别的概率最大,我们就认为这张图片所属的类别为Frog。

计算模型准确度的方法也非常简单:

  • 步骤#1:计算数据集中每个输入图像的类别标签的概率。
  • 步骤#2:确定真实标签是否等于具有最大概率的预测类别标签。
  • 步骤#3:计算步骤#2为真的次数,然后除以总的测试图片数量。

这种度量也称之为rank-1准确度,这也是一种非常直观的度量方式。然而,最近几乎所有在ImageNet数据集上评估的机器学习模型的论文都不仅给出了rank-1准确度,还给出了rank-5准确度。

顾名思义,rank-5准确度选取5个最大概率的类别,只要这5个类别中的一个和真实标签相同,该预测结果就为真。rank-5准确度的计算方法如下:

  • 步骤#1:计算数据集中每个输入图像的类别标签的概率。
  • 步骤#2:按降序对预测的类别标签概率进行排序。
  • 步骤#3:确定真实标签是否存在于步骤#2的前5个预测标签中。
  • 步骤#4:计算步骤#3为真的次数,然后除以总的测试图片数量。

rank-1和rank-5的代码实现也非常简单:

def rank5_accuracy(preds, labels):
  # initialize the rank-1 and rank-5 accuracies
  rank1 = 0
  rank5 = 0

  # loop over the predictions and ground-truth labels
  for (p, gt) in zip(preds, labels):
    # sort the probabilities by their index in descending
    # order so that the more confident guesses are at the
    # front of the list
    p = np.argsort(p)[::-1]

    if gt in p[:5]:
      rank5 += 1

    if gt == p[0]:
      rank1 +=1

  # compute the final rank-1 and rank-5 accuracies
  rank1 /= float(len(labels))
  rank5 /= float(len(labels))

  return (rank1, rank5)
复制代码

有朋友可能会觉得,这个机器学习也太不靠谱了吧!不能给出一个精确的结果也就算了,还给出5个模凌两可的答案。在CIFAR-10这样的小数据集上,因为总的类别很少,如果还统计rank-5准确率,的确有点傻,但是考虑到ImageNet这样超大规模的数据集,其类别有成千上万个,特别是某些较小的类目,比如如下两张图片:

聊一聊rank-1和rank-5准确度

普通人也很难分辨出其类别不同。所以在某些大型图片分类模型任务中,rank-5准确率可以提供一个对rank-1准确率的一个补充。

理想情况下,rank-1准确度将与rank-5准确度同步增加,但是在具有挑战性的数据集上,情况并非总是如此。因此,我们还会检查rank-5的准确度,以确保我们的网络在rank-1准确度停滞不前时仍然在“学习”。

以上实例均有完整的代码,点击阅读原文,跳转到我在github上建的示例代码。

另外,我在阅读《Deep Learning for Computer Vision with Python》这本书,在微信公众号后台回复“计算机视觉”关键字,可以免费下载这本书的电子版。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Information

The Information

James Gleick / Vintage / 2012-3-6 / USD 16.95

James Gleick, the author of the best sellers Chaos and Genius, now brings us a work just as astonishing and masterly: a revelatory chronicle and meditation that shows how information has become th......一起来看看 《The Information》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具