你有这么多个项的意思是什么呢,所以如果我 今天要做很general一般的所谓的Q次 的多项式转换,刚才是二次现在我们变成Q次,Q次的话 我就要列出来什么,好,就我列出来的是这是到一次的部分 然后呢还要有二次的部分,所有的二次式 好,所有的三次式一路列出来,一路列到所有的Q次式, 这是所谓Q次的多项式转换,我们需要的所有的式子,那怎么样呢 这里面有多少个dimension呢,好,我们一般要算它这个Z有多长的时候 我们用1 加上d~来做代表,这个1特别把它独立出来是因为,也 就有点像,我们之前在线性的模型里面,那个d加1一样,那个1代表的是常数的那个 然后其他非常数的有几个dimension,我们把它叫做 d~,ok一样加一个小蚯蚓代表我们是在Z空间里面发生的事情, 这么多个dimension到底有多少你呢,大家可以想象说 我需要什么,我需要算的就是有多少种不同的方法 来组成Q,这个次方是Q或者小于等于Q那么多的项 那这对应到,大家可能高中的时候学过,就是所谓的重复组合 我有d种不同的东西,我要取Q个出来,或者取小于等于Q个出来 请问有多少种取法,如果我允许这d种不同的东西我可以重复取的话,有多少种不同的取法 那大家可以去翻一翻高中的排列组合的书,那它会告诉你说 你的取法总共就是Q加d取Q这么多 Okay,用二项式,Q加d取Q这二项式这么多,或者Q加d取d这么多 好,列出这样的式子,是要告诉大家说如果我们把d看成一个常数,因为这是你资料里面已经有 我们已经给定的话,那么你使用什么Q的这个 成长是什么呢,大概就是这个Q的d次方 那也就是说,你就是付出Q的d次方,这么多项 Q的d次方这么多项代表什么,代表今天就要花这么多的力气 在计算,计算什么,你把X这个 送到Z要计算,就是说X是二维的,好Z那边是六维的 好所以你要花一个六的力气去做计算,你今天要算W 好算W不管你今天是pocket也好,linear regression也好,logistic regression也好 好,你要算W至少至少你要花d~加1的力气 去做更新吧,对不对POA,每次更新你就要花d~加1 的力气 那这个linear regression 搞不好更惨,因为那个矩阵,那个矩阵是 d~加1乘上d~加1,然后你要做反矩阵的动作 好所以,计算上,你要花增加的力气, 还有什么要花增加的力气,储存上也要花增加的力气,你只要把那个W 那个W~存起来,然后做对未来的预测 这个是要花力气的,计算上储存上,你都要花额外的力气,在你的算法里面 所以使用这个变换并不是for free 并不是这个没有代价的,你的代价 之一就是你在计算上跟储存上,要花额外的力气 那如果你的Q很大的话,这一件事情是很困难的,因为你要你要储存一个很长的向量,一万维- ,两万维的向量 那可能是,你要更新这个向量,或者从最佳化的角度来说,你在那个 空间里面要找到好的W~当做你的解,这些可能都是很困难的 好,那还有另外一个代价是这样 我们刚才讲了它有多少项,它有d~加1的那么多项,这个大概是Q的d次方那么多项 这同时也代表什么,代表我就要有这么多个 W,那我们之前说到这么多的W大体上就代表这么多 个自由度,也就是我的VCdimension大概就是d~加 1这么多 不过啊,这下惨了,你原来linear model过得很好,只有d加1 那样的自由度 你现在有d~加1那么大的自由度,然后这个自由度,随着这个Q是一路很快的长上去 这样问题就出来啦,那怎么办呢 by the way实际上我们可以证明的事情是,这个我们这个新增加的 自由度,最多最多是d~加1,我们没有说,这个下限是,我上限是d~加1 为什么,因为任何一个在Z空间里面 的d加2个点,我们知道在Z空间里面d~ 加2个点是没有任何一条直线没有任何一个perceptron可以shatter的 对不对,这是之前已经证过的事情,Z空间里面d加2个点,无论如何都不能被shatter 那这代表什么,这代表我们回到X空间里面 X空间里面的d加2个点,也不能够被 任何我们要用的Q次的曲线来shatter,如果那边可以,我就找出一组系数,在Z空间- 里面也可以shatter 那看起来是不对的,所以Z空间里面不能shatter代表 我回到X空间,我也不能用Q次的曲线来做shatter 我这样就对我们的VC dimension产生了一个限制,那在这边呢,另外一个方向的部分 比较难证明,我们这边不特别跟大家提,我们希望大家只记得是上限的部分,我们可能最多最多 要付出d~加2那样的代价 好,这是所谓的model complexity的代价,也就是说我的Q变大的时候,我的VC dimension也变大 那这一件事情有什么坏处呢,我先问问 大家啦,我这边列了两张图,同一个资料,两种不同的分类方式 左边那张图说我用一条线来做分类,右边那张图 说我用一个四次曲线来做分类 右边那张图Ein是0,圈圈跟叉叉都分得很开,左边那一张图用一条线然后但是有几个 圈圈有几个叉叉,看起来是被摆在错误的那边请问大家你要选哪一个 好,大部分的人看看之后可能会说,我们选左边那个吧,左边那个 视觉上来说,好像是比较符合我们对这个资料的特性的认知 右边那个虽然Ein是0,但是可能太过头了 对不对,可能这个有一些看起来显然不太 合群的点,居然也被我们分队,这样的使用方式太过头了 也就是说这是什么呢,在回到我们之前讲过的 说今天我们使用不同的hypothesis set 的时候 我们会冒出不同的问题来,它们对这个 我们在learning里面,两个核心的问题,Ein跟Eout接不接近 还有Ein够不够小,两个问题的这个trade-off是不一样的 我今天如果这个d~ 或者哪个是我用的Q这个变换是大的时候 大的时候怎么样,大的时候我就可以让Ein还蛮小的,我开心因为它还蛮小的 但是另外一部分来说,我Ein跟Eout可能就会隔很远,所以这是我没有办法满足的- 好的地方 那另外呢,如果我今天d~是小的时候 那我就可以让Ein跟Eout靠的很近,这里很开心,可是另外一方面来说,Ein可能- 就会很大 所以一样,我们再三的强调这是在machine learning里面,最重要的一个trade-off 所以大家可能又会问啦,我们要怎么选择 适当的变换,我们要怎么选择到底我要用哪个φ呢 好,所以这是一个问题啦,那大家想不然这样好了,我们刚才是怎么选择 要用φ1,φ1也就是我完全不做任何的转换,或者我用所谓的一次转换 然后还是我要选φ4,我说我是用眼睛来决定,那 就是说,我实务上我可不可以就用眼睛来决定我要用什么转换就好了 好,我先问大家,如果我今天给你的资料是在一个十度空间里面 你真的有办法用眼睛来决定吗 好,至少我不行,我不知道大家可不可以,如果这个你几何想像能力很厉害搞不好可以 但是我真的没办法,高维度的空间,我们大部分的时候用的资料都是高维度的资料 这个你要用视觉来决定,这个不太容易 然后即便在低维度的空间里面,我们要跟大家讲的是你用眼睛决定可能会有 一些潜在的问题,什么意思呢,好例如说我们现在低维度的空间,想象我们觉得要用二次的曲线 二次曲线,我们之前说需要,如果我今天要用最一般的二次曲线 的话,我需要六种不同的变换方式放在同一个Z里面, 好,你说用的这个,你找到了一个hypothesis 你用眼睛看一看,发现这个hypothesis它不用这么复杂,它不用六个维度 说那我们可不可以用三个维度就好 也就是说我刚才原来要用这个VC dimension等于6,也就是我要付出7 6的代价,现在呢,我付出VC dimension等于3的代价就好 3的代价就是,你眼睛看一看,你刚才已经做过6了,然后你眼睛看一看说不用了不用了,我- 只需要3就好了 我是不是付出3的代价就好了,你说,啊,是这样吗? 那有一个更聪明的这个同学就说啦,哎,不然我们干嘛要只付出3的代价? 我们付出2的代价好了.什么意思?哎,反正我今天x1跟x2我如果要正圆的话 我只要算它们这个跟原点的距离的平方就好了.我们2的代价就好了.我第一维度的变换- 是常数. 第二维度的变换我不用一定死守着这个,嗯,一般的polynomial. 我说我有一个特别的polynomial,x1加x2的平方好不好? 哦,乍看之下你好像从原来要-6的 model complication代价降到2个model complication代价. 说这样可以吗?大家心里已经开始有个问号了. 那我要说,哎,好啦,我是老师,我来做最聪明的事情好了. 最聪明的事情就是,我直接使用一个z是长这个样子. 我的z是把这个0.6,好然后跟这个x1的平方 x2的平方做相减,取了sign 当作我的变换.对吧?我的变换不一定要是多项式,我的变换也不一定要是平方函数啊. 我的变换可以加上sign,可以加上什么?可以加上任何我觉得有道理的事情啊. 干脆我做这样的变换,我变到什么?我的z变到1维空间.连那个加上的常数项都不用了. 哎,这样我是不是只要付出VC dimension是1的代价? 听起来太棒了吧!可是 你想一想,在我们刚才这个过程里面,实际上是你做了什么? 你聪明的小脑袋经过了一些运算,实际上经过了你聪明的小脑袋的学习过程 把适合的特征变换用出来了,用在这一个资料上面. 这一个,这跟我们原来VC的推论里面说,哎,我今天从某个distribution 然后可能会产生很多种资料 然后我们要去算说,哎,到底我们什么时候,有多少时候会运气 好,产生说可以让我们做学习的资料,什么时候会运气不好 产程说,哎,有时候会踩到地雷的资料.对不对?以前我们VC的分析是这样.现在,你用你- 的小脑袋 做出了一个适合这个资料的 这个,嗯,transform的方式.这代表什么? 你要付出的代价已经在你的小脑袋里了.这已经不是 你说我帮机器省了力气,对呀,这是你的human learning. 不是machine learning.也就是说你看过,你看过你的脑袋已经处理了. 你的脑袋做了human learning之后,再交给机器的东西,已经受到 你的脑袋里的主观的选择的影响. 我们之前说,机器学习的那个这些代价从哪里来?这些model complication 代价来自于我们要让我们的算法可以好好地做选择. 你现在说,我做转化我不用让我算法做选择,我做选择就好. 你做选择好啊.可是你的脑袋做选择,付出的这个代价要被算在 里面啊,不然的话,哎,机器就赚到,也就是说你会太高估你的机器学习可以做到的事情 实际上,都是你聪明的脑袋做到的事情. 然后怎么样呢?你聪明的脑袋做到的事情,你如果没有把它代价算进去的话,你就会太乐观. 比如说,你做出来的结果,你说,哎,我这样做e in很低啊,然后呢我用的VC dimension很小. 不不不不,不是这么回事.因为你看起来用的VC dimension很小,只是因为你没有把你脑袋里的VC dimension算进去而已. 然后你够聪明的话,我相信你脑袋里的VC dimension应该是还蛮大的. 对不对?因为你可以做到很多不同的分类的工作等等等等,所以 okay如果你没有算进去你就会过分乐观地估计你的机器学习的结果. 要跟大家说的重要的事情是 你要确保我们在VC这边的推导等等等等都是正确的话,你要非常得小心. 你要非常得小心,不要让你的视觉化或任何你聪明的决策进入这个 机器学习里面.因为一旦这些视觉化的东西进来之后,一旦你偷看了资料再做决定之后 你这些决定付出的代价,你要小心地把它算进去,不然的话,哎,你会看起来你的 机器好像做得很好,结果最后,好,比如说你拿去投资股市,发现,哎,怎么做都做不好. 为什么?你没有好好地把你这个付出的这个主观的代价,或者是偏见或者是什么东西 去算进去.好,所以我们这边跟大家讲了,说,哎,我们在做这个转换需要 付出的代价到底是什么?那我们这边呢要大家来算一算,如果 我今天做一个q次polynomial这个多项式的变换的话. 那我刚才有算过说,我的d~,okay 这个 z空间里面的实际维度到底是长什么样子.那请问如果今天q等于 50,然后d等于2的时候,到底我们要大多大的空间去? 好那大家代进去算一算之后,应该会得到正确的答案是2. 啊,也就是说我们原来也只是 这个2维的空间,现在呢,我们到一个多少维的空间?我们到一个1000多维的空间里面去. 然后我们可能要付出,在1000多维的空间里面代价,这其中有一个重大的问题就是 你的资料量够不够支撑1000多维的空间.对不对?我们这里说2维的空间,你可能20个- 点就够了. 那1000维的空间,你的20个点是肯定不够的,你真的有,哎,这个,1万,1万个点- 来帮助你 在1000维的空间做学习的动作吗?好,这是个很大的问题.