【深度学习】

5 篇文章 0 订阅
2 篇文章 0 订阅

什么是深度学习?

  1. 感知器

为了实现模拟人类的学习,科学家们首先设计了构成神经网络的基本结构神经元(感知器模型),然后再由大量的神经元构成复杂的,能够实现各种功能的神经网络。
这种模式和超能陆战队中的磁力机器人很像,大量的磁力机器人可以构成各种形态,完成各种复杂的任务。
感知器模型的原型来自于生物学上的神经元,我们可以看到生物学上的神经元能够抽象成树突,轴突和细胞体三部分。
其中树突接收来自其他神经元的信号,因此它的分布范围可代表该神经元接受刺激的范围。
细胞体综合所有树突的信号,轴突则是自细胞体发出的一条突起,传递来自细胞体发出的信号给下一个神经元。
感知器可以描述为一个基本的学习结构,例如如果我们需要培养一个德智体美劳全面发展的小孩,每个感知器就可以相当于其中一个课程方面的学习。
假如我们需要学习语文,输入x就相当于课文中的每一个词语,权值w相当于我们对词语的熟悉程度,最终对所有词语的加权后我们理解整个句子,再通过激活函数把句子里的重点划出来(激活函数相当于突出关键点),一次基本的学习行为就完成了。

  1. 多层感知器神经网络

我们进一步参考生物学上的神经结构,大量的外部信号刺激树突,并传导到神经元,神经元综合外部信号后通过轴突输出。
无数神经元一起构成神经中枢,并综合各个神经元轴突的输出信号进行判断。
这种传导和判断的过程反复进行,直到形成最终的判断结果,人体根据神经中枢的判断结果对外部刺激做出最终反应,这个过程就是我们的神经网络。
所以,通俗点说,多层神经网络类似于你爸妈想把你培养成德智体美劳全面发展的小孩,所以将多个课程学习的结构叠加在一起,增加你的学习内容,这样第一代鸡娃就产生了。
更牛的是,后来科学家们居然证明了,这样叠加的神经网络是一个万能学习器,如果给予足够多的支持,可以学习好任何内容(在足够多的神经元下,可以无限逼近任何问题),于是教育内卷开始了。

  1. 神经网络的困惑

神经网络是一个万能逼近器,所以从理论上来说,神经网络能够做任何有监督学习的任务。
不过这就好像给一个小朋友一只笔,理论上他就可以画出达芬奇的素描一样,真的只是理论上可以。
实际上神经网络在执行复杂任务时并不太给力,就好像每个人都觉得自己的小孩是个天才,但是当你真的教他读书时,你就会知道现实有多么残酷了。

我们分析一下内在的原因:

(1)样本不足且不满足真实数据的分布。
这就好像你家小孩学习就看看书上的内容,别人家的小孩还看了海淀试题和黄冈试题一样,多看题的小孩将会学习的更好。

(2)计算能力不足,难以适应大模型高强度的学习。
这就好像你家小孩夏天在家里学习,电扇也没有,空调也没有,还要照看年幼的弟弟妹妹,环境恶劣。
而别人家的小孩空调开着,好吃好喝端上来,心无旁骛,自然能够学习得更久。

(3)网络结构存在缺陷,存在梯度消失,陷入局部极值等问题。
这就好像你家小孩没有人指导,完全就是按照自己的理解学习,因此很可能对知识的理解是错误的。
而别人家的小孩有名师指导,一开始就教授了正确的学习方法,自然能够取得更好的学习效果。

所以家长们知道了,要想小孩学习好,光是逼他学习很多内容是没用的,还要有足够多的外部支持才行。
同理,要想神经网络学习好,就和我们中国的鸡娃一样,要大量的数据(买大量的参考书,参加各种补习班),要充足的算力(提供良好的学习环境),优化网络结构和学习算法(找名师教导好的学习方法)。

  1. 深度学习诞生

深度神经网络本质上和教育内卷没啥差别,首先外在条件需要大量的数据和充足的算力,然后内在条件在于有良好的学习方法和学习习惯。

(1)更深的网络结构

如何获得好的学习结果,直接的方法当然是增加神经网络的神经元数量以提高学习能力,那么同样在增加神经元数量的前提下,更深(deep)的神经网络和更胖(fat)的神经网络究竟哪个更好呢?

这就好像我们要一个小孩学习,是要他一天学习24个小时还是4天每天学习6小时一样,持续的有规律的学习似乎更加有效率一些。
此外,科学家们进一步发现,深度学习的过程,实际上是一个特征逐渐提取和学习的过程,例如下图中为了进行人脸识别,神经网络首先学习了各种像素边缘的特征(左图),然后学习了各类组件的特征(例如眼睛、耳朵、鼻子等,中图),最后将特征组合起来形成了各类人脸特征(右图)。
这与人类的学习习惯是非常相似的,因为人们也是从小学到初中到高中逐级依次学习的,学习的内容从简单到负责。深度神经网络的这种逐级的特征学习过程与人类的学习过程类似,所以深度学习更加符合人类的学习习惯。
最后给大家一个具体的概念吧:目前大型的GPT-3模型,模型的尺寸为1750亿参数,使用45TB数据进行训练。

(2)海量的数据驱动

近年来,移动互联网和物联网的发展,使得人们能够通过各种途径获得海量的数据。海量的数据就催生了大规模的数据集和对应的超大规模深度学习模型。下面稍微列几个大规模数据集给大家看看:

ImageNet(包含1400万的图像)

MirFlickr1M(包含100万的图像)

CoPhIR(包含1亿600万的图像 )

Large-Scale Image Annotation using Visual Synset(ICCV 2011)(包含2亿图像 )

这就好像学生还没有学习,我们就先给他准备了全面的学习资料,对于后期高效的学习显然是有利的。

(3)强大的计算平台

超大规模的模型和数据就意味着海量的计算,而海量的计算需要强大的计算平台支持。计算能力是推动深度学习的利器,计算能力越强,同样时间内积累的经验就越多、迭代速度也越快,深度学习的性能也就更高。

高速发展的计算平台(例如GPU平台、TPU平台和超级计算机等)使深度学习有了革命性的进步——计算能力这种对于深度学习的支撑与推动作用是不可替代的。

这就好像一个学生的家庭条件优越,只要他愿意学习,那么外部的物质条件会全力保障他的学习过程,并提高他的学习效率。

  1. 深度学习的分类

深度学习发展至今,已经成为人类最接近通用智能的技术之一。
传统的人工智能分成三个等级:“计算智能”表示能够实现快速计算、记忆与存储的能力,就好像一个高中生数理化学得特别好;“感知智能”表示识别处理语音、图像、视频的能力,就好像一个大学生能够根据所学的基础知识设计出图像识别系统、翻译系统等;“认知智能”指实现思考、理解、推理和解释的能力,就好像一位博士生能够思考专业问题并给出解释和分析的结论一样。
因此人工智能发展的终极目标是赋予机器人类的智慧。

目前在深度学习领域有以下几个重要的类别:

(1)破译图像的密码——卷积神经网络

传统的深度神经网络在处理二维或高维数据时(例如图像或视频)数据维度太高,会导致模型巨大,同时模型参数之间存在冗余,泛化能力不高,所以利用卷积把关键特征提取出来进行处理!
通俗点说,就是相当于考试之前的复习划重点,把关键的知识点圈出来(通过卷积和池化),这些学习的效率就提高了。

(2)洞悉语言的内涵——循环神经网络

传统的神经网络很少考虑输入信号在时间上的联系,但是现实中很多问题都是一个时序分析问题(例如语言文字分析问题)。
例如语文中思考一个词在句子中的含义,那么必然要考虑上下文语境的影响。因此循环神经网络就是在传统神经网络的基础上加入了时序分析的能力,让神经网络能够处理时序分析问题。
通俗点说,就是帮助学生将前面所学的知识点和现在所学的知识点放在一起分析,从而在时间上形成系统的知识体系。

(3)棋逢对手,伯仲之间——生成对抗网络

生成对抗网络是在深度学习中产生的一种全新的学习框架。
它包括了一位出题者(生成器)和解题者(判别器)。
出题者希望出一道解题者无法解出来的难题,所以他需要不断学习,使得出的题目越来越难,而解题者也在不断学习,尽力解出出题者出的难题,两者不断博弈,出题者的水平越来越高,题目也越来越难,解题者也不断学习,结题的水平也在提高,最终两者共同进步,出题者(生成器)和解题者(判别器)的知识和能力都不断增强。

(4)纸上得来终觉浅,绝知此事须躬行——深度强化学习

深度强化学习是强化学习在策略行为上的增强。
通过使用深度神经网络作为强化学习的策略体,强化学习能够进行更大规模的学习和更复杂的决策。具体而言,深度强化学习一般包括一名做题者和一名打分者,做题者根据自己的做题方法(策略)来解题获得答案,打分者根据做题者的答案来打分。
做题者需要不断学习优化自己的做题方法,从而获得更好的答案并在打分者那里获得高分。
通过不断的学习和优化,做题者的做题方法(策略)水平越来越高,获得的分数也就越来越高。

  1. 总结

深度学习是大数据、大算力和大模型共同演进发展的结果,目前代表了人工智能的最前沿发展方向。
深度学习通过加深网络结构来增强网络的学习性能,符合人类的学习习惯,目前包含了卷积神经网络、循环神经网络、生成对抗网络和深度强化学习等四个主要方向。

Torch

Torch是一个有大量机器学习算法支持的科学计算框架,其诞生已有十年之久,但是真正起势得益于Facebook开源了大量Torch的深度学习模块和扩展。
Torch的特点在于特别灵活,但是另一个特殊之处是采用了编程语言Lua,在深度学习大部分以Python为编程语言的大环境之下,一个以Lua为编程语言的框架有着更多的劣势,这一项小众的语言增加了学习使用Torch这个框架的成本。

PyTorch

PyTorch的前身便是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。
它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架比如Tensorflow等都不支持的。
PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。
除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用。
PyTorch是Torch深度学习框架的一个接口,可用于建立深度神经网络和执行张量计算。
Torch是一个基于Lua的框架,而PyTorch则运行在Python上。
PyTorch是一个Python包,它提供张量计算。
张量是多维数组,就像numpy的ndarray一样,它也可以在GPU上运行。
PyTorch使用动态计算图,PyTorch的Autograd软件包从张量生成计算图,并自动计算梯度。
与特定功能的预定义的图表不同,PyTorch提供了一个框架,用于在运行时构建计算图形,甚至在运行时也可以对这些图形进行更改。
当不知道创建神经网络需要多少内存的情况下,这个功能便很有价值。

Tensorflow

Google开源的Tensorflow是一款使用C++语言开发的开源数学计算软件,使用数据流图(Data Flow Graph)的形式进行计算。
图中的节点代表数学运算,而图中的线条表示多维数据数组(tensor)之间的交互。
Tensorflow灵活的架构可以部署在一个或多个CPU、GPU的台式及服务器中,或者使用单一的API应用在移动设备中。
Tensorflow最初是由研究人员和Google Brain团队针对机器学习和深度神经网络进行研究而开发,开源之后几乎可以在各个领域适用。
Tensorflow是全世界使用人数最多、社区最为庞大的一个框架,因为Google公司出品,所以维护与更新比较频繁,并且有着Python和C++的接口,教程也非常完善,同时很多论文复现的第一个版本都是基于Tensorflow写的,所以是深度学习界框架默认的老大。

Caffe

和Tensorflow名气一样大的是深度学习框架Caffe,由加州大学伯克利的Phd贾扬清开发,全称是Convolutional Architecture for Fast Feature Embedding,是一个清晰而高效的开源深度学习框架,由伯克利视觉中心(Berkeley Vision and Learning Center,BVLC)进行维护。
从它的名字就可以看出其对于卷积网络的支持特别好,同时也是用C++写的,提供的C++接口,也提供了matlab接口和python接口。
Caffe之所以流行,是因为之前很多ImageNet比赛里面使用的网络都是用Caffe写的,所以如果你想使用这些比赛的网络模型就只能使用Caffe,这也就导致了很多人直接转到Caffe这个框架下面。
Caffe的缺点是不够灵活,同时内存占用高,Caffe的升级版本Caffe2已经开源了,修复了一些问题,同时工程水平得到了进一步提高。

Theano

Theano于2008年诞生于蒙特利尔理工学院,其派生出了大量的深度学习Python软件包,最著名的包括Blocks和Keras。
Theano的核心是一个数学表达式的编译器,它知道如何获取你的结构,并使之成为一个使用numpy、高效本地库的高效代码,如BLAS和本地代码(C++)在CPU或GPU上尽可能快地运行。
它是为深度学习中处理大型神经网络算法所需的计算而专门设计,是这类库的首创之一(发展始于2007年),被认为是深度学习研究和开发的行业标准。
但是开发Theano的研究人员大多去了Google参与Tensorflow的开发,所以,某种程度来讲Tensorflow就像Theano的孩子。

MXNet

MXNet的主要作者是李沐,最早就是几个人抱着纯粹对技术和开发的热情做起来的,如今成了亚马逊的官方框架,有着非常好的分布式支持,而且性能特别好,占用显存低,同时其开发的语言接口不仅仅有Python和C++,还有R,Matlab,Scala,JavaScript等等,可以说能够满足使用任何语言的人。
但是MXNet的缺点也很明显,教程不够完善,使用的人不多导致社区不大,同时每年很少有比赛和论文是基于MXNet实现的,这就使得MXNet的推广力度和知名度不高。

Keras

如果你习惯使用python,那么可以立即上手到Keras。
这是一个非常适合你的深度学习之旅的完美的框架。

Keras用Python编写,可以在TensorFlow(以及CNTK和Theano)之上运行。
TensorFlow的接口具备挑战性,因为它是一个低级库,新用户可能会很难理解某些实现。
而Keras是一个高层的API,它为快速实验而开发。
因此,如果希望获得快速结果,Keras会自动处理核心任务并生成输出。
Keras支持卷积神经网络和递归神经网络,可以在CPU和GPU上无缝运行。

深度学习的初学者经常会抱怨:无法正确理解复杂的模型。
如果你是这样的用户,Keras便是你的正确选择!它的目标是最小化用户操作,并使其模型真正容易理解。

PaddlePaddle

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发、功能完备、开源开放的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。截至2022年12月,飞桨已汇聚535万开发者,服务20万家企事业单位,基于飞桨开源深度学习平台构建了67万个模型。
开源开放的飞桨已经成为中国深度学习市场应用规模第一的深度学习框架和赋能平台。
PaddlePaddle是百度提供的开源深度学习框架,框架本身具有易学、易用、安全、高效四大特性,是最适合中国开发者和企业的深度学习工具。

网址:http://www.paddlepaddle.org/zh
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值