本篇文章中我们将对机器学习做全面的了解与介绍,其中第一章 初识机器学习分为上下两个小章节,对机器学习是什么、机器学习由来以及机器学习的理论等展开说明。目的是能让即便完全没接触过机器学习的人也能在短时间对机器学习有一个全面了解。后续将推出机器学习的进阶内容,包括经典基础篇(线性模型、决策树、集成学习、聚类等),实战进阶篇(特征工程、模型训练与验证、融合与部署等)。本篇为第一章 初识机器学习(上),我们从这里开始,开启一个全新的学习旅程。
机器学习(Machine Learning,ML)是使用统计(或数学)技术从观察到的数据中构建模型(或系统)的一个计算机科学领域。机器学习用计算机程序模拟人的学习能力,从样本数据中学习得到知识和规律,然后用于实际的推断和决策。
从广义上来说,机器学习能够赋予“机器”学习的能力,使其实现直接编程无法完成的工作。但从实践意义上来说,机器学习是利用数据训练出模型,并使用模型进行预测的一种方法。“训练”与“预测”是机器学习的两个过程,“模型”则是过程中间的输出结果,“训练”产生“模型”,“模型”指导 “预测”。接下来我们把机器学习的过程与人类对历史经验归纳演绎的过程做个比对。
机器学习中的“训练”与“预测”过程可以对应到人类的“归纳”和“演绎”过程。通过这样的对应,我们可以发现,机器学习的思想并不复杂,仅仅是对人类在生活中学习成长的一个模拟。由于机器学习不是基于编程形成的结果,因此它的处理过程不是因果的逻辑,而是通过归纳思想得出的相关性结论。
人类对历史经验归纳过程
人类在成长、生活过程中积累了很多的历史与经验。人类定期地对这些经验进行“归纳”,获得了生活的“规律”。当人类遇到未知的问题或者需要对未来进行“推测”的时候,人类将使用这些“规律”,对未知问题与未来进行“演绎”,从而指导自己的生活和工作。
机器学习应用广泛,在各方面都有其施展的空间,包括:数据分析与挖掘、模式识别、虚拟助手和交通预测等。从行业来看,在金融领域(检测信用卡欺诈、证券市场分析等)、互联网领域(自然语言处理、语音识别、搜索引擎等)、医学领域、自动化及机器人领域(无人驾驶、信号处理等)、游戏领域、刑侦领域等也都有所涉及。
“数据挖掘”和”数据分析”通常被相提并论,但无论是数据分析还是数据挖掘,都是在帮助人们收集与分析数据,使之成为信息并做出推测与判断。因此可以将这两项合称为数据分析与挖掘。数据分析与挖掘是机器学习技术和大数据存储技术结合的产物,利用机器学习手段分析海量数据,同时利用数据存储机制实现数据的高效读写。机器学习在数据分析与挖掘领域中拥有无可取代的地位,2012年Hadoop进军机器学习领域就是一个很好的例子。
模式识别的应用领域广泛,包括计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别、生物特征识别、文件分类、搜索引擎等,而这些领域也正是机器学习大展身手的舞台,因此模式识别与机器学习的关系越来越密切。
Siri,Alexa,Google Now都是虚拟助手。在交互过程中,虚拟助手会协助查找信息,搜索相关历史行为,或向其他资源(如电话应用程序)发送命令收集更多信息,以满足人们提出的需求。
生活中我们经常使用GPS导航服务,机器学习能够帮助我们预测交通堵塞。当前高德地图,腾讯地图等都应用了机器学习技术,识别拥挤路段,规划最优路线。
二十一世纪初,学界掀起了以“深度学习”为名的热潮。所谓深度学习?狭义地说就是“很多层”的神经网络。在若干测试和竞赛上,尤其是涉及语音、图像等复杂对象的应用中,深度学习技术取得了优越性能。以往机器学习技术在应用中要取得好性能,对使用者的要求较高;而深度学习技术涉及的模型复杂度非常高,以至于只要下工夫“调参”,只要把参数调节好,性能往往就好。因此,深度学习虽缺乏严格的理论基础,但它显著降低了机器学习应用者的门槛,为机器学习技术走向工程实践带来了便利。那么它为什么此时才热起来呢?有两个原因,一是数据量增大了,二是计算能力强了。深度学习模型拥有大量参数,若数据样本少,则很容易“过拟合”。如此复杂的模型、如此大的数据样本,若缺乏强力计算设备,根本无法求解。恰恰人类进入了大数据时代,数据储量与计算设备都有了大发展,才使得深度学习技术又焕发一春。
人工智能(Artificial Intelligence,AI)是计算机科学的一个分支,它企图了解智能的本质,生产出一种能比肩人类,并做出智能反应的机器。我们都知道机器学习是人工智能最重要的一种实现方法,但机器学习并不是人工智能一开始就采用的方法。人工智能的发展主要经历了逻辑推理,专家系统,机器学习三个阶段。
深度学习(Deep Learning,DL)是机器学习的一个重要分支,深度学习和机器学习的关系属于继承和发展的关系。在很多人工智能问题上,深度学习的方法加上大数据的出现以及计算机运行速度的提高,更突出了人工智能的前景。比如,自动驾驶汽车,足以彻底改变我们的出行方式,它的实现就需要深度学习的图像识别技术,需要用到卷积神经网络(Convolutional Neural Networks, CNN)来识别马路上的行人、红绿灯等。
为了更清晰的认识深度学习,我们首先介绍神经网络(Neural Networks, NN),顾名思义,它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。神经网络有输入层、隐藏层(中间层)以及输出层,其中输入层负责神经网络的输入,输出层负责产生输入的映射。机器学习中的逻辑回归,可以看作是一层的神经网络,即除了输入层、输出层之外只有一个隐藏层。
而深度学习,就是指神经网络使用了很多隐藏层。
那么深度学习的每一层都在学什么??
当你输入一张脸部的照片时,神经网络的第一中间层,可以看成是一个特征探测器或者边缘探测器,它会去找这张照片的各个边缘(第一张图片);第二中间层又把照片里组成边缘的像素们放在一起看,然后它可以把被探测到的边缘组合成面部的不同部分(第二张图片),有眼睛、鼻子等;最后再把这些部分放在一起,比如鼻子眼睛嘴巴,就可以识别或者探测不同的人脸(第三张图片)。
数据挖掘(Data Mining,DM)是指从大量的数据中搜索隐藏于其中信息的过程。机器学习是数据挖掘的重要工具之一,但数据挖掘不仅仅要研究、拓展、应用一些机器学习方法,还要通过许多非机器学习技术解决大规模数据与数据噪音等实际问题。大体上看,数据挖掘可以视为机器学习和大数据的交叉,它主要利用机器学习提供的技术来分析海量数据,利用大数据技术来管理海量数据。
1.统计学简述
统计学(Statistics)是基于数据构建概率统计模型并运用模型对数据进行分析与预测的一门学科。统计学依托背后的数学理论,在远早于机器学习大爆发的几十年,率先从解释因果的角度,努力寻找最优函数(或模型)。统计学里最重要的两个部分是回归分析和假设检验。其他的方法或者技术在统计学这个大框架下,最终也是为了这两者服务的。回归分析提供了解释因果的武器,假设检验则给这项武器装上了弹药。单纯的线性回归用最小二乘法求解逼近事实的真相,再使用显著性检验,检测变量的显著性、模型的显著性、模型的拟合精度。当然是否属于线性,也可以使用假设检验的方法检测。非线性回归的问题,使用极大似然估计或者偏最小二乘回归求解模型,后续的显著性检验仍然是一样的思路。
2.机器学习与统计学对比
统计学是个与机器学习高度重叠的学科,统计学近似等于机器学习。但是在某种程度上两者是有分别的,这个分别在于:统计学是理论驱动,对数据分布进行假设,以强大的数学理论解释因果,注重参数推断,侧重统计模型的发展与优化;机器学习是数据驱动,依赖于大数据规模预测未来,弱化了收敛性问题,注重模型预测,侧重解决问题。
这里我们以《算法导论》中所诠释的算法作为机器学习算法的比较对象。其相同点,两者的目的都是通过制定目标,增加约束,求得最优的模型。不同点是《算法导论》里的“算法”,本质上是如何更有效率地求解具有精确解的问题。效率,可以是计算时间更短,也可以是计算过程所需要的空间更少。而机器学习算法要解决的问题一般没有精确解,也不能用穷举或遍历这种步骤明确的方法求解。这里需要强调的是“学习”这个属性,即希望算法本身能够根据给定的数据或变化的计算环境而动态地发现新的规律,甚至改变机器学习算法的逻辑和行为。
作者:京东物流 星火团队
来源:京东云开发者社区
本文对Sermant的自定义插件开发的流程进行了体验和探索,包括项目编译、运行、动态配置验证、插件拦截原理等内容,希望对初次体验Sermant高效开发插件的开发者有所帮助。
本文为从零开始写 Docker 系列第十六篇,利用 linux 下的 Veth、Bridge、iptables 等等相关技术,构建容器网络模型,为容器插上”网线“。