Machine Learning Foundations 12: Nonlinear Transformation | Cheney Shen

Technology blog

Machine Learning Foundations 12: Nonlinear Transformation


 
 

今天讲的是非线性的变换

 
 


 
 

上次讲到三个linear model都可以用在各式的classification问题上面,包括二元分类和多元分类的问题。但是这些model的重点是linear的,用线性的方式算一个分数,今天我们要把这个model衍生到non-linear的情况。

 
 


 
 

Linear hypotheses

 
 

如果今天是二元分类的话,视觉上就像切一条线,数学上表示就是 分数 = 权重 * X

这样带来的好处是 VC 维度是受到控制的,复杂度可控,Ein/Eout 不会差别太远。坏处是有些资料不可能用直线可以切分。

 
 

因此下面讲的就是如何去突破linear model的限制。

 
 


 
 

怎么做呢?

 
 

对于上面图示的资料来说

资料 D 不是线性可分的,就是不能用直线切分。但是如果我们采用圆圈来切分的话,看起来我是可以把ooxx分开来的。

比较方式是点到圆心的距离的平方,把它跟0.6比,这样一个hypotheses是可以区分这些资料的。

 
 

那么可以说上面的资料是圆圈圈可分,这样我们就可以重新设计怎么杨用圆圈圈来做PLA, regression等等。

 
 

但是这样太麻烦了吧,因此我们要来考虑怎么样系统化的设计这些演算法。

 
 


 
 

那我们首先来看看怎么用圆圈圈的方式来做到资料分类呢?

 
 

先把上面扯到的圆圈圈的方程式列出来,0.6代表圆的半径的平方,与点到圆心的距离的平方做减法,拆分出来就会有三个系数 w0, w1, w2,系数代表了hypotheses的圆的大小,系数同时配合输入x决定在圈内还是圈外。

 
 

上面的公式符号化表示也同样可以是 sign( w z ),和线性的时候是相似的,都是向量内积。

 
 

这样你就会发现:

这里面使用圆圈圈来区分可以看作是把 原来 x 空间里面的点 都转化到 Z 空间里面去。这里就是 z1 = xa^2, z2 = x2^2,也就是说对每一个点的值取平方画到新的空间中去,这样以后得到的就是右图。

这样就线性可分了,这条直线对应到原来的空间就是曲线。

 
 

上面做的 x -> z 的过程就是 feature transform(特征转换),这样后就可以继续使用线性分类了。

 
 

那么反过来也是对的么?就是说新的资料线性可分,那么可以得出旧的资料可以用圆圈分开这个结论么?

 
 


 
 

上面的转换的数学表示

新的资料线性可分:Z0, Z1, Z2

新的 hypotheses:w * 转换过的x

 
 

我们上面探讨的情形就是 w0, w1, w2 对应 0.6, -1, -1 正圆里面是oo

反过来的话 -0.6, 1, 1 正圆外面是oo

再如果是 0.6, -1, -2 得到的是椭圆

再来 0.6, -1, 2, 得到的是双曲线

还有 0.6, 1, 2 是常量

 
 

所以z空间里的每一条线对应到的可能是 圆/椭圆/双曲线/常量 等等,但这里面三个数值对应到的二次曲线也不是完整的一般二次曲线。

 
 


 
 

如果你要对应到所有可能的二次曲线,则你需要所有的 0/1/2 次项,这样你在Z空间里面的perceptions 对应到的就是 x空间里面的某一个分类方式。

 
 

这些就是我们目前可以考虑的分类方式:二次的 H_phine2 就是先把 x 透过 phine2(二次) 转化到 z 空间,再用某个线性分类器分类。

 
 

所以举个例子:如上式子表示的椭圆,则需要的就是橘色标识的那些系数来表示,对应到上面通用公示的六度空间的系数。

 
 

直线其实也已经包含在这个式子里面了。

 
 

到这里我们讲了我们怎么定义一个二次的hypotheses, 下面讲我们怎么学到好的二次hypotheses。

 
 


 
 

小测验

如果要是抛物线,系数会是什么样子?

 
 


 
 

我们现在已经建立的关系是这样:

 
 

Z 空间里面的直线 对应到 X 空间里面的所有的二次曲线

Z 空间里面找到一个好的分类直线 对应到 X空间里面的好的分类二次曲线

 
 

现在我们想要在 Z 空间里面找出好的直线,我们知道的是X空间的数据,应此做法就是先通过变换讲X空间的数据统统变化到Z空间上面,然后在Z空间上面找一条好的直线。

 
 


 
 

如上图所示将 (x, y) 转化成 (z, y),然后在右上图找到一条好的直线来做分类,然后再反对应到X空间,就可以看作是通过二次曲线在(x, y)空间做分类。

 
 


 
 

在这个流程里面有两件是我们可以选择的事情:

  1. 怎么做转换,转换到什么空间中去
  2. 用什么样的linear model:上面我们使用binarg classification来和大家做就讲解,但是同样的方式可以延伸到linear regression/logistic regression等等方法以及多类分类上面。


潘多拉盒子:

现在我们可以做很多很多事情,原来学过的所有东西都可以二次化,三次化,等等。

 
 


 
 

其实我们早就说过 feature transform 很重要,在之前讨论在做机器学习的时候可以用哪些feature(第三课):收集到的资料你可以把它做一些整理,处理。

 
 

原来是把 raw feature(原始资料) 透过我们对这个问题的了解,来做转换变成 比较容易吸收的资料的过程。

 
 

特征转换 这个是 机器学习里面的 the force(原力)。

 
 

但是这边特征转换听起来是那么的好,但是使用它是否也会有代价呢?下面来回答这个问题。

 
 


 
 

小测验

 
 


 
 

这么多个项的意思是什么呢?

如果我们今天想要general的情况的表示,就是 phine_Q = 0次的部分 + 1次的部分 + … + Q次的部分。

 
 

这里有多少个dimension呢?

1 + d:1代表常数,其他非常数的维度 = 有多少种不同的方法来组成 Q 那么多的项。

对应到概率论就是 重复组合 问题:d种东西可以重复取的化,一共有多少种不同的组合,结果就是 (Q+d / Q) 这么多种情况,大概就是 Q^d 这么多项,也就是说你今天就要花大么多的力气去计算。

 
 

所以特性转换的一个大的代价就是,计算和存储都需要花额外的力气,特别是Q很大的时候,这件事情非常困难。

 
 


 
 

上面讲到这个展开式有 Q^d 这么多项,也就是说需要 那么多个 W ,也就是 自由度,也就是说 Dvc 非常大,自由度大量的增加。

 
 

怎么办?

事实上我们可以证明的是 Dvc <= d+1,因为任何一个 Z 空间里面的 d+2 个点是没有任何办法 shatter 的,也就是说回到X空间里面 d+2 个点也不能够被 Q 次曲线来 shatter,这样就对我们的Dvc产生了限制。

因此上限就是 d+2

 
 

所以第二个代价就是,当Q变大的时候,Dvc也变大。

 
 


 
 

那么这件事情有什么坏处呢?

 
 

看上面两张图,同一资料两种不同的分类方式,左边说用一条线分类,右边说用一个四次曲线来分类。请问你会选择哪种分类方式?

 
 

你有没有更加觉得左边的图更加符合资料的特性,右边那个是不是可能太过头。

 
 

今天我们使用不同的 hypotheses 的时候,会冒出不同的问题来,两个核心的问题:Ein/Eout 接近不接近;Ein 够不够小。两个问题的 trade off 是不一样的。

 
 

如果 d(Q) 特征变换 大的时候 Ein小 Ein/Eout 隔得比较元远,反过来就相反。这是 ML 领域里面最重要的 trade off。

 
 

所以问题就来了:我们要怎么去选择适当的变换。

 
 


 
 

用眼睛来决定会存在问题:

 
 

如果资料在10维度空间,你可以做到?

如果是低维度,你用的是 phine_2, 原本是6参数,但是你算一下发现这里不那么复杂不用6维度,是不是只需要三个维度就能解决,再来,两个维度,第二个维度是 x1^2 + x2^2 也能解决,这样是不是都可以?

还有最聪明的方式,把结果 sign(0.6-x1^2-x2^2) 当作变换,这样是不是Dvc就是1,可以么?

 
 

上面你的化简,都是你聪明的小脑袋经过了一些运算和学习过程,把适合的变换用在了这个资料上。这里使用了你的主观感受,也就是说这是 humen learning,你替代了机器做了选择。

 
 

你没有把你脑袋的 Dvc 算到整个 model 里面去,那么你就会变得很乐观,但是你的 model 不会是你想象的那样好。

 
 


 
 

小测验。

 
 


 
 

这边我们来看看上面提到的多项式变换,首先来定义一下变换的次项:

 
 

这里 phine_0 表示0维的变换,就是常数项,phine_1表示1维的变换,就是所有的一次项加上phine_0的变换,以此类推,直到phine_Q = phine_Q-1 + 所有的Q次项。

 
 

也就是说你的每一变换都包含了前面的变换,也就是说高维的变换包含低维,低维的就是高维的特例。他们的 hypotheses set 也就是包含关系,画成图就如上面所示。

 
 

图示就是 hypotheses set structure。

 
 


 
 

这个结构告诉我们:

Hypotheses set 大包含小;H越大Dvc越大;hypotheses set大对应的最好的Ein小。 三串关系。

 
 

画成图就如上面所示。

 
 


 
 

这告诉我们:

如果你一开始就用一个超级高纬度的变换,结果一定也不好,在这个曲线的右边。

 
 

安全的做法是从 低维度开始做起,如果Ein(g1) 结果就很好,那就是好的结果,如果Ein不够小,就增加维度。

其实你会发现线性很多时候就已经可以得到很好的结果了。

 
 


 
 

小测验。

 
 


 
 

总结:

今天把大家熟悉的原来的 linear model 延伸到 nonlinear model。

一开始说怎么做二次的事情,然后还能继续扩展;然后说完整的nonlinear流程到底是什么样子;接着说这虽然看起来很好用,但实际上是要付出代价的,最重要的代价就是model complexity;最后告诉大家说你要付出这代价的情况下最安全的做法是从简单的model开始试。

 
 

这边我们就讲完了在 linear/nonlear model 上最基本的工具是哪一些。

我们提到过 变换 就是 the force(原力),下一次我们要和大家说的 the force 的黑暗面到底是什么,造成了什么不好的影响,怎么去控制黑暗势力。

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 


One Comment

Post a Comment

Your email address will not be published. Required fields are marked *

  • Categories

  • Tags