- 深入浅出AI算法:基础概览
- 吕磊
- 3163字
- 2021-08-13 20:18:16
前言
为什么会有这本书
在笔者从事算法相关的工作后,身边有不少朋友问笔者“算法到底是什么”“如何理解人工智能(Artificial Intelligence,AI)的概念”等问题。他们平时在各类电视节目、网络自媒体及新闻媒体中经常接触AI算法的相关信息,因此对AI算法表现出比较浓厚的兴趣。
经过进一步的沟通了解,笔者发现可以将这些朋友划分为两类人群。第一类人群,他们希望从事AI算法职业,或者希望转型做AI算法相关的工作;第二类人群,他们不想学习AI算法,但是想了解AI算法背后的原理,以及整个AI项目的运作机制、流程和规律等。无论是第一类人群的“入门”需求,还是第二类人群的“鸟瞰”需求,市面上已经有很多相关资料,如吴恩达[1]在Coursera[2]上发布的机器学习课程、斯坦福大学的CS在线课程系列[3]、周志华[4]的《机器学习》[5]及网络上的各种算法学习教程等。这些都是非常优质的AI算法学习资源。但可惜的是,对大部分人来说,一方面,Coursera和斯坦福大学的课程门槛太高,零基础入门不易;另一方面,虽然大部分学习资源在某个方向上基本都能做到比较高质量的讲解,但很少有学习资源是使用算法串联整体内容的,即很少有学习资源可以同时满足“入门”和“鸟瞰”需求。学习者往往需要通过整合多个信息源,才能对AI算法形成一个较为完整的总体印象。
此外,在和朋友讨论算法的过程中,笔者发现一件比较有意思的事情:大家通常会聊到两类算法,一类是信息学算法[6],另一类是AI算法[7]。虽然都叫算法,但没有一个比较权威的划分方式将二者区别开。比较常见的区分方法是,信息学算法是有确定答案的、结果准确率为100%的精确算法;而AI算法的答案是不确定的,其结果的准确率通常也不可能达到100%。从这个角度来看,信息学算法的运算过程其实和简单的数学运算的运算过程没有本质区别,二者在每一步计算环节都有明确的结果,最后都会得到一个确定答案。AI算法在每次训练后的准确率都不固定,这体现出了“智能”的高低差异。虽然,当下“人工智能”要摆脱“人工”的日子看起来比较久远,但至少已经出现了一些让人为之惊叹的“人工”奇迹,如AI围棋程序、AI语音助手和AI自动驾驶等。
关于这两类算法的区别,笔者从《樊登读书》中获得了一种新的思考角度。书中提到,这个世界上有一种学问叫作简单科学,还有一种学问叫作复杂科学。简单科学可分为很多个步骤,每个步骤都有明确的输入和输出,各个步骤之间的因果关系清晰、明确、可追溯。例如,建造一栋大楼,或者建造一艘飞船,虽然工程复杂,但完全符合简单科学的范畴。复杂科学是混沌的,因果关系并不明确,如蝴蝶效应、群智涌现[8]等。笔者借助从樊登老师那里得到的灵感发现,信息学算法的步骤和结果明确,AI算法的因果关系混沌,二者恰好可以分别归于简单科学和复杂科学的范畴。这种分法或许比前面的分法更有趣一些。
为了满足读者“入门”和“鸟瞰”的不同需求,一方面,本书在内容筛选上必须大刀阔斧,又不能破坏内容结构的完整性;另一方面,本书将上述两类算法囊括在一起呈现,使读者能清晰、明确地认识二者之间的区别与联系。
本书是笔者温故知新的结果。俗话说,好记性不如烂笔头。通过归纳、总结与再学习,笔者在AI算法方面也有不少新的认识和收获。
本书的读者定位
AI算法博大精深,所含各部分内容都足以各自形成一本书。本书作为一本算法概览书,其内容尚不足以形成完整而系统的算法学习体系。此外,考虑到笔者存在的信息采样误差,本书挑选的常用知识点不一定具备绝对的普适性。
本书的目标受众包括但不限于行业属性或工作职能与AI算法有关的人士、从事传统行业的工程师、面临毕业的学生、初入职场的人士等。当然,无论是哪一类人群,前提都需要对AI算法感兴趣。爱因斯坦说过,兴趣是最好的老师。笔者希望,读者在读完本书后,可以对AI算法有一个较为清晰的整体认识,并且针对自己感兴趣的环节进行更深入的学习。
本书的内容及风格
本书从介绍算法是什么开始,包括发展简史和目前与算法有关的职位和领域,循序渐进地帮助读者敲开算法的大门。首先,本书甄选了与算法有关的数学基础知识,包括线性代数、排列组合、高等数学、概率与统计等,为读者正式接触算法奠定一定的数学基础。其次,本书从信息学算法与数据结构入手,讲解了二者最常用的概念与知识点,帮助读者培养一定的算法逻辑思维能力和数据结构思想。然后,切入AI算法正题,从总体视角将AI算法划分为两种类别,并且甄选业界常见的几类机器学习算法模型,帮助读者在总体把控的前提下,掌握不同机器学习算法模型中的具体算法,以及它们的实现原理。接着,本书会介绍算法工程的组成部分,并且手把手带领读者完成一个简易的算法工程项目,通过实践加深其对AI算法的理解,使其能够学以致用。最后,本书挑选出AI算法的三大研究方向,帮助读者铺垫AI算法学习的进阶之路,并且总结了笔者对算法行业的思考和展望。全书内容从基础到进阶,从理论到实践,层层递进。
学习算法对数学基础和逻辑思维的要求比较高。因此,本书尽量通过列举与生活息息相关的例子,对其中的一些概念进行直观讲述,如向量、矩阵、数组、链表。不过,并不是所有的知识点都可以通过直观举例来讲解,如高等数学中的导数和梯度、概率与统计中的各种名词等。所以,对于真正想入门AI算法的读者,该下的功夫、该花的时间是少不了的;而对于只想对AI算法有所了解的读者,在遇到较难理解的概念和公式时,只需了解它们在AI算法中的作用,可以跳过理论细节。
本书的章节标题运用了武侠小说中的“内力”“招式”“武功秘籍”,分别对应数学基础、信息学算法和机器学习算法。有人说,信息学算法和机器学习算法没什么关系,其实不然。看过武侠作品的读者应该知道,“内力”和“招式”作为“武功秘籍”修炼的前提,是一种基础能力。相应地,数学基础和信息学算法对学习机器学习算法而言,不仅是基础的铺垫,而且有助于思维模式的培养。
本书每章的内容都采用“总分总”形式,并且在章节末尾提炼出核心关键词,方便读者进一步查询回顾。其中在第2章~第7章末尾,针对章节内容留有若干思考题,帮助读者巩固和理解相关知识。关于动脑时刻的答案,请关注“对半独白”微信公众号并回复“动脑时刻”获取。
我与本书的局限性
本书的局限性。与其他同类型的机器学习入门书籍相比,本书关于AI算法的内容要少很多。本书作为一本AI算法图书,主要目的在于帮助读者构建一个较为完整的AI算法基础知识体系。作为一本只有200多页的书,既然选择了整体性,就必须舍弃部分性,这便是本书最大的局限性。但反过来想,无论哪一门学问,其知识体系都在持续不断地迭代更新。从这个角度来看,真正做到内容大而全的书,其实是不存在的。所谓“万变不离其宗”,授人以名目齐全之鱼,不如授人以追本溯源之渔。因此,本书在内容层面的局限性,未尝不会成为目标读者群体的优先选择性。
笔者的局限性。有一个词可以充分表达笔者的局限性,这个词或许也可以描述所有作者的局限性,那就是“偏见”。数据有偏见,写作也有偏见。在AI算法模型中,我们需要做的非常重要的一件事就是减少数据偏见,以及降低数据偏见带来的不良结果。所谓写作偏见,就是笔者在写作之前的各种经历和所处环境,对本书写作所带来的影响,包括但不限于长期积累所形成的个人认知水平、表达水平、专业水平、职业惯性,乃至个人素养和品质。因此,书中如有表达不当或有失偏颇之处,望读者海涵。
吕磊
[1]华裔美国人,斯坦福大学计算机科学系和电气工程系副教授,人工智能与机器学习领域的权威学者之一。
[2]一个公开的在线课程项目,旨在与世界顶尖大学合作,在线提供网络公开课程。
[3]斯坦福大学计算机科学系本科和研究生的在线课程。
[4]南京大学计算机科学与技术系主任,人工智能学院院长。
[5]周志华所著,机器学习宝库,又称为“西瓜书”。
[6]又称为ACM算法,本书后续内容将统称为基础算法。
[7]又称为机器学习算法。
[8]指群体智慧的出现,如分工明确的蚁群,井井有条的沙丁鱼群。