机器学习概述
人工智能概述
人工智能、机器学习和深度学习
- 人工智能和机器学习,深度学习的关系
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法发展而来
小结
- 人工智能应用场景【了解】
- 网络安全、电子商务、计算模拟、社交网络 … ...
- 人工智能必备三要素【知道】
- 数据、算法、计算力
- 人工智能和机器学习,深度学习的关系【知道】
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法发展而来
机器学习
机器学习是近年来的一大热门话题,然而其历史要倒推到半个多世纪之前。1959年Arthur Samuel给机器学习的定义是:
机器学习是一个计算机程序,针对某个特定的任务,从经验中学习,并且越做越好。
从这个理解上,我们可以得出以下针对机器学习最重要的内容。
数据: 经验最终要转换为计算机能理解的数据,这样计算机才能从经验中学习。谁掌握的数据量大、质量高,谁就占据了机器学习和人工智能领域最有利的资本。用人类来类比,数据就像我们的教育环境,一个人要变得聪明,一个很重要的方面是能享受到优质的教育。所以,从这个意义来讲,就能理解类似Google这种互联网公司开发出来的机器学习程序性能为什么那么好了,因为他们能获取到海量的数据。
模型: 即算法,是本书要介绍的主要内容。有了数据之后,可以设计一个模型,让数据作为输入来训练这个模型。经过训练的模型,最终就成了机器学习的核心,使得模型成为了能产生决策的中枢。一个经过良好训练的模型,当输入一个新事件时,会做出适当的反应,产生优质的输出。
人工智能的起源
图灵测试
测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。
多次测试(一般为 5min 之内),如果有超过 30% 的测试者不能确定被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有 人类智能。
达特茅斯会议
1956年8月,在美国汉诺斯小镇宁静的达特茅斯学院中,
约翰·麦卡锡(John McCarthy)
马文·闵斯基(Marvin Minsky,人工智能与认知学专家)
克劳德·香农(Claude Shannon,信息论的创始人)
艾伦·纽厄尔(Allen Newell,计算机科学家)
赫伯特·西蒙(Herbert Simon,诺贝尔经济学奖得主)等科学家正聚在一起,讨论着一个完全不食人间烟火的主题:
用机器来模仿人类学习以及其他方面的智能。
会议足足开了两个月的时间,虽然大家没有达成普遍的共识,但是却为会议讨论的内容起了一个名字:
人工智能
因此,1956 年也就成为了人工智能元年。
发展历程
人工智能充满未知的探索道路曲折起伏。如何描述人工智能自1956年以来60余年的发展历程,学术界可谓仁者见仁、智者见智。我们将人工智能的发展历程划分为以下6个阶段:
第一是起步发展期:1956年—20世纪60年代初。
人工智能概念提出后,相继取得了一批令人瞩目的研究成果,如机器定理证明、跳棋程序等,掀起人工智能发展的第一个高潮。
第二是反思发展期:20世纪60年代—70年代初。
人工智能发展初期的突破性进展大大提升了人们对人工智能的期望,人们开始尝试更具挑战性的任务,并提出了一些不切实际的研发目标。然而,接二连三的失败和预期目标的落空(例如,无法用机器证明两个连续函数之和还是连续函数、机器翻译闹出笑话等),使人工智能的发展走入低谷。
第三是应用发展期:20世纪70年代初—80年代中。
20世纪70年代出现的专家系统模拟人类专家的知识和经验解决特定领域的问题,实现了人工智能从理论研究走向实际应用、从一般推理策略探讨转向运用专门知识的重大突破。专家系统在医疗、化学、地质等领域取得成功,推动人工智能走入应用发展的新高潮。
第四是低迷发展期:20世纪80年代中—90年代中。
随着人工智能的应用规模不断扩大,专家系统存在的应用领域狭窄、缺乏常识性知识、知识获取困难、推理方法单一、缺乏分布式功能、难以与现有数据库兼容等问题逐渐暴露出来。
第五是稳步发展期:20世纪90年代中—2010年。
由于网络技术特别是互联网技术的发展,加速了人工智能的创新研究,促使人工智能技术进一步走向实用化。1997年国际商业机器公司(简称IBM)深蓝超级计算机战胜了国际象棋世界冠军卡斯帕罗夫,2008年IBM提出“智慧地球”的概念。以上都是这一时期的标志性事件。
第六是蓬勃发展期:2011年至今。
随着大数据、云计算、互联网、物联网等信息技术的发展,泛在感知数据和图形处理器等计算平台推动以深度神经网络为代表的人工智能技术飞速发展,大幅跨越了科学与应用之间的“技术鸿沟”,诸如图像分类、语音识别、知识问答、人机对弈、无人驾驶等人工智能技术实现了从“不能用、不好用”到“可以用”的技术突破,迎来爆发式增长的新高潮。
人工智能主要分支
语音识别
早晨起床,用iPhone打开Siri,问:“今天天气怎么样?”。Siri会自动定位到当前你所在的城市,并且把天气信息展现出来。这个功能用起来很简单,但其背后的系统是异常复杂的。所使用的技术就是语音识别。
语音识别是指识别语音(说出的语言)并将其转换成对应文本的技术。相反的任务(文本转语音/TTS)也是这一领域内一个类似的研究主题。
当前阶段:
语音识别已经处于应用阶段很长时间了。最近几年,随着大数据和深度学习技术的发展,语音识别进展颇丰,现在已经非常接近社会影响阶段了。
语音识别领域仍然面临着 声纹识别 和 「鸡尾酒会效应」 等一些特殊情况的难题。
现代语音识别系统严重依赖于云,在离线时可能就无法取得理想的工作效果。
百度语音识别:
- 距离小于1米,中文字准率97%+
- 支持耳语、长语音、中英文混合及方言
自然语言处理
自然语言处理,这是机器学习和人工智能又一个非常重要的研究方向。Siri把语音转成文字后,软件需要理解文字的意思才能给出准确的回答。要让计算机理解文字可不是简单的事情。背后就是自然语言处理技术提供支持。
机器翻译
机器翻译(MT)是利用机器的力量自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)。
当前阶段:
机器翻译是一个见证了大量发展历程的应用领域。该领域最近由于神经机器翻译而取得了非常显著的进展,但仍然没有全面达到专业译者的水平;但是,我们相信在大数据、云计算和深度学习技术的帮助下,机器翻译很快就将进入社会影响阶段。
在某些情况下,俚语和行话等内容的翻译会比较困难(受限词表问题)。
专业领域的机器翻译(比如医疗领域)表现通常不好。
文本挖掘/分类
这里的文本挖掘主要是指文本分类,该技术可用于理解、组织和分类结构化或非结构化文本文档。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。
当前阶段:
我们将这项技术归类到应用阶段,因为现在有很多应用都已经集成了基于文本挖掘的情绪分析或垃圾信息检测技术。文本挖掘技术也在智能投顾的开发中有所应用,并且提升了用户体验。
文本挖掘和分类领域的一个瓶颈出现在歧义和有偏差的数据上。
计算机视觉
现在车站、医院等很多公共场所都是用了人脸识别系统,在这个“刷脸”的时代,已经没有“忘带工牌”这个签卡的借口了。你走到公司大门口,人脸识别系统自动把你识别出来,然后开门,并准确地通过语音播报的方式和你打招呼。
计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。 物体检测和人脸识别是其比较成功的研究领域。
当前阶段:
计算机视觉现已有很多应用,这表明了这类技术的成就,也让我们将其归入到应用阶段。随着深度学习的发展,机器甚至能在特定的案例中实现超越人类的表现。但是, 这项技术离社会影响阶段还有一定距离,那要等到机器能在所有场景中都达到人类的同等水平才行(感知其环境的所有相关方面)。
机器人
机器人学(Robotics)研究的是机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理。
机器人可以分成两大类:固定机器人和移动机器人。 固定机器人通常被用于工业生产(比如用于装配线) 。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。
当前阶段:
自上世纪「Robot」一词诞生以来,人们已经为工业制造业设计了很多机器人。工业机器人是增长最快的应用领域,它们在 20 世纪 80 年代将这一领域带入了应用阶段。在安川电机、Fanuc、ABB、库卡等公司的努力下,我们认为进入 21 世纪之后,机器人领域就已经进入了社会影响阶段,此时各种工业机器人已经主宰了装配生产线。此外,软体机器人在很多领域也有广泛的应用,比如在医疗行业协助手术或在金融行业自动执行承销过程。
但是,法律法规和「机器人威胁论」可能会妨碍机器人领域的发展。还有 设计和制造机器人需要相对较高的投资。
总的来说,人工智能领域的研究前沿正逐渐从搜索、知识和推理领域转向机器学习、深度学习、计算机视觉和机器人领域。
大多数早期技术至少已经处于应用阶段了,而且其中一些已经显现出了社会影响力。一些新开发的技术可能仍处于工程甚至研究阶段,但是我们可以看到不同阶段之间转移的速度变得越来越快。
机器学习算法分类
根据 数据集组成不同,可以把机器学习算法分为:
- 监督学习
- 无监督学习
- 半监督学习
- 强化学习
监督学习
有监督学习(Supervised learning) 通过大量已知的输入和输出相配对的数据,让计算机从中学习出规律,从而能针对一个新的输入做出合理的输出预测。
比如,我们有大量不同特征(面积、地理位置、朝向、开发商等)的房子的价格数据,通过学习这些数据,预测一个已知特征的房子价格,这种称为 回归学习(Regression learning) ,即输出结果是一个具体的数值,它的预测模型是一个连续的函数。
例如:预测房价,根据样本集拟合出一条连续曲线。
再比如我们有大量的邮件,每个邮件都已经标记是否是垃圾邮件。通过学习这些已标记的邮件数据,最后得出一个模型,这个模型对新的邮件,能准确地判断出该邮件是否是垃圾邮件,这种称为** 分类学习(Classfication learning)**,即输出结果是离散的,即要么输出1表示是垃圾邮件,要么输出0表示不是垃圾邮件。
例如:根据肿瘤特征判断良性还是恶性,得到的是结果是“良性”或者“恶性”,是离散的。
无监督学习
无监督学习(Unsupervised learning) 通过学习大量的无标记的数据,去分析出数据本身的内在特点和结构。比如,我们有大量的用户购物的历史记录信息,从数据中去分析用户的不同类别。针对这个问题,我们最终能划分几个类别?每个类别有哪些特点?我们事先是不知道的。这个称为 聚类(Clustering)。
这里需要特别注意和有监督学习里的分类的区别,分类问题是我们已经知道了有哪几种类别;而聚类问题,是我们在分析数据之前其实是不知道有哪些类别的。即分类问题是在已知答案里选择一个,而聚类问题的答案是未知的,需要利用算法从数据里挖掘出数据的特点和结构。
定义:
- 输入数据是由输入特征值组成,没有目标值
- 输入数据没有被标记,也没有确定的结果。样本数据类别未知;
- 需要根据样本间的相似性对样本集进行类别划分。
举例:
在没有老师的情况下,学生自学的过程。学生在学习的过程中,自己对知识进行归纳、总结。
网络上流传一个阴谋论:如果你是一个很好说话的人,网购时收到有瑕疵的商品的概率会比较高。为什么呢?理由是电商库存里会有一部分有小瑕疵但不影响使用的商品,为了保证这些商品顺利地卖出去并且不影响用户体验,不被用户投诉,他们会把有瑕疵的商品卖给那些很好说话的人。可问题是,哪些人是好说话的人呢?一个最简单的方法是直接把有小瑕疵的商品寄给一个用户,如果这个用户没有投诉或退货,并且还给出了好评,就说明他是个好说话的人。还可以通过机器学习来优化这一过程。电商网站有你的大量交易记录和行为记录,如果你从来没有投诉过,买之前也不会和卖家沟通太久,买之后也没有上网评价,或者全部给好评,那么机器学习算法从你的行为特征中会判定你为“好对付”的人。这样你就成了电商们的瑕疵商品的倾销对象了。在这个案例中,电商通过用户的行为和交易数据,分析出不同的用户特点,如哪些人是“老实”人、哪些人是有车一族、哪些人是“土豪”、哪些人家里有小孩等。这就属于无监督学习的聚类问题。
这两种机器学习类别的最大区别是,有监督学习的训练数据里有已知的结果来“监督”;而无监督学习的训练数据里没有结果“监督”,不知道到底能分析出什么样的结果。
有监督,无监督算法对比:
半监督学习
- 定义:
- 训练集同时包含有标记样本数据和未标记样本数据。
举例:
监督学习训练方式:
半监督学习训练方式
强化学习
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习
举例:
小孩想要走路,但在这之前,他需要先站起来,站起来之后还要保持平衡,接下来还要先迈出一条腿,是左腿还是右腿,迈出一步后还要迈出下一步。
小孩就是 agent,他试图通过采取行动(即行走)来操纵环境(行走的表面),并且从一个状态转变到另一个状态 (即他走的每一步),当他完成任务的子任务(即走了几步)时,孩子得到奖励(给巧克力吃),并且当他不能走路时,就不会给巧克力。
主要包含五个元素:agent, action, reward, environment, observation;
强化学习的目标就是获得最多的累计奖励。
监督学习和强化学习的对比
监督学习 | 强化学习 | |
---|---|---|
反馈映射 | 输出的是之间的关系,可以告诉算法什么样的输入对应着什么样的输出。 | 输出的是给机器的反馈 reward function,即用来判断这个行为是好是坏。 |
反馈时间 | 做了比较坏的选择会立刻反馈给算法。 | 结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏。 |
输入特征 | 输入是独立同分布的。 | 面对的输入总是在变化,每当算法做出一个行为,它影响下一次决策的输入。 |
拓展阅读:Alphago进化史 漫画告诉你Zero为什么这么牛:
http://sports.sina.com.cn/chess/weiqi/2017-10-21/doc-ifymyyxw4023875.shtml
小结
In | Out | 目的 | 案例 | |
---|---|---|---|---|
监督学习 (supervised learning) | 有标签 | 有反馈 | 预测结果 | 猫狗分类 房价预测 |
无监督学习 (unsupervised learning) | 无标签 | 无反馈 | 发现潜在结构 | “物以类聚,人以群分” |
半监督学习 (Semi-Supervised Learning) | 部分有标签,部分无标签 | 有反馈 | 降低数据标记的难度 | |
强化学习 (reinforcement learning) | 决策流程及激励系统 | 一系列行动 | 长期利益最大化 | 学下棋 |
机器学习工作流程
什么是机器学习
机器学习是从数据中 自动分析获得模型,并利用 模型 对未知数据进行预测。
机器学习工作流程
机器学习工作流程总结
- 1.数据采集和标记
- 2.数据清洗
- 3.特征工程
- 4.机器学习(模型训练)
- 5.模型性能评估和优化
- 结果达到要求,上线服务
- 没有达到要求,重新上面步骤
- 6.模型使用
1. 数据采集和标记
我们需要大量不同特征的房子和所对应的价格信息,可以直接从房产评估中心获取房子的相关信息,如房子的面积、地理位置、朝向、价格等。另外还有一些信息房产评估中心不一定有,比如房子所在地的学校情况,这一特征往往会影响房子的价格,这个时候就需要通过其他途径收集这些数据,这些数据叫做 [训练样本] ,或 [数据集]。房子的面积、地理位置等称为 [特征]。在数据采集阶段,需要收集尽量多的特征。特征越全,数据越多,训练出来的模型才会越准确。
通过这个过程也可以感受到数据采集的成本可能是很高的。人们常说石油是黑色的“黄金”,在人工智能时代,数据成了透明的“石油”,这也说明为什么蚂蚁金服估值这么高了。蚂蚁金服有海量的用户交易数据,据此他们可以计算出用户的信用指标,称为芝麻信用,根据芝麻信用给你一定的预支额,这就是一家新的信用卡公司了。而这还只是单单一个点的价值,真正的价值在于互联网金融。
在房价评估系统这个例子里,我们的房子价格信息是从房产评估中心获得的,这一数据可能不准确。有时为了避税,房子的评估价格会比房子的真实交易价格低很多。这时,就需要采集房子的实际成交价格,这一过程称为[数据标记] 。标记可以是 [人工标记] ,比如逐个从房产中介那打听房子的实际成交价格;也可以是自动标记,比如通过分析数据,找出房产评估中心给的房子评估价格和真实成交价格的匹配关系,然后直接算出来。数据标记对有监督的学习方法是必须的。比如,针对垃圾邮件过滤系统,我们的训练样例必须包含这个邮件是否为垃圾邮件的标记数据。
2. 数据清洗
假设我们采集到的数据里,关于房子面积,有按平方米计算的,也有按平方英尺计算的,这时需要对面积单位进行统一。这个过程称为 数据清洗。数据清洗还包括去掉重复的数据及噪声数据,让数据具备结构化特征,以方便作为机器学习算法的输入。
3. 特征选择
假设我们采集到了100个房子的特征,通过逐个分析这些特征,最终选择了30个特征作为输入。这个过程称为[特征选择] 。特征选择的方法之一是人工选择方法,即对逐个特征进行人员分析,然后选择合适的特征集合。另外一个方法是通过模型来自动完成,如后面将介绍的PCA算法。
4. 模型选择
房价评估系统是属于有监督学习的回归学习类型,我们可以选择最简单的线性方程来模拟。选择哪个模型,和问题领域、数据量大小、训练时长、模型的准确度等多方面有关。
5. 模型训练和测试
把数据集分成 训练数据集 和 测试数据集 ,一般按照 8:2 或 7:3 来划分,然后用训练数据集来训练模型。训练出参数后再使用测试数据集来测试模型的准确度。为什么要单独分出一个测试数据集来做测试呢?答案是必须确保测试的准确性,即模型的准确性是要用它“没见过”的数据来测试,而不能用那些用来训练这个模型的数据来测试。理论上更合理的数据集划分方案是分成3个,此外还要再加一个 交叉验证 数据集。
6. 模型性能评估和优化
模型出来后,我们需要对机器学习的算法模型进行性能评估。性能评估包括很多方面,具体如下。
训练时长 是指需要花多长时间来训练这个模型。对一些海量数据的机器学习应用,可能需要1个月甚至更长的时间来训练一个模型,这个时候算法的训练性能就变得很重要了。
另外,还需要判断数据集是否足够多,一般而言,对于复杂特征的系统,训练数据集越大越好。然后还需要判断模型的准确性,即对一个新的数据能否准确地进行预测。最后需要判断模型是否能满足应用场景的性能要求,如果不能满足要求,就需要优化,然后继续对模型进行训练和评估,或者更换为其他模型。
7. 模型使用
训练出来的模型可以把参数保存起来,下次使用时直接加载即可。一般来讲,模型训练需要的计算量是很大的,也需要较长的时间来训练,这是因为一个好的模型参数,需要对大型数据集进行训练后才能得到。而真正使用模型时,其计算量是比较少的,一般是直接把新样本作为输入,然后调用模型即可得出预测结果。
本书的重点放在机器学习的算法介绍以及scikit-learn工具包的使用上。对数据采集、数据清洗、特征选择等内容没有深入介绍,但并不代表这些内容不重要。在实际工程应用领域,由于机器学习算法模型只有固定的几种,而数据采集、标记、清洗、特征选择等往往和具体的应用场景相关,机器学习工程应用领域的工程师打交道更多的反而是这些内容。