1950年图灵发表论文《计算机器与智能》( Computing Machinery and Intelligence),提出了“机器智能”(Machine Intelligent)的概念,并且提出了著名的“图灵测试”的方法来判断机器是否有智能。
1956年,达特茅斯会议,“人工智能”(Artificial Intelligent)概念被首次提出,人工智能作为一个学科开始被研究。科学家梦想着未来可以用复杂物理结构的计算机来构造复杂的拥有与人类同样智慧的机器。
计算机才刚出现,科学家就梦想到未来的样子。可见,科学不仅需要严谨的实验,也需要大胆的梦想。
人工智能学科发展至今,机器已经具备基本的观察和感知能力,能做到一定程度的理解和推理;但大部分时候,机器的认知能力不足,自适应能力不强,不能理解面临的新问题新情况,还远远达不到人类的认知能力。机器的“感知智能”从何而来?“认知”智能又如何取得突破?要从一种实现人工智能的方法——机器学习说起。
大白话:机器在某些方面已经具备人的一些能力,比如人脸识别安检(代替安保人员)来判断是否让某人进入,再比如在下棋领域,已经达到和超过人类棋手的能力;但不幸的是,那些落地的人工智能应用已经出现了各种弊端和不足,比如脸上挂个照片就能骗过安检系统,再比如剪个头发、带个眼镜,安检系统就不认识了。目前来看,好消息就是我们不用担心人工智能会把人类打趴在地,而是需要研究如何才能让机器更理解人类。
什么是机器学习?
与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。
传统程序识别猫:输入信息(比如图片),让计算机判断是否有毛茸茸的毛?是,然后再判断是否有一堆三角形的耳朵?是,然后再判断......直到判断了具备猫所有的特征,结论才是猫。如果有一项不符合,那就不是猫。当然,也可以通过判断“不具备什么特征”来进行判断,比如“身上有黑白花纹吗?”没有。传统方式要制定判断某一类别或概念的全部所需规则,梳理全部的所需规则就很难,而单个规则也可能会涉及到一些困难的概念,比如对毛茸茸的定义。
机器自学程序识别猫:计算机提供大量猫的照片,随着各种猫的照片的增加,系统会不断学习更新,最终能准确地判断出哪些是猫,哪些不是。这里有三个基础概念:
- “机器学习”是“模拟、延伸和扩展人的智能”的一条路径,是人工智能程序的一个子集;
- “机器学习”要基于大量数据,也就是说它的“智能”是用大量数据训练出来的(“喂数据”),就像教小孩要一遍遍的看书学知识,教机器也是如此,要喂数据;(敲黑板!!!这个后面会用到)
- 正是因为要处理海量数据,所以大数据技术尤为重要,而“机器学习”只是大数据技术上的一个应用。
大白话:
传统程序是人来梳理规则,程序只是把规则变成机器可理解和计算的实现,相当于师父制定出来一些规则,徒弟就照规则办事,徒弟很年轻,动手比较快,但是结果好不好全靠师父制定的规则合理不合理,是否容易执行。有些中式菜肴之所以难学,就是因为师父说的规则不明确很难量化,比如“少许”之类的,到底是多少才算少许。
而机器学习程序是机器来学习数据,从数据中总结经验,机器想学习“少许”这个规则,此时师父会手把手的教,这样是“少许”,这样是“少许”,经过千百次的手把手的实验,徒弟虽然说不出来啥叫“少许”,但是手头已经很有手感,动手拿出来的就是“少许”了。
虽然传统的机器学习算法在指纹识别、人脸检测等领域的应用基本达到了商业化要求,但“再进一步”却很艰难,直到深度学习算法的出现。
很多人分不清:模型、算法、程序这三个词的区别?
模型:将现实问题进行抽象化,抽象成数学公式。比如,人的收入和年龄、性别和学历的关系,最后抽象成一个数学公式:Y = F(A,S,E),可以先不用管这个公式具体表达是什么。
算法:算法,通俗的说就是“算”的方法,比如小学就开始学二元一次方程的解法,初中就开始学一元二次方程的解法。如何把“数学公式”表示的模型算出来,就是算法。
程序:算法可以人来算,也可以借助计算机来算,如果借助计算机来算,用计算机可理解的语言写出来“算法”,那就是程序。
什么是深度学习?
深度学习(Deep Learning)属于机器学习的子类,也是通过喂机器数据来学习,自2012年以来,是目前最热的机器学习方法。深度学习算法最初的来源是来自于神经网络算法,而神经网络的灵感来源于人类大脑的工作方式,“深度”浅显的意思就是更深了,相比传统神经网络有更多的隐含层,当然,网络结构上与传统神经网络有所不同,但是此时你可以不用去关注这些细节。
以人脸识别为例子,感受一下机器学习和深度学习的不同。
机器学习程序: 首先确定想学习人脸的“面部特征”(眼睛、鼻子等等),然后根据输入的数据学习这些“面部特征”,最后依据这些“面部特征”来识别是不是人脸。
而深度学习程序是直接学习识别判断“是不是人脸”,并不需要我们告诉机器去学习哪些“面部特征”,是机器自动学习的。只需要将“数据”喂给机器,深度学习程序就自动学会了识别判断是不是人脸。对于“使用”来说,深度学习程序就是个黑箱,我们并不确定它学习到了什么,是“面部特征”还是“轮廓特点”,只是给它一张照片输入,它就实现了识别判断。深度学习算法专家深入研究算法的各层,分析出来机器是通过先学习细节特征、再组合成更宏观的特征,最后形成“人脸”的总体感知能力。基本是分为三步:
- 根据原始输入数据,确定出哪些边和角跟识别出人脸关系最大(细节特征);
- 根据上一步找出的很多小元素(边、角等)构建层级网络,找出它们之间的各种组合(局部特征),这时可以看到鼻子、眼睛、耳朵等;
- 在构建层级网络之后,对鼻子、眼睛等局部特征进行组合就可以组成各种各样的头像,就可以确定哪些组合可以识别人脸(整体特征)。
大白话:机器学习相当于本科生学习,需要老师指出学什么,然后学生带着目的去学;而深度学习相当于研究生学习,老师只指出要解决的问题是什么,学生就会根据问题一步步拆解去学了,不同的学生拆解的步骤有所不同(深度神经网络结构不同),不深入研究的话并不知道每个学生到底怎么学的、学到了哪些知识,但最终学生把问题解决了。
机器学习和深度学习有哪些维度的不同?
机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。下图就可以展现出它们的关系。
具体不同大致有以下几点。
1. 数据依赖程度不同。随着数据量的增加,二者的表现有很大区别。深度学习适合处理大数据,而数据量比较小的时候,用传统机器学习方法也许更合适。
2. 硬件依赖程度不同。深度学习十分地依赖于硬件设施(提供计算的设施),因为计算量实在太大。它会涉及很多矩阵运算,因此很多深度学习都要求有GPU(专门为矩阵运算而设计的)参与运算。
3. 特征工程。在训练一个机器学习模型的时候,需要首先确定学习哪些特征,比如识别人脸可能并不需要[人的身高]特征。在机器学习方法中,几乎所有特征都需要人为确认后,再进行手工特征编码。而深度学习试图自己从数据中自动学习特征。
4. 解决问题的方式。(敲黑板,重点!)解决问题时,机器学习通常先把问题分成几块,一个个地解决好之后,再重新组合。深度学习是一次性地解决好问题。比如,任务是识别出图片上有哪些物体,并找出它们的位置。
机器学习的做法:第一步,发现是不是有物体(可动的),有三个;第二步,识别物体,分别是狗、自动车、汽车;第三步:识别物体对应位置,狗在哪里,自行车在哪里,小汽车在哪里。
深度学习的做法:直接一次完成任务,直接识别出来对应物体,同时还能标明对应物体名字、位置。
5. 训练和推理运行时间。深度学习需要花大量时间来训练,因为有太多参数要去学习。但深度学习训练出的模型优势就在于,在推理服务上运行非常快。也是刚刚提到的实时物体检测。机器学习一般几秒钟最多几小时就可以训练好,推理运行也比较快。
深度学习前加个“分布式”,又是怎么回事?
正如前面所说,面对越来越复杂的任务,数据和深度学习模型的参数规模都变得日益庞大,当训练数据词表增大到成百上千万时,如果不做任何剪枝处理,深度学习模型可能会拥有上百亿、甚至是几千亿个参数,所以深度学习“训练时间”非常久。(学太久了,相当于8年了博士研究生还没毕业。)
为了提高深度学习模型的训练效率,分布式训练出现了——即同时利用多个工作节点(计算设备),分布式地、高效地训练出性能优良的深度神经网络模型。目前主要有两种并行化/分布式训练方法:数据并行化和算法并行化,归根结底都是用“空间”(算力)换“时间”(效率)。
数据并行化,不同的机器有同一个算法的多个副本,每个机器分配到数据的一部分,然后将所有机器的计算结果按照某种方式进行合并;举个例子,高考考试在即,A要在一天内学完40000本书,要学的书实在是太多了,为了更高效完成这个学习任务,A变身成了A1,A2,A3,A4,每个变身负责学习10000本书(分成了语文、英语、数理化、史地生几部分),它们可以同时只学自己负责的那部分,等每部门学完自己的任务,A1~A4再合体成A,就相当于A完成了本次任务。是不是特像孙悟空吹一口仙气,吹来了很多的小猴子一样~
算法并行化,分布式系统中的不同机器负责单个网络模型的不同部分。比如,神经网络模型的不同网络层被分配到不同机器。继续上个例子,考试在即,A要在一天内学完40000本书,以便能够进行高考考试,那么考试可以分为记忆,理解,推理,计算,然后每台机器只学其中的一部分能力,这几部分能力可以同步学,等都学完了,合体起来就是厉害的高考生A了。
大白话:“并行化”就是一起并肩工作,能同步做的同步做,用空间来换时间。当然实际情况,比我们上面举的例子会更复杂,但基本原理是类似的。
基于深度学习的“大模型”是通往机器认知智能的桥梁吗?
前面讲到了“模型”是现实化的一种抽象,抽象成数学公式。即使深度学习的出发点是更深层次的神经网络,但细分起来也会有非常多的不同的模型(也就是不同的抽象问题的方式),对应不同的数学公式,比如常见的CNN、DNN等。
“大”模型,就是模型中比较“大”的那一类,大的具体含义也就是数学公式更复杂,它的参数更多。
2021年8月份,李飞飞和100多位学者联名发表一份200多页的研究报告《On the Opportunities and Risk of Foundation Models》,详细描述了当前大规模预训练模型面临的机遇和挑战。在文章中,大模型被统一命名为Foundation Models,可以翻译为基础模型或者是基石模型,论文肯定了Foundation Models对智能体基本认知能力的推动作用。2017年Transformer结构的提出,使得深度学习模型参数突破了1亿。到了BERT网络模型的提出,使得参数量首次超过3亿规模,GPT-3模型超过百亿,近两年国内的大模型也蓬勃发展,已经出来多个参数超过千亿的大模型。
参数量更多,学习的数据量更多,模型的泛化能力更强,泛化能力更强通俗来讲就是一专多能,可以完成多个不同的任务。比如目前开源开放的浪潮源1.0模型,其参数规模高达2457亿,训练采用的中文数据集达5000GB,相比GPT-3模型1750亿参数量和570GB训练数据集,“源1.0”参数规模领先40%,训练数据集规模领先近10倍。“源1.0”在语言智能方面表现优异,获得中文语言理解评测基准CLUE榜单的零样本学习和小样本学习两类总榜冠军,测试结果显示,人群能够准确分辨人与“源1.0”作品差别的成功率已低于50%。
目前开发者可以在源1.0”官网https://air.inspur.com提出申请,经审核授权后即可免费使用“源1.0”大模型API,基于“源1.0”模型探索算法创新以及开发各类智能化应用。
大模型真的是通往机器学习认知智能的桥梁吗?目前还无法做出准确的回答,作为NLP的从业者,你可以真实的去体验,开发一些有意思的AI应用,真正的解决行业和生活中的问题,让AI使我们的生活工作更美好。