他当初刚写第一篇论文的时候,就拟好了这个题目,只是由于数学基础不够,一直停留在构思阶段。
这两天他利用碎片时间,稍微补了补高数知识,这才真正动笔。
江寒将近期一些想法整理了一下,罗列了个大纲出来。
很多机器学习分类算法,都要求假设数据线性可分,“感知机”也不例外。
如果数据不是线性可分的,就必须采用一些特殊的方法,把数据非线性地投射到更高的维度上。
在高维空间里,数据更有可能变成线性可分的,这就是所谓的Cover定理。
对于感知机来说,处理线性不可分的问题,有个最简单的解决办法,那就是把单层感知机拓展为多层感知机。
多层感知机的关键,在于如何训练各层之间的连接权值。
一种常用的办法是只训练某两层间的连接权值,而将其它连接权值进行固定。
可以从数学上证明,对于所有非线性可分的样本集,这种方法都是收敛的。
也可以采用BP技术,也就是另一个世界里,大名鼎鼎的“反向传播神经网络”。
当然,这个世界里,“感知机”都还没正式登场,说这些还有点早。
至于BP技术什么时候问世,基本上是江寒自己说了算……
此外,还可以将数据带到核空间,再进行分类。
在另一个世界里,有很多着名的算法,例如支持向量机(SVM)、径向基神经网络(RBFNN)等等,都采用了所谓的“核方法”。
核方法的核心,是核函数。
工业生产中,常用的核函数有线形核、多项式核、高斯核等等。
所谓核空间,百度百科上说:“核型空间是一类局部凸空间。”
具体来说:如果对零元的任何均衡凸邻域V,存在另一零元的均衡凸邻域U?V,使得典型映射T:XV→XU是核映射,则局部凸空间X称为核型空间。
这里,XU是商空间(X,PU(·)){x|PU(x)=0},而XV是商空间(X,PV(·)){x|PV(x)=0}的完备化空间,PU(·)及PV(·)是由U和V各自产生的闵可夫斯基泛函。
嗯,江寒刚开始看到这个的时候,还真有点懵逼。
所以,再加强一点数学素养,还是很有必要的说……
当然,就算不懂上面的数学表达,一样可以理解核函数的功能。
核函数主要做的事情,就是将样本映射到更高维的空间。
但是,这样做虽然能使样本变得可分,但却会造成维数过高,使得计算量急遽增大。
这就是“高维NP难”问题。
所谓NP难(NP-hard),是指:非确定性多项式问题的大型实例,不能用精确算法求解,只能寻求有效的近似算法。
而解决的办法,也有很多……
好吧,先回到一开始的问题:如何判断数据是线性可分的?
最简单的情况,比如数据向量是一维、二维或者三维的,只要把图像画出来,直观上就能判断出来。
但如果数据向量的维度变得很高,又该怎么办?
答案是检查凸包(convexhull)是否相交。
所谓凸包,简单的说,就是一个凸的闭合曲线(曲面),它刚好包住了所有的数据。
以二维的情况为例,如果我们的数据训练集有两类:M+和M-。
当我们画出两个类的凸包,如果两者不重叠,那么两者线性可分,反之则线性不可分。
靠画出图形,然后用眼睛来判断是否线性可分,虽然比直接看数据更加容易了些……
但好像依然没有解决高维数据的问题?
其实不是这样的。
判断两个凸包是不是有重叠,可以通过判断两个凸包(M+和M-)的边是否相交来实现,而无需把凸包画出来。
要想高效地找到一组数据的凸包,在计算几何中有很多现成的算法:
穷举法、分治法、Jarvis步进法、Graham扫描法、Melkman算法……
江寒在这篇论文中选择的算法,称之为快速凸包算法(quickhull)。
第二个问题,如何高效地判断出,两个凸包的边缘是否相交?
也有许多可选的算法,江寒使用了所谓的扫描线算法(sweepline)。
Quickhull和sweepline的时间复杂度,都是O(nlogn),这是它们被选中的前提条件。
时间复杂度越低,实践中就越有可行性。
但写论文不能这么简单的直接扔出来结论,必须将各种算法的效率和优缺点,全都分析一下。
有必要的时候,还要逐一测试N遍,收集到足够的数据,然后进行横向比较,最后才能得出结论。
江寒理清了思路后,开始打草稿。
首先写下标题,然后是摘要,接下来是正文……
(此处省略2300字。)
江寒正奋笔疾书,黄光明忽然溜溜达达地走了过来。
“江寒,都下课了,还在做题啊?”
黄大学霸说着,探头探脑地瞅了一眼。
结果一看草稿纸上书写的标题,顿时就有点傻眼。
“《如何高效判断数据是否线性可分》……”
这什么玩意?
高中课程里有这种东西吗?
再一看正文,就更加怀疑人生了。
沉默了半天,黄光明还是忍不住问了一句:“你这写的什么东西?”
“偶有所感,随便写写。”江寒笑着回答了一句,然后继续奋笔疾书。
黄光明研究了半天,最终还是放弃了,摇了摇头,转身就走。
他忽然发觉,自己这个传统型学霸,和江寒这种怪物相比,好像已经不在一个频道了……
江寒瞥了眼黄光明的背影,发现他似乎……有点落寞?
忍不住摇了摇头。
好像不小心打击到了别人了,但这次真的是误伤……
又是两节课带课间过去,终于在第四节下课十来分钟后,写完了初稿。
将东西收拾好,就赶往食堂吃饭。
下午,江寒也没浪费时间,写了大半篇“感知机应用”方向的论文,然后在晚自习的时间里,写完了另外一半。
充实的一天就这样过去。
下了晚自习,江寒先找宿管老李,把自己的手机拿了回来。
回到403寝,打开手机,好几条短信跳了出来。
江寒翻看着短信。
最新的一条,赫然是来自银行平台的提醒:【您卡号621xxxxxxxxxxxx的银行卡,存入资金8.4万元。】
“啧,还挺及时的。”江寒赞了一声,放下了手机。
夏如虹按照约定,把专利授权费打过来了。
第一笔资金总共是10万块,到账却只有8万4。
剩余的部分,自然是为国家做了贡献,扣除了应缴纳的税款。
这钱来的正是时候。
江寒的手头正好有点紧,而且还有许多比较急迫的预算。
在江寒的计划里,最近一两个月里,最重要的事情,就是数据实验室。
因为等他出完“多层感知机”的论文,再想搞机器学习方面的研究,就必须大量算力的支持了。
打造数据实验室,硬件设备不能少。
有些不急需的东西,可以等手里活钱多了,再慢慢地置办,但最基本的硬件设施,越快到手越好。
江寒先做了张EXCEL表格,将所需的东西罗列了出来,然后在网上一顿搜寻,找准了采购目标,再按照重要程度,一样样下单。
等过几天有空,就去夏如虹借给自己的车库,看看情况。
然后抓紧时间,把场地收拾出来。
等硬件一到位,就立即把实验室置办起来……