# 1. 人工智能
# 1.1 人工智能概述
人工智能是一种模拟人类智能的技术,它可以让计算机完成类似于人类的任务,例如语音识别、图像识别、自然语言处理和决策制定等。人工智能的核心是机器学习,它是一种让计算机从数据中学习的技术。随着技术的不断发展,人工智能正在被越来越广泛地应用于各个领域,例如医疗、金融、交通和制造业等。
# 1.1.1 人工智能的发展历史
下图是从1950年至2017年之间,人工智能领域出现的一些里程碑式的事件。总结下来会分为3大阶段:
[1] 第一次浪潮(非智能对话机器人)-- 20世纪50年代到60年代
- 1950年10月,图灵提出了人工智能(AI)的概念,同时提出了图灵测试来测试 AI。图灵测试提出没有几年,人们就看到了计算机通过图灵测试的“曙光”
- 1966年,心理治疗机器人 ELIZA 诞生,它的实现逻辑非常简单,就是一个有限的对话库,当病人说出某个关键词时,机器人就回复特定的话。
- 第一次浪潮并没有使用什么全新的技术,而是用一些技巧让计算机看上去像是真人,计算机本身并没有智能。
[2] 第二次浪潮(语音识别)-- 20世纪80年代到90年代
- 在第二次浪潮中,语音识别是最具代表性的几项突破之一。核心突破原因就是放弃了符号学派的思路,改为了统计思路解决实际问题。在《人工智能》一书中,李开复详细介绍了这个过程,他也是参与其中的重要人物之一。
- 第二次浪潮最大的突破是改变了思路,摒弃了符号学派的思路,转而使用了统计学思路解决问题。
[3] 第三次浪潮(深度学习+大数据)-- 21世纪初
- 2006年是深度学习发展史的分水岭。杰弗里辛顿在这一年发表了《一种深度置信网络的快速学习算法》,其他重要的深度学习学术文章也在这一年被发布,在基本理论层面取得了若干重大突破。
- 之所以第三次浪潮会来主要是2个条件已经成熟:1)2000年后互联网行业飞速发展形成了海量数据,同时数据存储的成本也快速下降,使得海量数据的存储和分析成为了可能。2)GPU的不断成熟提供了必要的算力支持,提高了算法的可用性,降低了算力的成本。
- 在各种条件成熟后,深度学习发挥出了强大的能力。在语音识别、图像识别、NLP等领域不断刷新纪录。让 AI 产品真正达到了可用(例如语音识别的错误率只有6%,人脸识别的准确率超过人类,BERT在11项表现中超过人类…)的阶段。
- 第三次浪潮来袭,主要是因为大数据和算力条件具备,这样深度学习可以发挥出巨大的威力,并且 AI 的表现已经超越人类,可以达到“可用”的阶段,而不只是科学研究。
人工智能3次浪潮的不同之处
- 前两次热潮是学术研究主导的,第三次热潮是现实商业需求主导的。
- 前两次热潮多是市场宣传层面的,而第三次热潮是商业模式层面的。
- 前两次热潮多是学术界在劝说政府和投资人投钱,第三次热潮多是投资人主动向热点领域的学术项目和创业项目投钱。
- 前两次热潮更多时提出问题,第三次热潮更多时解决问题。
# 1.1.2 人工智能的3个级别
这里将人工智能分为3个级别,分别是:弱人工智能、强人工智能、超人工智能。
[1] 弱人工智能
- 又称限制领域人工智能(Narrow AI)或应用型人工智能(Applied AI),指的是专注于且只能解决特定领域问题的人工智能。
- 例如:AlphaGo、Siri、FaceID……
[2] 强人工智能
- 又称通用人工智能(Artificial General Intelligence)或完全人工智能(Full AI),指的是可以胜任人类所有工作的人工智能。
- 强人工智能具备以下能力:1)存在不确定性因素时进行推理,使用策略,解决问题,制定决策的能力。2)知识表示的能力,包括常识性知识的表示能力。3)规划能力。4)学习能力。5)使用自然语言进行交流沟通的能力。6)将上述能力整合起来实现既定目标的能力。
[3] 超人工智能
- 假设计算机程序通过不断发展,可以比世界上最聪明,最有天赋的人类还聪明,那么,由此产生的人工智能系统就可以被称为超人工智能。
目前所处的阶段
- 我们当前所处的阶段是弱人工智能,强人工智能还没有实现,而超人工智能更是连影子都看不到,所以“特定领域”目前还是 AI 无法逾越的边界。
- ChatGPT 是一种基于规则和机器学习的聊天机器人,它可以通过对话和预定义的回答来与用户交互。虽然它可以回答许多常见问题,但它不是强人工智能。强人工智能是指具有类似于人类智力的自主决策和学习能力的 AI 系统。(摘自ChatGPT自己的回答~)
# 1.1.3 人工智能的能力边界
从理论层面来解释 AI 的能力边界,图灵在上世纪30年代中期,就在思考3个问题:
- 世界上是否所有数学问题都有明确的答案?
- 如果有明确的答案,是否可以通过有限的步骤计算出答案?
- 对于那些有可能在有限步骤计算出来的数学问题,能否有一种假象的机械,让他不断运动,最后当机器停下来的时候,那个数学问题就解决了?
图灵设计出来一套方法,后人称它为图灵机。今天所有的计算机,包括全世界正在设计的新的计算机,从解决问题的能力来讲,都没有超出图灵机的范畴。通过上面的3个问题,图灵已经划出了界限,这个界限不但适用于今天的 AI ,也适用于未来的 AI 。
在一些特定场景中, AI 可以表现的很好,但是在大部分场景中,AI 并没有什么用。
- 世界上有很多问题,只有一小部分是数学问题。
- 在数学问题里,只有一小部分是有解的。
- 在有解的问题中,只有一部分是理想状态的图灵机可以解决的。
- 在后一部分(图灵机可解决的部分),又只有一部分是今天的计算机可以解决的。
- 而 AI 可以解决的问题,又只是计算机可以解决问题的一部分。
# 1.1.4 传统软件与人工智能对比
传统软件是「if-then」的基本逻辑,人类通过自己的经验总结出一些有效的规则,然后让计算机自动的运行这些规则。传统软件永远不可能超越人类的知识边界,因为所有规则都是人类制定的。简单的说:传统软件是「基于规则」的,需要人为的设定条件,并且告诉计算机符合这个条件后该做什么。
人工智能现在已经发展出很多不同分支,技术原理也多种多样,这里只介绍当下最火的深度学习。深度学习的技术原理跟传统软件的逻辑完全不同:机器从「特定的」大量数据中总结规律,归纳出某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。
# 1.1.5 机器学习、人工智能、深度学习的关系
1956 年提出 AI 概念,短短3年后(1959) Arthur Samuel 就提出了机器学习的概念:
Field of study that gives computers the ability to learn without being explicitly programmed.(机器学习研究和构建的是一种特殊算法,能够让计算机自己在数据中学习从而进行预测)
所以,机器学习不是某种具体的算法,而是很多算法的统称。机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括决策树,聚类,贝叶斯等。深度学习的灵感来自大脑的结构和功能,即许多神经元的互连。人工神经网络(ANN)是模拟大脑生物结构的算法。不管是机器学习还是深度学习,都属于人工智能(AI)的范畴。所以人工智能、机器学习、深度学习可以用下面的图来表示:
# 1.2 人工智能赋能评估
# 1.2.1 数据角度评估
[1] 基于规则的旧时代
在人工智能普及之前,大家用的产品都是「基于规则」的。我们通过总结规则,然后让计算机自动的执行这些规则。基于规则的好处就是:所以人都能知道在什么情况下得到什么结果,一切都是可以预判的。但是基于规则的方法也有很大的弊端:很多问题,很难(甚至无法)总结出有效的规则。
[2] 基于数据的 AI 时代
人工智能发展到现在,最核心的底层逻辑是:「基于数据」。简单说就是:从海量数据中找规律,这些规律是很抽象的,并不能总结成具象的规则。比如:
- 给机器看海量的猫和狗的照片,它就具备了「区分猫和狗」的能力
- 给机器海量的中英文对照文章,它就具备了「中英文翻译」的能力
- 给机器海量的文章,它甚至可以具备「写文章」的能力
基于数据的好处是:只要有足够多的优质数据,那么机器就能学会某些技能,数据越多,能力越强。
但是基于数据的方法也有明显的弊端:机器只能告诉你「是什么」,但是无法告诉你「为什么」。
[3] 数据角度评估的3要素
由于人工智能是「基于数据」的,因此想要用人工智能,需要考虑业务场景的数据3要素:1)数据可获取 2)数据全面 3)数据多。
它们3个类似金字塔的结构,先有「数据可获取」再谈「数据全面」,有了「数据全面」再谈「数据多」。
- 数据可获取:想要解决问题,就需要具备「跟这个问题相关的数据」。比如给机器看海量的猫和狗的照片,它就具备了「区分猫和狗」的能力。这里需要的数据不光是照片本身,还需要将照片里的猫和狗标注出来。
- 数据全面:假如我们只能看到 10% 的照片,现在让你区分照片中是猫还是狗,这会非常难。当我们能看到照片的 50% 时,还能猜一下。当我们可以看到100%的照片时,就很容易分辨了。
- 数据多:猫大概有40多个品种,狗大概有接近200个品种,并且照片可以从不同的角度,不同的背景,不同的光线下拍摄,会产生无数种组合。想要有效的区分猫和狗,需要大量的不同的照片才行。kaggle(很权威的 AI 竞赛网站)上有很多区分猫和狗的训练数据,大部分都是上万的量级。区分猫和狗这种非常简单的任务都需要上万的数据,对于更复杂的任务,就需要上百万甚至上亿的数据。具体要多少跟你要解决的问题复杂度、模型选择、预期结果都有关系。不过有一条原则是不会变:数据越多,效果越好。

# 1.2.2 特征角度评估
[1] 特征评估及人工智能基本原理
当我们看过很多俄罗斯人和其他国家的人时,我们就会根据经验总结出俄罗斯人的特征:鼻子长、个字高、蓝眼睛、白皮肤、眼窝深、剃毛发达、说俄罗斯语…
当我们遇到一个没见过的外国人时,我们就用这套「经验」来套在这个人身上,看是否符合,如果很多特征都符合,那么就会猜测这个是俄罗斯人。
人工智能的原理基本就是上面的过程,如下图:
[2] 特征象限图
并非所有问题都需要 AI 来解决,AI 的优势是可以处理海量的特征,不但可以处理表面的特征,还能找到背后隐藏的特征。当我们把特征数量和确定性画一个坐标,就能指导我们什么问题适合用 AI,什么问题不适合用:
- 特征少+确定性弱:适合人工解决
- 特征少+确定性强:适合规则解决
- 特征多+确定性强:适合规则解决
- 特征多+确定性弱:「可以考虑」 AI 解决
# 1.2.3 学习角度评估
基于规则的能力边界很小,很多实际问题无法通过规则的方法来解决。人工智能可以扩大计算机的能力边界,除了扩大能力边界外,人工智能还有一个非常重要的特性——持续学习,不断提升能力上限。
想要让机器实现持续学习的能力,需要具备2个条件:1)是否可以获得反馈数据?2)数据是否可以形成闭环?
[1] 有效的反馈
跟人类识字的学习过程类似,机器也需要「有效的反馈」来实现持续的学习,如果没有反馈数据,那么有问题的地方会一直存在问题,永远无法进步。
[2] 数据可以形成闭环
所谓的数据闭环就是将「行动 – 反馈 – 修正 – 再行动」循环自动的在机器上运转,完全不需要人参与。
# 1.2.4 黑箱角度评估
深度学习的工作原理不是讲逻辑(基于规则),而是大力出奇迹(基于统计),这就从根本上会导致两个问题:
- 深度学习只能告诉你「是什么」,但是不能告诉你「为什么」
- 没人能预知在什么情况下会出现错误

下面的图片就会展示一些人工智能所犯下的「低级错误」。而最可怕的是:当我们发现问题时,并不能针对具体问题来对症下药。
- 过去的计算机科学大部分是基于规则的,可以做到对症下药。
- 而深度学习则完全不一样,当我们发现问题时,只能全局优化(比如灌更多的数据)。
由于以上局限性,评估哪些问题适合使用AI的时候,可以从2个角度来评估:1)是否需要解释 2)错误容忍度
我们先从这2个角度来看看普及率较高的AI应用:
案例 | 是否需要解释 | 错误容忍度 |
---|---|---|
语音识别 | 用户只关心效果好不好,并不关心背后的原理是什么 | 偶尔出现一些错误并不影响对整句话的理解。少量出错是可以接受的。 |
人脸识别 | 同上 | 相比语音识别,用户对出错的容忍度要低一些,因为需要重新刷脸。 |
机器翻译 | 同上 | 跟语音识别类似,只要大面上准确,并不影响整体的理解。 |
我们再看一些 AI 和人力结合的具体应用:
案例 | 是否需要解释 | 错误容忍度 |
---|---|---|
智能客服 | 用户不关心是人工服务还是机器服务,只要能解决我的问题就行 | 如果机器客服不能理解我的意图,无法帮我解决问题,用户会很不满意。所以当机器搞不定 的时候需要人工来补位 |
内容审核 | 对于审核不通过的内容,需要解释原因。通过的内容不需要解释为什么。 | 有一种职业叫「鉴黄师」,目前正在逐步被机器替代,但是并没有完全替代,因为有时候机器会拿不准,这个时候人工来复审 |
最后看一些不适合AI落地的场景:
案例 | 是否需要解释 | 错误容忍度 |
---|---|---|
推导定理 | 科学是绝对严谨的,一定是从逻辑上推导出来的,而不是统计出来的。 | 如果有例外就不能称作定理,一定是绝对正确没有错误的。 |
写论文 | 人工智能已经可以写小说,诗歌,散文。但是论文这种文体要求非常严谨的上下文逻辑。 | 论文里是不允许有错误的,全文的逻辑要非常清晰,哪怕一个细节出现了逻辑问题,也会造成整篇论文没有价值。 |
如果我们把上面提到的案例全部放在象限中,大致如下:
所以,在评估的时候有3条原则:
- 解决方案越需要解释背后的原因,越不适合用深度学习。
- 对错误的容忍度越低,越不适合使用深度学习。
- 上面2条并非绝对判断标准,还需要看商业价值和性价比,自动驾驶和医疗就是反例。
# 2. 机器学习
# 2.1 机器学习概述
# 2.1.1 机器学习的基本思路
无论使用什么算法,使用什么样的数据,最根本的思路都是以下3步:
- 把现实生活中的问题抽象成数学模型,并且清楚模型中不同参数的作用。
- 利用数学方法对这个数学模型进行求解,从而解决现实生活中的问题。
- 评估这个数学模型,是否真正的解决了现实生活中的问题,解决的如何?
当我们理解了这个基本思路,就能发现:不是所有问题都可以转换成数学问题的,那些没有办法转换的现实问题 AI 就没有办法解决,同时最难的部分也就是把现实问题转换为数学问题这一步。
# 2.1.2 监督学习、无监督学习、强化学习
机器学习根据训练方法大致可以分为3大类:监督学习、无监督学习、强化学习。其他诸如“半监督学习”之类的说法都是基于上面3类的变种,本质没有改变。
[1] 监督学习
- 在分类过程中,如果所有训练数据都有标签,则为有监督学习,用于分类或者回归。典型的例子就是KNN、SVM。
- 举例:不仅把书给学生进行训练给书本分类的能力,而且把分类的结果(哪本书属于哪些类别)也给了学生做标准参考。
[2] 无监督学习
- 如果数据没有标签,就是无监督学习了。比如:k-means聚类算法、主成分分析
- 举例:只给学生进行未分类的书本进行训练,不给标准参考,学生只能自己分析哪些书比较像,根据相同与相似点列出清单,说明哪些书比较可能是同一类别的。
[3] 半监督学习
- 其训练数据的一部分是有标签的,另一部分没有标签,而没标签数据的数量常常远远大于有标签数据数量(这也是符合现实情况的)。
- 隐藏在半监督学习下的基本规律在于:数据的分布必然不是完全随机的,通过一些有标签数据的局部特征,以及更多没标签数据的整体分布,就可以得到可以接受甚至是非常好的分类结果。可以用来分类、回归、聚类、降维。
- 举例:给学生很多未分类的书本与少量的清单,清单上说明哪些书属于同一类别。
[4] 强化学习
- 强化学习更接近生物学习的本质,因此有望获得更高的智能。它关注的是智能体如何在环境中采取一系列行为,从而获得最大的累积回报。通过强化学习,一个智能体应该知道在什么状态下应该采取什么行为。
- 举例:最典型的场景就是打游戏。2019年1月25日,AlphaStar(Google研发的,采用了强化学习的训练方式) 完虐星际争霸的职业选手“TLO”和“MANA”。
# 2.1.3 机器学习实操的7个步骤
机器学习在实际操作层面一共分为7步:1)收集数据 2)数据准备 3)选择模型 4)训练 5)评估 6)参数调整 7)预估。
实操案例
假设我们的任务是通过酒精度和颜色来区分红酒和啤酒,下面详细介绍一下机器学习中每一个步骤是如何工作的。
[1] 收集数据
我们在超市买来一堆不同种类的啤酒和红酒,然后再买来测量颜色的光谱仪和用于测量酒精度的设备。这个时候,我们把买来的所有酒都标记出他的颜色和酒精度,会形成下面这张表格。
颜色 | 酒精度 | 种类 |
---|---|---|
610 | 5 | 啤酒 |
599 | 13 | 红酒 |
693 | 14 | 红酒 |
… | … | … |
这一步非常重要,因为数据的数量和质量直接决定了预测模型的好坏。
[2] 数据准备
在这个例子中,我们的数据是很工整的,但是在实际情况中,我们收集到的数据会有很多问题,所以会涉及到数据清洗等工作。
当数据本身没有什么问题后,我们将数据分成3个部分:训练集(60%)、验证集(20%)、测试集(20%),用于后面的验证和评估工作。
[3] 选择模型
研究人员和数据科学家多年来创造了许多模型。有些非常适合图像数据,有些非常适合于序列,有些用于数字数据,有些用于基于文本的数据。在这个例子中,由于只有2个特征,颜色和酒精度,我们可以使用一个小的线性模型,这是一个相当简单的模型。
[4] 训练
大部分人都认为这个是最重要的部分,其实并非如此,数据数量和质量、还有模型的选择比训练本身重要更多。这个过程就不需要人来参与的,机器独立就可以完成,整个过程就好像是在做算术题。因为机器学习的本质就是将问题转化为数学问题,然后解答数学题的过程。
[5] 评估
一旦训练完成,就可以评估模型是否有用,这是我们之前预留的验证集和测试集发挥作用的地方,评估的指标主要有 准确率、召回率、F值。这个过程可以让我们看到模型如何对尚未看到的数是如何做预测的,这意味着代表模型在现实世界中的表现。
[6] 参数调整
完成评估后,可能希望进一步改进训练。进行训练时,我们隐含地假设了一些参数,可以通过人为的调整这些参数让模型表现的更出色。
[7] 预估
上面的6个步骤都是为了这一步来服务的,这也是机器学习的价值。这个时候,当我们买来一瓶新的酒,只要告诉机器他的颜色和酒精度,他就会告诉你,这时啤酒还是红酒了。
# 2.2 常见机器学习算法
以下是一些常见的机器学习算法:
算法 | 训练方式 |
---|---|
线性回归 (opens new window) | 监督学习 |
Logistic回归 (opens new window) | 监督学习 |
线性判别分析 (opens new window) | 监督学习 |
决策树 (opens new window) | 监督学习 |
朴素贝叶斯 (opens new window) | 监督学习 |
K邻近 (opens new window) | 监督学习 |
学习向量量化 (opens new window) | 监督学习 |
支持向量机 (opens new window) | 监督学习 |
随机森林 (opens new window) | 监督学习 |
AdaBoost (opens new window) | 监督学习 |
高斯混合模型 | 非监督学习 |
限制波尔兹曼机 (opens new window) | 非监督学习 |
K-means 聚类 (opens new window) | 非监督学习 |
最大期望算法 | 非监督学习 |
# 3. 深度学习
# 3.1 深度学习概述
# 3.1.1 深度学习的原理解释
这里引用李开复在《人工智能》一书中的解释,以识别图片中的汉字为例:
假设深度学习要处理的信息是“水流”,而处理数据的深度学习网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。
那么,计算机该如何使用这个庞大的水管网络来学习识字呢?
比如,当计算机看到一张写有“田”字的图片,就简单将组成这张图片的所有数字(在计算机里,图片的每个颜色点都是用“0”和“1”组成的数字来表示的)全都变成信息的水流,从入口灌进水管网络。
我们预先在水管网络的每个出口都插一块字牌,对应于每一个我们想让计算机认识的汉字。这时,因为输入的是“田”这个汉字,等水流流过整个水管网络,计算机就会跑到管道出口位置去看一看,是不是标记由“田”字的管道出口流出来的水流最多。如果是这样,就说明这个管道网络符合要求。如果不是这样,就调节水管网络里的每一个流量调节阀,让“田”字出口“流出”的水最多。
这下,计算机要忙一阵了,要调节那么多阀门。好在计算机的速度快,暴力的计算加上算法的优化,总是可以很快给出一个解决方案,调好所有阀门,让出口处的流量符合要求。
下一步,学习“申”字时,我们就用类似的方法,把每一张写有“申”字的图片变成一大堆数字组成的水流,灌进水管网络,看一看,是不是写有“申”字的那个管道出口流水最多,如果不是,我们还得再调整所有的阀门。这一次,要既保证刚才学过的“田”字不受影响,也要保证新的“申”字可以被正确处理。
如此反复进行,直到所有汉字对应的水流都可以按照期望的方式流过整个水管网络。这时,我们就说,这个水管网络是一个训练好的深度学习模型了。当大量汉字被这个管道网络处理,所有阀门都调节到位后,整套水管网络就可以用来识别汉字了。这时,我们可以把调节好的所有阀门都“焊死”,静候新的水流到来。
与训练时做的事情类似,未知的图片会被计算机转变成数据的水流,灌入训练好的水管网络。这时,计算机只要观察一下,哪个出水口流出来的水流最多,这张图片写的就是哪个字。
深度学习大致就是这么一个用人类的数学知识与计算机算法构建起来的整体架构,再结合尽可能多的训练数据以及计算机的大规模运算能力去调节内部参数,尽可能逼近问题目标的半理论、半经验的建模方式。
# 3.1.2 传统机器学习和深度学习对比
[1] 相似点
在数据准备和预处理方面,两者是很相似的。它们都可能对数据进行一些操作:数据清洗、数据标签、归一化、去噪、降维。
[2] 不同点
传统机器学习的特征提取主要依赖人工,针对特定简单任务的时候人工提取特征会简单有效,但是并不能通用。
深度学习的特征提取并不依靠人工,而是机器自动提取的。这也是为什么我们说深度学习的可解释性很差,因为有时候深度学习虽然能有好的表现,但并不知道它的原理是什么。
# 3.1.3 深度学习的优缺点
[1] 优点
- 学习能力强:从结果来看,深度学习的表现非常好,他的学习能力非常强。
- 覆盖范围广,适应性好:深度学习的神经网络层数很多,宽度很广,理论上可以映射到任意函数,所以能解决很复杂的问题。
- 数据驱动,上限高:深度学习高度依赖数据,数据量越大,他的表现就越好。在图像识别、面部识别、NLP等部分任务甚至已经超过了人类的表现。同时还可以通过调参进一步提高它的上限。
- 可移植性好:由于深度学习的优异表现,有很多框架可以使用,例如 TensorFlow、Pytorch。这些框架可以兼容很多平台。
[2] 缺点
- 计算量大,便携性差:深度学习需要大量的数据很大量的算力,所以成本很高。并且现在很多应用还不适合在移动设备上使用。目前已经有很多公司和团队在研发针对便携设备的芯片。这个问题未来会得到解决。
- 硬件需求高:深度学习对算力要求很高,普通的 CPU 已经无法满足深度学习的要求。主流的算力都是使用 GPU 和 TPU,所以对于硬件的要求很高,成本也很高。
- 模型设计复杂:深度学习的模型设计非常复杂,需要投入大量的人力物力和时间来开发新的算法和模型,大部分人只能使用现成的模型。
- 没有”人性”,容易存在偏见:由于深度学习依赖数据,并且可解释性不高。在训练数据不平衡的情况下会出现性别歧视、种族歧视等问题。
# 3.1.4 典型的4种深度学习算法
典型的4种深度学习算法有卷积神经网络(CNN)、循环神经网络(RNN)、生成对抗网络(GAN)、深度强化学习(RL)。
[1] 卷积神经网络-CNN
- 典型的 CNN 由3个部分构成:卷积层、池化层、全连接层。
- 卷积层负责提取图像中的局部特征;池化层用来大幅降低参数量级(降维);全连接层类似传统神经网络的部分,用来输出想要的结果。
[2] 生成对抗网络–GAN
- GAN通过生成器的神经网络模型生成新的数据,而由鉴别器的神经网络模型评估这些数据的真实性。循环这一步骤,直至算法认为生成的数据达到标准。
- 使用GAN创建新的合成图像,生成器会接受随机数并返回图像。
[3] 循环神经网络–RNN
- RNN是一类具有短期记忆能力的神经网络。循环神经网络已经被广泛应用在语音识别、语言翻译以及图片描述等任务上。
- 在RNN中,神经元不但可以接受其他神经元的信息,也可以接受自身的信息,形成具有环路的网络结构,RNN由此得名。
[4] 深度强化学习-RL
- 强化学习是机器学习的一个分支,强调如何基于环境行动,以取得最大化的预期利益,其灵感来源于心理学中的行为主义理论,即有机体如何在环境的奖励或惩罚刺激下,逐步形成对刺激的预期,产生能最大化利益的习惯性行为。
- 例如:Agent表示机器人,Enviroment表示环境,强化学习其实是在环境和机器人之间的互动,环境通过对机器人产生奖励,刺激机器人产生下一个Action,如此不断进行下去,这与条件反射非常像。
# 3.1.5 自己对深度学习发展的看法
以下是我自己对深度学习的一点儿看法,说的也不一定对,仅供参考。
现有的一些效果比较好的算法,其本质很多都是仿生,生命科学的发展和突破,也会极大的促进人工智能的发展和突破。
- 卷积神经网络CNN是参考人类视觉原理实现的。生成对抗网络RNN其实就是羊群与狼群的共同进化过程。循环神经网络RNN参考人类理解文字的原理,其中的LSTM改进就是看内容抓重点。深度强化学习RL其实就是赏罚机制,宠物驯化过程就是采取这种方式。
- 数学建模时接触到的现代优化算法,例如:遗传算法、蚁群算法、鱼群算法...其参考的也是遗传变异过程、蚁群和鱼群的寻路过程。
- 若是对生物大脑的记忆的具体机制真正弄清楚,AI科学家就可以照葫芦画瓢去用机器实现,人工智能领域也将会迎来重大突破。
# 3.2 卷积神经网络-CNN
# 3.2.1 CNN 的基本介绍
CNN 最擅长的就是图片的处理,它受到人类视觉神经系统的启发。目前 CNN 已经得到了广泛的应用,比如:人脸识别、自动驾驶、美图秀秀、安防等很多领域。
CNN 有2大特点:
- 能够有效的将大数据量的图片降维成小数据量。
- 能够有效的保留图片特征,符合图片处理的原则。
# 3.2.2 CNN 解决了什么问题
在 CNN 出现之前,图像对于人工智能来说是一个难题,有2个原因:
1)图像需要处理的数据量太大,导致成本很高,效率很低。
- 现在随随便便一张图片都是 1000×1000 像素以上的, 每个像素都有RGB 3个参数来表示颜色信息。假如我们处理一张 1000×1000 像素的图片,就需要处理3百万个参数。
- CNN 解决的第一个问题就是“将复杂问题简化”,把大量参数降维成少量参数,再做处理。在大部分场景下,降维并不会影响结果。比如1000像素的图片缩小成200像素,并不影响肉眼认出来图片中是一只猫还是一只狗,机器也是如此。
2)图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高。
- 图片数字化的传统方式简化一下,假如有圆形是1,没有圆形是0,那么圆形的位置不同就会产生完全不同的数据表达。但是从视觉的角度来看,图像的内容并没有发生变化,只是位置发生了变化。
- CNN 解决了这个问题,他用类似视觉的方式保留了图像的特征,当图像做翻转,旋转或者变换位置时,它也能有效的识别出来是类似的图像。
# 3.2.3 人类的视觉原理
深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:
对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:
我们可以看到,在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。
那么我们可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。
# 3.2.4 CNN 的基本原理
典型的 CNN 由3个部分构成:1)卷积层 2)池化层 3)全连接层
卷积层负责提取图像中的局部特征;池化层用来大幅降低参数量级(降维);全连接层类似传统神经网络的部分,用来输出想要的结果。
Step1:卷积——提取特征
这个过程可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。卷积层的运算过程如下图,用一个卷积核扫完整张图片:

在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6中基础模式就能描绘出一副图像。以下就是25种不同的卷积核的示例:

总结:卷积层的通过卷积核的过滤提取出图片中局部的特征,跟上面提到的人类视觉的特征提取类似。
Step2:池化层——数据降维,避免过拟合
池化层简单说就是下采样,它可以大大降低数据的维度。下图中,我们可以看到,原始图片是20×20的,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。

总结:池化层相比卷积层可以更有效的降低数据维度,这么做不但可以大大减少运算量,还可以有效的避免过拟合。
Step3:全连接层——输出结果
这个部分就是最后一步了,经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。
典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 LeNet-5 的结构就如下图所示:卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层
# 3.2.5 CNN 的实际应用
卷积神经网络 – CNN 很擅长处理图像,而视频是图像的叠加,所以同样擅长处理视频内容。
[1] 图像分类、检索
- 图像分类是比较基础的应用,他可以节省大量的人工成本,将图像进行有效的分类。对于一些特定领域的图片,分类的准确率可以达到 95%+,已经算是一个可用性很高的应用了。
- 典型场景:图像搜索…
[2] 目标定位检测
- 可以在图像中定位目标,并确定目标的位置及大小。
- 典型场景:自动驾驶、安防、医疗…
[3] 目标分割
- 简单理解就是一个像素级的分类。它可以对前景和背景进行像素级的区分、再高级一点还可以识别出目标并且对目标进行分类。
- 典型场景:美图秀秀、视频后期加工、图像生成…
[4] 人脸识别
- 人脸识别已经是一个非常普及的应用了,在很多领域都有广泛的应用。
- 典型场景:安防、金融、生活…
[5] 骨骼识别
- 骨骼识别是可以识别身体的关键骨骼,以及追踪骨骼的动作。
- 典型场景:安防、电影、图像视频生成、游戏…
# 3.3 生成对抗网络–GAN
# 3.3.1 GAN 的基本介绍
生成对抗网络 – GAN 是最近几年很热门的一种无监督算法,它能生成出非常逼真的照片以及视频。
GAN的设计初衷:监督学习的训练集需要大量的人工标注数据,这个过程是成本很高且效率很低的。而人工判断生成结果的好坏也是如此,有成本高和效率低的问题。而 GAN 能自动完成这个过程,且不断的优化,这是一种效率非常高,且成本很低的方式。
# 3.3.2 GAN 的基本原理
生成对抗网络(GAN)由2个重要的部分构成:
- 生成器(Generator):通过机器生成数据(大部分情况下是图像),目的是“骗过”判别器
- 判别器(Discriminator):判断这张图像是真实的还是机器生成的,目的是找出生成器做的“假数据”
Step1:固定「判别器D」,训练「生成器G」
- 我们使用一个还 OK 判别器,让一个「生成器G」不断生成“假数据”,然后给这个「判别器D」去判断。
- 一开始,「生成器G」还很弱,所以很容易被揪出来。但是随着不断的训练,「生成器G」技能不断提升,最终骗过了「判别器D」。到了这个时候,「判别器D」基本属于瞎猜的状态,判断是否为假数据的概率为50%。
Step2:固定「生成器G」,训练「判别器D」
- 当通过了第一阶段,继续训练「生成器G」就没有意义了。这个时候我们固定「生成器G」,然后开始训练「判别器D」。
- 「判别器D」通过不断训练,提高了自己的鉴别能力,最终他可以准确的判断出所有的假图片。到了这个时候,「生成器G」已经无法骗过「判别器D」。
Step3:循环阶段一和阶段二
- 通过不断的循环,「生成器G」和「判别器D」的能力都越来越强。
- 最终我们得到了一个效果非常好的「生成器G」,我们就可以用它来生成我们想要的图片了。
# 3.3.3 GAN 的优缺点
[1] 3个优势
- 能更好建模数据分布(图像更锐利、清晰)
- 理论上,GAN 能训练任何一种生成器网络。其他的框架需要生成器网络有一些特定的函数形式,比如输出层是高斯的。
- 无需利用马尔科夫链反复采样,无需在学习过程中进行推断,没有复杂的变分下界,避开近似计算棘手的概率的难题。
[2] 2个缺陷
- 难训练,不稳定。生成器和判别器之间需要很好的同步,但是在实际训练中很容易D收敛,G发散。D/G 的训练需要精心的设计。
- 模式缺失问题。GAN 的学习过程可能出现模式缺失,生成器开始退化,总是生成同样的样本点,无法继续学习。
# 3.3.4 GAN 的典型算法
GAN 算法有数百种之多,大家对于 GAN 的研究呈指数级的上涨,目前每个月都有数百篇论坛是关于对抗网络的。下图是每个月关于 GAN 的论文发表数量:
可以在 the-gan-zoo (opens new window) 开源项目里查看几乎所有的 GAN 算法,这里挑了10个比较有代表性的算法如下:
# 3.3.5 GAN 的实际应用
GAN 目前主要用于图像生成领域,以下介绍几种常见的实际应用。
[1] 生成图像数据集
人工智能的训练是需要大量的数据集的,如果全部靠人工收集和标注,成本是很高的。GAN 可以自动的生成一些数据集,提供低成本的训练数据。
[2] 生成人脸照片
生成人脸照片是大家很熟悉的应用,但是生成出来的照片用来做什么是需要思考的问题,因为这种人脸照片还处于法律的边缘。
[3] 生成照片、漫画人物
GAN 不但能生成人脸,还能生成其他类型的照片,甚至是漫画人物。
[4] 图像到图像的转换
简单说就是把一种形式的图像转换成另外一种形式的图像,就好像加滤镜一样神奇。例如:把草稿转换成照、把卫星照片转换为Google地图的图片、把照片转换成油画、把白天转换成黑夜。

[5] 文字到图像的转换
在2016年标题为“ StackGAN:使用 StackGAN 的文本到逼真照片的图像合成 (opens new window) ”的论文中,演示了使用 GAN,特别是他们的 StackGAN,从鸟类和花卉等简单对象的文本描述中生成逼真的照片。
[6] 照片到Emoji
GAN 可以通过人脸照片自动生成对应的表情(Emoji)。
[7] 照片编辑
使用GAN可以生成特定的照片,例如更换头发颜色、更改面部表情、甚至是改变性别。
[8] 预测不同年龄的长相
给一张人脸照片, GAN 就可以帮你预测不同年龄阶段你会长成什么样。
[9] 提高照片分辨率,让照片更清晰
给GAN一张照片,他就能生成一张分辨率更高的照片,使得这个照片更加清晰。

[10] 照片修复
假如照片中有一个区域出现了问题(例如被涂上颜色或者被抹去),GAN可以修复这个区域,还原成原始的状态。
# 3.4 循环神经网络–RNN
# 3.4.1 RNN 的基本介绍
NLP里最常用、最传统的深度学习模型就是循环神经网络 RNN。这个模型的命名已经说明了数据处理方法,是按顺序按步骤读取的。与人类理解文字的道理差不多,看书都是一个字一个字,一句话一句话去理解的。
# 3.4.2 RNN 的基本原理
RNN 跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。
假如需要判断用户的说话意图(问天气、问时间、设置闹钟…),用户说了一句“what time is it?”,我们需要先对这句话进行分词,然后按照顺序输入 RNN。

RNN 的缺点也比较明显,通过上面的例子,我们可以发现,短期的记忆影响较大(如橙色区域),但是长期的记忆影响就很小(如黑色和绿色区域),这就是 RNN 存在的短期记忆问题。
- RNN 有短期记忆问题,无法处理很长的输入序列
- 训练 RNN 需要投入极大的成本
由于 RNN 的短期记忆问题,后来又出现了基于 RNN 的优化算法。
# 3.4.3 RNN 的优化算法
RNN 是一种死板的逻辑,越晚的输入影响越大,越早的输入影响越小,且无法改变这个逻辑。LSTM(长短期记忆网络) 做的最大的改变就是打破了这个死板的逻辑,而改用了一套灵活了逻辑——只保留重要的信息。
LSTM 类似下面的划重点,它可以保留较长序列数据中的「重要信息」,忽略不重要的信息。这样就解决了 RNN 短期记忆的问题。
GRU 是 LSTM 的一个变体,它保留了 LSTM 划重点,遗忘不重要信息的特点,在 long-term 传播的时候也不会被丢失。GRU 主要是在 LSTM 的模型上做了一些简化和调整,在训练数据集比较大的情况下可以节省很多时间。
# 3.4.4 RNN 的实际应用
只要涉及到序列数据的处理问题,都可以使用到,NLP 就是一个典型的应用场景。
- 文本生成:类似上面的填空题,给出前后文,然后预测空格中的词是什么。
- 机器翻译:翻译工作也是典型的序列问题,词的顺序直接影响了翻译的结果。
- 语音识别:根据输入音频判断对应的文字是什么。
- 生成图像描述:类似看图说话,给一张图,能够描述出图片中的内容。这个往往是 RNN 和 CNN 的结合。
- 视频标记:他将视频分解为图片,然后用图像描述来描述图片内容。
# 3.5 深度强化学习-RL
# 3.5.1 RL 的基本介绍
强化学习并不是某一种特定的算法,而是一类算法的统称。如果用来做对比的话,它跟监督学习,无监督学习是类似的,是一种统称的学习方式。
强化学习算法的思路非常简单,以游戏为例,如果在游戏中采取某种策略可以取得较高的得分,那么就进一步「强化」这种策略,以期继续取得较好的结果。这种策略与日常生活中的各种「绩效奖励」非常类似。
# 3.5.2 RL 的算法分类
免模型学习(Model-Free)和有模型学习(Model-Based)是强化学习算法的2大分类,二者的重要差异是:智能体是否能完整了解或学习到所在环境的模型。
- 有模型学习:对环境有提前的认知,可以提前考虑规划,但是缺点是如果模型跟真实世界不一致,那么在实际使用场景下会表现的不好。
- 免模型学习:放弃了模型学习,在效率上不如前者,但是这种方式更加容易实现,也容易在真实场景下调整到很好的状态。所以免模型学习方法更受欢迎,得到更加广泛的开发和测试。
# 3.5.3 RL 的实际应用
强化学习目前还不够成熟,应用场景也比较局限。最大的应用场景就是游戏了。
[1] 机器人领域
- 机器人很像强化学习里的「代理」,在机器人领域,强化学习也可以发挥巨大的作用。
[2] 游戏领域
- 2016年:AlphaGo Master 击败李世石,使用强化学习的 AlphaGo Zero 仅花了40天时间,就击败了自己的前辈 AlphaGo Master。
- 2019年1月25日:AlphaStar 在《星际争霸2》中以 10:1 击败了人类顶级职业玩家。
- 2019年4月13日:OpenAI 在《Dota2》的比赛中战胜了人类世界冠军。
# 4. 参考资料
[1] 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用) from EasyAI (opens new window)
[2] 什么是生成对抗网络 – GAN?(基本概念+工作原理) from EasyAI (opens new window)
[3] 一文看懂循环神经网络-RNN(独特价值+优化算法+实际应用) from EasyAI (opens new window)
[4] 一文看懂什么是强化学习?(基本概念+应用场景+主流算法) from EasyAI (opens new window)
[5] RNN 结构详解 from 机器之心 (opens new window)
[6] 「75页PDF」面向所有人的机器学习科普大全 from EasyAI (opens new window)
[7] 「65页PDF」深度学习精华汇总-产品经理的AI知识库 from EasyAI (opens new window)
[8] 「41页PDF」引入AI前需要评估的 from EasyAI (opens new window)
[9] 训练集、验证集、测试集(附:分割方法+交叉验证)from EasyAI (opens new window)