机器学习的分类与主要算法对⽐
机器学习的分类与主要算法对⽐
  ⾸先让我们瞻仰⼀下当今机器学习领域的执⽜⽿者:
  这幅图上的三⼈是当今机器学习界的执⽜⽿者。中间的是Geoffrey Hinton, 加拿⼤多伦多⼤学的教授,如今被聘为“Google⼤脑”的负责⼈。右边的是Yann LeCun, 纽约⼤学教授,如今是Facebook⼈⼯智能实验室的主任。⽽左边的⼤家都很熟悉,Andrew Ng,中⽂名吴恩达,斯坦福⼤学副教授,如今也是“百度⼤脑”的负责⼈与百度⾸席科学家。这三位都是⽬前业界炙⼿可热的⼤⽜,被互联⽹界⼤鳄求贤若渴的聘请,⾜见他们的重要性。⽽他们的研究⽅向,则全部都是机器学习的⼦类–深度学习。
  从⼴义上来说,机器学习是⼀种能够赋予机器学习的能⼒以此让它完成直接编程⽆法完成的功能的⽅法。但从实践的意义上来说,机器学习是⼀种通过利⽤数据,训练出模型,然后使⽤模型预测的⼀种⽅法。
  机器学习⽆疑是当前数据分析领域的⼀个热点内容。很多⼈在平时的⼯作中都或多或少会⽤到机器学习的算法。从范围上来说,机器学习跟模式识别,统计学习,数据挖掘是类似的,同时,机器学习与其他领域的处理技术的结合,形成了计算机视觉、语⾳识别、⾃然语⾔处理等交叉学科。因此,⼀般说数据挖掘时,可以等同于说机器学习。同时,我们平常所说的机器学习应⽤,应该是通⽤的,不仅仅局限在结构化数据,还有图像,⾳频等应⽤。
  机器学习的算法很多。很多时候困惑⼈们都是,很多算法是⼀类算法,⽽有些算法⼜是从其他算法中延伸出来的。这⾥,我们从两个⽅⾯来给⼤家介绍,第⼀个⽅⾯是学习的⽅式,第⼆个⽅⾯是算法的类似性。
⼀、机器学习⽅式
  根据数据类型的不同,对⼀个问题的建模有不同的⽅式。在机器学习或者⼈⼯智能领域,⼈们⾸先会考虑算法的学习⽅式。在机器学习领域,有⼏种主要的学习⽅式。将算法按照学习⽅式分类是⼀个不错的想法,这样可以让⼈们在建模和算法选择的时候考虑能根据输⼊数据来选择最合适的算法来获得最好的结果。
1.1 监督学习
  在监督式学习下,输⼊数据被称为“训练数据”,每组训练数据有⼀个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“⾮垃圾邮件”,对⼿写数字识别中的“1“,”2“,”3“,”4“等。在建⽴预测模型的时候,监督式学习建⽴⼀个学习过程,将预测结果与“训练数据”的实际结果进⾏⽐较,不断的调整预测模型,直到模型的预测结果达到⼀个预期的准确率。监督式学习的常见应⽤场景如分类问题和回归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经⽹络(Back Propagation Neural Network)
1.2 ⽆监督学习
  在⾮监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的⼀些内在结构。常见的应⽤场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及k-Means算法。
1.3 半监督学习
  在此学习⽅式下,输⼊数据部分被标识,部分没有被标识,这种学习模型可以⽤来进⾏预测,但是模型⾸先需要学习数据的内在结构以便合理的组织数据来进⾏预测。应⽤场景包括分类和回归,算法包括⼀些对常⽤监督式学习算法的延伸,这些算法⾸先试图对未标识数据进⾏建模,在此基础上再对标识的
数据进⾏预测。如图论推理算法(Graph Inference)或者拉普拉斯⽀持向量机(Laplacian SVM.)等。
1.4 强化学习
  在这种学习模式下,输⼊数据作为对模型的反馈,不像监督模型那样,输⼊数据仅仅是作为⼀个检查模型对错的⽅式,在强化学习下,输⼊数据直接反馈到模型,模型必须对此⽴刻作出调整。常见的应⽤场景包括动态系统以及机器⼈控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)
⼆、机器学习常⽤算法
  根据算法的功能和形式的类似性,我们可以把算法分类,⽐如说基于树的算法,基于神经⽹络的算法等等。当然,机器学习的范围⾮常
庞⼤,有些算法很难明确归类到某⼀类。⽽对于有些分类来说,同⼀分类的算法可以针对不同类型的问题。这⾥,我们尽量把常⽤的算法按照最容易理解的⽅式进⾏分类。
2.1 回归算法(有监督学习)
  在⼤部分机器学习课程中,回归算法都是介绍的第⼀个算法。原因有两个:⼀.回归算法⽐较简单,介绍它可以让⼈平滑地从统计学迁移到机器学习中。⼆.回归算法是后⾯若⼲强⼤算法的基⽯,如果不理解回归算法,⽆法学习那些强⼤的算法。回归算法有两个重要的⼦类:即线性回归和逻辑回归。
  回归算法是试图采⽤对误差的衡量来探索变量之间的关系的⼀类算法。回归算法是统计机器学习的利器。在机器学习领域,⼈们说起回归,有时候是指⼀类问题,有时候是指⼀类算法,这⼀点常常会使初学者有所困惑。常见的回归算法包括:最⼩⼆乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元⾃适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)
线性回归就是如何拟合出⼀条直线最佳匹配我所有的数据?⼀般使⽤“最⼩⼆乘法”来求解。“最⼩⼆乘法”的思想是这样的,假设我们拟合出的直线代表数据的真实值,⽽观测到的数据代表拥有误差的值。为了尽可能减⼩误差的影响,需要求解⼀条直线使所有误差的平⽅和最⼩。最⼩⼆乘法将最优问题转化为求函数极值问题。函数极值在数学上我们⼀般会采⽤求导数为0的⽅法。但这种做法并不适合计算机,可能求解不出来,也可能计算量太⼤。
逻辑回归是⼀种与线性回归⾮常类似的算法,但是,从本质上讲,线型回归处理的问题类型与逻辑回归
不⼀致。线性回归处理的是数值问题,也就是最后预测出的结果是数字,例如房价。⽽逻辑回归属于分类算法,也就是说,逻辑回归预测结果是离散的分类,例如判断这封邮件是否是垃圾邮件,以及⽤户是否会点击此⼴告等等。
实现⽅⾯的话,逻辑回归只是对对线性回归的计算结果加上了⼀个Sigmoid函数,将数值结果转化为了0到1之间的概率(Sigmoid函数的图像⼀般来说并不直观,你只需要理解对数值越⼤,函数越逼近1,数值越⼩,函数越逼近0),接着我们根据这个概率可以做预测,例如概率⼤于0.5,则这封邮件就是垃圾邮件,或者肿瘤是否是恶性的等等。从直观上来说,逻辑回归是画出了⼀条分类线,逻辑回归算法划出的分类线基本都是线性的(也有划出⾮线性分类线的逻辑回归,不过那样的模型在处理数据量较⼤的时候效率会很低)。
2.2 正则化⽅法
  正则化⽅法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进⾏调整。正则化⽅法通常对简单模型予以奖励⽽对复杂算法予以惩罚。常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性⽹络(Elastic Net)。
2.3 基于实例的算法
  基于实例的算法常常⽤来对决策问题建⽴模型,这样的模型常常先选取⼀批样本数据,然后根据某些近似性把新数据与样本数据进⾏⽐较。通过这种⽅式来寻最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习⽮量量化(Learning Vector Quantization, LVQ),以及⾃组织映射算法(Self-Organizing Map , SOM)2.4 决策树算法
  决策树算法根据数据的属性采⽤树状结构建⽴决策模型,决策树模型常常⽤来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest),多元⾃适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)
  ⼀般的机器学习模型⾄少考虑两个量:⼀个是因变量,也就是我们希望预测的结果,在这个例⼦⾥就是⼩Y迟到与否的判断。另⼀个是⾃变量,也就是⽤来预测⼩Y是否迟到的量。假设我把时间作为⾃变量,譬如我发现⼩Y所有迟到的⽇⼦基本都是星期五,⽽在⾮星期五情况下他基本不迟到。于是我可以建⽴⼀个模型,来模拟⼩Y迟到与否跟⽇⼦是否是星期五的概率。见下图:
  这样的图就是⼀个最简单的机器学习模型,称之为决策树。
  当我们考虑的⾃变量只有⼀个时,情况较为简单。如果把我们的⾃变量再增加⼀个。例如⼩Y迟到的部分情况时是在他开车过来的时候(你可以理解为他开车⽔平较臭,或者路较堵)。于是我可以关联考虑这些信息。建⽴⼀个更复杂的模型,这个模型包含两个⾃变量与⼀个因变量。再更复杂⼀点,⼩Y的迟到跟天⽓也有⼀定的原因,例如下⾬的时候,这时候我需要考虑三个⾃变量。
  如果我希望能够预测⼩Y迟到的具体时间,我可以把他每次迟到的时间跟⾬量的⼤⼩以及前⾯考虑的⾃变量统⼀建⽴⼀个模型。于是我的模型可以预测值,例如他⼤概会迟到⼏分钟。这样可以帮助我更好的规划我出门的时间。在这样的情况下,决策树就⽆法很好地⽀撑了,因为决策树只能预测离散值。我们可以⽤线型回归⽅法建⽴这个模型。
  如果我把这些建⽴模型的过程交给电脑。⽐如把所有的⾃变量和因变量输⼊,然后让计算机帮我⽣成⼀个模型,同时让计算机根据我当前的情况,给出我是否需要迟出门,需要迟⼏分钟的建议。那么计算机执⾏这些辅助决策的过程就是机器学习的过程。
2.5 贝叶斯⽅法
  贝叶斯⽅法算法是基于贝叶斯定理的⼀类算法,主要⽤来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
2.6 基于核的算法(有监督学习)
  基于核的算法中最著名的莫过于⽀持向量机(SVM)了。基于核的算法把输⼊数据映射到⼀个⾼阶的向量空间,在这些⾼阶向量空间⾥,有些分类或者回归问题能够更容易的解决。常见的基于核的算法包括:⽀持向量机(Support Vector Machine, SVM),径向基函数(Radial Basis Function ,RBF),以及线性判别分析(Linear Discriminate Analysis ,LDA)等。接下来将重点介绍⼀下SVM
· ⽀持向量机 SVM
  ⽀持向量机算法是诞⽣于统计学习界,同时在机器学习界⼤放光彩的经典算法。
  ⽀持向量机算法从某种意义上来说是逻辑回归算法的强化:通过给予逻辑回归算法更严格的优化条件,
⽀持向量机算法可以获得⽐逻辑回归更好的分类界线。但是如果没有某类函数技术,则⽀持向量机算法最多算是⼀种更好的线性分类技术。
  但是,通过跟⾼斯“核”的结合,⽀持向量机可以表达出⾮常复杂的分类界线,从⽽达成很好的的分类效果。“核”事实上就是⼀种特殊的函数,最典型的特征就是可以将低维的空间映射到⾼维的空间。
  SVM⽅法是通过⼀个⾮线性映射p,把样本空间映射到⼀个⾼维乃⾄⽆穷维的特征空间中(Hilber空间),使得在原来的样本空间中⾮线性可分的问题转化为在特征空间中的线性可分的问题。升维,就是把样本向⾼维空间做映射,⼀般情况下这会增加计算的复杂性,甚⾄会引起“维数灾难”,因⽽⼈们很少问津。但是作为分类、回归等问题来说,很可能在低维样本空间⽆法线性处理的样本集,在⾼维特征空间中却可以通过⼀个线性超平⾯实现线性划分(或回归)。⼀般的升维都会带来计算的复杂化,SVM⽅法巧妙地解决了这个难题:应⽤核函数的展开定理,就不需要知道⾮线性映射的显式表达式;由于是在⾼维特征空间中建⽴线性学习机,所以与线性模型相⽐,不但⼏乎不增加计算的复杂性,⽽且在某种程度上避免了“维数灾难”.这⼀切要归功于核函数的展开和计算理论。
  选择不同的核函数,可以⽣成不同的SVM,常⽤的核函数有以下4种:
  - 性核函数K(x,y)=x·y
正则化回归算法  - 多项式核函数K(x,y)=[(x·y)+1]d
  - 向基函数K(x,y)=exp(-|x-y|^2/d^2)
  - 层神经⽹络核函数K(x,y)=tanh(a(x·y)+b)
  如下图所⽰,我们如何在⼆维平⾯划分出⼀个圆形的分类界线?在⼆维平⾯可能会很困难,但是通过“核”可以将⼆维空间映射到三维空间,然后使⽤⼀个线性平⾯就可以达成类似效果。也就是说,⼆维平⾯划分出的⾮线性分类界线可以等价于三维平⾯的线性分类界线。于是,我们可以通过在三维空间中进⾏简单的线性划分就可以达到在⼆维平⾯中的⾮线性划分效果。
  ⽀持向量机是⼀种数学成分很浓的机器学习算法(相对的,神经⽹络则有⽣物科学成分)。在算法的核⼼步骤中,有⼀步证明,即将数据从低维映射到⾼维不会带来最后计算复杂性的提升。于是,通过⽀持向量机算法,既可以保持计算效率,⼜可以获得⾮常好的分类效果。因此⽀持向量机在90年代后期⼀直占据着机器学习中最核⼼的地位,基本取代了神经⽹络算法。直到现在神经⽹络借着深度学习重新兴起,两者之间才⼜发⽣了微妙的平衡转变。
2.7 聚类算法(⽆监督学习)
  聚类,就像回归⼀样,有时候⼈们描述的是⼀类问题,有时候描述的是⼀类算法。聚类算法通常按照中⼼点或者分层的⽅式对输⼊数据进⾏归并。简单来说,聚类算法就是计算种中的距离,根据距离的远近将数据划分为多个族,所以的聚类算法都试图到数据的内在结构,以便按照最⼤的共同点将数据进⾏归类。常见的聚类算法包括 k-Means算法以及期望最⼤化算法(Expectation Maximization, EM)。
2.8 关联规则学习
  关联规则学习通过寻最能够解释数据变量之间关系的规则,来出⼤量多元数据集中有⽤的关联规则。常见算法包括 Apriori算法和Eclat算法等。
2.9 ⼈⼯神经⽹络 ANN(有监督学习)
  神经⽹络(也称之为⼈⼯神经⽹络,ANN)算法是80年代机器学习界⾮常流⾏的算法,不过在90年代中途衰落。现在,携着“深度学习”之势,神经⽹络重装归来,重新成为最强⼤的机器学习算法之⼀。
  神经⽹络的诞⽣起源于对⼤脑⼯作机理的研究。早期⽣物界学者们使⽤神经⽹络来模拟⼤脑。机器学习的学者们使⽤神经⽹络进⾏机器学习的实验,发现在视觉与语⾳的识别上效果都相当好。在BP算法(加速神经⽹络训练过程的数值算法)诞⽣以后,神经⽹络的发展进⼊了⼀个热潮。BP算法的发明⼈之⼀是前⾯介绍的机器学习⼤⽜Geoffrey Hinton。
  ⼈⼯神经⽹络是机器学习的⼀个庞⼤的分⽀,有⼏百种不同的算法,通常⽤于解决分类和回归问题。(其中深度学习就是其中的⼀类算法,我们会单独讨论),重要的⼈⼯神经⽹络算法包括:感知器神经⽹络(Perceptron Neural Network), 反向传递(Back Propagation),Hopfield⽹络,⾃组织映射(Self-Organizing Map, SOM)。学习⽮量量化(Learning Vector Quantization, LVQ)
  具体说来,神经⽹络的学习机理是什么?简单来说,就是分解与整合。在著名的Hubel-Wiesel试验中,学者们研究猫的视觉分析机理是这样的。
  ⽐⽅说,⼀个正⽅形,分解为四个折线进⼊视觉处理的下⼀层中。四个神经元分别处理⼀个折线。每个折线再继续被分解为两条直线,每条直线再被分解为⿊⽩两个⾯。于是,⼀个复杂的图像变成了⼤量的细节进⼊神经元,神经元处理以后再进⾏整合,最后得出了看到的是正⽅形的结论。这就是⼤脑视觉识别的机理,也是神经⽹络⼯作的机理。
  让我们看⼀个简单的神经⽹络的逻辑架构。在这个⽹络中,分成输⼊层,隐藏层,和输出层。输⼊层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被整合到输出层。每层中的⼀个圆代表⼀个处理单元,可以认为是模拟了⼀个神经元,若⼲个处理单元组成了⼀个层,若⼲个层再组成了⼀个⽹络,也就是”神经⽹络”。
  上图描述的是⼀个⽬前研究最为成熟Shallow 结构的神经⽹络(只含有单层隐藏层神经元的结构)。第⼀层为输⼊层 (input layer ),第⼆层称为隐藏层 ( hidden layer ),最后⼀层为输出层( output layer )。神经元之间都是由低层出发,终⽌于⾼层神经元的⼀条有向边进⾏连接,每条边都有⾃⼰的权重。每个神经元都是⼀个计算单元,如在Feed-forward neural network 中,除输⼊层神经元外,每个神经元为⼀个计算单元,可以通过⼀个计算函数 f() 来表⽰,函数的具体形式可以⾃⼰定义,现在⽤的较多的是感知器计算神经元,如果你对感知器有所了解的话,理解起来会容易很多。可以计算此时神经元所具有的能量值,当该值超过⼀定阀值的时候神经元的状态就会发⽣改变,神经元只有两种状态,激活或未激活。在实际的⼈⼯神经⽹络中,⼀般是⽤⼀种概率的⽅式去表⽰神经元是否处于激活状态,可以⽤ h(f) 来表⽰,f 代表神经元的能量值,h(f) 代表该能量值使得神经元的状态发⽣改变的概率有多⼤,能量值越⼤,处于激活状态的概率就越⾼。到这部分你已经接触到了关于神经⽹络的⼏个基本术语,下⾯⽤更加规范的符号来表⽰,神经元的激活值(activations) f() ,表⽰计算神经元的能量值, 神经元的激活状态 h(f) ,h
表⽰激活函数。
在神经⽹络中,每个处理单元事实上就是⼀个逻辑回归模型,逻辑回归模型接收上层的输⼊,把模型的预测结果作为输出传输到下⼀个层次。通过这样的过程,神经⽹络可以完成⾮常复杂的⾮线性分类。
  下图会演⽰神经⽹络在图像识别领域的⼀个著名应⽤,这个程序叫做LeNet,是⼀个基于多个隐层构建的神经⽹络。通过LeNet可以识别多种⼿写数字,并且达到很⾼的识别精度与拥有较好的鲁棒性。
  右下⽅的⽅形中显⽰的是输⼊计算机的图像,⽅形上⽅的红⾊字样“answer”后⾯显⽰的是计算机的输出。左边的三条竖直的图像列显⽰的是神经⽹络中三个隐藏层的输出,可以看出,随着层次的不断深⼊,越深的层次处理的细节越低,例如层3基本处理的都已经是线的细节了。LeNet的发明⼈就是前⽂介绍过的机器学习的⼤⽜Yann LeCun。
  ⼤约⼆三⼗年前,Neural Network曾经是ML领域特别⽕热的⼀个⽅向,但是后来确慢慢淡出了,进⼊90年代,神经⽹络的发展进⼊了⼀个瓶颈期。其主要原因是尽管有BP算法的加速,神经⽹络的训练过程仍然很困难。因此90年代后期⽀持向量机(SVM)算法取代了神经⽹络的地位。
  原因包括以下⼏个⽅⾯:
  1. ⽐较容易过训练,参数⽐较难确定;
  2. 训练速度⽐较慢,在层次⽐较少(⼩于等于3)的情况下效果并不⽐其它⽅法更优;
  所以中间有⼤约20多年的时间,神经⽹络被关注很少,这段时间基本上由SVM和Boosting算法主导。但是,Hinton坚持下来并最终(和Bengio、Yann.lecun等)提成了⼀个实际可⾏的Deep Learning框架。
2.10 深度学习
  虽然深度学习这四字听起来颇为⾼⼤上,但其理念却⾮常简单,就是传统的神经⽹络发展到了多隐藏层的情况。
  在上⽂介绍过,⾃从90年代以后,神经⽹络已经消寂了⼀段时间。但是BP算法的发明⼈Geoffrey Hinton⼀直没有放弃对神经⽹络的研究。由于神经⽹络在隐藏层扩⼤到两个以上,其训练速度就会⾮常慢,因此实⽤性⼀直低于⽀持向量机。2006年,Geoffrey Hinton在科学杂志《Science》上发表了⼀篇⽂章,论证了两个观点:
  1.多隐层的神经⽹络具有优异的特征学习能⼒,学习得到的特征对数据有更本质的刻画,从⽽有利于可视化或分类;
  2.深度神经⽹络在训练上的难度,可以通过“逐层初始化” 来有效克服。
  通过这样的发现,不仅解决了神经⽹络在计算上的难度,同时也说明了深层神经⽹络在学习上的优异性。从此,神经⽹络重新成为了机器学习界中的主流强⼤学习技术。同时,具有多个隐藏层的神经⽹络被称为深度神经⽹络,基于深度神经⽹络的学习研究称之为深度学习。
  由于深度学习的重要性质,在各⽅⾯都取得极⼤的关注,按照时间轴排序,有以下四个标志性事件值得⼀说:
  1. 2012年6⽉,《纽约时报》披露了Google Brain项⽬,这个项⽬是由Andrew Ng和Map-Reduce发明⼈Jeff Dean共同主导,⽤16000个CPU Core的并⾏计算平台训练⼀种称为“深层神经⽹络”的机器学习模型,在语⾳识别和图像识别等领域获得了巨⼤的成功。Andrew Ng就是⽂章开始所介绍的机器学习的⼤⽜。
  2. 2012年11⽉,微软在中国天津的⼀次活动上公开演⽰了⼀个全⾃动的同声传译系统,讲演者⽤英⽂演讲,后台的计算机⼀⽓呵成⾃动完成语⾳识别、英中机器翻译,以及中⽂语⾳合成,效果⾮常流畅,其中⽀撑的关键技术是深度学习;
  3. 2013年1⽉,在百度的年会上,创始⼈兼CEO李彦宏⾼调宣布要成⽴百度研究院,其中第⼀个重点⽅向就是深度学习,并为此⽽成⽴深度学习研究院(IDL)。
  4. 2013年4⽉,《⿇省理⼯学院技术评论》杂志将深度学习列为2013年⼗⼤突破性技术(Breakthrough Technology)之⾸。
  神经⽹络研究领域领军者Hinton在2006年提出了神经⽹络Deep Learning算法,使神经⽹络的能⼒⼤⼤提⾼,向⽀持向量机发出挑战。Deep Learning假设神经⽹络是多层的,⾸先⽤RestrictedBoltzmann Machine(⾮监督学习)学习⽹络的结构,然后再通过Back Propagation(监督学习)学习⽹络的权值。
  深度学习算法是对⼈⼯神经⽹络的发展。在近期赢得了很多关注,深度学习试图建⽴⼤得多也复杂得多的神经⽹络。很多深度学习的算法是半监督式学习算法,⽤来处理存在少量未标识数据的⼤数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积⽹络(Convolutional Network), 堆栈式⾃动编码器(Stacked Auto-encoders)。
  总之,deep learning能够得到更好地表⽰数据的feature,同时由于模型的层次、参数很多,capacity⾜够,因此,模型有能⼒表⽰⼤规模数据,所以对于图像、语⾳这种特征不明显(需要⼿⼯设计且很多没有直观物理含义)的问题,能够在⼤规模训练数据上取得更好的效果。此外,从模式识别特征和分类器的⾓度,deep learning框架将feature和分类器结合到⼀个框架中,⽤数据去学习feature,在使⽤中减少了⼿⼯设计feature的巨⼤⼯作量(这是⽬前⼯业界⼯程师付出努⼒最多的⽅⾯),因此,不仅仅效果可以更好,⽽且,使⽤起来也有很多⽅便之处。
Deep Learning与传统的神经⽹络异同:
相同点: Deep Learning采⽤了神经⽹络相似的分层结构,系统由包括输⼊层、隐层(多层)、输出层组成的多层⽹络,只有相邻层节点之间有连接,同⼀层以及跨层节点之间相互⽆连接,每⼀层可以看作是⼀个Logistic Regression模型;这种分层结构,是⽐较接近⼈类⼤脑的结构的。
不同点:⽽为了克服神经⽹络训练中的问题,DL采⽤了与神经⽹络很不同的训练机制。传统神经⽹络中,采⽤的是Back Propagation 的⽅式进⾏,简单来讲就是采⽤迭代的算法来训练整个⽹络,随机设定初值,计算当前⽹络的输出,然后根据当前输出和label之间的差去改变前⾯各层的参数,直到收敛(整体是⼀个梯度下降法)。⽽DeepLearning整体上是⼀个Layer-Wise的训练机制。这样做的原因是因为,如果采⽤Back Propagation的机制,对于⼀个Deep Network(7层以上),残差传播到最前⾯的层已经变得太⼩,出现所谓的Gradient Diffusion。
2.11 降低维度算法(⽆监督学习)
  像聚类算法⼀样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以⾮监督学习的⽅式试图利⽤较少的信息来归纳或者解释数据。这类算法可以⽤于⾼维数据的可视化或者⽤来简化数据以便监督式学习使⽤。常见的算法包括:主成份分析(Principle Component Analysis, PCA),偏最⼩⼆乘回归(Partial Least Square Regression,PLS), Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(Projection Pursuit)等。
  其主要特征是将数据从⾼维降低到低维层次。在这⾥,维度其实表⽰的是数据的特征量的⼤⼩,例如,房价包含房⼦的长、宽、⾯积与房间数量四个特征,也就是维度为4维的数据。可以看出来,长与宽事实上与⾯积表⽰的信息重叠了,例如⾯积=长 × 宽。通过降维算法我们就可以去除冗余信息,将特征减少为⾯积与房间数量两个特征,即从4维的数据压缩到2维。于是我们将数据从⾼维降低到低维,不仅利于表⽰,同时在计算上也能带来加速。
  刚才说的降维过程中减少的维度属于⾁眼可视的层次,同时压缩也不会带来信息的损失(因为信息冗余了)。如果⾁眼不可视,或者没有冗余的特征,降维算法也能⼯作,不过这样会带来⼀些信息的损失。但是,降维算法可以从数学上证明,从⾼维压缩到的低维中最⼤程度地保留了数据的信息。因此,使⽤降
维算法仍然有很多的好处。
  降维算法的主要作⽤是压缩数据与提升机器学习其他算法的效率。通过降维算法,可以将具有⼏千个特征的数据压缩⾄若⼲个特征。另外,降维算法的另⼀个好处是数据的可视化,例如将5维的数据压缩⾄2维,然后可以⽤⼆维平⾯来可视。降维算法的主要代表是PCA算法(即主成分分析算法)。
2.12 集成算法
  集成算法⽤⼀些相对较弱的学习模型独⽴地就同样的样本进⾏训练,然后把结果整合起来进⾏整体预测。集成算法的主要难点在于究竟集成哪些独⽴的较弱的学习模型以及如何把学习结果整合起来。这是⼀类⾮常强⼤的算法,同时也⾮常流⾏。常见的算法包括:Boosting,Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。