作为Grokking Deep Learning 《深度学习图解》的译者,当清华大学出版社编辑诚邀我来翻译这本有关人工智能的图书时,对于要不要接手,我其实犹豫了良久一虽然深度学习如此火爆,但这本注重于传统人工智能算法的图书是否也能得到读者的青睐?它能给读者带来足够的价值吗?
       由此,本序尝试给出传统智能算法与深度学习的关系,比较两者所擅长解决的问题,并介绍本书的基础内容及其面向的读者群体,希望能帮助你发现最适合自己(任务)的智能实践。

人工智能、深度学习与机器学习的关系

自2012年AlexNet在世界级图像识别大赛(ImageNet)-骑绝尘以来, 深度学习几乎成了人工智能的代名词。不过若从更高处看,深度学习只是人工智能浪潮中的一朵小浪花,是机器学习的一个真子集。图1给出了人工智能、深度学习与机器学习的关系,斜线部分为本书重点(为简化描述,本序中以“传统算法”代指这部分属于机器学习但并非深度学习的算法)。当然,人工智能领域的基础概念与深度学习相关方法在本书中也有提及。
       广义来说,机器帮助人类所完成的一一切,都属于人工智能。也许你还记得20世纪初那些自动化系统中动辄上万条的规则,那是人工智能的萌芽时期:专家系统。能从数据中自动抽取出这些规则的方法,被称为机器学习。从逻辑回归到决策树,一路走到今天的特征工程与模式识别一用 多层神经网络(也就是深度学习)所完成的那些工作,仍然逃不脱“找到数据中的规律”这一框架。

虽然大多数深度学习教程都主要关注其结构(无论是网络结构还是算子结构),但实际上,深度学习表现优异的关键离不开优化方法。深度模型的调参真的是“炼金术”吗?网络是如何收敛到最佳表现的?对传统算法的掌握有助于你理解深度学习的工作原理,为算法调优(针对深度模型选择更好的参数/超参数)夯实基础。

在一定程度上,深度图神经网络、生成式对抗模型等也都属于融合了深度学习与传统算法的创新实践。

传统算法所适用的问题

人工智能三要素:数据、算法和算力。

首先是数据。深度学习的发展与21世纪的大数据崛起密不可分。以ImageNet 为首的数千万张有标记的图片将深度学习推上王座:动辄几十上百层的模型提供了大量的权重参数,高复杂度与大数据量共同带来了远超传统机器学习算法的精度。然而,对于较小的数据集(譬如本书中的案例),深度模型的高复杂度却可能会成为负担。此时,传统算法反而能获得更好的效果。
       其次是算法。在实践中,我们常常会碰到这样的情况:相比于获得精准的结果,专业人员更关心这个结果是怎么来的。譬如,市场部门想要知道在给定的内外部环境下,某个营销策略会对实际销量带来怎样的影响(受市场条件限制,有效数据量往往相当有限)。此时,能明确展示拟合系数和响应之间关系的线性模型就会成为我们的首选。包括医疗、勘探、金融在内的大量垂直领域都要求算法具备高可解释性,以结合人类专家意见作出决策。在这一方面,相比于“黑盒”深度模型,传统算法显然更胜一筹。
       最后是算力。大模型加.上大数据当然离不开大算力。一- 张高端深度学习训练卡价格高达数万元,在谷歌最新发表的自动架构搜索(AutoML)论文中,一场实验需要让800张卡跑上几个星期:不谈买机器的钱,单电费就足以烧掉一辆宝马的价钱。即使这确然能够带来几个百分点的精度提升,但如此大的消耗对于只想解决日常工作中的小问题的你我来说实在昂贵。为什么不先尝试一下传统算法呢?用自己的笔记本电脑就能得到一个初步可用的基线结果。在此基础上,再结合深度学习或其他复杂模型来进一步 提升精度。
       对于需要实时响应的低成本任务来说,传统算法不失为-一种好的选择。对于具备大量数据的复杂任务而言,不妨借助深度模型来获得更高的精度。知己知彼,因地制宜,取二者所长,才能得到最适合你的解决方案。

关于本书

读到这里,相信你已经初步了解了为什么需要掌握机器学习。

本书面向的读者群体为非数学/计算机相关专业的程序员们,以及正在做毕业设计,迫切需要智能方法协助的普通学生们。不需要科班出身,无需线性代数或统计学基础知识,只需要掌握任何一门编程语言(不管是C、Java、 Python, 还是PHP),你就能通过本书在两周之内亲自将人工智能算法嵌入手头项目。

本书重点涵盖的算法簇包括搜索算法、进化算法与群体智能算法。每簇算法由浅入深分上下两章,上章 基础篇围绕各种实际案例阐述算法设计理念,下章高级篇则带读者思考如何打造更理想的解决方案。同时,本书以典型机器学习工作流为例,讲解线性回归、决策树、神经网络与强化学习等常见算法类别。读完本书,你将能掌握清洗数据、训练模型、测试模型、调优算法等整个学习流程中的关键技巧一-正所谓万变不离其宗, 这将为你以后进一步探索智能世界打下坚实基础。

承接“图解”系列的一贯作风,本书中不会出现任何复杂的公式,取而代之的是各种实战图例。只需要具备高中数学水平和基础编程知识,你就可顺利解决书中提及的从智能对弃到停车场寻路的各种案例。更棒的是,算法核心代码往往相对独立地运作,不会像真正意义上的工程代码那样复杂,百十行就能轻松解决集装箱自动化配货之类的问题(书中所有样例代码均在Github.上免费开源)。触手可得的智能解决方案,为什么不试试看呢?
                                                                                       王晓雷
                                                                                      2021.6.1

目 录


第1章  人工智能初印象   1
1.1  什么是人工智能?   1
1.1.1  定义AI   2
1.1.2  理解数据是智能算法的核心   3
1.1.3  把算法看作“菜谱”   4
1.2  人工智能简史   6
1.3  问题类型与问题解决范式   7
1.4  人工智能概念的直观印象   9
1.5  人工智能算法的用途   13
1.5.1  农业:植物种植优化   13
1.5.2  银行业:欺诈检测   14
1.5.3  网络安全:攻击检测与处理   14
1.5.4  医疗:智能诊断   14
1.5.5  物流:路径规划与优化   15
1.5.6  通信:网络优化   16
1.5.7  游戏:主体创造   16
1.5.8  艺术:创造杰出作品   17
1.6  本章小结   17
第2章  搜索算法基础   21
2.1  什么是规划与搜索?   21
2.2  计算成本:需要智能算法的原因   23
2.3  适合用搜索算法的问题   24
2.4  表示状态:创建一个表示问题空间与解的框架   26
2.4.1  图:表示搜索问题与解   28
2.4.2  用具体的数据结构表示图   28
2.4.3  树:表示搜索结果的具体结构   29
2.5  无知搜索:盲目地找寻解   31
2.6  广度优先搜索:先看广度,再看深度   33
2.7  深度优先搜索:先看深度,再看广度   39
2.8  盲目搜索算法的用例   45
2.9  可选:关于图的类别   46
2.10  可选:其他表示图的方法   47
2.10.1  关联矩阵   47
2.10.2  邻接表   48
2.11  本章小结   48
第3章  智能搜索   51
3.1  定义启发式方法:设计有根据的猜测   51
3.2  知情搜索:在指导下寻求解决方案   54
3.2.1  A*搜索   54
3.2.2  知情搜索算法的用例   61
3.3  对抗性搜索:在不断变化的环境中寻找解决方案   62
3.3.1  一个简单的对抗性问题   62
3.3.2  最小-最大搜索:模拟行动并选择最好的未来   63
3.3.3  启发式   64
3.3.4  阿尔法-贝塔剪枝:仅探索合理的路径   72
3.3.5  对抗搜索算法的典型案例   75
3.4  本章小结   75
第4章  进化算法   77
4.1  什么是进化?   77
4.2  适合用进化算法的问题   80
4.3  遗传算法的生命周期   84
4.4  对解空间进行编码   86
4.5  创建解决方案种群   89
4.6  衡量种群中个体的适应度   91
4.7  根据适应度得分筛选亲本   93
4.8  由亲本繁殖个体   96
4.8.1  单点交叉:从每个亲本继承一部分   97
4.8.2  两点交叉:从每个亲本继承多个部分   98
4.8.3  均匀交叉:从每个亲本继承多个部分   98
4.8.4  二进制编码的位串突变   100
4.8.5  二进制编码的翻转位突变   101
4.9  繁衍下一代   101
4.9.1  探索与挖掘   102
4.9.2  停止条件   102
4.10  遗传算法的参数配置   104
4.11  进化算法的用例   105
4.12  本章小结   105
第5章  进化算法(高级篇)   107
5.1  进化算法的生命周期   107
5.2  其他筛选策略   109
5.2.1  排序筛选法:均分赛场   109
5.2.2  联赛筛选法:分组对抗   110
5.2.3  精英筛选法:只选最好的   111
5.3  实值编码:处理真实数值   111
5.3.1  实值编码的核心概念   112
5.3.2  算术交叉:数学化繁殖   113
5.3.3  边界突变   113
5.3.4  算术突变   114
5.4  顺序编码:处理序列   114
5.4.1  适应度函数的重要性   116
5.4.2  顺序编码的核心概念   116
5.4.3  顺序突变:适用于顺序编码   116
5.5  树编码:处理层次结构   117
5.5.1  树编码的核心概念   118
5.5.2  树交叉:继承树的分支   119
5.5.3  节点突变:更改节点的值   120
5.6  常见进化算法   120
5.6.1  遗传编程   120
5.6.2  进化编程   121
5.7  进化算法术语表   121
5.8  进化算法的其他用例   121
5.9  本章小结   122
第6章  群体智能:蚁群优化   125
6.1  什么是群体智能?   125
6.2  适合用蚁群优化算法的问题   127
6.3  状态表达:如何表达蚂蚁和路径?   130
6.4  蚁群优化算法的生命周期   134
6.4.1  初始化信息素印迹   135
6.4.2  建立蚂蚁种群   136
6.4.3  为蚂蚁选择下一个访问项目   138
6.4.4  更新信息素印迹   145
6.4.5  更新最佳解决方案   149
6.4.6  确定终止条件   150
6.5  蚁群优化算法的用例   152
6.6  本章小结   153
第7章  群体智能:粒子群优化   155
7.1  什么是粒子群优化?   155
7.2  优化问题:略偏技术性的观点   157
7.3  适合用粒子群优化算法的问题   160
7.4  状态表达:粒子是什么样的?   162
7.5  粒子群优化的生命周期   163
7.5.1  初始化粒子群   164
7.5.2  计算粒子的适应度   166
7.5.3  更新粒子的位置   169
7.5.4  确定终止条件   180
7.6  粒子群优化算法的用例   181
7.7  本章小结   183
第8章  机器学习   185
8.1  什么是机器学习?   185
8.2  适合用机器学习的问题   187
8.2.1  监督学习   188
8.2.2  非监督学习   188
8.2.3  强化学习   188
8.3  机器学习的工作流程   188
8.3.1  收集和理解数据:掌握数据背景   189
8.3.2  准备数据:清洗和整理   191
8.3.3  训练模型:用线性回归预测   196
8.3.4  测试模型:验证模型精度   205
8.3.5  提高准确性   208
8.4  分类问题:决策树   210
8.4.1  分类问题:非此即彼   210
8.4.2  决策树的基础知识   211
8.4.3  训练决策树   213
8.4.4  用决策树对实例进行分类   223
8.5  其他常见的机器学习算法   226
8.6  机器学习算法的用例   227
8.7  本章小结   228
第9章  人工神经网络   231
9.1  什么是人工神经网络?   231
9.2  感知器:表征神经元   234
9.3  定义人工神经网络   237
9.4  前向传播:使用训练好的人工神经网络   243
9.5  反向传播:训练人工神经网络   250
9.6  激活函数一览   259
9.7  设计人工神经网络   260
9.8  人工神经网络的类型和用例   263
9.8.1  卷积神经网络   263
9.8.2  递归神经网络   264
9.8.3  生成对抗网络   264 
9.9  本章小结   266
第10章  基于Q-learning的强化学习   269
10.1  什么是强化学习?   269
10.2  适合用强化学习的问题   272
10.3  强化学习的生命周期   273
10.3.1  模拟与数据:环境重现   274
10.3.2  使用Q-learning模拟训练   278
10.3.3  模拟并测试Q表   287
10.3.4  衡量训练的性能   287
10.3.5  无模型和基于模型的学习   288
10.4  强化学习的深度学习方法   289
10.5  强化学习的用例   289
10.5.1  机器人技术   290
10.5.2  推荐引擎   290
10.5.3  金融贸易   290
10.5.4  电子游戏   291
10.6  本章小结   291

【人工智能算法从图解入手】相关推荐

  1. 智源人工智能算法大赛开锣,百万奖金激励 AI 算法创新

    智源人工智能算法大赛现已正式启动!本次比赛由北京智源人工智能研究院主办,清华大学.北京大学.中科院计算所.旷视.知乎等协办,总奖金超过 100 万元,旨在以全球领先的科研数据集与算法竞赛为平台,选拔培 ...

  2. 开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素

    开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素摘要: 超像素提供图像数据的有效低/中级表示,这极大地减少了后续视觉任务的图像基元的数量. 现有的超像素算法无法区分,因此难以集成 ...

  3. 重磅MIT开源人工智能算法评估和理解对抗Logit配对的稳健性

    重磅MIT开源人工智能算法评估和理解对抗Logit配对的稳健性摘要:我们评估了对抗性Logit Pairing的稳健性,这是最近针对广告范例提出的防御措施. 我们发现,使用Adversarial Lo ...

  4. 标准发布丨央行发布《人工智能算法金融应用评价规范》

    2021-05-11 11:12:26 来源:中国人民银行 为全面提升人工智能技术在金融领域应用和管理水平,推动金融与科技深度融合协调发展,中国人民银行制定了<人工智能算法金融应用评价规范> ...

  5. 深思:外卖背后的人工智能算法揭秘

    知识积累带来规模递增,规模递增引发市场集中. 当一个行业可以以"流水线"的形式固定下来后,这个行业中,人的价值就被越来越弱化与微不足道,从身体.动作.时间.精力等,都被重复的机器与 ...

  6. 人工智能算法的可解释性方法研究

    来源:数学与人工智能 摘要 以深度学习为代表的人工智能技术在信息领域的应用,极大地提高了信息的利用效率和挖掘价值,深刻的影响了各领域的业务形态,同时也引发了监管部门和用户对这一新技术运用中出现的 &q ...

  7. 人工智能算法通俗讲解系列(二):逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们介绍的机器学习算法叫逻辑回归.它英语名称是Logistic Regression,简称LR. 跟之前一样,介绍这个算 ...

  8. 速领:「人工智能算法从入门到精通教程」

    小伙伴从去年年底开始,一直叨叨要跳槽,大大小小的公司面试了很多,但总没有拿到一个满意的offer,要么package太低,要么就是面试被虐. 经过前几次的面试失利,终于明白了什么叫基础不牢,地动山摇. ...

  9. DL之FAN:基于人工智能算法偶像和明星渐变卡通形象

    DL之FAN:基于人工智能算法偶像和明星渐变卡通形象 目录 输出结果 算法设计 相关文章 Paper:<How far are we from solving the 2D & 3D F ...

最新文章

  1. 运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类
  2. 有奶瓶的linux系统,用U盘启动BEINI(奶瓶)系统
  3. JAVA线程并发数量控制_线程同步工具(二)控制并发访问多个资源
  4. 云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维
  5. 【vijos1790】拓扑编号
  6. du,df命令和磁盘管理
  7. 【数学-常用公式】基本积分表
  8. iOS开发从appStore下载历史版本
  9. 市场营销商业指标统计分析
  10. Travelling not wandering
  11. 亲情友情爱情:《悲惨世界》第四部《卜吕梅街的柔情和圣德尼街的史诗》/人性:《悲惨世界》第五部《冉阿让》摘录...
  12. 【高等数学】从法向量到第二类曲面积分
  13. ⽬标⾏动及稠密环境未知情况下,⽆⼈机跟踪的系统解决⽅案
  14. 利用JS调用手机摄像头小功能源码
  15. java springboot mybaits 邮箱注册实现
  16. 实力踩坑:There is no getter for property named ‘XXX‘ ‘class XXX‘
  17. input禁止键盘及中文输入
  18. 产业分析:科技产业投资新风向
  19. 软件验证(Verification)和确认(Validation)的区别
  20. 腾讯课堂-草图大师 Sketchup 初级到精通视频讲座

热门文章

  1. 2020年最全的自动化测试面试题及答案--看完后吊打面试官!自动化测试是什么?自动化测试学什么?
  2. openwrt + dnsmasq + anti-AD 两步搞定广告屏蔽
  3. 自媒体博主都用什么剪辑视频_博主和设计师的最佳免费社交媒体图标兆集
  4. AcWing 2019. 拖拉机(双端队列BFS)
  5. B站疯狂破圈 “后浪”们将会把B站推向何处?​
  6. Java中Ascall码的使用
  7. 裴蜀定理(详细定义+应用+模板)
  8. word2003 字体和标点重叠在一起
  9. 传奇单机版批量修改爆率. 把所有物品爆率都改成1/10, 需要的话可以自己改更高....
  10. calendar java起始于结束时间,java获取一天的开始时间和一天的结束时间