写下这个题目,心中其实很惭愧,整天拿着老本行在外招遥撞骗,但是其实在这个老本行中却并没有什么过人的建树。
DNN自己只是粗通,曾经在某俱乐部讲过DNN比较底层的递归玻尔兹曼机RBM,这个模型应该是当下DNN中最火的模型之一了,当年hinton老爷子提出对比散度算法的时候,看那篇著名的论文,其中还没有多么大的野心,只怕老爷子当年也不一定能够预想到自己打开了一扇通向未来之门。
然而当年讲完RBM之后,到现在各种原因,对深度学习的理解一直就停留在那个时间。
现在大体回忆起来。大概只能轻度地科普一下。
人类的大脑皮层分为6层,DNN全称深度神经网络,和之前的神经网络相比,在神经网络的层数可以搭建的更多。
之前的神经网络主要通过反射传播算法来进行计算,在那个年代,我们大体还算知道计算出来的是什么东西,使用最后的输出层输出的预测值与真实值之差,反向向之前的神经元层次进行求导运算,将差值对每一个神经元求导后的斜率值作为变化率,然后使用变化率改进神经元的权重,递归式地逼近真实模型。
反向传播算法有一个问题就是所谓的梯度衰减问题,当层数增多之后,导数再向前传递再次求导,几次之后,差值的变化率就会越来越小,几乎等于不变,也就是说,在这种情况下,简单地使用反向传播算法,将我们的数据喂给模型之后,模型吞不下去了。模型的复杂度不足以接纳如此多的变量。
而对比散度算法提出之后,使用深度模型,我们可以将神经网络搭得更深了。
其实的思路也很简单,就是将整个神经网络,只考虑临接的两层。然后将这两层拿出来单独进行训练。训练好之后再放到网络中,使用输出值传给下一层进行训练。
这相临的两层,也就是所谓的building block,近一年多来没怎么跟深度学习,相来现在此领域又发生了多么大的变化。Building block我接触过的只有稀疏自编码器与玻尔兹曼机。
在我们ng童鞋的著名的ufidf教程中,ng主要提的就是稀疏自编码器。
其原理和PCA很像,稀疏自编码器希望扔进去的是X,出来的还是X,这就像是对X进行了一次压缩,本来变量数据,需要高维才能表示,而现在低维的数据就可以对其进行表示了。
这种从高维压缩到低维的能力正是我们认知的一种很重要的能力,我们记忆一幅图,不是像计算机一样记得它每一个像素点,而且记得大体的轮廓,或者大致对比色,在这种情况下需要仔细去描绘某个部分的时候,再去仔细地重现它。
从像素点的角度来讲,这幅图的是高维数据(维数取决于图像的大小和色深),而从我们认知的角度来讲,我们将图像抽象成横的竖的边缘,然后再组成各种各样的的轮廓。原来的信息可能是24*480*320位的比特值,而抽象之后,也许是红+圆+斜,这样的更高一层的特征。
将深度神经网络的building block加在一起的时候,事情发生了神奇的变化,虽然我们能够从数据上,使用矩阵分解,特征向量之类的东西来理解,然而当事情发生之后,我们看看发生的事情,仍然感觉奇妙无比,不知所云。
为什么?
如果勉强能够通过特征向量来理解稀疏自编码器的话(我知道这样讲可能错漏百出),那么玻尔兹曼机又到底是怎么回事。我现在仍然不很理解玻尔兹曼分布,据说这种统计力学中发现的分布,具有一种神奇的力量,它可以拟合一切分布。最近读LDA,发现gamma分布和beta分布也都是类似奇怪的东西,但是当玻尔兹曼分布在building block之间进行震荡计算,最后能量平衡之后,他神奇地出来了和稀疏自编码一样的效果。
前段时间上axirx翻论文,看到陶哲轩最近研究的是压缩感知,这是完全不太熟的领域,但是压缩感知研究的内核同样是这种从高维到低维的变换。
星云奖开幕式第二位讲者竹人老师(前MSR副院长)说了一句话,特别有同感。
我们不知道我们的意识到底是什么,后来人类的天才们使用各种牛逼的手段模拟出大脑的运行,模拟出的大脑在某些领域的表现飞速地超过人类。
然而奇怪的是,虽然我们制造出了这样的神经网络,它其中的奥妙,我们仍然无法洞悉。
一年之前我在读文献的时候,深度学习在工程上已经出现各种牛逼的应用,有各种出神入化的成果发表,各大公司飞快地圈地,世界风起云涌,deepmind在被google收购不到一年的时候里搞出了一个叫做神经图灵机的东西。就连我们景德镇人民,也不甘落后地在各种招聘招生启事上写上,精通DNN这样的要求。
战胜人类的waston先后从事了律师行业,做出特异的菜谱,现在正进军医疗行业,N连跳的富士康说我们之后要使用机器人代替中国农民工。
我们的APP中,涂书笔记,百度魔图,学霸君,各种深度学习的应用,也开始进入生活,安装在手机上。
数学是上帝的语言。
对于世界,我们仍然所知甚少。