快速读懂机器学*(附送详细学*资源)
前言:
机器学*作为人工智能中的伟大分支,让我们先来聊聊人工智能把。现在人工智能已经非常普遍了,从之前的阿尔法狗到现在中国人工智能机器人解答北京高考数学卷 考了105分。以及2017.6.6的苹果WWDC大会上宣布开发机器学*API,苹果想通过借此之举,让更过苹果开发者用户开发出更过用户体验好的应用,人工智能的例子真是数不胜数,已经渗透到我们生活的各方各面,比较常见的比如金融以及医疗,而且之前看了一篇文章这样评价金融业:随着人工智能的发展与普遍,以后金融业对求职者的要求需要掌握人工智能相关知识来通过测试。好言归正传,我们来聊聊机器学*吧!
1. 什么是机器学*?
机器学*是人工智能的一个分支。人工智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学*”为重点,一条自然、清晰的脉络。显然,机器学*是实现人工智能的一个途径,即以机器学*为手段解决人工智能中的问题.简单来说就是机器通过分析大量数据来进行学*。比如说,不需要通过编程来识别猫或人脸,它们可以通过使用图片来进行训练,从而归纳和识别特定的目标。
2. 机器学*主要涉及知识以及应用范围
机器学*在*30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼*论、凸分析、计算复杂性理论等多门学科。机器学*理论主要是设计和分析一些让计算机可以自动“学*”的算法。机器学*算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学*算法中涉及了大量的统计学理论,机器学*与推断统计学联系尤为密切,也被称为统计学*理论。算法设计方面,机器学*理论关注可以实现的,行之有效的学*算法。很多推论问题属于无程序可循难度,所以部分的机器学*研究是开发容易处理的*似算法。 机器学*已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。
3.机器学* 研究意义
学*是人类具有的一种重要智能行为,但究竟什么是学*,长期以来却众说纷纭。社会学家、逻辑学家和心理学家都各有其不同的看法。比如,Langley(1996) 定义的机器学*是“机器学*是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学*中改善具体算法的性能”。(Machine learning is a science of the artificial. The field’s main objects of study are artifacts, specifically algorithms that improve their performance with experience.’)
Tom Mitchell的机器学*(1997)对信息论中的一些概念有详细的解释,其中定义机器学*时提到,“机器学*是对能通过经验自动改进的计算机算法的研究”。(Machine Learning is the study of computer algorithms that improve automatically through experience.)
Alpaydin(2004)同时提出自己对机器学*的定义,“机器学*是用数据或以往的经验,以此优化计算机程序的性能标准。”(Machine learning is programming computers to optimize a performance criterion using example data or past experience.)
尽管如此,为了便于进行讨论和估计学科的进展,有必要对机器学*给出定义,即使这种定义是不完全的和不充分的。顾名思义, 机器学*是研究如何使用机器来模拟人类学*活动的一门学科。稍为严格的提法是:机器学*是一门研究机器获取新知识和新技能,并识别现有知识的学问。这里所说的“机器”,指的就是计算机,电子计算机,中子计算机、光子计算机或神经计算机等等。
机器能否象人类一样能具有学*能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学*能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学*的能力,提出了许多令人深思的社会问题与哲学问题。
机器的能力是否能超过人的,很多持否定意见的人的一个主要论据是:机器是人造的,其性能和动作完全是由设计者规定的,因此无论如何其能力也不会超过设计者本人。这种意见对不具备学*能力的机器来说的确是对的,可是对具备学*能力的机器就值得考虑了,因为这种机器的能力在应用中不断地提高,过一段时间之后,设计者本人也不知它的能力到了何种水平。
机器学*有下面几种定义: “机器学*是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学*中改善具体算法的性能”。 “机器学*是对能通过经验自动改进的计算机算法的研究”。 “机器学*是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
机器学*已经有了十分广泛的应用,例如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人运用。
来自百度百科
4. 机器学*与传统编程对比以及所处的位置
①传统编程:软件工程师编写程序来解决问题。首先存在一些数据→为了解决一个问题,软件工程师编写一个流程来告诉机器应该怎样做→计算机遵照这一流程执行,然后得出结果
②统计学:分析师比较变量之间的关系
③机器学*:数据科学家使用训练数据集来教计算机应该怎么做,然后系统执行该任务。首先存在大数据→机器会学*使用训练数据集来进行分类,调节特定的算法来实现目标分类→该计算机可学*识别数据中的关系、趋势和模式→在解决一个问题机器有很多答案最后会选择最优的答案。(注意大数据是机器学*的前提,没有大数据何谈机器学*,有用的数据机器学*效果越好。)
④智能应用:智能应用使用人工智能所得到的结果,如图是一个精准农业的应用案例示意,该应用基于无人机所收集到的数据
5. 机器学*的工作方式
①选择数据:将你的数据分成三组:训练数据、验证数据和测试数据
②模型数据:使用训练数据来构建使用相关特征的模型
③验证模型:使用你的验证数据接入你的模型
④测试模型:使用你的测试数据检查被验证的模型的表现
⑤使用模型:使用完全训练好的模型在新数据上做预测
⑥调优模型:使用更多数据、不同的特征或调整过的参数来提升算法的性能表现
6. 机器学*发展史
机器学*是人工智能研究较为年轻的分支,它的发展过程大体上可分为4个时期。
第一阶段是在20世纪50年代中叶到60年代中叶,属于热烈时期。
第二阶段是在20世纪60年代中叶至70年代中叶,被称为机器学*的冷静时期。
第三阶段是从20世纪70年代中叶至80年代中叶,称为复兴时期。
机器学*的最新阶段始于1986年。
机器学*进入新阶段的重要表现在下列诸方面:
(1) 机器学*已成为新的边缘学科并在高校形成一门课程。它综合应用心理学、生物学和神经生理学以及数学、自动化和计算机科学形成机器学*理论基础。
(2) 结合各种学*方法,取长补短的多种形式的集成学*系统研究正在兴起。特别是连接学*符号学*的耦合可以更好地解决连续性信号处理中知识与技能的获取与求精问题而受到重视。
(3) 机器学*与人工智能各种基础问题的统一性观点正在形成。例如学*与问题求解结合进行、知识表达便于学*的观点产生了通用智能系统SOAR的组块学*。类比学*与问题求解结合的基于案例方法已成为经验学*的重要方向。
(4) 各种学*方法的应用范围不断扩大,一部分已形成商品。归纳学*的知识获取工具已在诊断分类型专家系统中广泛使用。连接学*在声图文识别中占优势。分析学*已用于设计综合型专家系统。遗传算法与强化学*在工程控制中有较好的应用前景。与符号系统耦合的神经网络连接学*将在企业的智能管理与智能机器人运动规划中发挥作用。
(5) 与机器学*有关的学术活动空前活跃。国际上除每年一次的机器学*研讨会外,还有计算机学*理论会议以及遗传算法会议。
-百度百科
如果想详细了解机器学*的分类参考:http://baike.baidu.com/view/7956.htm
7. 机器学*知识体系
内容转自: 51CTO技术栈微信公众号
1 - 数学
线性代数、微积分
在整个机器学*过程中涉及大量矩阵运算和微积分导数的概念,因此建议初学者至少要有较为扎实的数学基础,对矩阵和微积分的概念了解比较清楚。否则在一些公式推导过程中会遇到较大障碍,而不断反复回来复*数学知识。
2 - 编程语言
Python/R/Java/Matlab
Python 已经成为机器学*的第一语言,至于为什么知乎(https://www.zhihu.com/question/30105838?sort=created)中有非常不错的解释。众多机器学*的框架都支持 Python API,所以学*机器学*,Python 语言语法估计是绕不过去。
3 - Supervise learning
Linear regression
Logistic regression
Neural network
SVM
监督学*指的是人们给机器一大堆标记好的数据,比如一大堆照片,标记出哪些是猫的照片,哪些不是,然后让机器自己学*归纳出算法,可以判断出其他照片是否是猫。目前这个领域算法代表:Linear regression, Logistic regression, Neural network, SVM等等。
4 - Unsupervise learning
K-means
PCA
Anomaly detection
非监督学*指的就是人们给机器一大堆没有标记的数据,让机器可以对数据进行分类、检测异常等。
5 - Special topic
Recommend system
Large scale machine learning application
一些特殊算法,例如推荐系统。常用于购物网站,可以根据你的过往购物或评分情况,来向你推荐商品。
6 - Advice on machine learning
Bias/vairance
Regulation
Learning curve
Error analysis
Celling analysis
机器学*的建议,包含参数正则化、学*曲线、错误分析、调参等。
7 - Deep Learning
Neural Netwotk
深度学*是*期机器学*的一个热门分支,模拟人类大脑的思维方式,可以极大的提高正确率,是*来机器学*的一个非常大的突破。
8 - Tools/Framework
TensorFlow/Theano/Keras
很多大厂就开源了一些机器学*的框架,基于这些框架可以很容易搭建机器学*的平台。
推荐的学*资料:
Github上面有一份非常详尽的学*路径 (https://github.com/JustFollowUs/Machine-Learning)
我个人推荐的几个经典资料:
机器学*:
Andrew NG的Coursera的机器学*入门 (https://www.coursera.org/learn/machine-learning):这个教程非常适合初学者,没有很高深的数学推导,Andrew也是业内大牛但非常谦逊,讲解非常浅显易懂。
周志平的机器学*(https://book.douban.com/subject/26708119/):号称最好的中文机器学*入门,这里有对这本书的详细评(https://www.zhihu.com/question/39945249)。
几本经典著作:An Introduction to Statistical Learning,Pattern Recognition and Machine Learning,The Elements of Statistical Learning
深度学*:
Neural Networks and Deep Learning:Michael Nielsen 用非常浅显易懂的方式介绍了神经网络和深度学*,并且提供了一个手写数字识别的例子,非常适合入门。
UFLDL Tutorial I UFLDL Tutorial II:Andrew NG 主导的 Deep Learning 的学*资料,内容非常精炼,适合稍微有些基础的同学。
Deep Learning:几位大神共同编写的关于深度学*的 free book。
从人工智能到机器学*,再到最*大热的深度学*,人们已经在这个领域研究了数十年,现在虽然取得一定的突破,但是离真正的人工智能还有非常长的距离。而且人工智能一定要跳出学术界的研究框架,结合工业界的应用,从2016年可以看到大量的实际应用场景,例如自动驾驶、Apple Siri、Amazon Echo、谷歌翻译等等,我相信未来人工智能领域极有可能成为下一代颠覆性的技术革命。