初窥深度学习

最近上完了计算神经科学的课程,算是神经网络学习的入门吧!课程要求主要论述了前馈型中的感知器、Adaline、BP神经网络(sigmoid激发函数)、径向基函数神经网络(局部学习,gaussian函数,正则化Green函数)等和反馈型中的Hopfiled(DHNN)神经网络。总是再听陆教授讲到deep learning,说到了深度学习的强大,什么谷歌大脑,百度大脑之类的。作为初步,对深度学习进行一下关键词的总结,以开启和指导后续的深入研究。

topic 1:从低级特征(low level,pixels),随着神经网络结构逐步(basis,基组合)抽象,到高级特征(high level,recognition、Inference、prediction)。

topic 2:逐级传播的是特征,不断抽象的特征

topic 3:参考人的分层视觉处理系统(生理学实验证明了这种处理机制)

topic 4:神经网络结构: I =>S1=>S2=>…..=>Sn => O,当I与O相差不多时,我们有理由相信任何一个Sk都可以作为I的一个抽象的representation,这样就可以调整各层的权重,得到不同层次的特征转换。

topic 5:无监督的训练。无监督的训练其实是有监督的,只不过相当于输入的样本集为(X,X),即把输入同时作为教师信号用来指导特征抽象。下面的几幅图能够很形象的说明deep learn。初窥深度学习_第1张图片


左边是典型的Machine learning,给定一个Hypothesis set,或者是通过复杂的特征转换,使得VC dimension变得特别高,然后generalization的能力就比较弱。也就是说,error in sample 可以做得很小,但是error out of sample却与Error in sample相差较远,导致overfitting。而deep learning则类似右边的图像,逐层训练,每次训练一层,实际上是训练一个三层的感知器,输入X,输出为X,就是说有一个回返的过程,从而推导出很好的特征(最后得到的模型也很复杂,那么其VC dimension呢?会不会出现overfitting呢?这个需要进一步学习)。

初窥深度学习_第2张图片初窥深度学习_第3张图片

这就是典型的AutoEncoder过程,先通过Encoder输出code,然后再经过Decoder输出X,这样就可以得到Error,利用Error进行网络学习。

初窥深度学习_第4张图片

一般地,通过deep learning到顶层输出的是最高抽象的特征,然后还不能用来分类等。因此,利用特征转换(抽象)得到的好的特征进行线性分类就比较容易了,也就是在顶层输出后加入机器学习中的分类器等就可以构建监督学习模型。上图属于监督学习不再对deep learning抽象的特征过程进行调节,只对这个分类器进行调节。

当然肯定就有对整个网络进行调节的,如下图,在训练完毕deep learning结构后,进行监督学习时还要对整个网络进行调节,当然得数据量足够。这叫做end to end learning, 端到端的学习。

初窥深度学习_第5张图片

2015-7-6 23:52总结


你可能感兴趣的:(deep,learning)