一会儿机器学习,一会儿深度学习,一会儿强化学习,一会儿深度强化学习,晕头转向
All of a sudden every one is talking about them – irrespective of whether they understand the differences or not!Whether you have been actively following data science or not – you would have heard these terms.
机器学习:一切通过优化方法挖掘数据中规律的学科。
深度学习:一切运用了神经网络作为参数结构进行优化的机器学习算法。
强化学习:不仅能利用现有数据,还可以通过对环境的探索获得新数据,并利用新数据循环往复地更新迭代现有模型的机器学习算法。学习是为了更好地对环境进行探索,而探索是为了获取数据进行更好的学习。
深度强化学习:一切运用了神经网络作为参数结构进行优化的强化学习算法。
1.什么是机器学习和深度学习
1.1什么是机器学习?
Tom Mitchell广泛引用的机器学习定义就很好的解释了机器学习。这就是它所说的:“据说计算机程序可以从经验E中学习某些类型的任务T和用来测试的P,它在T中的任务中的表现(由P测试)会随着经验E的提高而提高”。
案例1 - 机器学习 - 根据高度预测权重
假设现在需要创建一个系统,该系统根据人的身高来显示预测的体重。可能有几个原因会让人对这个系统感兴趣。因为我们可以使用它来过滤掉任何可能的欺诈或者获取数据的错误。首先要做的第一件事就是收集数据。假设我们现在的数据是这样子的:
图表上的每个点代表一个数据点。首先,我们可以画一条简单的线来预测基于身高的体重。举一个简单的例子:体重(kg) = 身高(cm) - 100 这样可以帮助我们做出预测。虽然这条预测线做得不错,但我们需要了解它的表现。在这种情况下,我们可以说我们希望减少预测值和实际值之间的差异。这就是衡量绩效的方法。此外,我们收集的数据点越多(经验),我们的模型就越好。我们还可以通过添加更多变量(例如性别)并为它们创建不同的预测线来改进我们的模型。
案例2 - 风暴预测系统
让我们举一个稍微复杂一点的例子。假设现在需要构建一个风暴预测系统。通过过去发生的所有风暴的数据,以及这些风暴发生前三个月的天气状况。考虑到这些,如果我们要手动建立一个风暴预测系统,我们需要做什么
我们首先必须检查所有的数据,并找到这些数据中的模式。我们的任务是寻找导致风暴的条件。我们可以模拟这样的条件,如果温度大于40摄氏度,湿度在80到100之间等等。然后手动将这些'条件'输入到我们的系统。或者,我们可以让我们的系统在数据中了解到这些特征的适当值。现在要找到这些值,需要浏览所有之前的数据,并尝试预测是否会有风暴。根据系统设置的特征值,我们评估系统的性能,就是系统正确预测风暴发生的次数。我们可以对上述步骤进一步多次迭代,将性能作为反馈给我们的系统。
让我们采用我们的正式定义来尝试定义我们的风暴预测系统:我们的任务“T”是找出引发风暴的大气条件。性能“P”是在提供给系统的所有条件中,正确预测风暴的次数。经验'E'是我们系统的重复模拟。
1.2什么是深度学习?
深度学习的概念并不新鲜。它已经存在好几年了。但是现在随着不断的炒作,深度学习越来越受到关注。正如我们在机器学习中所做的那样,我们先研究深度学习的正式定义,然后通过例子对深度学习分解认识。“深度学习是一种特殊的机器学习,它通过学习将世界表示为嵌套的概念层次结构来实现强大的功能和灵活性,每个概念都是根据更简单的概念进行定义的,而更抽象的表示则用不那么抽象的概念计算出来。 ”
案例1 - 形状检测
让我们从一个简单的例子开始,它解释了在概念层面上事情是如何发生的。让我们试着理解如何识别其他形状的正方形。
我们眼睛做的第一件事就是检查是否有4条线与一个图形相关联的简单概念。如果我们找到4条线,我们进一步检查它们是否连接,闭合,垂直以及它们是否相等(概念的嵌套层次结构)。因此,我们采取了一项复杂的任务(确定一个正方形)并将其分解为简单的、不那么抽象的东西。深度学习在很大程度上就是这么做的
案例2 - 猫还是狗
让我们举一个动物识别器的例子,我们的系统必须识别给的图片是猫还是狗。如果我们将此作为一个典型的机器学习问题的话,我们必须定义一些特征,诸如动物是否有胡须,是否有耳朵如果有耳朵,那么耳朵是尖的还是稍微圆一点的。简单点说,我们要定义面部特征,让系统识别哪些特征在对特定动物进行分类时比较重要。
现在,深度学习就比机器学习领先一步。深度学习会自动找出对分类很重要的特征,在机器学习中我们必须手动提供这些特征。深度学习的工作原理如下:它首先确定那些特征与分辨出是猫还是狗最有相关性,然后,它以层次结构为基础,找到可以找到的特征的组合。例如,是否存在胡须,或是否存在耳朵等。在对复杂概念进行连续层次识别之后,它决定通过哪个特征负责来找到答案。
2.机器学习与深度学习的比较
2.1数据依赖
深度学习与传统机器学习之间最重要的区别会随着数据规模的增大而表现出来。当数据很小时,深度学习算法表现不佳。这是因为深度学习算法需要大量数据才能完美理解它。另一方面,传统的机器学习算法及其手工制作的规则在这种情况下占据优势。下图总结了这一事实
2.2硬件依赖性
深度学习算法在很大程度上依赖于高端机器,这与传统的机器学习算法相反,后者可以在低端机器上运行。这是因为深度学习算法的要求包括GPU,因为GPU是其工作中不可或缺的组成部分。深度学习算法本质上是做大量的矩阵乘法运算,而使用GPU可以有效的优化这些操作,而这就是使用GPU的目的。
2.3特征工程
特征工程是将领域知识放入特征提取器的创建过程,用来降低数据的复杂性并使特征对于学习算法更加可见。就时间和专业知识而言,这个过程是困难而又昂贵的。在机器学习中,大多数应用的特征需要由专家识别,然后根据领域和数据类型进行手动编码。例如,特征可以是像素值,形状,纹理,位置和方向。大多数机器学习算法的性能取决于特征识别和特征提取的准确程度。
深度学习算法尝试从数据中学习高级特征。这是深度学习一个非常独特的部分,也是超越传统机器学习的重要部分。因此,深度学习减少了为每个问题开发新的特征提取器的任务。就像,卷积神经网络将尝试先学习底层特征,例如早期图层中的边缘和线条,然后是人脸的部分面部,最后是高级的面部识别。
2.4问题解决方法
当使用传统的机器学习算法解决问题时,通常建议将问题分解为不同的部分,分别解开这些问题,然后将它们组合起来得到结果。相反,深度学习主张从头到尾的解决问题。
我们举一个例子来理解这一点。假设现在有一个多个对象检测的任务。任务是确定对象是什么以及它在图像中的位置。
在典型的机器学习方法中,可以将问题分为两个步骤:对象检测和对象识别。首先,您将使用像grabcut这样的边界框检测算法来浏览图像并查找所有可能的对象。然后,在所有已识别的对象中,您将使用对象识别算法(如带有HOG的SVM)来识别相关对象。
相反,在深度学习方法中,只需要从头到尾的完成这个过程。例如,在YOLO net(这是一种深度学习算法)中,传入这张图像,它将给出对象存在的位置以及对象的名称。
2.5执行时间
通常,深度学习算法需要很长时间来训练。这是因为深度学习算法中有很多的参数,所以训练它们需要更长的时间。最先进的深度学习算法ResNet需要大约两周时间才能完全从0开始的训练。相比之下,机器学习的训练时间要短得多,从几秒钟到几小时不等。
测试时间完全颠倒了。在测试时,深度学习算法运行的时间要少得多。然而,如果把它与k近邻(一种机器学习算法)进行比较,则测试时间会随着数据的增加而增加。虽然这不适用于所有机器学习算法,因为有些算法的测试时间也会很短。
2.6可解释性
最后一点但并非不重要的是,我们将可解释性作为比较机器学习和深度学习的一个因素。这个因素是深度学习在用于行业之前仍被反复思考的主要原因。我们来举个例子吧。假设我们使用深度学习自动为论文打评分。它在打分方面的表现的非常出色,接近人类的表现。但有一个问题。它没有透露出为什么它给出了这个分数。事实上,你可以通过数学方法找出深层神经网络的哪些节点被激活,但我们不知道这些神经元是怎么建模的,以及这些神经元做了什么。所以我们无法解释结果。另一方面,像决策树这样的机器学习算法为我们提供了清晰的规则,解释了为什么要选择这个内容,因此特别容易理解其背后的原理。因此,像决策树和线性/逻辑回归等算法主要用于行业中就是因为其结果的可解释性。
3.机器学习和深度学习现在在哪里应用?
维基文章概述了应用机器学习的所有领域。这些包括:
计算机视觉:适用于车牌识别和面部识别等应用。
信息检索:适用于搜索引擎,文本搜索和图像搜索等应用程序。
营销:用于自动化的电子邮件营销,目标识别等应用
医疗诊断:用于癌症鉴定,异常检测等应用
自然语言处理:用于情感分析,照片标记等应用
在线广告等
上面给出的图像恰当地总结了机器学习的应用领域。虽然它涵盖了更广泛的机器智能主题。
使用机器学习/深度学习的公司的一个主要例子是Google。
在上图中,您可以看到Google如何在其各种产品中应用机器学习。机器学习/深度学习的应用是无止境的,你只需要看到合适的机会!
4.未来趋势
上面的文章讲述了机器学习和深度学习以及它们之间的区别。在这部分中,我将分享一下我认为的机器学习和深度学习未来发展的观点。
首先,看到在行业中使用数据科学和机器学习的日益增长的趋势,对于每个想要活下来的公司来说,在他们的业务中使用机器学习将变得越来越重要。此外,每个人都应该了解这些基本术语。
深度学习每天都在给我们带来惊喜,在未来也还会继续。这是因为深度学习被证明是最先进的技术之一。
机器学习和深度学习的研究是不断的。但不同的是往年研究仅限于学术界,现在机器学习和深度学习的研究在工业界和学术界都在爆炸式增长。随着可用资金的增加,它更有可能成为整体人类发展的一个主题。
人工智能
1956年,计算机科学家 John McCarthy提出了“人工智能”的概念,是指在处理任务时具有人类智力特点的机器,包括具有组织和理解语言,识别物体和声音,以及学习和解决问题等能力。从人工智能的概念被提出到目前为止,人工智能的研究领域在不断扩大,包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等。通常将人工智能分为弱人工智能和强人工智能:弱人工智能让机器具备观察和感知的能力,可以做到一定程度的理解和推理;而强人工智能让机器获得自适应能力,解决一些之前没有遇到过的问题。目前的科研工作都集中在弱人工智能这部分,而实现弱人工智能的最主要途径是机器学习。
人工智能并不是一个新的术语,它已经有几十年的历史了,大约从80年代初开始,计算机科学家们开始设计可以学习和模仿人类行为的算法。在算法方面,最重要的算法是神经网络,由于过拟合而不是很成功(模型太强大,但数据不足)。尽管如此,在一些更具体的任务中,使用数据来适应功能的想法已经取得了显着的成功,并且这也构成了当今机器学习的基础。在模仿方面,人工智能专注于图像识别,语音识别和自然语言处理。人工智能专家们花费了大量的时间来创建诸如边缘检测,颜色配置文件,N-gram,语法树等。不过,这些进步还不足以达到我们的需求。
传统的机器学习:
机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。机器学习直接来源于早期的人工智能领域,传统的算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分,机器学习算法可以分为监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。传统的机器学习算法在指纹识别、基于HoG特征的物体检测等领域的应用基本达到了商业化的要求或者特定场景的商业化水平,但每前进一步都异常艰难,直到深度学习算法的出现。
机器学习(ML)技术在预测中发挥了重要的作用,ML经历了多代的发展,形成了具有丰富的模型结构,例如:1.线性回归 2.逻辑回归 3.决策树 4.支持向量机 5.贝叶斯模型 6.正则化模型 7.模型集成(ensemble) 8.神经网络。
这些预测模型中的每一个都基于特定的算法结构,参数都是可调的。训练预测模型涉及以下步骤:
1.选择一个模型结构(例如逻辑回归,随机森林等)。
2.用训练数据(输入和输出)输入模型。
3.学习算法将输出最优模型(即具有使训练错误最小化的特定参数的模型)。
每种模式都有自己的特点,在一些任务中表现不错,但在其他方面表现不佳。但总的来说,我们可以把它们分成低功耗(简单)模型和高功耗(复杂)模型。选择不同的模型是一个非常棘手的问题。
由于以下原因,使用低功率/简单模型是优于使用高功率/复杂模型:在我们拥有强大的处理能力之前,训练高功率模型将需要很长的时间;在我们拥有大量数据之前,训练高功率模型会导致过度拟合问题(因为高功率模型具有丰富的参数并且可以适应广泛的数据形状,所以我们最终可能训练一个适合于特定到当前的训练数据,而不是推广到足以对未来的数据做好预测);然而,选择一个低功率的模型会遇到所谓的“欠拟合”的问题,模型结构太简单,如果它复杂,就无法适应训练数据。(想象一下,基础数据有一个二次方关系:;你无法适应线性回归:,不管我们选择什么样的a和b。为了缓解“不适合的问题”,数据科学家通常会运用他们的“领域知识”来提出“输入特征”,这与输出关系更为直接。例如,返回二次关系,如果创建了一个特征,则可以拟合线性回归:,通过选择a = 5和b = 0)。
机器学习的主要障碍是特征工程这个步骤,这需要领域专家在进入训练过程之前就要找到非常重要的特征。特征工程步骤是要靠手动完成的,而且需要大量领域专业知识,因此它成为当今大多数机器学习任务的主要瓶颈。换句话说,如果我们没有足够的处理能力和足够的数据,那么我们必须使用低功耗/更简单的模型,这就需要我们花费大量的时间和精力来创建合适的输入特征。这是大多数数据科学家今天花时间去做的地方。
神经网络的回归:
在大数据时代,云计算和大规模并行处理基础架构的共同发展,使得机器处理能力在二十一世纪初得到了极大的提升。我们不再局限于低功耗/简单的模型。例如,当今最流行的两种主流机器学习模型是随机森林和梯度提升树。尽管如此,两者都非常强大,并且提供了非线性模型拟合的训练数据,但数据科学家仍然需要仔细地创建特征以获得良好的性能。
最初的深度学习是利用深度神经网络(DNN)来解决特征表达的一种学习过程。深度神经网络本身并不是一个全新的概念,可大致理解为包含多个隐含层的神经网络结构。目前,DNN演化出了许多不同的网络拓扑结构,包括:卷积神经网络(CNN)、递归神经网络(RNN)、长期短期记忆网络(LSTM)、生成对抗网络(GAN)等。深度学习是一种机器学习的技术,也是现在机器学习最常用的一些手段。目前,深度学习在计算机视觉,语音识别,自然语言处理(NLP)等领域取得了使用传统机器学习算法所无法取得的成就。
与此同时,计算机科学家重新使用神经网络的许多层来完成这些人类模仿的任务。这给DNN(深度神经网络)带来了新的生机,并在图像分类和语音识别任务方面提供了重大突破。DNN的主要区别在于,你可以将原始信号(例如RGB像素值)直接输入DNN,而不需要创建任何域特定的输入功能。通过多层神经元(这就是为什么它被称为“深度”神经网络),DNN可以“自动”通过每一层产生适当的特征,最后提供一个非常好的预测。这极大地消除了寻找“特征工程”的麻烦,这是数据科学家们最喜欢看到的。DNN也演变成许多不同的网络拓扑结构,所以有CNN(卷积神经网络),RNN(递归神经网络),LSTM(长期短期记忆),GAN(生成敌对网络),转移学习,注意模型(attention model)所有的这些被统称为深度学习(Deep Learning),它正在引起整个机器学习界的关注。
强化学习:
强化学习,又称再励学习或者评价学习,也是机器学习的技术之一。强化学习是智能体自主探索环境状态,采取行为作用于环境并从环境中获得回报的过程。智能体在当前状态s下,采取行为a,根据状态转移函数T,环境会转移到下一状态s',同时环境会对智能体反馈一个奖励信号,即回报r。智能体在下一状态按照上述过程依次进行,直到达到终止状态。智能体的目标是通过不断地训练,获得最大化的长期回报。综上所述,强化学习和深度学习隶属于机器学习,而机器学习是实现人工智能的技术之一。
另一个关键组成部分是关于如何模仿一个人(或动物)的学习,设想感知/行为/奖励循环的非常自然的动物行为。一个人或者一个动物首先会通过感知他或者她所处的状态来了解环境。在此基础上,他或者她会选择一个“动作”,将他或者她带到另一个“状态”。那么他或她将获得“奖励”,循环重复,直到他或她消失。这种学习方式(称为强化学习)与传统监督机器学习的曲线拟合方法有很大不同。尤其是,强化学习学习得非常快,因为每一个新的反馈(例如执行一个行动并获得奖励)都被立即发送到影响随后的决定。强化学习也提供了预测和优化的平滑整合,因为它在采取不同的行动时保持当前状态的信念和可能的转换概率,然后做出决定哪些行动可以导致最佳结果。
深度学习+强化学习= AI
与经典的ML技术相比,DL提供了一个更强大的预测模型,通常可以产生良好的预测结果。与经典优化模型相比,强化学习提供了更快的学习机制,并且更适应环境的变化。
机器学习 vs 深度学习
在深度探讨machine learning和data science的联系之前,这里简要地讨论一下machine learning 和deep learning。machine learning是一套算法,来训练数据集做预测或者采取行动以使得系统最优化。举例来说,supervised classification algorithms(监督分类算法)被用来根据历史数据将想要贷款的客户分成预期好的和预期差的(good or bad prospects)。对于给定的任务(比如监督聚类),需要的技术多种多样:naive Bayes(朴素贝叶斯)、SVM(支持向量机)、neural nets(神经网络)、ensembles(模型融合)、association rules(关联规则)、decision trees(决策树)、logistic regression(逻辑回归),或者是很多技术的组合。所有这些都是数据科学的子集。当这些算法自动化后,比如无人驾驶飞机或者无人驾驶汽车,这就叫AI了,或者说的具体一点,deep learning。如果采集的数据来自传感器并且通过互联网传播,那么这就是机器学习或数据科学或深度学习应用于物联网了。
有些人对深度学习有不同的定义,他们认为深度学习是更深层次的神经网络(一种机器学习的技术)。AI(Artificial Intelligence)是创建于20世纪60年代的计算机科学的一个子领域,是关于解决那些对人类来讲非常容易但是对计算机而言很难的任务。值得一提的是,所谓的strong AI可能可以做所有人类可以做的事情(可能除了纯粹的物理问题)。这是相当广泛的,包括各种各样的事情,比如做计划,在世界上到处溜达,识别物体和声音,说话,翻译,社交或者商业交易,还有创造性工作(比如写诗画画)等等。NLP(Natural language processing)只是AI要处理的语言部分,尤其是写。
Machine learning是这样的一种情况:给出一些可以被以离散形式描述的AI问题(比如从一系列动作中选出对的那个),然后给定一堆外部世界的信息,在不需要程序员手动写程序的情况下选出那个“正确的”行为。通常情况需要借助外界的一些过程来判断这个动作对不对。在数学上,这就是函数:你给一些输入,然后你想要他处理一下得到正确的输出,所以整个问题就简化为用一些自动的方式建立这种数学函数模型。和AI区分一下:如果我写了一段特别机智的程序有着人类的行为,那这就可以是AI,但是除非它的参量都是自动从数据中学会的,否则就不是机器学习。
Deep learning是当下非常流行的机器学习的一种。它包含一种特殊的数学模型,可以想成是一种特定类型的简单块的组合(或者说是块的功能的组合),这些块可以进行调整来更好的预测最终结果。
参考文章:https://zhuanlan.zhihu.com/p/69776750
https://blog.csdn.net/lk3030/article/details/84678496
https://cloud.tencent.com/developer/news/412812
https://blog.csdn.net/weixin_38725737/article/details/83415203