谭盾的音乐作品
【机器学习基⽯】噪声和概率⽬标,错误衡量,8-1,8-2,8-3 Lec 8-1 噪声和概率⽬标
有噪声的数据
回顾 learning flow,我们有⼀个target function,这个target function 会产⽣⼀堆的example 资料,除了从target function 得到资料的 y 以外,它的 x 的部分是由某⼀个我们所不知道的distribution所产⽣的。未来在测试的时候,我们也会⽤⼀样的distribution。我们的演算法A想办法从这些资料还有⼀个hypothesis t ⾥⾯找出⼀个好的 hypothesis。
我们现在有⼀个观念说,好的hypothesis t 是 VC dimension 是 finite (有限)的;⽽好的hypothesis 是Ein 最低的。经过第第七章的推导,我们已经证明,在这样的流程下是成⽴的。但我们之前也提到过,如果在这个图⾥加上了noi 噪声,对我们整个理论的推导会不会有影响呢?
,
有噪声时的推导
我们之前讲pocket演算法时讲到过,我们的资料可能会有noi,例如说银⾏发信⽤卡的例⼦,有⼀个顾客应该要发信⽤卡给他,但资料⾥⾯因为记录错误或⼈为错误或其他原因,我们没有发信⽤卡给他;还有可能有两笔差不多条件的资料,但⼀个⼈发了信⽤卡,另⼀个⼈没发给他。对应到2D的图中就是,⼀个本来是⚪,但被划分成了X;以及两个点叠在⼀起,但⼀个是⚪,⼀个是X。另外,除了y可能有噪⾳,x也可能会有噪⾳,即收集顾客资料时搜集得不精准。但在原来的流程⾥⾯,我们是没有考虑这些的。
那么有了噪⾳,我们推导出来的VC bound 是不是还能⼯作得很好?那么VC bound 的核⼼是什么? 回想⼀下,我们在证明VC bound 的时候,⼀开始的假设都是我们有⼀个罐⼦,我们不知道罐⼦⾥有多少橘⾊弹珠,如果我们抓⼀把出来的话,就可以估计橘⾊的弹珠是多少。假设这些橘⾊的弹珠就是我们犯错误的地⽅。
我们把每⼀个弹珠就看做⼀个⼀个的x,对应到学习⾥⾯,就是⼀个⼀个的输⼊,然后我们从某⼀个⼏率分布P,把它抽出来。再来呢,弹珠的颜⾊怎么决定的?我们就看看,我们的hypothesis 的预测,我们的 h 就对应到⼀个罐⼦,这个罐⼦ h 的预测跟我们⽬标函数 f 的预测到底是⼀样还是不⼀样,不
⼀样就记成橘⾊,⼀样就记成绿⾊。这是我们之前推导VC bound 最核⼼的部分。
那现在呢,如果有噪声会怎么样?噪声的意思是什么,噪声是说,也许我有⼀个真实的 x 在那边,但是呢,今天我拿到的 y 并不⼀定是f(x) 。我们想象⼀种特别的弹珠,它的颜⾊会不断地变化,每⼀个时间点,它就有可能从橘⾊变绿⾊,或者绿⾊变橘⾊,它的颜⾊不是固定的,⽽是有时候是橘⾊,有时候是绿⾊。如果从时间的⽐例来切割的话,我们想象每⼀颗弹珠,它60%的时候是橘⾊,40%的时候是绿⾊。这样,每⼀颗弹珠都是⼀个变⾊龙,但从整体来看,整个罐⼦还是有⼀个橘⾊和绿⾊的⽐例的。那我们要怎样知道,整个罐⼦⾥⾯,橘⾊和绿⾊的⽐例到底是多少?同样,我可以从中抽样,并且赶快记录抽出来的瞬间那些弹珠的颜⾊,同样可以估计说那个时刻罐⼦⾥橘⾊弹珠的⽐例,尽管弹珠的颜⾊是变来变去的,但因为它整体还是有分布规律的,所以仍然可以抽样估计。
我们也可以把整个VC 的证明重新写⼀次,⽤会变⾊的弹珠写⼀次,也就是我们现在要想象说,我们的 y ,也就是label 并不是来⾃ f(x),⽽是来⾃取样的过程,来⾃ P(y|x),也就是已经是这些弹珠的状况下,到底它的颜⾊会怎么样变来变去,这是由 P(y|x) 决定的。那我们现在有了x 和 y 的分布,只要把VC 的复杂证明再重新写⼀次,VC bound 还是可以work。
我们可以把这两个部分整合起来,这实际上告诉我们说,只要我们的每⼀个example 的(x, y) y 来⾃某⼀个 joint distribution P(x, y),在训练时是这样,在测试时也是这样,那么整个VC 的⼤架构都还是能够⽤得上来。
,
卤水怎么保存P( y | x) 我们⼀般把它叫做 target 的 distribution, 也就是说不是⼀个⽬标函数,⽽是⼀个⽬标分布,因为对每⼀个弹珠来说,把它的预测称为mini-target,对这个x 可以做⼀个预测,mini-target 对这个 x 上⾯,到底最理想的预测是什么。什么意思呢?这个distribution告诉我们说,最理想是什么,然后其他不理想部分是什么,哪些是噪声。
例如说:我今天有个P,这个P长这样⼦,如果我拿⼀颗弹珠,它是⚪的⼏率是0.7, 它是X 的⼏率是0.3,那么请问你要猜⚪还是X?那么⼤家都更愿意猜⚪,这样错误率只有30%。虽然⚪是⽐较好的选择,但还是有30%的⼏率是错误的,那么这30%就可以想象是在这个最好的选择上的噪声。所以这个
习惯孤独⽬标分布可以告诉我们,最好的选择是什么,然后噪声是多少,这是⼀种对target distribution的看法。
那或者呢,我们把之前⼀直所适⽤的deterministic target function ,也就是固定的⽬标函数,也可以看作target distribution的⼀个特殊的例⼦:如果今天,我的 y 跟我的 f (x) 是⼀样,完全没有噪声,是最好的预测。适⽤target distribution的时候跟以前使⽤target function 的时候基本上没有什么不⼀样。
所以现在我们learning 的⽬标就有两个部分了:
① ⼀个是 p (x), 它告诉我们哪些点是重要的,如果某些点的p(x) 很⼤,它常常会被sample 到,在Ein⾥⾯常常会被采到,在Eout的时候它也会⽐较重要⼀点。
五四爱国运动
②这些常常被sample到的点,我们要预测得尽量接近 mini-target, 这个mini-target 是从 P(y|x) 来的,它告诉我们说最理想的mini-target是什么。
在常见的事情上做得好,这就是learning要做的事情。
所以加上噪声以后,现在左上⾓不再是⼀个target function了,⽽是⼀个target distribution p(y|x),它所产⽣的 y 会给trainning的部分,并
且我们⽤同样的distribution来产⽣这些 y 来做测试看 g 到底跟 f ⼀样还是不⼀样。
对于pocket算法,在A那边,我们尽量想办法去让Ein越⼩越好,那这个Ein越⼩,后⾯真的会变成Eout 越⼩?会,因为在有noi 的情况下,只要我们想象说,这个noi,是由这个target distribution来做描述的话,我们还是可以把事情学得很好。
Lec 8-2 错误估计
讲完了噪声,现在来看看,在整个learning flow ⾥⾯,我们⼀直有这个最后⼀步:想要知道 g 跟 f 到底⼀不⼀样。我们整个的推导都在想办法说服⼈家,我们的g 跟 f 是很像的。我们前⾯使⽤的是Eout来衡量 g 跟 f sample出来的点是否⼀样等等。更⼀般地来说,实际上要回答这个问题,我们⼼⾥要有个想好的说到底要怎么打分数,⼈家给了你⼀个 g,你⼼⾥有个你想要的 f ,你总要有个打分数的⽅式来告诉⼈家好或不好。
那我们之前使⽤的这个 g 呢,有三个特性:
中国传统四大节日
out-of-sample:我们看的事情是未来抽样出来的这些 x 。
① out-of-sample
pointwi :可以在每⼀个 x 上个别衡量,⽽不是说⼀定要抽10个 x 然后有⼀个综合的衡量,只⽤看⼀个 x 好不好,然后最后做抽样的平② pointwi
均就可以了。
classification:我们之前讨论的是⼆元分类,就看对或不对就⾏了。classification的错误通常⼜被叫做 0/1 错误。
③ classification
好,以上是错误的衡量,很多时候,我们所碰到的错误衡量,都可以像之前做的⼀样,只考虑每个点上,到底有多少错误,然后再把它加起来或者做平均的⽅式。这种⽅式就把他叫做pointwi,每个点上的error measure,⽤ err 来表⽰,有了这个 err 之后,我们就可以看看说我们的Ein 和 Eout 会长什么样⼦?
这些 f(xn) 在⽐较有noi 的情况下,其实就是 y(n)。
那么归纳⼀下,有哪些衡量错误的⽅式:
① 0/1 错误:通常⽤在分类;
② squared error 平⽅错误: 通常⽤在预测,实数的回归,⽤来衡量y~ 和 y 到底有多接近,离得越远,平⽅的错误越⼤,⽽不是像0/1错误⼀样,对就是对,错就是错。
我们未来会讲更多不同的错误的衡量,这两个基本的先有个概念,想跟⼤家说,我们对错误的衡量会影响到,到底,我们刚才讲过说,在 p(y | x)的时候,我们有那个最理想的mini-target,迷你的⽬标,这个迷你的⽬标跟错误有关,也跟 p(y | x)有关。什么意思呢?好,我们来看看到底错误的衡量,同⼀个 p(y | x), 这边举了个例⼦说:
我有三个可能的输出,y=1 的⼏率是0.2;y=2的⼏率是0.7; y=3 的⼏率是0.1,加起来就是1了。那我
们来看看说,在这个状况下,最理想的mini-target 长什么样⼦。
假如你想象的错误是 0/1 错误,当你的hypothesis说是 1 时,可能的错误率是0.8,如果你的hypothesis 说是2呢?那么可能的错误率是0.3,如果说是3的话,可能的错误率是0.9;当然这个hypothesis 不可能说是1.9,因为这是个分类问题。所以在这个例⼦⾥,最好的答案是猜2,这样你只
有0.3的⼏率犯错误。
如果我们今天的错误衡量是squared 呢?平⽅的错误。你的hypothesis 说是 1,有0.2的机会它没有犯错,有0.7的机会它犯错 (2-1)^2 = 1,有0.1 的机会它犯错(3-1)^2 = 4, 加权后为0.7*1 + 0.1 * 4 = 1.1。依次算出hypothesis 预测是其他各个值时的错误率,最低的为推测1.9时,为0.29。你看,在0/1错误时不可能出现的1.9,在平⽅错误时,反⽽是犯错⼏率最⼩的推测。
这⾥想说明,你要⽤什么样的错误衡量,配合上说 P 长什么样⼦,会告诉我们,最理想化的⽬标函数到底是长什么样⼦。
⼀般来说,在0/1 错误⾥⾯,⼀般来说,选P最⼤的那个就对了;⽽在squared 错误⾥⾯,则需要选的是平均值,也就是最中间的那个,它的加权平均值最⼩。
现在我们有了错误衡量的观念,错误衡量会影响到 f 到底长什么样⼦。我们的learning flow⾥⾯,不能够只有我们不知道的p 和 f 在那边,实际上必须要告诉我们的演算法说,我们要⽤什么样的错误衡量。然后,另外呢,我们也希望,⽤这样错误衡量最后真的来衡量说我最后学到的 g 到底好还是不好。这个错误衡量最好要告诉演算法,如果不告诉演算法怎么去找好的g,可能它⾃⼰觉得它把0/1 做得很好,结果我们要算的是squared error,结果可能就天差地别了,所以错误衡量是很重要的⼀部分。
VC 的整个推导还有整个精神,对于很多不同的hypothesis t ,还有很多不同的错误衡量来说,都会work。也就是说,如果我要做得不是classification,不是分类,⽽是做回归分析,要输⼊实数的那个回归分析,把VC 的⼀些推导做⼀些定义上的修改,例如我要定义说,我今天是实数输出的VC dimension是怎么算的,做完这些修改之后,我是可以⽤得到⼏乎⼀样,⾮常类似的VC bound,也会起到作⽤。
snmpwalkLec 8-3 算法的错误衡量
案例:指纹辨识
你的分类器可能会犯两种错误:
① fal accept:本应被拒绝,⽽通过了验证
② fal reject:本应该通过验证,⽽拒绝通过
对于我们之前的 0/1 错误分类问题,对两种类型错误的惩罚⼒度是⼀样的。但实际的应⽤中,有可能更侧重于其中的某⼀类。
① 超市给常客打折:
fal accept 虽然不应该给折扣,但错误地给了,影响并不⼤,⽆⾮是少赚⼀点钱。
带山的成语
fal reject 错误地拒绝了客户,客户得不到应有的折扣,客户会⾮常⽣⽓,以后可能再也不来了,对于超市来说可能是很⼤的损失。
fal reject
所以对超市来说,fal accept 错误没那么糟糕,但fal reject 错误影响很⼤。所以超市⼼⾥应该有⼀个犯错的成本表:
f 为 +1 打折⽽
g 判定 为-1 不打折时,成本为10,⽐fal accept ⼤10倍。
② CIA 美国中情局系统⾝份认证:
fal accept:错误地接受登⼊系统,可能导致数据泄露,产⽣严重错误
fal accept:
文玩核桃fal reject:错误地拒绝登⼊系统,员⼯可能会不开⼼,但对CIA整体的⽬标来说,没有那么重要。
fal reject: