Hi,大家好,我是半亩花海。最近在尝试着学习人工智能的相关知识和具体技能呀。说实话,当像我这样的 小白初探人工智能体系时,总是被很多未知的名词以及茫茫内容所淹没,便去想通过网络学习帮助自己建立正确的人工智能基本概念认知。在此,我便进一步对人工智能体系从 人工智能、机器学习、深度学习、计算机视觉、自然语言处理、知识图谱等笔记中进行宏观的探索和认知,同时也帮助感兴趣的小伙伴 一起入门人工智能呀。
目录
一、人工智能概述
1.1 人工智能简介
1.1.1 人工智能的定义
人工智能(Artificial Intelligence),英文缩写为AI。它是一个以计算机科学(Computer Science)为基础,由计算机、心理学、哲学等多学科交叉融合的交叉学科、新兴学科,研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
1.1.2 人工智能的特点
- 从人工知识表达到大数据驱动的知识学习技术
- 从分类型处理的多媒体数据转向跨媒体的认知、学习、推理
- 从追求智能机器到高水平的人脑相互协同和融合
- 从聚焦个体智能到基于互联网和大数据的群体智能
- 从拟人化的机器人转向更加广阔的智能自主系统
1.1.3 人工智能的分类
- 弱人工智能(Artificial Narrow Intelligence,简称ANI):在单一领域具有一定智能的程序。现在的有关研究基本上属于这一层次,比如,AlphaGo的专属领域是围棋,谷歌翻译的专属领域是翻译自然语言。
- 强人工智能(Artificial General Intelligence,简称AGI):拥有自我意识的程序,它们具有接近于人类的智能,可以像人类一样思考、学习、交流、解决问题。但是,现在的科技水平还远远实现不了这种级别。
- 超人工智能(Artificial Super Intelligence,简称ASI):在所有领域都凌驾于人类智慧的计算机程序,它们善于思考和创新,并且比人类更加聪明。要是未来真的实现如此,那么它们在人类面前,恐怕就是神明一样的存在。
1.2 人工智能的起源与发展
1.2.1 人工智能的历史
1. 1956年达特茅斯会议
1956年,Marvin Minsky, John McCarthy 和 2位顶级科学家: Claude Shannon(克劳德·艾尔伍德·香农)以及IBM 的 Nathan Rochester,组织了达特茅斯会议,此次会议其中的一个提案断言:任何一种学习或者其他形式的人类智能都能够通过机器进行模拟。同时约翰·麦卡锡为这种机器智能取了一个名字:Artificial Intelligence。由此,AI 第一次被正名。
2. 黄金年代(1956–1974)
第一代AI 研究者曾经作出一些预测:
- 1965, H. A. Simon 曾说道:智能机器在二十年内,将能胜任人类可以做的任何事情。
- 1967, Marvin Minsky:通过一代人的努力,人工智能的相关问题将从根本上得到解决。
- 1970, Marvin Minsky (in Life Magazine):3到五年内,我们将能创造媲美人类智能的通用人工智能。
同时,也有一些比较成功的人工智能应用铺展开来:
- 搜索推理
通过回溯和动态搜索,逐步的实现一个既定目标的方法,称之为搜索推理。可以应用于游戏对战和理论证明,其依据的还是基础的理论算法实现,通过启发式和经验式(heuristic & rules of thumb) 的方法可以优化搜索空间。
- 自然语言处理
AI 研究的一个重要目标是实现计算机的类人语言交流。早期比较成功的几个项目是:
① 语义网络:Roger Schank 的conceptual dependency theroy 处理所有的英文单词为一个网络中的节点,单词间的语法作为节点间的连接;
② Joseph Weizenbaum 的ELIZA 偶尔表现,让与其对话的人感觉是一个真人。但是事实上,ELIZA 不清楚自己在说什么,它只是机械的回答事前准备好的回答,结合一些语法规则重新组织这些表达,ELIZA 也被称为第一个chatterbot(对话机器人);
- 微观世界
60 年代末期,MIT AI 实验室的 Marvin Minsky 和 Seymour Papert 提出AI 研究应该集中精力在微观世界的简单场景。他们认为类似物理世界中很多经典的原理都是基于理想的简化模型,比如完全无摩擦的飞机和完美刚体(rigid body)。
黄金年代的各项成果也得到了财政方面的各项资助:
① 1963 年,MIT 收到了一笔2.2 百万的资助,主要用于MAC 项目,其在5年前由Minsky 和MCCarthy 发起;
② DARPA 每年提供3 百万用于Newell 和Simon 在CMU 的项目以及John McCarthy 在Standford 的项目;
③ Edinburgh 大学由Donanld Michie 在1965 年创立的AI 实验室也获得了很多自助;
以上四个研究中心是那个年代主要的AI 研究战场,其获得的财政支持没有太多约束与要求,这些支持也创造了当时的Hacker 文化,让从业者可以天马行空式的进行发明创造,但是这种放手式的支持维持不了多长时间。
3. 1993~2011 年:AI 的蛰伏期
AI 到这个时期,已经发展了近半个世纪,终于实现了一些它早期既定的目标,比如智能代理(定期地收集信息或执行服务的程序,它不需要人工干预)。
1.2.2 我国的人工智能发展现状
1.3 人工智能的研究内容
- 认知建模
- 知识表示
- 知识应用
- 推理
- 机器感知
- 机器思维
- 机器学习
- 机器行为
1.4 人工智能领域的著名专家与代表性人物
- 艾伦·图灵
- 斯图尔特·罗素
- 斯蒂芬·霍金
- 贾斯汀·卡塞尔
- 约翰·麦卡锡
- 吴恩达
- 德米什·哈萨比斯
1.5 人工智能研究的主要学派
- 符号主义(symbolicism):又称为逻辑主义、心理学派或计算机学派,其原理主要为物理符号系统,即符号操作系统,假设和有限合理性原理。
- 连接主义(connectionism):又称为仿生学派或生理学派,其主要原理为神经网络及神经网络间的连接机制与学习算法。
- 行为主义(actionism):又称为进化主义或控制论学派,其原理为控制论及感知-动作型控制系统。
1.6 人工智能的应用
人工智能已经逐渐走进我们的生活,并应用于各个领域,它不仅给许多行业带来了巨大的经济效益,也为我们的生活带来了许多改变和便利。人工智能的主要应用有如下方面:
- 专家系统
- 自然语言处理
- 博弈
- 搜索
二、人工智能基础知识
2.1 人工智能的数学基础
1. 微积分
微积分又称为“初等数学分析”,它是一门纯粹的数学理论,也是现代数学的基础,在商学、科学和工程学领域有广泛的应用,主要用来解决那些仅依靠代数学和几何学不能有效解决的问题。 对于机器学习而言,微积分的主要作用如下:
(1)求解函数的极值(2)分析函数的性质
2. 线性代数
线性代数研究的是向量空间以及将一个向量空间映射到另一个向量空间的函数。 在人工智能中,线性代数是计算的根本,因为所有的数据都是以矩阵的形式存在的,任何一步操作都是在进行矩阵相乘、相加等。 线性代数在人工智能领域的主要应用如下:
(1)搜索引擎的排名(2)线性规划(3)纠错码(4)信号分析(5)面部识别(6)量子计算
3. 概率论与数理统计
概率论是研究随机现象数量规律的数学分支,是一门研究事情发生的可能性的学问。 数理统计以概率论为基础,研究大量随机现象的统计规律性。 机器学习除了处理不确定量之外,也需处理随机量,而不确定性和随机性可能来自多个方面,从而可以使用概率论来量化不确定性在人工智能算法中无论是对于数据的处理还是分析,数据的拟合还是决策等,概率与统计都可以为其提供重要的支持。
4. 最优化理论
最优化理论是关于系统的最优设计、最优控制、最优管理问题的理论与方法。 最优化就是在一定的约束条件下,使系统具有所期待的最优功能的组织过程,是从众多可能的选择中做出最优选择,使系统的目标函数在约束条件下达到最大或最小。
5. 形式逻辑
形式逻辑是研究人的认识知性阶段思维规律的学说,狭义指演绎逻辑,广义上还包括归纳逻辑。形式逻辑的思维规律也是思维形式和思维内容的统一,形式逻辑靠概念、判断、推理 (主要包括归纳推理与演绎推理)来反映事物的实质。
2.2 人工智能的常用工具
1. TensorFlow
TensorFlow 是谷歌出品的开源人工智能工具,它提供了一个使用数据流图进行数值计算的库。其具有强大的灵活性、真正的可移植性、自动微分功能,并支持Python 和 C++。
2. Mahout
Mahout 提供了一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更方便快捷地创建智能应用程序。 Mahout 包含许多实现方式,如聚类、分类、推荐过滤、频繁子项挖掘等。
3. Torch
Torch 是一个用于科学和数值的开源机器学习库,主要采用 C 作为编程语言,它基于 Lua 的库,通过提供大量的算法而深入学习研究,提高了效率和速度。 Torch 有一个强大的 n 维数组,可以方便地进行切片和索引等操作。除此之外,它提供了线性代数程序和神经网络模型。
4. Spark MLlib
Spark MLlib 是 Spark 的机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。 一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时包括底 层的优化原语和高层的管道 API。
5. Keras
Keras 是一个由 Python 编写的开源人工神经网络库,可以作为人工智能工具的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
6. CNTK
CNTK 是微软出品的开源深度学习工具包,支持在 CPU 和 GPU 上运行。
2.3 数据采集
2.3.1 数据采集的概念
数据采集是人工智能与大数据应用的基础,研究人工智能离不开大数据的支撑,而数据采集是大数据分析的前提。
数据采集作为大数据生命周期的第一个环节,是指通过传感器、摄像头、射频识别(Radio Frequency Identification,RFID)数据以及互联网等方式获取各种结构化、半结构化与非结构化 的数据。
2.3.2 数据采集的常见方法
- 日志数据采集:日志采集系统的主要工作就是收集业务日志数据,供离线和在线的分析系统使用。
- 网络数据采集:网络数据采集是指利用互联网搜索引擎技术实现有针对性、行业性、精准性的数据抓取, 并按照一定规则和筛选标准进行数据归类,形成数据库文件的一个过程。
- 数据库采集:数据库采集是将实时产生的数据以记录的形式直接写入企业的数据库,并使用特定的数据 处理系统进行进一步分析。
- 其他数据采集方法
2.4 数据存储
2.4.1 数据存储的概念
数据存储指将数量巨大,难于收集、处理、分析的数据集持久化到计算机中。
2.4.2 数据存储的方式
1. 分布式存储
分布式存储包含多个自主的处理单元,通过计算机网络互连来协作完成分配的任务,其分而治之的策略能够更好地处理大规模数据分析问题。
分布式存储主要包括分布式文件系统(Hadoop Distributed File System,HDFS)和分布式键值系统。
2. NoSQL 数据库
NoSQL 又叫作非关系型数据库,它是英文“Not Only SQL”的缩写,即“不仅仅是 SQL”。
典型的 NoSQL 包括以下几种:键值数据库、列族数据库、文档数据库和图形数据库。NoSQL 也存在一些缺点,如缺乏较为扎实的数学理论基础,在查询复杂数据时性能不强;很难实现事务强一致性和数据完整性;技术尚不成熟,缺乏专业团队的技术支持,维护较为困难等。
3. NewSQL 数据库
NewSQL 数据库是指各种新的可扩展/高性能数据库,它是一种相对较新的形式,旨在使用现有的编程语言和以前不可用的技术来结合 SQL 和 NoSQL。这类数据库不仅具有 NoSQL 对海量数据的存储管理能力,还保持了传统数据库支持 ACID 和 SQL 等的特性。
4. 云数据库
云数据库是指被优化或部署到一个虚拟计算环境中的数据库。
云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点,可以实现按需付费和按需扩展。
2.5 数据清洗
2.5.1 数据清洗的概念
采集到的众多数据中总是存在着许多脏数据,即不完整、不规范、不准确的数据,数据清洗就是指把脏数据清洗干净,从而提高数据质量,具体操作包括检查数据一致性,处理无效值和缺失值等。
在机器学习领域中,数据清洗则被定义为对特征数据和标注数据进行处理,如样本采样、样本调权、异常点去除、特征归一化处理、特征变化、特征组合等。
2.5.2 数据清洗的原理
数据清洗的原理如下:利用相关技术,如统计方法、数据挖掘方法、模式规则方法等将脏数据转换为满足数据质量要求的数据。 按照实现方式与范围分类:
- 手工清洗
- 自动清洗
2.5.3 数据清洗的应用领域
1. 数据仓库
在数据仓库领域,一般在几个数据库合并时或多个数据源进行集成时进行数据清洗。 数据清洗在数据仓库中的应用并不是简单地清洗合并记录,它还涉及数据的分解与重组。
2. 数据挖掘
在数据挖掘领域,经常会遇到挖掘出来的特征数据存在各种异常的情况,如数据缺失、数据值异常等。对于这些情况,如果不加以处理,则会直接影响到最终挖掘模型建立后的使用效果,甚至是使得最终的模型失效,导致任务失败。
3. 数据质量管理
数据质量管理覆盖了质量评估、数据去噪、数据监控、数据探查、数据清洗、数据诊断等方面。在此过程中,数据清洗为提高数据质量提供了重要的保障。
2.5.4 数据清洗的评估
数据清洗的评估实质上是对清洗后的数据质量进行评估,而数据质量的评估过程是一种通过测量和改善数据综合特征来优化数据价值的过程。 数据质量的评估和方法研究的难点在于数据质量的含义、内容、分类、分级、评价指标等。 两方面的基本评价指标:
1. 数据可信性
- 精确性:描述数据是否与其对应的客观实体的特征相一致。
- 完整性:描述数据是否存在缺失记录或缺失字段。
- 一致性:描述同一实体的同一属性的值在不同的系统中是否一致。
- 有效性:描述数据是否满足用户定义的条件或在一定的阈值范围内。
- 唯一性:描述数据是否存在重复记录。
2. 数据可用性
- 时间性:描述数据是当前数据还是历史数据。
- 稳定性:描述数据是否稳定,是否在其有效期内。
2.6 数据分析
2.6.1 大数据分析概述
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。
2.6.2 大数据分析的主要类型
1. 描述性统计分析
描述性统计分析是指运用制表、分类、图形以及计算概括性数据来描述数据特征的各项活动。
2. 探索性数据分析
对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通 过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。
3. 验证性数据分析
验证性数据分析注重对数据模型和研究假设的验证,侧重于已有假设的证实或证伪。假设检验是根据数据样本所提供的证据,肯定或否定有关总体的声明。
2.6.3 数据挖掘
1. 数据挖掘的概念
数据挖掘是指在大量的数据中挖掘出有用信息,通过分析来揭示数据之间有意义的联系、 趋势和模式。 数据挖掘首先是搜集数据,数据越丰富越好,数据量越大越好,只有获得足够大量的高质 量的数据,才能获得确定的判断,才能产生认知模型,这是从量变到质变的过程。 数据挖掘可以分为两类:
- 直接数据挖掘
直接数据挖掘的目标是利用可用的数据建立一个模型,利用这个模型对剩余的数据或对一个特定的变量进行描述。
- 间接数据挖掘
间接数据挖掘的目标中没有选出某一具体的变量,也不是用模型进行描述,而是在所有的变量中建立起某种关系。
注意点:
- 数据源必须是真实的、大量的、含有噪声的、用户感兴趣的数据。
- 挖掘知识的方法可以是数学的方法,也可以是非数学的方法;可以是演绎的方法,也可以是归纳的方法。
- 挖掘的知识具有应用的价值,可以用于信息管理、查询优化、决策支持和过程控制等,还可以用于数据自身的维护
2. 数据挖掘技术
根据挖掘任务可将数据挖掘技术分为预测模型发现、聚类分析、分类与回归、关联分析、序列模式发现、依赖关系(依赖模型发现)、异常和趋势发现、离群点检测等类型。
根据挖掘对象可将数据挖掘技术分为关系型数据库、面向对象数据库、空间数据库、时态数据库、文本数据库、多媒体数据库、异质数据库以及遗产数据库等类型。
根据挖掘方法可将数据挖掘技术分为机器学习方法、统计方法、神经网络方法和数据库方法等类型。
- 在机器学习方法中,可细分为归纳学习方法(决策树、规则归纳等)、基于范例学习、遗传算法等;
- 在统计方法中,可细分为回归分析(多元回归、自回归等)、判别分析(贝叶斯判别、 Fisher 判别和非参数判别等)、聚类分析(系统聚类、动态聚类等)、探索性分析(主元分析法、相关分析法等)等;
- 在神经网络方法中,可细分为前向神经网络(反向传播算法等)、自组织神经网络(自组织特征映射、竞争学习等)等。
2.6.4 数据可视化
三、机器学习
3.1 机器学习概述
3.1.1 机器学习简介
机器学习,通俗地讲就是让机器拥有学习的能力,从而改善系统自身的性能。
这里的“学习”指的是从数据中学习,从数据中产生模型的算法,即学习算法。有了学习算法,只要把经验数据提供给它,它就能够基于这些数据产生模型,在面对新的情况时,模型能够提供相应的判断,进行预测。
机器学习实质上是基于数据集的,它通过对数据集进行研究,找出数据集中数据之间的联系 和数据的真实含义。
3.1.2 机器学习的发展
3.1.3 机器学习的应用前景
1. 数据分析与挖掘
数据分析则通常被定义为“指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用,是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程”。
数据挖掘是“识别出巨量数据中有效的、新颖的、潜在有用的、最终可理解的模式的过程”。
2. 模式识别
模式识别研究主要集中在两个方面:
- 研究生物体(包括人)是如何感知对象的,属于认识科学的范畴;
- 在给定的任务下,如何用计算机实现模式识别的理论和方法,这些是机器学习的长项 。
模式识别的应用领域广泛,包括计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别、生物特征识别、文件分类、搜索引擎等,而这些领域也正是机器学习大展身手的舞台,因此模式识别与机器学习的关系越来越密切。
3. 更广阔的领域
研究和应用机器学习的最终目标是全面模仿人类大脑,创造出拥有人类智慧的机器大脑。
当今互联网科技的三大挑战:大数据、人工智能和人机互动。
4. 机器学习的未来
3.2 机器学习的分类
3.2.1 监督学习
监督学习(监督训练或有教师学习)是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程。
1. 监督学习概述
监督学习表示机器学习的数据是带标记的,这些标记可以包括数据类别、数据属性及特征点位置等。
具体实现过程是通过大量带有标记的数据来训练机器,机器将预测结果与期望结果进行比对;之后根据比对结果来修改模型中的参数,再一次输出预测结果;再将预测结果与期望结果进行比对,重复多次直至收敛,最终生成具有一定鲁棒性的模型来达到智能决策的能力。
常见的监督学习有分类(Classification)和回归(Regression),分类是将一些实例数据分到合适的类别中,其预测结果是离散的;回归是将数据归到一条“线”上,即为离散数据 生产拟合曲线,因此其预测结果是连续的。
2. 监督学习的应用
判断邮件是否为垃圾邮件
3.2.2 无监督学习
根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称为无监督学习。
1. 无监督学习概述
无监督学习的训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律。
常见的无监督学习有聚类(Clustering)和降维(Dimensionality Reduction)两种。
在聚类工作中,由于事先不知道数据类别,因此只能通过分析数据样本在特征空间中的分布,如基于密度或基于统计学概率模型,从而将不同数据分开,把相似数据聚为一类。
降维是将数据的维度降低,由于数据本身具有庞大的数量和各种属性特征,若对全部数据信息进行分析,则会增加数据训练的负担和存储空间。因此可以通过主成分分析等其他法,考虑主要因素,舍弃次要因素,从而平衡数据分析的准确度与数据分析的效率。在实际应用中,可以通过一系列的转换将数据的维度降低。
2. 无监督学习的应用
数据挖掘,用于在大量无标签数据中寻找信息。
3.2.3 半监督学习
半监督学习包括半监督聚类、半监督分类、半监督降维和半监督回归 4 种学习场景。
使用少量标记样本作为指导,利用大量无标记样本改善学习性能的半监督学习成为研究的热点。
常见的半监督分类代表算法包括生成式方法、半监督支持向量机(Semi-supervised Support Vector Machines,S3VMs)、基于图的半监督图方法和基于分歧的半监督方法共 4 种算法。
常见的假设模型有混合高斯模型、混合专家模型、朴素贝叶斯模型,采用极大似然方法作为参数估计的优化目标,选择最大期望(Expectation-Maximization,EM)算法进行参数的优化求解。
3.2.4 迁移学习
迁移学习是运用已存有的知识对不同但相关领域的问题进行求解的一种新的机器学习方法。
按照迁移学习方法采用的技术划分,可以把迁移学习方法分为 3 类:基于特征选择的迁移学习、基于特征映射的迁移学习和基于权重的迁移学习。
3.2.5 强化学习
强化学习(Reinforcement Learning,RL)又称再励学习、评价学习或增强学习,是机器学习的 范式和方法论之一,用于描述和解决智能体在与环境的交互过程中,通过学习策略以达成回报最大化或实现特定目标的问题。
强化学习主要包括智能体、环境状态、奖励和动作 4 个元素以及一个状态。
强化学习是带有激励机制的,即如果机器行动正确,则施予一定的“正激励”;如果机器行动错误,则会给出一定的惩罚,也可称为“负激励”。在这种情况下,机器将会考虑在一个环境中如何行动才能达到激励的最大化,具有一定的动态规划思想。
强化学习的应用:
- 机械狗
- AlphaGo Zero
3.3 机器学习常用算法
3.3.1 回归算法
回归算法是一种应用极为广泛的数量分析方法。该算法用于分析事物之间的统计关系,侧重考察变量之间的数量变化规律,并通过回归方程的形式描述和反映这种关系,以帮助人们准确把握变量受其他一个或多个变量影响的程度,进而为预测提供科学依据。
回归算法的分类:
- 线性回归(Linear Regression)
- 逻辑回归(Logistic Regression)
- 多项式回归(Polynomial Regression)
- 逐步回归(Step-wise Regression)
- 岭回归(Ridge Regression)
- 套索回归(Lasso Regression)
- 弹性回归(Elastic Net Regression)
3.3.2 聚类算法
聚类就是将相似的事物聚集在一起,将不相似的事物划分到不同类别的过程,是数据挖掘中 一种重要的方法。聚类算法的目标是将数据集合分成若干簇,使得同一簇内的数据点相似度尽可能大,而不同簇间的数据点相似度尽可能小。聚类能在未知模式识别问题中,从一堆没有标签的数据中找到其中的关联关系。
1. 聚类算法概述
聚类技术是一种无监督学习,是研究样本或指标分类问题的一种统计分析方法。聚类与分类的区别是其要划分的类是未知的。常用的聚类分析方法有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法和聚类预报法等。
聚类分析注意点:
- 可伸缩性
- 处理不同类型属性的能力
- 发现任意形状的聚类
- 输入参数的选择
- 处理“噪声”数据的能力
- 对于输入记录的顺序不敏感
- 高维度
- 基于约束的聚类
- 可解释性和可用性
2.聚类算法的分类
(1)基于划分的聚类算法
- K-Means 算法
- K-Medoids 算法
- CLARANS 算法
(2)基于层次的聚类算法
- BIRCH 算法
- CURE 算法
- Chameleon 算法
(3)基于密度的聚类算法
- DBSCAN 算法
- OPTICS 算法
- DENCLUE 算法
(4)基于网格的聚类算法
- STING 算法
- CLIQUE 算法
- Wave-Cluster 算法
(5)基于模型的聚类算法
- 统计的方法
- 神经网络的方法
(6)传递闭包法、布尔矩阵法、直接聚类法、相关性分析聚类法
3.3.3 降维算法
1. 降维算法概述
降维就是一种针对高维度特征进行的数据预处理方法,是应用非常广泛的数据预处理方法。
降维算法指对高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,在一定的信息损失范围内,降维可以节省大量的时间和成本。 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。
2. 降维算法的分类
- 主成分分析(Principal Component Analysis,PCA)法
试图在保证数据信息丢失最少的原则下,对多个变量进行最佳综合简化,即对高维变量空间进行降维处理。
- 因子分析(Factor Analysis,FA)法
因子分析法是从假设出发。
因子分析法有几个主要目的:一是进行结构的探索,在变量之间存在高度相关性的时候希望用较少的因子来概括其信息;二是把原始变量转换为因子得分后,使用因子得分进行其他分析,从而简化数据,如聚类分析、回归分析等;三是通过每个因子得分计算出综合得分,对分析对象进行综合评价。
3. 降维算法的应用场景
降维算法通常应用于数据压缩与数据可视化中。
4. 决策树算法
下图为典型的决策树示例。
5. 贝叶斯算法
贝叶斯算法是对部分未知的状态进行主观概率估计,并使用贝叶斯公式对发生概率进行修正,最后利用期望值和修正概率做出最优决策。
6. 支持向量机算法
支持向量机算法是一种支持线性分类和非线性分类的二元分类算法。经过演进,其现在也支持多元分类,被广泛地应用在回归以及分类当中。
支持向量机算法在垃圾邮件处理、图像特征提取及分类、空气质量预测等多个领域都有应用,已成为机器学习领域中不可缺少的一部分。
7. 关联规则算法
关联规则算法常用来描述数据之间的相关关系,关联规则模式属于描述型模式。
8. 遗传算法
遗传算法是一种启发式的寻优算法,该算法是以进化论为基础发展出来的。它是通过观察和模拟自然生命的迭代进化,建立起一个计算机模型,通过搜索寻优得到最优结果的算法。
四、深度学习
4.1 神经网络
4.1.1 神经网络简介
神经网络(Neural Network,NN)亦称为人工神经网络(Artificial Neural Network,ANN),是 由大量神经元(Neurons)广泛互连而成的网络,是对人脑的抽象、简化和模拟,应用了一些人脑的基本特性。
神经网络与人脑的相似之处可概括为两方面,一是通过学习过程利用神经网络从外部环境中获取知识,二是内部神经元用来存储获取的知识信息。
神经网络的信息处理是由神经元之间的相互作用实现的,知识与信息的存储主要表现为网络元件互相连接的分布式物理联系。
人工神经网络具有很强的自学习能力,它可以不依赖于“专家”的头脑,自动从已有的实验数据中总结规律。
人工神经网络擅长处理复杂的多维的非线性问题,不仅可以解决定性问题,还可以解决定量问题,同时具有大规模并行处理和分布信息存储能力,具有良好的自适应性、自组织性、容错性和可靠性。
4.1.2 神经网络发展历史
4.1.3 单个神经元
4.1.4 神经网络的结构
神经网络会将多个单一神经元连接在一起,将一个神经元的输出作为下一个神经元的输入神经网络的结构大致可以分为以下 5 类:
- 前馈式网络:该网络结构是分层排列的,每一层的神经元输出只与下一层的神经元连接。
- 输出反馈的前馈式网络:该网络结构与前馈式网络的不同之处在于,其中存在着一个从输出层到输入层的反馈回路。
- 前馈式内层互连网络:在该网络结构中,同一层的神经元之间相互关联,它们有相互制约的关系。但从层与层之间的关系来看,它仍然是前馈式的网络结构,许多自组织神经网络大多具有这种结构。
- 反馈型全互连网络:在该网络结构中,每个神经元的输出都和其他神经元相连,从而形成了动态的反馈关系,该网络结构具有关于能量函数的自寻优能力。
- 反馈型局部互连网络:在该网络结构中,每个神经元只和其周围若干层的神经元发生互连关系,形成局部反馈,从整体上看是一种网状结构。
4.1.5 神经网络的学习
神经网络的学习也称为训练,指的是通过神经网络所在环境的刺激作用调整神经网络的自由参数,使神经网络以一种新的方式对外部环境做出反应的一个过程。
神经网络最大的特点是能够从环境中学习,以及在学习中提高自身性能。经过反复学习,神经网络对其环境会越来越了解。
4.1.6 激活函数
激活函数(Activation Functions)对于人工神经网络模型以及卷积神经网络模型学习理解非常复杂和非线性的函数来说具有十分重要的作用。
4.1.7 损失函数
损失函数是模型对数据拟合程度的反映,拟合得越差,损失函数的值就越大。与此同时,当损失函数比较大时,其对应的梯度也会随之增大,这样就可以加快变量的更新速度。
4.2 感知机
4.2.1 感知机简介
感知机被称为深度学习领域最为基础的模型。虽然感知机是最为基础的模型,但是它在深度学习的领域中有着举足轻重的地位,它是神经网络和支持向量机学习的基础。
感知机学习的目标就是求得一个能够将训练数据集中正、负实例完全分开的分类超平面,为了找到分类超平面,即确定感知机模型中的参数 w 和 b,需要定义一个基于误分类的损失函数,并通过将损失函数最小化来求解 w 和 b。
4.2.2 多层感知机
多层感知机(MLP)也叫作前馈神经网络,是深度学习中最基本的网络结构。
4.3 卷积神经网络
4.3.1 卷积神经网络简介
卷积神经网络(Convolutional Neural Network,CNN),顾名思义,指在神经网络的基础上加入了卷积运算,通过卷积核局部感知图像信息提取其特征,多层卷积之后能够提取出图像的深层抽象特征,凭借这些特征来达到更准确的分类或预测的目标。卷积神经网络与一些传统的机器学习方法相比,能够更加真实地体现数据内在的相关特征,因此,目前卷积神经网络是图像、行为识别等领域的研究热点。
4.3.2 卷积神经网络的结构
卷积神经网络是多层感知机的变体,根据生物视觉神经系统中神经元的局部响应特性设计, 采用局部连接和权值共享的方式降低模型的复杂度,极大地减少了训练参数,提高了训练速度,也在一定程度上提高了模型的泛化能力。
4.3.3 常用的卷积神经网络
- VGG
- GoogLeNet
- ResNet
4.4 循环神经网络
4.4.1 循环神经网络简介
循环神经网络(Recurrent Neural Network,RNN)是深度学习领域中一类特殊的内部存在自连接的神经网络,可以学习复杂的矢量到矢量的映射。
循环神经网络是一种以序列(Sequence)数据为输入,在序列的演进方向进行递归 (Recursion),且所有节点(循环单元)按链式连接形成闭合回路的递归神经网络 (Recursive Neural Network)。
循环神经网络是为了刻画一个序列当前的输出与之前信息的关系。从网络结构上看,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出。
循环神经网络的隐藏层之间的节点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。对于每一个时刻的输入,循环神经网络会结合当前模型的状态给出一个输出,其可以看作同一神经网络被无限复制的结果。
闭合回路连接是循环神经网络的核心部分。循环神经网络对于序列中每个元素都执行相同的任务,输出依赖于之前的计算(即循环神经网络具有记忆功能),记忆可以捕获迄今为止已经计算过的信息。循环神经网络在语音识别、语言建模、自然语言处理(Natural Language Processing,NLP)等领域有着重要的应用。
4.4.2 循环神经网络的结构
4.4.3 常用的循环神经网络
- 长短期记忆网络(Long Short-Term Memory,LSTM)
- 门控循环单元神经网络(Gated Recurrent Unit,GRU)
4.5 生成对抗网络
4.5.1 生成对抗网络简介
生成对抗网络(Generative Adversarial Networks,GAN)的基本思想是学习训练样本的概率分布。
生成对抗网络独特的对抗性思想使得它在众多生成网络模型中脱颖而出,被广泛应用于计算机视觉、机器学习和语音处理等领域。
1. GAN 过程描述
GAN 让两个网络(生成网络 G 和判别网络 D)相互竞争,G 不断捕捉训练集中真实样本 xreal 的概率分布,并通过加入随机噪声将其转变成赝品 xfake。D 观察真实样本 xreal 和赝品 xfake,判断这个 xfake 到底是不是 xreal。整个对抗过程是先让 D 观察(机器学习)一些真实样本 xreal,当 D 对 xreal 有了一定的认知之后,G 尝试用 xfake 来欺骗 D,让 D 相信 xfake 是 xreal。有时候 G 能够成功骗过 D,但是随着 D 对 xreal 了解的加深(即学习的样本数据越来越多),G 发现越来越难以欺骗 D,因此 G 在不断提升自己仿制赝品 xfake 的能力。如此往复多次,不仅 D 能精通 xreal 的鉴别,G 对 xreal 的伪造技术也会大为提升。这便是 GAN 的生成对抗过程。
2. GAN 优点的简单总结
- 能学习真实样本的分布,探索样本的真实结构。
- 具有更强大的预测能力。
- 样本的脆弱性在很多机器学习模型中普遍存在,而 GAN 对生成样本的鲁棒性强。
- 通过 GAN 生成以假乱真的样本,缓解了小样本机器学习的困难。
- 为指导人工智能系统完成复杂任务提供了一种全新的思路。
- 与强化学习相比,对抗式学习更接近人类的学习机理。
- GAN 与传统神经网络的一个重要区别是,传统神经网络需要人工精心设计和建构一 个损失函数,而 GAN 可以学习损失函数。
- GAN 解决了先验概率难以确定的难题。
4.5.2 生成对抗网络的结构
1. 生成网络
生成网络本质上是一个可微分函数,生成网络接收随机变量 z 的输入,经生成器 G 生成 假样本 G(z)。
生成网络理论上可以逐渐学习任何概率分布,经训练后的生成网络可以生成逼真图像,但又不会和真实图像完全一样,即生成网络实际上是学习了训练数据的一个近似分布,这在数据增强应用方面尤为重要。
2. 判别网络
在 GAN 中,判别网络的主要目的是判断输入是否为真实样本,并提供反馈以指导生成网络训练。
判别网络和生成网络组成零和博弈的两个玩家,为取得游戏的胜利,判别网络和生成网络通过训练不断提高自己的判别能力和生成能力,游戏最终会达到一个纳什均衡状态。
3. 常用的生成对抗网络
- 条件生成对抗网络
条件生成对抗网络(Conditional GAN,CGAN)在原始 GAN 的基础上增加了约束条件, 控制了 GAN 过于自由的问题,使网络朝着既定的方向生成样本。
- 深度卷积生成对抗网络
深度卷积生成对抗网络(Deep Convolutional GAN,DCGAN)的提出对 GAN 的发展有着极大的推动作用,它将 CNN 和 GAN 结合起来,使得生成的图片质量和多样性得到了保证。
- 循环一致性生成对抗网络
循环一致性生成对抗网络(Cycle-consistent Generative Adversarial Networks,CycleGAN), CycleGAN 可以让两个域的图像互相转换且不需要成对的图像作为训练数据。
4.6 深度学习的应用
深度学习技术目前在人工智能领域占有绝对的统治地位,因为相比于传统的机器学习算法而言, 深度学习在某些领域展现出了最接近人类所期望的智能效果,同时在悄悄地走进人们的生活,如 刷脸支付、语音识别、智能翻译、自动驾驶、棋类人机大战等。
- AlphaGo Zero
- 自动驾驶