做者 | 章华燕(金桥智慧科技)
python
近年来,随着 Google 的 AlphaGo 战胜韩国围棋棋手李世乭以后,机器学习尤为是深度学习的热潮席卷了整个IT界。全部的互联网公司,尤为是 Google 微软,百度,腾讯等巨头,无不在布局人工智能技术和市场。百度,腾讯,阿里巴巴,京东,等互联网巨头甚至都在美国硅谷大肆高薪挖掘人工智能人才。如今在北京,只要是机器学习算法岗位,少则月薪 20k,甚至100k 以上…… 程序员
不错,新时代时代来了,咱们从互联网走向移动互联网,如今又从移动互联网走向人工智能时代。业内有人称这一次的人工智能爆发是互联网3.0时代的开启。因此如今搞IT开发的工程师的不懂机器学习,就至关于低级程序员。赶忙从基础学起,入门机器学习,走进人工智能的大门……
算法
20世纪50-70年代,人工智能提出后,力图模拟人类智慧,可是因为过度简单的算法、匮乏的难以应对不肯定环境的理论,以及计算能力的限制,逐渐冷却。 数据库
20世纪80年代,人工智能的关键应用——专家系统得以发展,可是数据较少,难以捕捉专家的隐性知识,建造和维护大型系统的复杂性和成本也使得人工智能渐渐不被主流计算机科学所重视。 编程
进入20世纪90年代,神经网络、遗传算法等科技“进化”出许多解决问题的最佳方案,因而21世纪前10年,复兴人工智能研究进程的各类要素,例如摩尔定律、大数据、云计算和新算法等,推进人工智能在20世界20年代进入快速增加时期。预计将来十年,会在一些难以逾越的困惑中迎来奇点时代的爆发式增加。网络
人工智能(AI)问世之初曾经狂妄自大、使人失望,它如何忽然变成当今最热门的技术领域?这个词语首次出如今1956年的一份研究计划书中。该计划书写道:“只要精心挑选一群科学家,让他们一块儿研究一个夏天,就能够取得重大进展,使机器可以解决目前只有人类才能解决的那些问题。”至少能够说,这种见解过于乐观。尽管偶有进步,但AI在人们心目中成为了言过其实的代名词,以致于研究人员基本上避免使用这个词语,宁愿用“专家系统”或者“神经网络”代替。“AI”的平反和当前的热潮可追溯到2012年的ImageNet Challenge在线竞赛。框架
ImageNet是一个在线数据库,包含数百万张图片,所有由人工标记。每一年一度的ImageNet Challenge竞赛旨在鼓励该领域的研究人员比拼和衡量他们在计算机自动识别和标记图像方面的进展。他们的系统首先使用一组被正确标记的图像进行训练,而后接受挑战,标记以前从未见过的测试图像。在随后的研讨会上,获胜者分享和讨论他们的技术。2010年,获胜的那个系统标记图像的准确率为72%(人类平均为95%)。2012年,多伦多大学教授杰夫·辛顿(Geoff Hinton)领导的一支团队凭借一项名为“深度学习”的新技术大幅提升了准确率,达到85%。后来在2015年的ImageNet Challenge竞赛中,这项技术使准确率进一步提高至96%,首次超越人类。机器学习
不错,这一切都归功于一个概念:“ 深度学习(Deep Learning) ”。虽然2016年以前,深度学习技术已经火了起来,可是真正大爆发的事件倒是2016年Google在韩国首尔举行的人工智能机器人AlphaGo与围棋九段选手李世石之间的人机五翻棋大战,最终人类最强选手输给了机器人。 编程语言
曾几时何,人们认为围棋是人类棋牌类游戏的最后的尊严阵地,就这样在人工智能轻松地攻陷了人类智力的最后一块阵地!这件事震惊了全部人。从这之后,全球学术界和工业界都躁动了,巨头们都在加紧布局人工智能:Google挖来了神经网络算法的奠定人、深度学习之父 Geoffrey Hinton;Facebook则挖到了Hinton的学生,卷积神经网络(CNN)的奠定人Yann LeCun;然而就在不到一年的时间,微软也是说动了一直保持中立留在学术界的深度学习领域三大牛的最后一位Yoshua Bengio。 函数
固然,国内的互联网巨头,百度、阿里、腾讯、京东、滴滴、美团等也都在布局AI。其中百度更是被认为在AI上已经 All In 了。
深度神经网络(DNN)
入门AI,机器学习是必需要学习的,能够这么说:机器学习是人工智能的基石和精髓。只有学好了机器学习算法原理和思想,你才算真正的入门人工智能。可是,对于非专业的半路出家的大家该如何入门?这个问题其实很难回答,由于每一个人的目标不同,技术基础和数学基础也都不同,因此因人而异。可是一般来讲,学习机器学习算法,须要的必备知识仍是能够罗列的。
3.1 机器学习必备基础
机器学习的学习过程
对于上图,之因此最左边写了『数学基础』 『经典算法学习』 『编程技术』 三个并行的部分,是由于机器学习是一个将数学、算法理论和工程实践紧密结合的领域,须要扎实的理论基础帮助引导数据分析与模型调优,同时也须要精湛的工程开发能力去高效化地训练和部署模型和服务。
在互联网领域从事机器学习的人基本上属于如下两种背景:
其中绝大部分是程序员出身,这类童鞋工程经验相对会多一些。另外一部分是学数学统计领域的,这部分童鞋理论基础相对扎实一些。所以对比上图,这二类童鞋入门机器学习,所欠缺和须要增强的部分是不同的。
曾经有无数的满怀激情,誓要在机器学习领域有一番做为的同窗,在看到公式的一刻忽然就以为本身狗带了。是的,机器学习之因此门槛高而且显得高大上的主要缘由就是数学。每个算法,要在训练集上最大程度拟合同时又保证泛化能力,须要不断分析结果和数据,调优参数,这须要咱们对数据分布和模型底层的数学原理有必定的理解。所幸的是若是只是想合理应用机器学习,而不是作相关方向高精尖的研究,所须要的数学知识读完本科的理工科童鞋仍是能很容易的把这些数学知识学明白的。
基本全部常见机器学习算法须要的数学基础,都集中在微积分、线性代数和几率与统计当中。下面咱们先过一过知识重点,文章的后部分会介绍一些帮助学习和巩固这些知识的资料。
微积分:微分的计算及其几何、物理含义,是机器学习中大多数算法的求解过程的核心。好比算法中运用到梯度降低法、牛顿法等。若是对其几何意义有充分的理解,就能理解“梯度降低是用平面来逼近局部,牛顿法是用曲面逼近局部”,可以更好地理解运用这样的方法。
凸优化和条件最优化的相关知识在算法中的应用随处可见,若是能有系统的学习将使得你对算法的认识达到一个新高度。
梯度降低法示意图
线性代数:大多数机器学习的算法要应用起来,依赖于高效的计算,这种场景下,程序员童鞋们习惯的多层for循环一般就行不通了,而大多数的循环操做可转化成矩阵之间的乘法运算,这就和线性代数有莫大的关系了。向量的内积运算更是随处可见。矩阵乘法与分解在机器学习的主成分分析(PCA)和奇异值分解(SVD) 等部分呈现刷屏状地出现。
奇异值分解过程示意图
在机器学习领域,有至关多的应用与奇异值分解都有很是紧密的联系,好比机器学习中常作feature reduction的PCA,作数据压缩(以图像压缩为表明)的算法,还有作搜索引擎语义层次检索的LSI(Latent Semantic Indexing)
几率与统计:从广义来讲,机器学习在作的不少事情,和统计层面数据分析和发掘隐藏的模式,是很是相似的。以致于传统的机器学习很大一部分被称做统计学习理论,这充分说明了统计学在机器学习领域的重要性。
极大似然思想、贝叶斯模型是理论基础,朴素贝叶斯(NaiveBayes)、语言模型(Ngram)、隐马尔科夫(HMM)、隐变量混合几率模型是他们的高级形态。常见分布如高斯分布是混合高斯模型(GMM)等的基础。
朴素贝叶斯算法的基本原理
机器学习中有不少的经典算法:感知机,KNN,朴素贝叶斯,K-Means,SVM,AdaBoost,EM,决策树,随机森林,GDBT,HMM……
算法这么多,那么对于初学者应该怎么学习呢?个人答案是:分门别类很重要。基本上,对机器学习算法的分类广泛的观点是分为三大类:有监督学习,无监督学习,强化学习。
有监督学习:有监督学习是指进行训练的数据包含两部分信息:特征向量 + 类别标签。也就是说,他们在训练的时候每个数据向量所属的类别是事先知道的。在设计学习算法的时候,学习调整参数的过程会根据类标进行调整,相似于学习的过程当中被监督了同样,而不是漫无目标地去学习,故此得名。下图中,不一样颜色的点表明不一样的类别,直线就是咱们学习出来的分界面(也叫学习器,分类器)。
典型的有监督学习
无监督学习:相对于有监督而言,无监督方法的训练数据没有类标,只有特征向量。甚至不少时候咱们都不知道总共的类别有多少个。所以,无监督学习就不叫作分类,而每每叫作 聚类。就是采用必定的算法,把特征性质相近的样本聚在一块儿成为一类。
K-Means算法就是一个无监督学习算法,在它执行前数据是每有类标的,执行过程当中才会有类标,可是此时类标不固定,只有当聚类完成后每一个样本的类标才能固定。以下图所示就是无监督算法的执行过程。
K-Means算法聚类过程
强化学习:所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,强化学习不一样于链接主义学习中的监督学习,主要表如今教师信号上,强化学习中由环境提供的强化信号是对产生动做的好坏做一种评价(一般为标量信号),而不是告诉强化学习系统RLS(reinforcement learning system)如何去产生正确的动做。因为外部环境提供的信息不多,RLS必须靠自身的经历进行学习。经过这种方式,RLS在行动-评价的环境中得到知识,改进行动方案以适应环境。
本文是一个教你入门的方法,只是带你领略了解机器学习的大体框架。不会介绍具体的算法的详细原理与过程,因此想要深刻了解能够查看相关书籍或者文献。对于具体的算法属于哪一类,而且为何这么划分,请读者认真学习相关的机器学习教程。
对于编程技术学习和选择,无非就是 编程语言 和 开发环境。我我的的建议是 Python + PyCharm。缘由很简单,python简单易学,不至于让咱们把太多的时间花在语言的学习上(PS:学习机器学习的重点在于各个机器学习算法理论的学习和掌握)。而且Jetbrains公司开发的Python集成开发环境PyCharm也是很是的简单易用。
Python与PyCharm
4. 你是否真的准备好了?
说完了机器学习的入门过程,我得给你们泼点冷水。虽说目前AI真的很火热,就在刚刚,我写累了休息看新闻的时候就有新闻推送给我:商汤科技B轮融资4.1亿美圆。这场革命是机遇,可是它真的适合你吗?我能够很确定的说,并非全部人都适合转行AI。
下面是的总结,想转行的人能够自我对照:
参考文献:
1. 李航. 统计学习方法[M]. 清华大学出版社, 2012.
2. 周志华. 机器学习 : = Machine learning[M]. 清华大学出版社, 2016.
3. 机器学习(三)常见算法优缺点- http://blog.csdn.net/u013709270/article/details/53911431
原文地址
http://blog.csdn.net/u013709270/article/details/74892124