深度学习自学笔记(一)

来源:互联网 发布:2017学php好找工作吗 编辑:程序博客网 时间:2024/05/17 14:15

深度学习自学笔记(一)

声明

这是一个初学者写给自己看的笔记,一个原因是想记录我学习深度学习的思考过程,另一个是顺便整理自己刚学的内容,所以内容非常肤浅,但我认为这样反而更容易让新手接触这个东西,所以若大牛们发现里面的错误,还望不吝指点,我会尽快更正,以免误导他人。我主要的学习思路是来自这篇博客http://blog.csdn.net/fish0058/article/details/19756845,我认为他是目前论坛里最简单易懂的教程,所以各位看客若是觉得本渣写的很差,请看这篇博客。另外我会尽量少用数学推导来讲解一个算法,一是大牛们早已推倒过无数次(我也会把大牛推导的连接的附在上面),二是这篇笔记主要是用来引导自己思考和回忆的作用。好了,我马上开始进入深度学习的世界,这篇帖子也会随着我的学习而更新。



一、什么是深度学习

以我的学习经验来看,学习一个东西,最好先清楚他是做什么的,有什么用处,于是在学习其中每一步的时候,有了大方向的指引,才更好理解。所以我想先记录深度学习到底能做什么,它为什么这么火,然后再慢慢学习其中的细节。

首先大家都了解机器学习吧,就是让计算机能和人一样的认知事物,所以我认为机器学习一个很重要的工作就是分类,先从训练数据中进行学习,然后给定一堆数据能正确的对每一个数据进行分类。而深度学习的作用就是让计算机具有更强的学习能力,所以他是一种非常非常优秀的机器学习算法,那我们先来看目前机器学习的大概工作流程:

比如放在计算机视觉相关领域中,第一步得到图片矩阵,里面都是raw pixel;第二步进行图像预处理,比如灰度,白化,仿射投影什么的,主要为了降噪,提高后面的效果;第三步提取特征,如sift, hog, pixel difference,直接用像素作为特征效果一般很差;第四步选取特征;第五步根据提取到的特征进行分类回归。

粗略的来说我认为归为两大步骤:一是特征表达(2,3,4步),二是分类回归(第五步)。这点和人认知事物的思路是一样的,比如认一个篮球,先看这个物体的特征表达,形状是球形,颜色是橡胶红色,将这两点特征给大脑已经学习好的知识体系,得出结论这东西是篮球。

也就是说要想本质的提高机器学习算法的性能,必须在两个步骤中进行改进。那我们先来看看在机器学习中,这两大步骤一般都是哪些算法。我比较熟悉的,特征提取里面有sift,hog,光流,pixel difference。分类算法有SVM,regression tree,random forest。而系统主要的计算和测试工作都耗费在特征提取这一块,而且一般这些特征都是人工设计的,人为的告诉计算机这个特征该怎么提取。虽然,有不少效果非常好的特征,如sift,但也不是万能的,人脸用sift,行为用sift,目标跟踪还用sift,效果肯定是因用途而异。因此我们想要一种模型,能够自己根据目标对象来设计特征,这样的特征肯定能更好的揭露目标的本质,提取更多有用信息,效果肯定也更好。而deep learning就是这么做的,正如其另一个别名unsupervised feature learning。

我能想到最类似的方法为FA3000里面结合random forest和pixel difference在训练数据中学习出的binary features,该方法也是通过训练数据学习出特征提取,取得了the state of art成果,也证明了学习得到的特征效果往往较好。

接下来问题来了怎样一个牛逼的模型才能自己学习提取特征呢?说起来可能会吓到宝宝,为了实现自动学习特征提取,深度学习模拟大脑神经网络采用分层结构来学习训练数据,即一层层的对数据进行抽象认知,先提取低级特征(如边缘特征),然后对低级特征进行组合提取出语义层次高一些的特征(如形状),通过这样不断的迭代,最后得到的特征最具有区别性。听起来有点复杂,所以借用一张图来说明人脑是怎么认知事物的

我再来解释一下,人脑从曾经接触过的无数个图片(像素矩阵)中,挑取出最具有代表性的像素组合作为特征,也就是边缘patch(生物学上有实验依据,记住就行),然后大脑又将这些边缘特征进行组合提取出更具有代表性的组合patch,继续这样,最后组合出来的特征就极具区分性了。深度学习就是描述这个过程,所谓深度,就是分层的深度,学习就是每一层怎样学习挑取特征。因此深度学习的结构模型与人脑认知的结构类似

第一层为输入层,输入一大堆训练数据,黑线就是要学习的参数-权重,影响如何生成第二层的特征,那橘黄色的第二层显然就是要学习的特征空间了,对应人脑里面的边缘那一层,最后一层为输出,输出最终要提取的特征。(如果在最后一层加个分类器,不就是整个ML过程了?)

数学上,我认为还可以这样理解,如果把特征提取看做是一个映射函数,将原始图像映射到一组向量-特征。那么深度学习的每一层其实是一个线性映射(基的线性组合)将数据映射到那一层所在的特征空间,这样多次线性映射后的结果接近非线性映射,从而能够拟合更复杂的映射函数,也就获得了更优秀的特征(感觉和级联回归模型类似,通过多次线性回归,模拟非线性回归)。

讲到这里,只是想让大家明白深度学习想要干什么,他能完后什么牛逼的工作,为什么能变的这么火,他的结构是什么样子的,至于这个结构为什么能完成这个功能,每一层的圈圈到底是什么,那些权重为什么影响学习的特征,什么牛逼的算法才能训练这个结构,这些东西我会接下来慢慢更新给大家。还是那句话,我也是初学者,很多东西都很肤浅甚至是错误的,所以希望大家能提取意见,我会积极改正。

0 0
原创粉丝点击