本书全面介绍了人工智能(AI)和机器学习(ML)的理论和应用。与仅仅从理论或实践的角度来看待这个领域不同,本书将这两个角度结合在了一起,给予全面的理解。第1部分介绍了人工智能和ML的概念以及它们的起源和现状。第2和第3部分深入探讨了静态ML技术和动态ML技术的概念和理论方面。第4部分描述了所提出的技术可以应用的实际应用。第5部分向用户介绍了解决现实ML问题的一些实现策略。
有史以来伟大的物理学家之一、诺贝尔奖获得者理查德·费曼(Richard Feynman)博士曾经被他的同行要求解释当时刚刚发现的费米狄拉克(Fermi-Dirac)统计的一个性质。费曼迅速说道:
我不仅会向你们解释它,而且还将为新手准备一个关于它的讲座。
然而,很不寻常的是,几天后,他回来承认:
我做不到。我无法将解释简化为新手水平。那意味着我们真的不理解它。
甚至连费曼博士也说出了这种言论。然而,除了费米狄拉克统计本身的话题外,它还暗示着我们对一般事物理解的深刻思考。这里的新手水平基本上意味着可以直接使用数学或物理中的基本原理推导出来的东西。这种想法总是使我有意识地尝试用基本原理来解释我声称理解的所有事物,尝试从概念上解释所有事物,而不仅仅是使用复杂的方程组。
在过去的十年里,人工智能和机器学习领域发展迅猛。随着广泛的普及,该领域的核心概念时而被淡化,时而被重新诠释。随着该领域的指数级增长,该领域的范围也在不断地增长。这个领域的新手很快就会发现这个话题令人生畏和困惑。人们总是可以从网络上搜索相关主题或者只是从维基百科开始了解相关内容,但通常情况下,每一个主题都会给你带来越来越多的新概念和未知的概念,很容易让你迷失方向。而且,机器学习中的大多数概念都深深植根于数学和统计学中。没有理论数学和统计学的扎实背景,定理和引理的复杂推导会使人们对该领域感到困惑和无趣。
我在这里尝试介绍机器学习及其应用中基本的主题,以直观和概念性的方式构建人工智能解决方案。有时会使用一些数学指导,如果没有这些指导,概念就不够清晰,但我已经尽量避免复杂的推导和证明,以便让那些不具有强大数学背景的读者更容易理解书中的内容。根据费曼博士的说法,在这个过程中,我还要确保自己理解了它们。就一般的数学和统计要求而言,我认为一般的本科水平应该足够了。而且,随着开源领域中机器学习库的激增和标准化,人们不需要对该理论进行多么深入的数学理解就可以实现的机器学习模型,从而得到的智能解决方案。
当尝试解决给定应用程序中的问题时,引起混乱的主要根源之一是算法的选择。通常,这里介绍的每种算法都源自某个特定的问题,但是该算法通常不限于仅解决该问题。然而,即使对于一个具有强大数学背景的博士生来说,为给定的问题选择正确的算法也并非易事。为了区分两者,我已经把这两个方面分成了独立的部分来介绍。这将使读者更容易理解。
建议读者从部分开始,然后根据需要选择第二部分或第三部分。对于学生来说,按顺序学习本书是理想的选择,而具有专业背景的该领域的新手则更适合从第三部分开始,以便理解或专注于手头的精确应用,然后根据需要在第二部分深入研究算法的理论细节。第四部分和第五部分应随后学习。我已经在两个部分之间添加了足够的交叉引用,以使过渡平滑。
在我看来,除非人们能看到模型在真实数据上的作用,否则就无法完全理解。因此,在详细介绍算法和应用程序之后,我添加了另一部分内容,以介绍使用免费和开源选项的模型的基本实现。完成这部分内容的学习将使读者能够使用的机器学习技术解决人工智能中的现实问题!
Ameet Joshi
美国华盛顿州雷德蒙德
2019年3月
序
前言
致谢
部分 简 介
第1章 人工智能和机器学习简介2
1.1 引言2
1.2 什么是人工智能2
1.3 什么是机器学习3
1.4 本书的结构3
1.4.1 简介4
1.4.2 机器学习4
1.4.3 构建端到端管道4
1.4.4 人工智能4
1.4.5 实现5
1.4.6 结语5
第2章 人工智能和机器学习的基本概念6
2.1 引言6
2.2 大数据和非大数据6
2.2.1 什么是大数据6
2.2.2 为什么我们应该区别对待大数据6
2.3 学习类型7
2.3.1 监督学习7
2.3.2 无监督学习7
2.3.3 强化学习8
2.4 基于时间的机器学习方法8
2.4.1 静态学习8
2.4.2 动态学习8
2.5 维数8
2.6 线性和非线性10
2.7 奥卡姆剃刀原理12
2.8 没有免费的午餐定理14
2.9 收益递减规律14
2.10 机器学习的早期趋势14
2.11 小结15
第3章 数据的理解、表示和可视化16
3.1 引言16
3.2 理解数据16
3.2.1 理解实体17
3.2.2 理解属性17
3.2.3 理解数据类型18
3.3 数据的表示和可视化19
3.3.1 主成分分析19
3.3.2 线性判别分析21
3.4 小结22
第二部分 机 器 学 习
第4章 线性方法26
4.1 引言26
4.2 线性模型和广义线性模型27
4.3 线性回归27
4.3.1 定义问题27
4.3.2 解决问题27
4.4 正则化的线性回归28
4.4.1 正则化28
4.4.2 岭回归29
4.4.3 Lasso回归29
4.5 广义线性模型30
4.6 k近邻算法30
4.6.1 KNN的定义31
4.6.2 分类和回归32
4.6.3 KNN的其他变体32
4.7 小结32
第5章 感知器和神经网络34
5.1 引言34
5.2 感知器34
5.3 多层感知器或人工神经网络35
5.3.1 前馈操作35
5.3.2 非线性多层感知器或非线性人工神经网络36
5.3.3 训练多层感知器36
5.3.4 隐藏层38
5.4 径向基函数网络38
5.5 过度拟合与正则化40
5.5.1 L1和L2正则化40
5.5.2 丢弃正则化41
5.6 小结41
第6章 决策树42
6.1 引言42
6.2 为什么使用决策树43
6.3 构建决策树的算法43
6.4 回归树44
6.5 分类树45
6.6 决策指标45
6.6.1 误分类误差46
6.6.2 基尼指数46
6.6.3 交叉熵或偏差46
6.7 卡方自动交叉检验47
6.8 训练决策树47
6.9 集成决策树48
6.10 Bagging集成树48
6.11 随机森林49
6.12 Boosted集成树49
6.12.1 AdaBoost50
6.12.2 梯度提升50
6.13 小结50
第7章 支持向量机51
7.1 引言51
7.2 动机和范围51
7.2.1 扩展到多元分类51
7.2.2 非线性情况的扩展53
7.3 支持向量机理论53
7.4 可分离性和间隔54
7.4.1 正则化和软间隔SVM54
7.4.2 松弛变量的使用54
7.5 非线性与核函数的使用55
7.5.1 径向基函数55
7.5.2 多项式函数56
7.5.3 Sigmoid56
7.6 风险小化56
7.7 小结56
第8章 概率模型57
8.1 引言57
8.2 判别模型58
8.2.1 似然估计58
8.2.2 贝叶斯方法58
8.2.3 似然估计和贝叶斯方法的比较59
8.3 生成模型61
8.3.1 混合方法62
8.3.2 贝叶斯网络62
8.4 一些有用的概率分布62
8.4.1 正态分布或高斯分布63
8.4.2 伯努利分布64
8.4.3 二项分布65
8.4.4 伽马分布66
8.4.5 泊松分布67
8.5 小结70
第9章 动态规划和强化学习71
9.1 引言71
9.2 动态规划的基本方程71
9.3 动态规划下的问题类别72
9.4 强化学习73
9.4.1 强化学习的特点73
9.4.2 框架和算法73
9.5 探索和开发74
9.6 强化学习应用示例75
9.7 强化学习理论76
9.8 小结77
第10章 演化算法78
10.1 引言78
10.2 传统方法的瓶颈78
10.3 达尔文的进化论80
10.4 遗传规划80
10.5 群体智能82
10.6 蚁群优化83
10.7 模拟退火84
10.8 小结84
第11章 时间序列模型85
11.1 引言85
11.2 平稳性85
11.3 自回归和移动平均模型87
11.3.1 自回归过程87
11.3.2 移动平均过程88
11.3.3 自回归移动平均过程88
11.4 差分自回归移动平均模型88
11.5 隐马尔可夫模型89
11.6 条件随机场91
11.7 小结92
第12章 深度学习93
12.1 引言93
12.2 现代深度学习的起源94
12.3 卷积神经网络95
12.3.1 一维卷积95
12.3.2 二维卷积95
12.3.3 CNN的架构96
12.3.4 训练CNN98
12.4 循环神经网络98
12.4.1 RNN的局限性 99
12