1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai
1.4 满足和优化指标 Single number evaluation metric
要把你顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,我发现有时候设立满足和优化指标是很重要的,让我告诉你是什么意思吧。
如上图。
假设你已经决定重点关注猫分类器的分类准确度,我们可以采用
F
1
F_1
F1分数或者用其他衡量准确度的指标。除了准确度之外,可能还需要考虑运行时间,就是需要多长时间来分类一张图。在图中,分类器
A
A
A需要80毫秒,
B
B
B需要95毫秒,
C
C
C需要1500毫秒,就是说需要1.5秒来分类图像。
你可以这么做,将准确度和运行时间组合成一个整体评估指标。
所以总体成本是
c
o
s
t
=
a
c
c
u
r
a
c
y
−
0.5
∗
r
u
n
n
i
n
g
t
i
m
e
cost = accuracy -0.5 * running time
cost=accuracy−0.5∗runningtime。
组合准确度和运行时间这两个数值的线性加权求和,这种组合方式可能太刻意。
你还可以做其他事情,就是选择一个分类器,能够最大限度提高准确度,但必须满足运行时间要求,例如:对图像进行分类所需的时间必须小于等于100毫秒。
在这种情况下,我们就说 准确度 是一个 优化指标,因为你想要准确度最大化,你想做的尽可能准确,而 运行时间 就是我们所说的 满足指标,意思是它必须足够好,它只需要小于100毫秒,达到之后,你不在乎这指标有多好,或者至少你不会那么在乎。
将准确度和运行时间结合起来的方式是一个相当合理的权衡方式。实际情况可能是,只要运行时间少于100毫秒,你的用户就不会在乎运行时间是100毫秒还是50毫秒,甚至更快。
通过定义优化和满足指标,就可以给你提供一个明确的方式,去选择“最好的”分类器。在这种情况下分类器B最好,因为在所有的运行时间都小于100毫秒的分类器中,它的准确度最好。
更一般地说,如果你要考虑
N
N
N个指标,有时候选择其中一个指标做为优化指标是合理的。你会尽量优化那个指标,然后剩下
N
−
1
N-1
N−1个指标都是满足指标,意味着只要它们达到一定阈值,例如运行时间快于100毫秒,但只要达到一定的阈值,你不在乎它超过那个门槛之后的表现。
再举一个例子,如上图,假设你正在构建一个系统来检测唤醒语(wake words),也叫触发词(trigger words),这指的是语音控制设备。比如亚马逊Echo,你会说“Alexa”,或者用“Okay Google”来唤醒谷歌设备,或者对于苹果设备,你会说“Hey Siri”,或者对于某些百度设备,我们用“你好百度”唤醒。这些就是唤醒词,可以唤醒语音控制设备,然后监听你想说的话。
所以,
- 你可能会在乎触发字检测系统的准确性,当有人说出其中一个触发词时,有多大概率可以唤醒你的设备。
- 你可能也需要顾及假阳性(false positive)的数量,就是没有人在说这个触发词时,它被随机唤醒的概率有多大?
在这种情况下,组合这两种评估指标的合理方式可能是最大化精确度。
当某人说出唤醒词时,你的设备被唤醒的概率最大化,然后必须满足24小时内最多只能有1次假阳性,对吧?也就是说,你的设备平均每天只会没有人真的在说话时随机唤醒一次。
最终设定:准确度是优化指标,每24小时发生一次假阳性是满足指标。
最后总结一下,如果你需要顾及多个指标,那么有一个优化指标,你想尽可能优化的,然后还有一个或多个满足指标,需要满足的,需要达到一定的门槛。
现在你就有了一个全自动的方法,在观察多个成本大小时,选出"最好的"那个。
我们的这些评估指标必须是在训练集或开发集或测试集上计算或求出来的。所以你还需要做一件事,就是设立训练集、开发集,还有测试集。在下节课里,我会和大家分享一些如何设置训练、开发和测试集的指导方针。