http://blog.youkuaiyun.com/pipisorry/article/details/70477043
深度学习相比于传统方法的优势
随着训练量的提高,传统方法很快走到天花板,而Deep Learning的效果还能持续走高。
其实这是一个特征表达力的问题,传统方法特征表达力,不如Deep Learning的多层学习得到的更有效果的表达。举个例子,假定有一种疾病,这种疾病容易在个高且胖的人群,以及个矮且瘦的人群中易感。那么任意从给一个特征角度上看,比如肥胖,那么胖的这部分人中,得此病的概率为50%,不胖的也是50%,那么"胖"这个特征没有表达力。
Ng直观的展示了从像素级特征(表达力最弱)到edges级特征,直到object级特征。 从edges特征大家看到的这个形式,其实是深度神经网络的edges中的一个小块,就是input layer到第一个hidden layer之间的一组边(如果是RBM的话)或者是第一个hidden layer到output layer的一组边,这组边可以理解成training的成果。而hidden layer是一个sparse coding的向量,用来combine不同组的边来还原出input layer。
因此可以看到,通过深度学习的处理,无需tagged data,通过自学习的方式,就可以做到特征的表达力从像素级,提高到了 object models,多么美妙啊!
什么样的资料集不适合用深度学习?
1、数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势;
2、数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。
一般写出损失函数后,就可以完成模型的训练了,因为目前的深度学习框架都已经带有自动求导的功能,只要我们能写出可导的 loss,就可以帮我们完成优化过程了。
DL快速上手
-
UFLDL: Unsupervised Feature Learning and Deep Learning Tutorial
这是stanford Ng老师的教材,也刚好是以CNN为主,Ng老师教材的特色就是简洁明白。一遍看不懂多看两遍,直到烂熟于心,顺便把里面的Matlab Exercises完成了。
-
http://deeplearning.net/tutorial/
PRML作者给的python入门DL的tutorial,基于Theano Framework,有些偏向于RNN的东西。
一句简单的话描述:“深度学习就是多层的神经网络”。神经网络几十年前就有了,而且证明了“2层(1个隐层)的神经网络可以逼近任意的非线性映射”,意思就是说,只要我的参数能训练好,2层神经网络就能完成任意的分类问题(分类问题就是将不同类通过非线性映射划分到不同的子空间)。但2层神经网络存在的问题是:
如果要逼近非常非常复杂的非线性映射,网络的权值W就会很多,造成Train时候容易出现的问题就是Overfitting。所以大事化小,将复杂问题进行分割,用多层网络来逼近负责的非线性映射,这样每层的参数就少了。自然而然的网络就从2层变成了多层,浅网络(shallow)就变成了深网络(deep)。
但科研界的大牛们会这么傻吗,十几年前会想不到用多层网络来进行非线性映射?看看CNN最早的工作: http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf 那是98年的,Train了一个5层的CNN来进行MINIST数据集的数字图片分类。多层神经网络一直不火我觉得有这么两个原因:
- 神经网络中非线性的映射的极值优化问题本身是一个非凸问题,本身数学理论上的就对非凸优化问题缺少严格有效最优化方法的支撑。直到现在也依然对各层Layer的输出解释不清不楚,但效果就是好,这还得归功于各种大神藏之捏之的各种Tricks。
- 数据与计算能力的问题。十来年前哪来随随便便就这么大的硬盘,哪里去找像ImageNet这样1000类的数据集。“大数据是燃料,GPU是引擎”,正是因为大数据的出现和GPU编程的出现带动了DL的进展,这些在10年前是做不来的。我在CPU与GPU上跑自己简化的Googlenet,GPU比CPU快10倍。
DL只是一个概念而已。对于做图像和视觉的就该一头扎到CNN(Convolutional Neural Netwok),做自然语言的就该投入到RNN(Recurrent Neural Network)。我是做图像的。CNN的学习资料除了上面Ng的tutorial外,还有一个Stanford Li Fei-Fei教授的课程cs231:Convolutional Neural Networks for Visual Recognition,CS231n Convolutional Neural Networks for Visual Recognition 是Notes中一份关于CNN非常详细的资料。
from: 深度学习:综述_深度学习网络 构建 自由度_-柚子皮-的博客-优快云博客
ref: