机器学习概述
文章目录
人工智能概述
人工智能应用场景
1.网络安全(Cyber Security)
2.电子商业(E-Commerce)
3.计算机模拟(Computational Simulations)
4.交通模式(Traffic Pattern)
5.社交网络(Social Networking)
6.传感器网络(Sensor Networks)
人工智能发展历程
达特茅斯会议-人工智能的起点
1956年也就成为了人工智能元年
图灵测试
测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。
多次测试(一般为5min之内),如果有超过30%的测试者不能确定被测试者是人还是机器,那么这台机器就 通过了测试,并被认为具有人类智能。
发展历程
1980年代是正式成形期,尚不具备影响力。
1990-2010年代是蓬勃发展期,诞生了众多的理论和算法,真正走向了实用。
2012年之后是深度学习期,深度学习技术诞生并急速发展,较好的解决了现阶段AI的一些重点问题,并带来 了产业界的快速发展。
人工智能主要分支
人工智能和机器学习,深度学习的关系
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法发展而来
分支一:计算机视觉
计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和 图像的三维推理。物体检测和人脸识别是其比较成功的研究领域。
分支二:语音识别
语音识别是指识别语音(说出的语言)并将其转换成对应文本的技术。相反的任务(文本转语音/TTS)也是这一领 域内一个类似的研究主题。
分支三:文本挖掘/分类
**这里的文本挖掘主要是指文本分类,该技术可用于理解、组织和分类结构化或非结构化文本文档。**其涵盖的 主要任务有句法分析、情绪分析和垃圾信息检测。
分支四:机器翻译
**机器翻译(MT)是利用机器的力量自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)。**机器翻译 方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。
分支五:机器人
机器人学(Robotics)研究的是机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈 和信息处理。
**机器人可以分成两大类:固定机器人和移动机器人。**固定机器人通常被用于工业生产(比如用于装配线)。常见的 移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的 作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测 绘和目标识别。
人工智能发展必备三要素
- 数据
- 算法
- 计算力
逐层、分布、并行算法能力提升
GPU、FPGA、TPU能力大幅提升
Cache, local memory: CPU > GPU
Threads(线程数): GPU > CPU
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU
- 1,GPU 加速计算可以将应用程序计算密集部分的工作负载转移到 GPU,同时仍由 CPU 运行其余程序代码。从用户的角度来看,应用程序的运行速度明显加快.
- 2,CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构.
- 3,CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分.
提问:什么类型的程序适合在GPU上运行?
(1)**计算密集型的程序。**所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)**易于并行的程序。**GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
Google cloud链接(拓展):
https://cloud.google.com/tpu/?hl=zh-cn
AI芯片发展史链接(拓展):
https://buzzorange.com/techorange/2017/09/27/what-intel-google-nvidia-microsoft-do-for-ai-chips/
- cpu – IO密集型
- gpu – 计算密集型
机器学习工作流程
1.什么是机器学习
机器学习是从数据
中自动分析获得模型
,并利用模型
对未知数据进行预测。
2.工作流程
- 1.获取数据
- 2.数据基本处理
- 3.特征工程
- 4.机器学习(模型训练)
- 5.模型评估
2.1.数据集介绍
-
数据简介
在数据集中一般:
- 一行数据我们称为一个样本
- 一列数据我们成为一个特征
- 有些数据有目标值(标签值),有些数据没有目标值
-
数据类型构成:
- 数据类型一:特征值+目标值(目标值是连续的和离散的)
- 数据类型二:只有特征值,没有目标值
-
数据分割:
- 机器学习一般的数据集会划分为两个部分:
- 训练数据:用于训练,构建模型
- 测试数据:在模型检验时使用,用于评估模型是否有效
- 划分比例:
- 训练集:70% 80% 75%
- 测试集:30% 20% 25%
- 机器学习一般的数据集会划分为两个部分:
2.2.数据基本处理
即对数进行缺失值、去除异常值等处理
2.3特征工程
特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会直接影响机器学习的效果
为什么需要特征工程(Feature Engineering)
机器学习领域的大神Andrew Ng(吴恩达)老师说“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering. ”
注:业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
特征工程包含内容
- 特征提取
- 特征预处理
- 特征降维
特征提取:
将任意数据(如文本或图像)转换为可用于机器学习的数字特征
特征预处理:
通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程
特征降维:
指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
2.4机器学习
2.5 模型评估
完整机器学习项目的流程(拓展阅读)
1 抽象成数学问题
明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的。
这里的抽象成数学问题,指的明确我们可以获得什么样的数据,抽象出的问题,是一个分类还是回归或者是聚类的问题。
2 获取数据
数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。
数据要有代表性,否则必然会过拟合。
而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数量级的差距。
而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。
3 特征预处理与特征选择
良好的数据要能够提取出良好的特征才能真正发挥作用。
特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。
筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。
4 训练模型与调优
直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。
5 模型诊断
如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。
过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
误差分析 也是机器学习至关重要的步骤。通过观察误差样本全面分析产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。
6 模型融合
一般来说,模型融合后都能使得效果有一定提升。而且效果很好。
工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。
7 上线运行
这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。
这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。
机器学习算法分类
根据数据集组成不同,可以把机器学习算法分为:
- 监督学习
- 无监督学习
- 半监督学习
- 强化学习
监督学习
定义:
- 输入数据是由输入特征值和目标值所组成。
- 函数的输出可以是一个连续的值(称为回归)
- 或是输出是有限个离散值(称作分类)
回归问题
例如:预测房价,根据样本集拟合出一条连续曲线。
分类问题
例如:根据肿瘤特征判断良性还是恶性,得到的是结果是“良性”或者“恶性”,是离散的。
无监督学习
定义:
- 输入数据是由输入特征值组成。
输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。
举例:
有监督,无监督算法对比:
半监督学习
半监督学习:即训练集同时包含有标记样本数据和未标记样本数据。
举例:
- 监督学习训练方式:
强化学习
强化学习:实质是,make decisions 问题,即自动进行决策,并且可以做连续决策。
举例:
小孩想要走路,但在这之前,他需要先站起来,站起来之后还要保持平衡,接下来还要先迈出一条腿,是左腿还是右腿,迈出一步后还要迈出下一步。
小孩就是 agent,他试图通过采取行动(即行走)来操纵环境(行走的表面),并且从一个状态转变到另一个状态(即他走的每一步),当他完成任务的子任务(即走了几步)时,孩子得到奖励(给巧克力吃),并且当他不能走路时,就不会给巧克力。
主要包含四个元素:agent,环境状态,行动,奖励;
强化学习的目标就是获得最多的累计奖励。
监督学习和强化学习的对比
** 监督学习** | 强化学习 | |
---|---|---|
反馈映射 | 输入到输出的一个映射,监督式学习输出的是之间的关系,可以告诉算法什么样的输入对应着什么样的输出。 | 输入到输出的一个映射,强化学习输出的是给机器的反馈 reward function,即用来判断这个行为是好是坏。 |
反馈时间 | 做了比较坏的选择会立刻反馈给算法。 | 结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏。 |
输入特征 | 输入是独立同分布的。 | 面对的输入总是在变化,每当算法做出一个行为,它影响下一次决策的输入。 |
行为模式 | 不考虑行为间的平衡,只是开发(exploitation)。 | 一个 agent 可以在探索和开发(exploration and exploitation)之间做权衡,并且选择一个最大的回报。 |
拓展阅读:Alphago进化史 漫画告诉你Zero为什么这么牛http://sports.sina.com.cn/chess/weiqi/2017-10-21/doc-ifymyyxw4023875.shtml
机器学习算法分类总结
-
监督学习(supervised learning)(预测)
-
定义:输入数据是由输入特征值和目标值所组成。函数的输出可以是一个连续的值(称为回归),或是输出是有限个离散值(称作分类)。
-
In:有标签,Out:有反馈
目的:预测结果
案例:猫狗分类,房价预测
-
分类 k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
-
回归 线性回归、岭回归
-
-
无监督学习(unsupervised learning)
-
定义:输入数据是由输入特征值所组成。
-
In:无标签,Out:无反馈
目的:发现潜在结构
案例:“物以类聚,人以群分”
-
聚类 k-means,降维
-
-
半监督学习
-
已知:训练样本Data和待分类的类别
未知:训练样本有无标签均可
应用(案例):训练数据量过多时,
监督学习效果不能满足需求,因此用来增强效果。
-
-
强化学习
-
In:决策流程及激励系统,Out:一系列行动
目的:长期利益最大化,回报函数(只会提示你是否在朝着目标方向前进的延迟反映)
案例:学下棋
算法:马尔科夫决策,动态规划
-
模型评估
模型评估是模型开发过程不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。按照数据集的目标值不同,可以把模型评估分为分类模型评估和回归模型评估。
分类模型评估
- 准确率
- 预测正确的数占样本总数的比例。
- 精确率
- 正确预测为正占全部预测为正的比例
- 召回率
- 正确预测为正占全部正样本的比例
- F1-score
- 主要用于评估模型的稳健性
- AUC指标
- 主要用于评估样本不均衡的情况
回归模型评估
-
均方根误差(Root Mean Squared Error,RMSE)
- RMSE是一个衡量回归模型误差率的常用公式。 然而,它仅能比较误差是相同单位的模型。
-
相对平方误差(Relative Squared Error,RSE)
- 与RMSE不同,RSE可以比较误差是不同单位的模型。
-
平均绝对误差(Mean Absolute Error,MAE)
- MAE与原始数据单位相同, 它仅能比较误差是相同单位的模型。量级近似与RMSE,但是误差值相对小一些。
-
相对绝对误差(Relative Absolute Error,RAE)
- 与RSE不同,RAE可以比较误差是不同单位的模型。
-
决定系数 (Coefficient of Determination)
- 决定系数 (R2)回归模型汇总了回归模型的解释度,由平方和术语计算而得。
- R2描述了回归模型所解释的因变量方差在总方差中的比例。R2很大,即自变量和因变量之间存在线性关系,如果回归模型是“完美的”,SSE为零,则R2为1。R2小,则自变量和因变量之间存在线性关系的证据不令人信服。如果回归模型完全失败,SSE等于SST,没有方差可被回归解释,则R2为零。
拟合
模型评估用于评价训练好的的模型的表现效果,其表现效果大致可以分为两类:过拟合、欠拟合。
在训练过程中,你可能会遇到如下问题:
训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢?
当算法在某个数据集当中出现这种情况,可能就出现了拟合问题。
欠拟合
因为机器学习到的天鹅特征太少了,导致区分标准太粗糙,不能准确识别出天鹅。
过拟合
机器已经基本能区别天鹅和其他动物了。然后,很不巧已有的天鹅图片全是白天鹅的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅。
[外链图片转存中…(img-jddmmPhj-1608633614424)]
拟合
模型评估用于评价训练好的的模型的表现效果,其表现效果大致可以分为两类:过拟合、欠拟合。
在训练过程中,你可能会遇到如下问题:
训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢?
当算法在某个数据集当中出现这种情况,可能就出现了拟合问题。
欠拟合
[外链图片转存中…(img-Hk6NSBNX-1608633614425)]
因为机器学习到的天鹅特征太少了,导致区分标准太粗糙,不能准确识别出天鹅。
过拟合
[外链图片转存中…(img-qKXOTWsN-1608633614425)]
机器已经基本能区别天鹅和其他动物了。然后,很不巧已有的天鹅图片全是白天鹅的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅。
过拟合(over-fitting):所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。