机器学习和深度学习的区别:
我们有几种算法用于机器学习。例如:
Find-S算法
决策树算法(Decision trees)
随机森林算法(Random forests)
人工神经网络
通常,有3种类型的学习算法:
1,监督机器学习算法用于进行预测。此外,该算法搜索分配给数据点的值标签内的模式。
2,无监督机器学习算法:没有标签与数据点相关联。这些ML算法将数据组织成一组簇。此外,它需要描述其结构,使复杂的数据看起来简单,有条理,便于分析。
3,增强机器学习算法:我们使用这些算法来选择动作。此外,我们可以看到它基于每个数据点。一段时间后,算法改变其策略以更好地学习。
机器学习只关注解决现实问题。它还需要更加智能的一些想法。机器学习通过旨在模仿人类决策能力的神经网络。ML工具
和技术
是关键的两个深度学习的窄子集,我们需要用他们来解决需要思考的问题。任何深度神经网络都将包含三种类型的图层:
输入层
隐藏层
输出层
我们可以说深度学习是机器学习领域的最新领域。这是实现机器学习的一种方式。
我们使用机器算法来解析数据,从数据中学习,并根据所学知识做出明智的决策。基本上,深度学习用于创建人工“神经网络” ,可以自己学习和做出明智的决策。我们可以说深度学习是机器学习的一个子领域。
数据依赖性
性能是两种算法之间的主要关键区别。虽然,当数据很小时,深度学习算法表现不佳。这就是是深度学习算法需要大量数据才能完美理解的原因。
硬件依赖
通常,深度学习依赖于高端机器,而传统学习依赖于低端机器。因此,深度学习要求包括GPU。这是它工作中不可或缺的一部分。它们还进行大量的矩阵乘法运算。
特色工程
这是一个普遍的过程。在此,领域知识被用于创建特征提取器
,以降低数据的复杂性,并使模式更加可见以学习算法的工作。虽然,处理起来非常困难。因此,这是需要非常多的专业知识和时间。
通常,我们使用传统算法来解决问题。但是,它需要将问题分解为不同的部分以单独解决它们。要获得结果,请将它们全部组合起来。
例如:
让我们假设你有一个多对象检测的任务。在此任务中,我们必须确定对象是什么以及它在图像中的位置。在机器学习方法中,我们必须将问题分为两个步骤:
1.物体检测
2.物体识别
首先,我们使用抓取算法浏览图像并找到所有可能的对象。然后,在所有已识别的对象中,你将使用像SVM和HOG这样的对象识别算法来识别相关对象。
执行时间处理时间
通常,与机器学习相比,深度学习需要更多时间进行训练。主要原因是深度学习算法中有太多参数。机器学习只花需要更少的时间进行训练。
解释性
我们将可解释性作为比较两种学习技巧的因素。尽管如此,深度学习在用于工业之前仍然被认为是10次。
计算机视觉: 我们将其用于车牌识别和面部识别等不同应用。
信息检索: 我们将ML和DL用于搜索引擎,文本搜索和图像搜索等应用程序。
营销:我们在自动电子邮件营销和目标识别中使用这种学习技术。
医疗诊断:它在医学领域也有广泛的应用。癌症鉴定和异常检测等应用。
自然语言处理:适用于情感分析,照片标签,在线广告等应用。
原文标题《Machine Learning vs. Deep Learning》,
作者:Shailna Patidar 译者:谢子乔
https://blog.csdn.net/tansuo17/article/details/77833932
OpenCv是一个2000年发布的开源计算机视觉库,有进行物体识别、图像分割、人脸识别、动作识别等多种功能,可以在Linux、Windows、Android、Mac OS等操作系统上运行,以轻量级、高效著称,且提供多种语言接口。
而OpenCV最近一次版本更新,为我们带来了更好的深度学习支持,在OpenCV中使用预训练的深度学习模型变得非常容易。
pyimagesearch网站今天发布了一份用OpenCV+深度学习预训练模型做图像识别的教程,量子位编译整理如下:
dnn模块目前支持Caffe、TensorFlow、Torch、PyTorch等深度学习框架。
另外,新版本中使用预训练深度学习模型的API同时兼容C++和Python,让系列操作变得非常简便:
从硬盘加载模型;
对输入图像进行预处理;
将图像输入网络,获取输出的分类。
当然,我们不能、也不该用OpenCV训练深度学习模型,但这个新版本让我们能把用深度学习框架训练好了的模型拿来,高效地用在OpenCV之中。
这篇文章就展示了如何用ImageNet上预训练的深度学习模型来识别图像。
使用机器学习的方法进行人脸检测的第一步需要训练人脸分类器,这是一个耗时耗力的过程,需要收集大量的正负样本,并且样本质量的好坏对结果影响巨大,如果样本没有处理好,再优秀的机器学习分类算法都是零。
小故事
今年3月23日,微软公司在推特(Twitter)社交平台上推出了一个基于机器学习的智能聊天机器人Tay,Tay被设定为一个年龄为十几岁的女孩,主要目标受众是18岁至24岁的青少年。人们只需要@一下Tay,Tay就会追踪该用户的网名、性别、喜欢的食物、邮编、感情状况等个人信息。除了聊天,Tay还可以说笑话,讲故事等,让人感觉这就是一个知道你很多小秘密,嘴甜心暖的“小闺蜜”。Tay会在与人们的交流中不断学习,随着时间积累,她的理解能力将逐步提升,变得愈发“智能”。
然而比较戏剧性的是在Tay推出24小时不到,这个人工智能机器人就被人类彻底“教坏”,成为一个集反犹太人、性别歧视、种族歧视于一身的“不良少女”。逼得微软不得不让Tay暂时“下岗”。
微软在一项声明中表示,“人工智能机器人Tay属于机器学习项目,设计它的目的就是让它与人类进行互动。在学习的过程中,它把人类的好坏言论都学了。因此,它发表了一些不恰当的言论。我们正在纠偏,对Tay进行调整。”
微软的机器学习算法不可谓不先进,但是为什么会出现这种情况呢,比较合理的解释就是Tay是被人们输入的“不良”样本带坏的。
PASCAL数据集
中英对照表
opencv是比较流行的计算机视觉库,集成了很多优秀机器学习算法
#define CV_TYPE_NAME_ML_SVM "opencv-ml-svm" //支持向量机
#define CV_TYPE_NAME_ML_KNN "opencv-ml-knn" //K-近邻
#define CV_TYPE_NAME_ML_NBAYES "opencv-ml-bayesian" //正态贝叶斯分类器,并非朴素贝叶斯分类器(Naïve Bayes Classifier)
#define CV_TYPE_NAME_ML_EM "opencv-ml-em" //期望最大化
#define CV_TYPE_NAME_ML_BOOSTING "opencv-ml-boost-tree" //boost分类器
#define CV_TYPE_NAME_ML_TREE "opencv-ml-tree" //决策树分类器
#define CV_TYPE_NAME_ML_ANN_MLP "opencv-ml-ann-mlp" //感知器神经网络分类器
#define CV_TYPE_NAME_ML_CNN "opencv-ml-cnn" //卷积神经网络
#define CV_TYPE_NAME_ML_RTREES "opencv-ml-random-trees" //随机树分类器
#define CV_TYPE_NAME_ML_ERTREES "opencv-ml-extremely-randomized-trees" //随机森林分类器
#define CV_TYPE_NAME_ML_GBT "opencv-ml-gradient-boosting-trees" //梯度boost分类器
(1).正态贝叶斯分类器(Normal Bayes Classifier), 实现类:CvNormalBayesClassifier
(2).K-近邻分类器(K-Nearest Neighbour Classifier), 实现类:CvKNearest
(3).支持向量机分类器(Support Vector Machines), 实现类:CvSVM
(4).期望最大化EM分类器(Expectation - Maximization),实现类:EM
(5).决策树分类器(Decision Tree), 实现类:CvDTree
(6).随机森林分类器(Random Trees (Random Forest) Classifier),实现类:CvRTrees+CvForestTree。
(7).超随机森林分类器(Extremely randomized trees Classifier), 实现类:CvForestERTree。
(8).boost分类器(Boosted tree classifier): 实现类:CvBoostTree+CvBoost
(9).梯度boost分类器(Gradient Boosted Trees), 实现类:CvGBTrees。
(10).人工神经网络分类器(Artificial Neural Networks), 实现类:CvANN_MLP
Mahalanobis算法:通过除以协方差来对数据空间进行变换,然后计算距离。如果协方差矩阵是单位矩阵,那么该度量等价于欧氏距离。
K均值算法:一种非监督的聚类方法,使用K个均值来表示数据的分布,其中K的大小由用户定义。该方法与期望最大化方法的区别是K均值的中心不是高斯分布,而且因为各个中心竞争去“俘获”最近的点,所以聚类结果更像肥皂泡。聚类区域经常被用作稀疏直方图的bin,用来描述数据。
正态/朴素贝叶斯分类器算法:一种通用的分类器,它假设特征是高斯分布而且统计上互相独立。这个假设过于苛刻,在很多条件下不能满足,故被称作“朴素贝叶斯”分类器。而在许多情况下,这个分类器的效果却出奇的好。
决策树算法:一个判别分类器。该树在当前节点通过寻找数据特征和一个阈值,来最优化分数据得不同的类别。处理流程是不停地划分数据并向下到树的左侧子节点或右侧子节点。虽然它一般不具有最优性能,但是往往是测试算法的第一选择,因为它的速度比较快。而且具有不错的功能。
Boosting算法:多个判别子分类器的组合。最终的分类决策是由各个子分类器的加权组合来决定。在训练时,逐个训练子分类器,且每个子分类器是一个弱分类器(只是优于随机选择的性能)。这些弱分类器由单变量决策树构成,被称作“树桩”。在训练时,“树桩”不仅从数据中学习分类决策,而且还根据识别精度学习“投票”的权重。当逐个训练分类器的时候,数据样本的权重被重新分配,使之能够给予分错的数据更多的注意力。训练过程不停地执行,直到总错误(加权组合所有决策树组成的分类器产生的错误)低于某个已经设置好的阈值。为了达到好的效果,这个方法通常需要很大量训练的训练数据。
随机森林:这是由许多决策树组成的“森林”,每个决策树向下递归以获取最大深度。在学习过程中,每棵树的每个节点只从特征数据的一个随机子集中选择。这保证了每棵树是统计上不相关的分类器。在识别过程中,将每棵树的结果进行投票来确定最终结果,每棵树的权重相同。这个分类器方法经常很有效,而且对每棵树的输出进行平均,可以处理回归问题。
人脸检测/Haar分类器:这个物体检测方法巧妙地使用了boosting算法。OpenCV提供了正面人脸检测的检测器,它的检测效果非常好。你也可使用OpenCV提供的软件训练算法,使之能够检测其他物体。该算法非常擅长检测特定视角的刚性物体。
期望最大化(EM)算法:一种用于聚类的非监督生成算法,它可以拟合N个多- 维高斯到数据上,此处,N的大小由用户决定。这样仅仅使用几个参数(均值和方差)就可以非常有效的表达一个比较负责的分布。该方法经常用于分科。
K近邻:K近邻可能是最简单的分类器。训练数据跟类别标签存放在一起,离测试数据最近的(欧氏距离最近)K个样本进行投票,确定测试数据的分类结果。该方法通常比较有效,但是速度比较慢且对内存需求比较大。
神经网络/多层感知器:该分类算法在输入结点和输出结点之间具有隐藏结点,这可以更好的表示输入信号。训练该分类器很慢,但是识别时很快。
支持向量机(SVM):它可以进行分类,也可以进行回归。该算法需要定一个高位空间中任两点的距离函数。(将数据投影到高维空间会使数据更容易地线性可分。)该算法可以学习一个分类超平面,用来在高纬空间里实现最优分类器。当数据有限的时候,该算法可以获得非常好的性能,而boosting和随机森林只能在拥有大量训练数据时才有好的效果。
计算机视觉中使用算法流程:标定数据 –> 提取特征 –> 数据分类(训练集、测试集、验证集) –> 选择分类器。
特征提取:需要寻找表达物体固有属性的特征,如梯度直方图、色彩、各种特征等。如果有背景信息,可能需首先把背景去除,提取出物体,然后进行图像处理(归一化图像、尺度变换、旋转、直方图均衡),计算很多特征。物体的特征向量将与物体的标签对应。
数据分类:建议交叉使用训练集、验证集、测试集。即将所有数据分成K个子集,然后每次随机选取其中一部分来训练,剩余的用来测试。测试结果求平均,得到最终的性能结果。使用交叉验证,可更清楚地看到处理异常数据时分类器的性能。
分类器选择:一般分类器的选择需要考虑计算速度、数据形式和内存大小。一些应用中,在线用户优先选择建模,所以分类器需要能够快速完成训练。这种情况下,最近邻算法、正态贝叶斯和决策树是不错的选择。如果需要考虑内存因素,决策树和神经网络是理想的选择。如果不需要很快训练,而需要很快判断,那么神经网络可以满足要求,正态贝叶斯和SVM也不错。如果不需要训练很快,但是需要精度很高,可选择boosting和随机森林。如果选取的特征比较好,仅仅需要一个简单易懂的分类器,就选择决策树和最近邻算法。要获取最好的性能,离不开boosting和随机森林。
诊断特征重要性的算法:
1)用训练集训练一个分类器。
2)使用验证集或测试集来确定分类器的准确率。
3)对于每一个数据样本和一个选择的特征,随机选择其他特征数据中的该特征的值来替代(替补抽样法)。这样可以保证特征的分布与原始数据集的一样,但是特征的结构或者意义被抹去了(因为它的值是从剩余的数据中随机选择的)。
4)用改变后的训练集训练分类器,然后用改变后的测试集或者验证集来评价分类器。如果完全打乱特征使正确率降低很多,那么这个特征并没有多重要,可以考虑删除。
5)把原始数据重新换一个特征按照3和4操作,直到所有的特征全部分析完毕,得到的结果就是每个特征的重要性。
机器学习
中,一些重要规律是:大量数据比少量数据好;好的特征比好的算法更重要。如果选取的特征好,最大化它们的独立性,最小化它们在不同环境下的变化,那么大部分算法那都可以获得比较好的效果。此外,经常遇到的两个问题:
欠拟合:模型假设太严格,所以模型不能拟合到实际数据上;
过拟合:算法不仅学习了数据,而且把噪声也当做信号学习了,这样算法的推广能力很差。
欠拟合的解决方案:使用更多的特征有利于拟合;选用一个学习能力更好的拟合算法。
过拟合的解决方案:增加训练数据的数量可使得拟合曲线更光滑;减少特征的数量可降低过拟合程度;使用一个学习能力差一点的算法。
训练和测试比较好,但实际应用效果不好的解决方案:采集更加真实的数据。
模型无法学习数据的解决方案:重新选择特征,使特征更能表达数据的不变特征;采集更新、更相关的数据;选用一个学习能力更好的拟合算法。
交叉验证首先把数据分为k个不同的子集。然后用k-1个子集进行训练,用没有用来训练的子集进行测试。这样做k次(每个子集都有一次机会作为测试集),然后把结果平均。
自抽样法跟交叉验证类似,但是验证集是从训练集中随机选取的。选择的点仅用于测试,不在训练中使用。这样做N次,每次随机选择一些验证集,最后把得到的结果平均。这意味着一些数据样本会出现在不同的验证集中,自抽样的效果一般胜于交叉验证。
ROC曲线评估了分类器参数的变化对分类器性能的影响。
本文介绍了人工智能的发展历史,基本概念,应用领域;神经元模型,神经元的学习规则以及神经网络工作原理。本系列文章来自阿里云大学人工智能学习路线中的《神经网络概览及神经网络算法详解》课程。
1、【神经网络算法详解 01】-- 人工神经网络基础
2、【神经网络算法详解 02】 – 感知神经网络与反向传播算法(BP)
3、【神经网络算法详解 03】 – 竞争神经网络【SONN、SOFM、LVQ、CPN、ART】
4、【神经网络算法详解 04】 – 反馈神经网络 【Hopfield、DHNN、CHNN、BAM、BM、RBM】
5、【神经网络算法详解 05】-- 其它类型的神经网络简介【RBF NN、DNN、CNN、LSTM、RNN、AE、DBN、GAN】
blog zhangling92
2019书籍 blog DrogoZhang
Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,最近研究了机器学习中一些深度学习的相关知识,本文给出一些很有用的资料和心得。
1949, Hebb, Hebbian Learning theory
赫布于1949年基于神经心理的提出了一种学习方式,该方法被称之为赫布学习理论。大致描述为:
假设反射活动的持续性或反复性会导致细胞的持续性变化并增加其稳定性,当一个神经元A能持续或反复激发神经元B时,其中一个或两个神经元的生长或代谢过程都会变化。
Let us assume that the persistence or repetition of a reverberatory activity (or “trace”) tends to induce lasting cellular changes that add to its stability.… When an axon of cell A is near enough to excite a cell B and repeatedly or persistently takes part in firing it, some growth process or metabolic change takes place in one or both cells such that A’s efficiency, as one of the cells firing B, is increased
从人工神经元或人工神经网络角度来看,该学习理论简单地解释了循环神经网络(RNN)中结点之间的相关性关系(权重),即:当两个节点同时发生变化(无论是positive还是negative),那么节点之间有很强的正相关性(positive weight);如果两者变化相反,那么说明有负相关性(negative weight)。
1950, Alan Turing, The Turing test
1950年,阿兰·图灵创造了图灵测试来判定计算机是否智能。图灵测试认为,如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器具有智能。这一简化使得图灵能够令人信服地说明“思考的机器”是可能的。
2014年6月8日,一个叫做尤金·古斯特曼的聊天机器人成功让人类相信它是一个13岁的男孩,成为有史以来首台通过图灵测试的计算机。这被认为是人工智能发展的一个里程碑事件。
1952, Arthur Samuel, 塞缪尔 “Machine Learning”
1952,IBM科学家亚瑟·塞缪尔开发了一个跳棋程序。该程序能够通过观察当前位置,并学习一个隐含的模型,从而为后续动作提供更好的指导。塞缪尔发现,伴随着该游戏程序运行时间的增加,其可以实现越来越好的后续指导。通过这个程序,塞缪尔驳倒了普罗维登斯提出的机器无法超越人类,像人类一样写代码和学习的模式。他创造了“机器学习”这一术语,并将它定义为:
可以提供计算机能力而无需显式编程的研究领域
a field of study that gives computer the ability without being explicitly programmed.
1957, Rosenblatt, Perceptron(感知机线性分类器)
1957年,罗森·布拉特基于神经感知科学背景提出了第二模型,非常的类似于今天的机器学习模型。这在当时是一个非常令人兴奋的发现,它比赫布的想法更适用。基于这个模型罗森·布拉特设计出了第一个计算机神经网络——感知机(the perceptron)
,它模拟了人脑的运作方式。罗森·布拉特对感知机的定义如下:
感知机旨在说明一般智能系统的一些基本属性,它不会因为个别特例或通常不知道的东西所束缚住,也不会因为那些个别生物有机体的情况而陷入混乱。
The perceptron is designed to illustrate some of the fundamental properties of intelligent systems in general, without becoming too deeply enmeshed in the special, and frequently unknown, conditions which hold for particular biological organisms.
3年后,维德罗首次使用Delta学习规则(即最小二乘法)用于感知器的训练步骤,创造了一个良好的线性分类器。
1967年,The nearest neighbor algorithm
1967年,最近邻算法(The nearest neighbor algorithm)出现,使计算机可以进行简单的模式识别。kNN算法的核心思想是如果一个样本在特征空间
中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。这就是所谓的“少数听从多数
”原则。
1969, Minsky, XOR problem
1969年马文·明斯基提出了著名的XOR问题,指出感知机在线性不可分的数据分布上是失效的。此后神经网络的研究者进入了寒冬,直到 1980 年才再一次复苏。
从60年代中到70年代末,机器学习的发展步伐几乎处于停滞状态。无论是理论研究还是计算机硬件限制,使得整个人工智能领域的发展都遇到了很大的瓶颈。虽然这个时期温斯顿(Winston)的结构学习系统和海斯·罗思(Hayes Roth)等的基于逻辑的归纳学习系统取得较大的进展,但只能学习单一概念,而且未能投入实际应用。而神经网络学习机因理论缺陷也未能达到预期效果而转入低潮。
1981, Werbos, Multi-Layer Perceptron (MLP)
伟博斯在1981年的神经网络反向传播(BP)算法中具体提出多层感知机模型
。虽然BP算法早在1970年就已经以“自动微分的反向模型(reverse mode of automatic differentiation)”为名提出来了,但直到此时才真正发挥效用,并且直到今天BP算法仍然是神经网络架构的关键因素。有了这些新思想,神经网络的研究又加快了。
在1985-1986年,神经网络研究人员(鲁梅尔哈特,辛顿,威廉姆斯-赫,尼尔森)相继提出了使用BP算法训练的多参数线性规划(MLP)的理念,成为后来深度学习的基石。
1986, Quinlan, Decision Trees
在另一个谱系中,昆兰于1986年提出了一种非常出名的机器学习算法,我们称之为“决策树
”,更具体的说是ID3算法。这是另一个主流机器学习算法的突破点。此外ID3算法也被发布成为了一款软件,它能以简单的规划和明确的推论找到更多的现实案例,而这一点正好和神经网络黑箱模型
相反。
决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。
在ID3算法提出来以后,研究社区已经探索了许多不同的选择或改进(如ID4、回归树、CART算法等),这些算法仍然活跃在机器学习领域中。
1990, Schapire, Boosting(Boosting算法)
1990年, Schapire最先构造出一种多项式级
的算法,这就是最初的Boosting算法。一年后 ,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷,那就是都要求事先知道弱学习算法学习正确的下限
。
1995年,Freund和schapire改进了Boosting算法,提出了 AdaBoost
(Adaptive Boosting)算法,该算法效率和Freund于1991年提出的 Boosting算法几乎相同,但不需要任何关于弱学习器的先验知识,因而更容易应用到实际问题当中。
Boosting方法是一种用来提高弱分类算法准确度
的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。他是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器
。
1995, Vapnik and Cortes, Support Vector Machines (SVM)支持向量机
支持向量机的出现是机器学习领域的另一大重要突破,该算法具有非常强大的理论地位和实证结果。那一段时间机器学习研究也分为NN和SVM
两派。然而,在2000年左右提出了带核函数的支持向量机
后。SVM在许多以前由NN占据的任务中获得了更好的效果。此外,SVM相对于NN还能利用所有关于凸优化、泛化边际理论和核函数
的深厚知识。因此SVM可以从不同的学科中大力推动理论和实践的改进。
而神经网络遭受到又一个质疑,通过Hochreiter等人1991年和Hochreiter等人在2001年的研究表明在应用BP算法学习时,NN神经元饱和后会出现梯度损失(gradient loss)的情况。简单地说,在一定数量的epochs训练后,NN会产生过拟合现象
,因此这一时期NN与SVM相比处于劣势。
2001, Breiman, Random Forests(RF)
决策树模型
由布雷曼博士在2001年提出,它是通过集成学习
的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)
方法。随机森林
的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想—集成思想的体现。
其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging
思想。
2006, Hinton, Deep Learning
在机器学习发展分为两个部分,浅层学习(Shallow Learning)和深度学习(Deep Learning)。浅层学习
起源上世纪20年代人工神经网络的(BP)反向传播算法
的发明,使得基于统计的机器学习算法大行其道,虽然这时候的人工神经网络算法也被称为多层感知机
,但由于多层网络训练困难
,通常都是只有一层隐含层的浅层模型。
Hinton
在2006年提出了神经网络Deep Learning算法,使神经网络的能力大大提高,向支持向量机发出挑战。 2006年,机器学习领域的泰斗Hinton和他的学生Salakhutdinov在顶尖学术刊物《Scince》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要的讯息:
1)很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻划,从而有利于可视化或分类;
2)深度神经网络在训练上的难度,可以通过“逐层初始化”( layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的
。
2015年,为纪念人工智能概念提出60周年,LeCun、Bengio和Hinton推出了深度学习的联合综述
。
深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示。这些方法在许多方面都带来了显著的改善,包括最先进的语音识别、视觉对象识别、对象检测和许多其它领域,例如药物发现和基因组学等。深度学习能够发现大数据中的复杂结构
。它是利用BP算法
来完成这个发现过程的。BP算法能够指导机器如何从前一层获取误差而改变本层的内部参数
,这些内部参数可以用于计算表示。深度卷积网络
在处理图像、视频、语音和音频方面带来了突破,而递归网络
在处理序列数据,比如文本和语音方面表现出了闪亮的一面。
当前统计学习领域最热门方法主要有deep learning和SVM(supportvector machine),它们是统计学习的代表方法。可以认为神经网络与支持向量机都源自于感知机
。
神经网络与支持向量机一直处于“竞争”关系。SVM应用核函数的展开定理,无需知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难
”。而早先的神经网络算法比较容易过训练,大量的经验参数需要设置;训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优。
神经网络模型
貌似能够实现更加艰难的任务,如目标识别、语音识别、自然语言处理等。
人工智能机器学习是诞生于20世纪中叶的一门年轻的学科,它对人类的生产、生活方式产生了重大的影响,也引发了激烈的哲学争论。但总的来说,机器学习的发展与其他一般事物的发展并无太大区别,同样可以用哲学的发展的眼光来看待。
机器学习的发展并不是一帆风顺的,也经历了螺旋式上升的过程,成就与坎坷并存。其中大量的研究学者的成果才有了今天人工智能的空前繁荣,是量变到质变的过程,也是内因和外因的共同结果。
机器学习的发展诠释了多学科交叉的重要性和必要性。然而这种交叉不是简单地彼此知道几个名词或概念就可以的,是需要真正的融会贯通:
统计学家弗莱德曼早期从事物理学研究,他是优化算法大师,而且他的编程能力同样令人赞叹;
乔丹教授既是一流的计算机学家,又是一流的统计学家,而他的博士专业为心理学,他能够承担起建立统计机器学习的重任;
辛顿教授是世界最著名的认知心理学家和计算机科学家。虽然他很早就成就斐然,在学术界声名鹊起,但他依然始终活跃在一线,自己写代码。他提出的许多想法简单、可行又非常有效,被称为伟大的思想家。正是由于他的睿智和身体力行,深度学习技术迎来了革命性的突破。
…
深度学习的成功不是源自脑科学或认知科学的进展,而是因为大数据的驱动和计算能力的极大提升
。可以说机器学习是由学术界、工业界、创业界(或竞赛界)等合力造就的。学术界是引擎,工业界是驱动,创业界是活力和未来。学术界和工业界应该有各自的职责和分工。学术界的职责在于建立和发展机器学习学科,培养机器学习领域的专门人才;而大项目、大工程更应该由市场来驱动,由工业界来实施和完成。
对于机器学习的发展前途,中科院数学与系统科学研究院陆汝铃老师在为南京大学周志华老师的《机器学习》一书作序时提出了六大问题,我觉得这些问题也许正是影响机器学习未来发展方向的基本问题,因此我摘录其中五个在此(有两个问题属于同一个主题,合并之):
问题一:在人工智能发展早期,机器学习的技术内涵几乎全部是符号学习
,可是从二十世纪九十年代开始,统计机器学习
有一匹黑马横空出世,迅速压倒并取代了符号学习的地位。人们可能会问,符号学习是否被彻底忽略了?他还能成为机器学习的研究对象吗?它是否能继续在统计学习的阴影里苟延残喘?
第一种观点:退出历史舞台——没有人抱有这种想法。
第二种观点:统计学习和符号学习结合起来——王珏教授认为,现在机器学习已经到了一个转折点,统计学习要想进入一个更高级的形式,就应该和知识相结合
,否则就会停留于现状而止步不前。
第三种观点:符号学习还有翻身之日——Chandrasekaran教授认为机器学习并不会回到“河西”,而是随着技术的进步逐渐转向基本的认知科学。
问题二:统计机器学习的算法都是基于样本数据独立同分布的假设
,但自然界现象千变万化,哪里有那么多独立同分布?那么“独立同分布”条件对于机器学习来说是必需的吗?独立同分布的不存在一定是不可逾越的障碍吗?
问题三:近年来出现了一些新的动向,比如深度学习。但他们真的代表机器学习新的方向吗?
问题四:机器学习研究出现以来,我们看到的主要是从符号方法到统计方法的演变,用到的数学主要是概率统计。但是今天数学之大,就像大海,难道只有统计方法适合于在机器学习方面的应用?
问题五:大数据时代的出现,有没有给机器学习带来本质性的影响?
权威定义:
Arthur samuel: 在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域。
Tom Mitchell: 对于某类任务T和性能度量P,如果计算机程序在T上以P衡量的性能随着经验E而自我完善,那么就称这个计算机程序从经验E学习。
其实随着学习的深入,慢慢会发现机器学习越来越难定义,因为涉及到的领域很广,应用也很广,现在基本成为计算机相关专业的标配,但是在实际的操作过程中,又慢慢会发现其实机器学习也是很简单的一件事,我们最的大部分事情其实就是两件事情,一个是分类,一个是回归
。
比如房价的预测、股价的预测等是回归问题,情感判别、信用卡是否发放等则是属于分类。
现实的情况 一般是给我们一堆数据,我们根据专业知识和一些经验提取最能表达数据的特征,然后我们再用算法去建模,等有未知数据过来的时候我们就能够预测到这个是属于哪个类别或者说预测到是一个什么值以便作出下一步的决策。比如说人脸识别系统,目的是作为一个验证系统
,可能是一个权限管理,如果是系统中的人则有权限否则没有权限,首先给到我们的数据是一堆人脸的照片,第一步要做的事情是对数据进行预处理,然后是提取人脸特征,最后选择算法比如说SVM或者RF等等,算法的最终选择设计到评价标准,这个后面具体讲,这样我们就建立了一个人脸识别的模型,当系统输入一张人脸,我们就能够知道他是不是在系统之中。机器学习的整个流程不过就这几步,最后不过就是参数寻优
,包括现在如火如荼的机器学习。
当我们判断是否要使机器学习时,可以看看是不是以下的场景
在监督式学习下,每组训练数据都有一个标识值或结果值,如客户流失对应1,不流失对应0。在建立预测模型的时候,监督式学习建立一个学习过程,将预测的结果与训练数据的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。
分类 Classification
K最近邻 K-Nearest Neighbor (KNN)
朴素贝叶斯 Naive Bayes
决策树 Decision Tree:C4.5、分类回归树 Classification And Regression Tree (CART)
支持向量机器 Support Vector Machine (SVM)
回归 Regression
线性回归 linear regression
局部加权回归 Locally weighted regression
逻辑回归 logistic Regression
逐步回归 stepwise regression
多元自适应回归样条法 multivariate adaptive regression splines
局部散点平滑估计 Locally estimated scatter plot smoothing ( LOESS )
岭回归 Ridge Regression
Least Absolute Shrinkage and Selection Operator ( LASSO )
弹性网络 Elastic Net
多项式回归 Polynomial Regression
排序 Rank
单文档分类 Pointwise:McRank
文档对方法(Pairwise):Ranking SVM、RankNet、Frank、RankBoost
文档列表方法(Listwise):AdaRank、SoftRank、LambdaMART
匹配学习
在半监督学习方式下,训练数据有部分被标识,部分没有被标识,这种模型首先需要学习数据的内在结构
,以便合理的组织数据来进行预测。算法上,包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如深度学习:
深度学习 Deep Learning
深度学习是 监督学习的匹配学习中人工神经网络延伸出来发展出来的。
受限波尔兹曼机 Restricted Boltzmann Machine ( RBM )
深度信念网络 Deep Belief Networks ( DBN )
卷积网络 Convolutional Network
栈式自编码 Stacked Auto-encoders
在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。
聚类 Cluster
K均值 k-means
最大期望算法 Expectation Maximization ( EM )
降维方法 Dimensionality Reduction:主成分分析Principal Component Analysis ( PCA )、偏最小二乘回归 Partial Least Squares Regression ( PLS )、Sammon映射 Sammon Mapping、多维尺度分析 Multidimensional Scaling ( MDS )、投影寻踪 Projection Pursuit、RD
关联规则 Association Rule
Apriori
Eclat
在之前的讨论中,我们总是给定一个样本x,然后给或者不给标识值或结果值(给了就是监督式学习,不给就是无监督式学习)。之后对样本进行拟合、分类、聚类或者降维等操作。然而对于很多序列决策或者控制问题,很难有这么规则的样本。比如,四足机器人的控制问题,刚开始都不知道应该让其动那条腿,在移动过程中,也不知道怎么让机器人自动找到合适的前进方向。
增强学习要解决的是这样的问题:一个能感知环境的自治agent,怎样通过学习选择能达到其目标的最优动作。这个很具有普遍性的问题应用于学习控制移动机器人,在工厂中学习最优操作工序以及学习棋类对弈等。当agent在其环境中做出每个动作时,施教者会提供奖励或惩罚信息,以表示结果状态的正确与否。例如,在训练agent进行棋类对弈时,施教者可在游戏胜利时给出正回报,而在游戏失败时给出负回报,其他时候为零回报。agent的任务就是从这个非直接的,有延迟的回报中学习,以便后续的动作产生最大的累积效应。
Q-Learning
时间差学习 Temporal difference learning
集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。
Boosting
Bootstrapped Aggregation ( Bagging )
AdaBoost
堆叠泛化 Stacked Generalization
梯度推进机 Gradient Boosting Machine ( GBM )
随机森林 Random Forest
参考:
ttp://www.studyai.com/article/ad75a319
http://www.ppvke.com/Blog/archives/22887
http://blog.csdn.net/andrewseu/article/details/53488664