声明:本文章是根据网上资料,加上自己整理和理解而成,仅为记录自己学习的点点滴滴。可能有错误,欢迎大家指正。
阅读的书籍主要为《UnderstandingDeepLearning》《动手学深度学习》
1956 年提出 AI 概念,短短3年后(1959) Arthur Samuel 就提出了机器学习的概念:
Field of study that gives computers the ability to learn without being explicitly programmed.
机器学习研究和构建的是一种特殊算法(而非某一个特定的算法),能够让计算机自己在数据中学习从而进行预测。
所以,机器学习不是某种具体的算法,而是很多算法的统称。
机器学习包含了很多种不同的算法,深度学习就是其中之一,其他方法包括决策树,聚类,贝叶斯等。深度学习的灵感来自大脑的结构和功能,即许多神经元的互连。人工神经网络(ANN)是模拟大脑生物结构的算法。不管是机器学习还是深度学习,都属于人工智能(AI)的范畴。所以人工智能、机器学习、深度学习可以用下面的图来表示:
图1 人工智能、机器学习、深度学习的关系
1. 什么是人工智能
1.1 传统软件 VS 人工智能
(1)传统软件
传统软件是「if-then」的基本逻辑,人类通过自己的经验总结出一些有效的规则,然后让计算机自动的运行这些规则。传统软件永远不可能超越人类的知识边界,因为所有规则都是人类制定的。
简单的说:传统软件是「基于规则」的,需要人为的设定条件,并且告诉计算机符合这个条件后该做什么。
图2 传统软件的逻辑
这种逻辑在处理一些简单问题时非常好用,因为规则明确,结果都是可预期的,程序员就是软件的上帝。但是现实生活中充满了各种各样的复杂问题,这些问题几乎不可能通过制定规则来解决,比如人脸识别通过规则来解决效果会很差。
(2)人工智能
AI,即人工智能(Artificial Intelligence),是一门研究和开发用于模拟、延伸和扩展人类智能的理论、方法、技术及应用系统的科学。它旨在创建能够执行通常需要人类智能的任务的机器或软件,如视觉感知、语言理解、决策制定和学习等。
AI系统通常分为两大类:
-
狭义AI(Narrow AI):也称为弱AI,这类系统设计用于执行特定任务,如语音识别、图像识别或推荐系统。它们在特定领域内表现出色,但不具备人类水平的通用智能。
-
通用AI(General AI):也称为强AI或人工通用智能(AGI),这类系统具有与人类相似的广泛认知能力,能够在各种领域和任务中自主学习和应用知识。目前,通用AI仍处于理论和研究阶段,尚未实现。
AI技术的发展涉及多个领域,包括机器学习、深度学习、自然语言处理、计算机视觉等。AI现在已经发展出很多不同分支,技术原理也多种多样,这里只介绍当下最火的深度学习。
深度学习的技术原理跟传统软件的逻辑完全不同:
机器从「特定的」大量数据中总结规律,归纳出某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。
图3 人工智能的本质逻辑
这就是人工智能发展到现阶段的本质逻辑。而人工智能总结出来的知识并不是像传统软件一样,可以直观精确的表达出来。它更像人类学习到的知识一样,比较抽象,很难表达。再通俗点讲:人工智能本质是一种工具, 跟我们使用的锤子、汽车、电脑……都一样。
但传统软件和人工智能都是工具,是为了解决实际问题而存在的。
1.2 人工智能的缺陷
当下的人工智能是从大量数据中总结归纳知识,这种粗暴的「归纳法」有一个很大的问题是:知其然,但不知所以然。什么意思呢?就是人工智能能通过【归纳法】总结知识,只关注现象,并不关注为甚么。因此他会犯很低级的错误。如:
图4 AI犯的低级错误
上图显示了在一张丛林猴子的照片中 ps 上一把吉他的效果。这导致深度网络将猴子误认为人类,同时将吉他误认为鸟,大概是因为它认为人类比猴子更可能携带吉他,而鸟类比吉他更可能出现在附近的丛林中。
也正是因为归纳逻辑,所以需要依赖大量的数据。数据越多,归纳出来的经验越具有普适性。
1.3 人工智能的3个级别
在探寻 AI 边界时,可先简单粗暴把 AI 分为3个级别:弱人工智能、强人工智能、超人工智能。
图5 AI的级别
弱人工智能:也称限制领域人工智能(Narrow AI)或应用型人工智能(Applied AI),指的是专注于且只能解决特定领域问题的人工智能。例如:AlphaGo、Siri、FaceID……
强人工智能:又称通用人工智能(Artificial General Intelligence)或完全人工智能(Full AI),指的是可以胜任人类所有工作的人工智能。
强人工智能具备以下能力:
- 存在不确定性因素时进行推理,使用策略,解决问题,制定决策的能力
- 知识表示的能力,包括常识性知识的表示能力
- 规划能力
- 学习能力
- 使用自然语言进行交流沟通的能力
- 将上述能力整合起来实现既定目标的能力
超人工智能:假设计算机程序通过不断发展,可以比世界上最聪明,最有天赋的人类还聪明,那么,由此产生的人工智能系统就可以被称为超人工智能。
我们当前所处的阶段是弱人工智能,强人工智能还没有实现(甚至差距较远),而超人工智能更是连影子都看不到。所以“特定领域”目前还是 AI 无法逾越的边界。
1.4 人工智能的能力边界
如果再深入一点,从理论层面来解释 AI 的能力边界,就要把图灵大师搬出来了。图灵在上世纪30年代中期,就在思考3个问题:
- 世界上是否所有数学问题都有明确的答案?
- 如果有明确的答案,是否可以通过有限的步骤计算出答案?
- 对于那些有可能在有限步骤计算出来的数学问题,能否有一种假象的机械,让他不断运动,最后当机器停下来的时候,那个数学问题就解决了?
图灵还真设计出来一套方法,后人称它为图灵机。今天所有的计算机,包括全世界正在设计的新的计算机,从解决问题的能力来讲,都没有超出图灵机的范畴。
通过上面的3个问题,图灵已经划出了界限,这个界限不但适用于今天的 AI ,也适用于未来的 AI 。下面我们再进一步把边界清晰的描述一下:
- 世界上有很多问题,只有一小部分是数学问题
- 在数学问题里,只有一小部分是有解的
- 在有解的问题中,只有一部分是理想状态的图灵机可以解决的
- 在后一部分(图灵机可解决的部分),又只有一部分是今天的计算机可以解决的
- 而 AI 可以解决的问题,又只是计算机可以解决问题的一部分。
图6 AI的边界
1.5 总结
人工智能的基本原理:机器从「特定的」大量数据中总结规律,形成某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。
在这个基本原理的基础上,有3个特征:
- 人工智能本质上是一种工具
- 人工智能技能只能解决特定的问题,而不是什么都能做
- 人工智能属于归纳逻辑,可以告诉你是什么,但是不能告诉你为什么
2. 什么是机器学习?
机器学习(Machine Learning,简称ML)是人工智能(AI)的一个分支,它关注如何设计和开发通过经验自动改进的算法和统计模型。机器学习的核心思想是让计算机系统能够利用数据,而不是通过明确的编程指令,来完成任务和提高性能。
2.1 机器学习的基本思路
无论使用什么算法,使用什么样的数据,最根本的思路都逃不出下面的3步!
- 把现实生活中的问题抽象成数学模型,并且很清楚模型中不同参数的作用
- 利用数学方法对这个数学模型进行求解,从而解决现实生活中的问题
- 评估这个数学模型,是否真正的解决了现实生活中的问题,解决的如何?
图7 机器学习的基本思路
当我们理解了这个基本思路,我们就能发现:不是所有问题都可以转换成数学问题的。那些没有办法转换的现实问题 AI 就没有办法解决。同时最难的部分也就是把现实问题转换为数学问题这一步。
2.2 机器学习分类
机器学习根据训练方法大致可以分为3大类:监督学习、非监督学习、强化学习
(1)监督学习
监督学习是指我们给算法一个数据集,并且给定正确答案。机器通过数据来学习正确答案的计算方法。
举个例子:我们准备了一大堆猫和狗的照片,我们想让机器学会如何识别猫和狗。当我们使用监督学习的时候,我们需要给这些照片打上标签。然后将打好标签的照片用来训练 。我们给照片打的标签就是“正确答案”,机器通过大量学习,就可以学会在新照片中认出猫和狗。这种通过大量人工打标签来帮助机器学习的方式就是监督学习。这种学习方式效果非常好,但是成本也非常高。
图8 (a) 打好标签的照片 (b)识别出未打好标签的照片
(2)非监督学习
非监督学习中,给定的数据集没有“正确答案”,所有的数据都是一样的。无监督学习的任务是从给定的数据集中,挖掘出潜在的结构。举个例子:我们把一堆猫和狗的照片给机器,不给这些照片打任何标签,但是我们希望机器能够将这些照片分分类。通过学习,机器会把这些照片分为2类,一类都是猫的照片,一类都是狗的照片。
图9 (a) 未分类的照片 (b)学习后分成两类
虽然跟上面的监督学习看上去结果差不多,但是有着本质的差别:
非监督学习中,虽然照片分为了猫和狗,但是机器并不知道哪个是猫,哪个是狗。对于机器来说,相当于分成了 A、B 两类。
(3)强化学习
强化学习更接近生物学习的本质,因此有望获得更高的智能。它关注的是智能体如何在环境中采取一系列行为,从而获得最大的累积回报。通过强化学习,一个智能体应该知道在什么状态下应该采取什么行为。最典型的场景就是打游戏。
2.3 机器学习的步骤
图10 机器学习的步骤
下面举例说明:假设我们的任务是通过酒精度和颜色来区分红酒和啤酒,下面详细介绍一下机器学习中每一个步骤是如何工作的。
图11 案例目标:区分红酒和啤酒
步骤1:收集数据
我们在超市买来一堆不同种类的啤酒和红酒,然后再买来测量颜色的光谱仪和用于测量酒精度的设备。这个时候,我们把买来的所有酒都标记出他的颜色和酒精度,会形成下面这张表格。
颜色 | 酒精度 | 种类 |
---|---|---|
610 | 5 | 啤酒 |
599 | 13 | 红酒 |
693 | 14 | 红酒 |
… | … | … |
这一步非常重要,因为数据的数量和质量直接决定了预测模型的好坏。
步骤2:数据准备
在这个例子中,我们的数据是很工整的,但是在实际情况中,我们收集到的数据会有很多问题,所以会涉及到数据清洗等工作。当数据本身没有什么问题后,我们将数据分成3个部分:训练集(60%)、验证集(20%)、测试集(20%),用于后面的验证和评估工作。
图12 数据要分为3个部分:训练集、验证集、测试集
步骤3:选择一个模型
研究人员和数据科学家多年来创造了许多模型。有些非常适合图像数据,有些非常适合于序列(如文本或音乐),有些用于数字数据,有些用于基于文本的数据。在我们的例子中,由于我们只有2个特征,颜色和酒精度,我们可以使用一个小的线性模型,这是一个相当简单的模型。
步骤4:训练
大部分人都认为这个是最重要的部分,其实并非如此~ 数据数量和质量、还有模型的选择比训练本身重要更多(训练知识台上的3分钟,更重要的是台下的10年功)。这个过程就不需要人来参与的,机器独立就可以完成,整个过程就好像是在做算术题。因为机器学习的本质就是将问题转化为数学问题,然后解答数学题的过程。
步骤5:评估
一旦训练完成,就可以评估模型是否有用。这是我们之前预留的验证集和测试集发挥作用的地方。评估的指标主要有 准确率、召回率、F值。这个过程可以让我们看到模型如何对尚未看到的数是如何做预测的。这意味着代表模型在现实世界中的表现。
步骤6:参数调整
完成评估后,您可能希望了解是否可以以任何方式进一步改进训练。我们可以通过调整参数来做到这一点。当我们进行训练时,我们隐含地假设了一些参数,我们可以通过认为的调整这些参数让模型表现的更出色。
步骤7:预测
我们上面的6个步骤都是为了这一步来服务的。这也是机器学习的价值。这个时候,当我们买来一瓶新的酒,只要告诉机器他的颜色和酒精度,他就会告诉你,这时啤酒还是红酒了。
3. 什么是深度学习
3.1 大白话解释深度学习
看了很多版本的解释,发现李开复在《人工智能》一书中讲的是最容易理解的,所以下面直接引用他的解释:我们以识别图片中的汉字为例。
假设深度学习要处理的信息是“水流”,而处理数据的深度学习网络是一个由管道和阀门组成的巨大水管网络。网络的入口是若干管道开口,网络的出口也是若干管道开口。这个水管网络有许多层,每一层由许多个可以控制水流流向与流量的调节阀。根据不同任务的需要,水管网络的层数、每层的调节阀数量可以有不同的变化组合。对复杂任务来说,调节阀的总数可以成千上万甚至更多。水管网络中,每一层的每个调节阀都通过水管与下一层的所有调节阀连接起来,组成一个从前到后,逐层完全连通的水流系统。
那么,计算机该如何使用这个庞大的水管网络来学习识字呢?
比如,当计算机看到一张写有“田”字的图片,就简单将组成这张图片的所有数字(在计算机里,图片的每个颜色点都是用“0”和“1”组成的数字来表示的)全都变成信息的水流,从入口灌进水管网络。
我们预先在水管网络的每个出口都插一块字牌,对应于每一个我们想让计算机认识的汉字。这时,因为输入的是“田”这个汉字,等水流流过整个水管网络,计算机就会跑到管道出口位置去看一看,是不是标记由“田”字的管道出口流出来的水流最多。如果是这样,就说明这个管道网络符合要求。如果不是这样,就调节水管网络里的每一个流量调节阀,让“田”字出口“流出”的水最多。
这下,计算机要忙一阵了,要调节那么多阀门!好在计算机的速度快,暴力的计算加上算法的优化,总是可以很快给出一个解决方案,调好所有阀门,让出口处的流量符合要求。
下一步,学习“申”字时,我们就用类似的方法,把每一张写有“申”字的图片变成一大堆数字组成的水流,灌进水管网络,看一看,是不是写有“申”字的那个管道出口流水最多,如果不是,我们还得再调整所有的阀门。这一次,要既保证刚才学过的“田”字不受影响,也要保证新的“申”字可以被正确处理。
如此反复进行,知道所有汉字对应的水流都可以按照期望的方式流过整个水管网络。这时,我们就说,这个水管网络是一个训练好的深度学习模型了。当大量汉字被这个管道网络处理,所有阀门都调节到位后,整套水管网络就可以用来识别汉字了。这时,我们可以把调节好的所有阀门都“焊死”,静候新的水流到来。
与训练时做的事情类似,未知的图片会被计算机转变成数据的水流,灌入训练好的水管网络。这时,计算机只要观察一下,哪个出水口流出来的水流最多,这张图片写的就是哪个字。
深度学习大致就是这么一个用人类的数学知识与计算机算法构建起来的整体架构,再结合尽可能多的训练数据以及计算机的大规模运算能力去调节内部参数,尽可能逼近问题目标的半理论、半经验的建模方式。
3.2 传统机器学习 VS 深度学习
传统机器学习和深度学习的相似点
在数据准备和预处理方面,两者是很相似的。
他们都可能对数据进行一些操作:数据清洗、数据标签、归一化、去噪、降维
传统机器学习和深度学习的核心区别
传统机器学习的特征提取主要依赖人工,针对特定简单任务的时候人工提取特征会简单有效,但是并不能通用。
深度学习的特征提取并不依靠人工,而是机器自动提取的。这也是为什么大家都说深度学习的可解释性很差,因为有时候深度学习虽然能有好的表现,但是我们并不知道他的原理是什么。
3.3 深度学习的优缺点
优点1:学习能力强:从结果来看,深度学习的表现非常好,他的学习能力非常强。
优点2:覆盖范围广,适应性好:深度学习的神经网络层数很多,宽度很广,理论上可以映射到任意函数,所以能解决很复杂的问题。
优点3:数据驱动,上限高:深度学习高度依赖数据,数据量越大,他的表现就越好。在图像识别、面部识别、NLP 等部分任务甚至已经超过了人类的表现。同时还可以通过调参进一步提高他的上限。
优点4:可移植性好:由于深度学习的优异表现,有很多框架可以使用,例如 TensorFlow、Pytorch。这些框架可以兼容很多平台。
缺点1:计算量大,便携性差:深度学习需要大量的数据很大量的算力,所以成本很高。并且现在很多应用还不适合在移动设备上使用。目前已经有很多公司和团队在研发针对便携设备的芯片。这个问题未来会得到解决。
缺点2:硬件需求高:深度学习对算力要求很高,普通的 CPU 已经无法满足深度学习的要求。主流的算力都是使用 GPU 和 TPU,所以对于硬件的要求很高,成本也很高。
缺点3:模型设计复杂:深度学习的模型设计非常复杂,需要投入大量的人力物力和时间来开发新的算法和模型。大部分人只能使用现成的模型。
缺点4:没有”人性”,容易存在偏见:由于深度学习依赖数据,并且可解释性不高。在训练数据不平衡的情况下会出现性别歧视、种族歧视等问题。
3.4 深度学习VS 神经网络
深度学习的概念源于人工神经网络的研究,但是并不完全等于传统神经网络。不过在叫法上,很多深度学习算法中都会包含”神经网络”这个词,比如:卷积神经网络、循环神经网络。
所以,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。
4. 总结
深度学习属于机器学习的范畴,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。深度学习和传统机器学习在数据预处理上都是类似的。核心差别在特征提取环节,深度学习由机器自己完成特征提取,不需要人工提取。