警告 以下内容已超越矩阵变换存在,不能保证其正确性,仅代表一种看法。
我们需要知道,能够形成一整套完整理论的,都是很成熟的,往往研究了几十几百年的,但是有些很新很前沿偶尔很强大的,有时理论残缺不全,甚至没有道理可讲,很不幸这里讨论的目标就属于后者,但又必须去理解它,不然怎么叫强迫症呢
0 目的
上文理解矩阵变换中讲到矩阵变换的缺陷,其中之一是不同的变换不能在同一空间共存,即Ax是对x做A变换,不区分x的空间位置。而我们希望有一种映射能根据x所在空间位置不同而做不同的变换。
1.评估空间内变换出现变化的方法
(注:因为对象比较抽象不太好理解,所以这里提出这个方法,协助理解)
那怎么去评测空间内的这一种映射呢,在这里提出一个用折线及其折射去衡量空间映射变化的方法
如果一条直线进入某空间时,发生了折射(向某方向偏折),表明空间中的法则(映射)发生了变化,其变化过程可以是突变,也可以是渐变,在一个方向发生,认为一次,在n个方向逐次发生认为n次,我们就认为对该直线施加了n+1次法则(变换);这n个方向作为坐标系,其为空间s,令m=dim(s);
放出任意的直线,出现了最大的那个n,称为max_n,则认为该空间具有对max_n+1个子空间实施max_n+1次法则的能力;简单说就是提出如下评判原则:
直线映射后被折了n次就表明能对n+1种不同位置的x实施n+1次不同的变换。
n>=m,令k=n/m,k是有用的,这里不讨论;上面这句话可变为
直线映射后被折了n次就表明能对n+1种不同位置的x实施至少m种不同的变换。
2.映射及其定义
我们的目的,是如下图所示的映射,就是在矩阵乘矩阵之间插入一个函数,变成矩阵、函数、矩阵这么一种夹心结构,而上一章我们讨论的映射是图中虚线框内的部分
夹心结构中,如果没有函数,就是矩阵乘矩阵,那还是矩阵,但是,夹入函数,产生了特别的作用
2.1 以1个断点的线性函数为例(非强迫症可跳过)
函数Y=(|y1|,....|yn|)T在坐标i上的分量提取出来,函数如图:
在yi=0的界面上发生了折射,上例中函数的入射斜率是1、折射斜率是-1;更一般的设入射斜率是1,折射斜率是µ。这里不设k1、k2,µ=k1/k2,因为入射时已包含k1,或者说折射后还是k1,那不会偏折,正是因为k1到k2的变化才导致偏折,所以我们用µ;
y=(y1,....yn)T,y经过函数Y作用后为Y=(Y1,....Yn)T,对于Yi有
Yi=yi, yi>0
Yi=µyi,yi<0
如果y=Ax+b,则上面可看作当yi<0时,用µA的第i列替换了A的第i列,用µb的第i行替换了b的第i行,现在先不用考虑偏置b,将其写为
y=A(x+b’)
我们可以看到:界面将空间划分为2^n个象限,第一象限内的映射为矩阵A的线性变换,其余象限的线性变换因象限位置而异,对应于µA对A的列的部分替换;
我们知道必定有一个象限对应于µA对A的全部替换,且也知道只要µ<=0,就能将其他象限映射到第一象限范围之内。
以上这一大堆意味着什么?(这里用到前述的评估方法应能较好理解)就是说有两个矩阵变换,一个是µA,另一个是A,我们可以让一个子空间比如第一像限,同时出现这两种矩阵变换,这样会产生现象:比如直线每进入一个象限就会发生一次折射,最多能发生2^n-1次折射。
2.2 以1个同样的例子来理解
上一章矩阵变换的局限:根据矩阵变换的特点,可知异或运算这样的映射,矩阵变换做不到,本质是变换时,变换矩阵是唯一的,不同的变换不能共存。这样比较好理解:Ax是对x做A变换,不能根据x的位置不同而做不同,的变换;又由于A代表任何矩阵,所以没有矩阵能实现根据x空间位置不同,而做不同的变换。下面用两种函数来实现异或映射,并分析其特点
2.2.1函数Y=(|y1|,|y2|)T
首先做矩阵变换,根据矩阵变换平行关系不变,可以推论得到平行四边形不变,右图可看作平行四边型一个对角线被缩放为0。
然后使用函数在y2轴上发生折射
这里选用的函数是Y=(|y1|,|y2|)T,这样完成了异或变换。
2.2.2 用如下函数来实现异或
分析:函数折射是投影(压缩坐标),如下变换实现异或
可以看出,在y1轴上发生了折射,导致三点不在一条直线上,用一个矩阵的压缩变换就得到结果。
2.2.3 特点对比
第二种映射的优点:第二种进行了2次矩阵变换,是我们前面定义的夹心结构,设第一次为A,第二次为B;函数对矩阵A变换后穿过界面那部分进行了擦除,然后进行B变换,这样做的优点是能将直线映射为任何折线(最多折2^n-1次);根据评判原则,我们最多能对特定的2^n种x做2^n种变换。
第一种映射的缺点和优点:第一种映射缺点是折射后没有进行矩阵变换,不能将直线映射为任意折线,只能映射为特定折线,能行是巧合。
其优点就在于只进行了一次矩阵变换,为什么这么说?
- 为什么这些变换矩阵不写出来,放个图片就完了?因为限于作者水平,即使再简单也码不出来;而稍微复杂的,计算机能够自动生成。
- 有电脑了,终于不用自己动手了,但是伴随着新的问题,只是让电脑去找一个A还好,要是让它去找AB,那完蛋了,因为:AB=AIB=(AC)(DB),不给它一个限制,只要满足CD=I的C、D矩阵计算机都能找出来,或者说,它会浪费时间搞出各种A,B矩阵(对于它来说AC就是A,DB也是B),所以正则化是自从计算机和矩阵乘法有关联后,就必讨论的题目之一。
2.3 偏移b
偏移b很重要,从前面的图可看出,对于有一个断点的线性函数,发生折射的区域是第一象限外,所以需要依靠偏移b把需要分离的点或点集移出第一象限。
3分形与级联(串联)
上面我们看到一个夹心结构能够直线映射为任何折线(最多折2^n-1次),可以解决许多矩阵变换不能解决的问题。但是仅限于此也谈不上多特别,毕竟用核函数也未必不能得到。
3.1 级联(串联)
所以如下图所示,我们将上述映射作为一层,2层级联(串联)
连接处做简化,下图所示,虚线框内是令A2等于上图的B1A2。
根据评判原则,一层的作用最多能将一条直线折2^n-1次,做l层串联最多可以将一条直线折(2^l^n)-1次,但是这个与单层的折(2^l^n)-1次不同,这是一种类似分形。
3.2 分形与级联
可以想象,我们把一张纸(平行直线排列成一个阵列)2^n-1折(折不准确,应该是m个方向扭曲,每个方向k折,但是有助于理解)有2^n个子空间后,在上面刻花,每条打折的直线会记录下花的部分信息,把这些直线拉直排列起来,会发现有2^n朵花的图案,这是一种分形,来一个分形的图案(来自百度百科:分形)
如果是多层级联,那么相似的图案就像细胞分裂或类似核反应,往下层复制。
从映射上看,对于两层,上层划分成各种子空间,各子空间内对应B1、B2、B3...变换,由于下层会分形般复制上层,也必然会复制上层的子空间划分,那么在下层中,各个子空间的空间内按上层的方式进行划分,分成子子空间,第i个子空间的第j个子空间内实施AiBj映射。
扩展想象:多层级联就是一层又一层,层层叠叠,形成一层一层的空间嵌套,比如类似盗梦空间,类似分形。
3.3 级联的意义
其意在于什么呢,应该在于高效利用资源,比如:单层如果要实施2^nl种变换需要2个n×l维方阵(注意:n×l维意味着m×m矩阵,m=n×l),但是对于级联只需要l+1个n维方阵。
4 特点分析
4.1.1矩阵规模
这里还有一个问题,我们知道Ax表示对x做A变换,如果我们要找的映射关系是Bx与Cx的叠加那一个矩阵够用吗,由于B+C还是个矩阵,所以我们就用1个没问题,但如果是这种映射呢,即对特定的x实施多种变换的叠加,由于多种变换的叠加后还是一个变换(这个解释是从有限断点的线性函数得出的。又因①非线性函数可以用有限断点的线函数来逼近,②为保证扛扰动,矩阵变换后需要分离的数据点不会太近。所以非线性函数的作用可以用有限断点的线函数替代)
那能行,所以相同的矩阵规模能对各种问题做出很好的映射,或者说,只要能对一种或多种问题做出很好的映射,那总是能对各种问题做出很好的映射。
4.1.2减小矩阵规模
n维矩阵最多实现2^n种变换共存,多层级联的话更多,但实际上我们遇到的问题用不了这么多,又由于解法并不唯一,比如我们做异或运算只用了y1轴作为界面,很明显y2轴也可以,解法不唯一。1个矩阵变换就可以解决许多映射,所以很多问题即使缩减规模也能得到很好映射,表现在把某层或多层的矩阵的部分元素拿走,比如基数或偶数元素拿走。
4.2与核函数的区别
单独比较,本文的映射:两矩阵夹一个函数比核函数灵活,总的来看,与核函数不冲突,可协作,比如对核函数作用后的数据进行映射作为一层,多层级联,等等等各种奇葩组合....
5小结
本文一开始,我们希望有一种变换能根据x所在空间位置的不同而做不同的变换,如今得到了这么一种映射,这是一扇新的大门;
虽然矩阵乘矩阵还是矩阵,但是,我们在这里看到,中间夹了一个函数后,就发生了特别的变化;但其本质是对矩阵变换飞跃性的改进,这就是作者持有的一个核心观点之一。
6用途与缺陷
6.1 用途
全文都在讲这种特殊的映射,那么它(这种映射)有什么用,比如,矩阵变换可以做图像处理这种映射,但是做不了逻辑映射或模式识别,意味着相对矩阵,它擅长逻辑映射与模式识别。
实际情况也差不多,大家用它来做图像识别(会比较慢),一般都配合核函数,会比较快(分工合作,它专门负责识别模式),也用它来做语言识别,互动,翻译什么的;开车好像也可以,比如红灯停绿灯行这些简单的逻辑,或者很复杂的交通逻辑,等等等,反正用途大的要死。但是问题在于什么呢,这些场合,比如语言识别,互动,翻译、开车等等需要的是死记硬背模式,还是理解执行?
6.2 缺陷
1)与矩阵变换类似,这种变换同样存在类似的问题:不同映射不能共存,这个很好理解,每一层的矩阵确定了,映射就确定了。 这意味着一旦映射改变(我们的问题改变),矩阵就会变,就需要计算机重新寻找矩阵,所以虽然是多细胞了,但还是有缺陷。
2)这种变换做的是映射,这是它的特点,也是它的缺陷,与矩阵变换类似,世界很复杂,特点变缺点;难道世界有这么复杂,是的,如果我们对它期望很高。
如果我们想得到更高级的映射,那至少需要它具备观察、感知、认知、学习、推理、执行这么几点;但它总是被诟病为鹦鹉,因为鹦鹉不理解却也能靠死记硬背讲出流利的语言,只不过它是更强大的鹦鹉。
有对立面,才能进化,作者认为虽然有缺陷,但它有继续进化的潜能
6.3 继续进化
首先第2点诟病的理由是不对的,理解属于高度抽象的层面,而其载体不具备理解能力,那很正常,比如,细胞只能进行生化反应,巨量细胞构成的脑只能进行大量的生化反应,但是它们这些反应的集合体-意识,才有理解的能力;所以说计算机不理解,不能说明什么,也说明不了什么。
其次真正让它成为鹦鹉的原因是大数据小任务的特点,或者说,如果它理解了,根本不需要这么多的数据,比如有一句话叫举一反三,只要学习1条数据就能解决3个问题;链接http://www.sohu.com/a/227854954_297710对这些问题讲的很好。
“理解”这个词太抽象层次太高了,先撇开不说,对于第一个缺陷,那么有没有一种算法能够不用改变矩阵就能做出多种映射呢?答案是肯定的,下一章站在对立面的对立面来讨论这个问题。(有其他事,暂时终)