内容简介:在我们看来,计算机就是一台严丝合缝、精密运转的机器,严格按照程序员下达的指令工作。虽然产品上线之后经常碰到迷之问题,但我们通常会检讨程序设计得不够完美,而不会认为这是理所当然。因为我们相信只要程序设计严谨,将各种意外情况考虑在内,就会消除这种不确定问题。然而到了机器学习,特别是深度学习,很多结果都是以概率的形式提供的。就拿图片分类来说,通常模型预测出图片属于每个类别的概率,而不是直接给出一个确定的结果。这就如同天气预报员预报明天的天气:晴天的概率多少多少,下雨的概率多少多少。估计如果这样预报天气,很多人会抓
在我们看来,计算机就是一台严丝合缝、精密运转的机器,严格按照 程序员 下达的指令工作。虽然产品上线之后经常碰到迷之问题,但我们通常会检讨程序设计得不够完美,而不会认为这是理所当然。因为我们相信只要程序设计严谨,将各种意外情况考虑在内,就会消除这种不确定问题。
然而到了机器学习,特别是深度学习,很多结果都是以概率的形式提供的。就拿图片分类来说,通常模型预测出图片属于每个类别的概率,而不是直接给出一个确定的结果。这就如同天气预报员预报明天的天气:晴天的概率多少多少,下雨的概率多少多少。估计如果这样预报天气,很多人会抓狂。问题是,天气预报说明天是晴天,明天就一定是晴天吗?这其实仍然是一个概率问题。虽然我们掌握了足够的气象资料,天气预报也越来越准确,但是我们依然无法保证每次都是准确的。
既然在深度学习中分类问题是各类别的概率,我们很容易选择一种策略:某个类别的概率最高,我们就认为预测结果属于哪种类别。比如下面这张蛙的图片:
使用CIFAR-10数据集训练出的模型进行推断,各个类别的概率如下:
其中,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-5准确率可以提供一个对rank-1准确率的一个补充。
理想情况下,rank-1准确度将与rank-5准确度同步增加,但是在具有挑战性的数据集上,情况并非总是如此。因此,我们还会检查rank-5的准确度,以确保我们的网络在rank-1准确度停滞不前时仍然在“学习”。
以上实例均有完整的代码,点击阅读原文,跳转到我在github上建的示例代码。
另外,我在阅读《Deep Learning for Computer Vision with Python》这本书,在微信公众号后台回复“计算机视觉”关键字,可以免费下载这本书的电子版。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用pynlpir增强jieba分词的准确度
- 随机森林算法预测法官判决,准确度优于人类水平
- AI阅读病历,推荐临床诊断,准确度超过年轻医生!
- CNN能同时兼顾速度与准确度吗?CMU提出AdaScale
- pkuseg-python:一个高准确度的中文分词工具包
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Masterminds of Programming
Federico Biancuzzi、Chromatic / O'Reilly Media / 2009-03-27 / USD 39.99
Description Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. Think along with Adin D. Falkoff (APL), Jame......一起来看看 《Masterminds of Programming》 这本书的介绍吧!