当前位置: 代码迷 >> 综合 >> 一篇文讲清楚深度学习中「训练」和「推断」的区别 2016-10-07 fengnanpi... 摘自 MOOC 阅 1271 转 5 转藏到我的图书馆 微信 分享: 不久前,我们深入
  详细解决方案

一篇文讲清楚深度学习中「训练」和「推断」的区别 2016-10-07 fengnanpi... 摘自 MOOC 阅 1271 转 5 转藏到我的图书馆 微信 分享: 不久前,我们深入

热度:101   发布时间:2023-12-02 14:19:40.0

一篇文讲清楚深度学习中「训练」和「推断」的区别

2016-10-07  fengnanpi...  摘自 MOOC  阅 1271  转 5
转藏到我的图书馆
微信 分享:


http://www.360doc.com/content/16/1007/10/37065397_596369919.shtml



不久前,我们深入浅出地用一篇文章讲清楚人工智能、机器学习和深度学习的区别,通过最简单的方法——同心圆,可视化地展现出它们三者的关系和应用。


今天,将门将为大家带来解释深度学习基本概念的第二篇——训练和推断的区别。文中,作者将二者比作了学校学习的不同阶段,梳理了从训练到推断的整个过程,包括二者在人工智能中所起到的作用。


来源:NVIDIA官网

译者:曲晓峰,香港理工大学人体生物特征识别研究中心博士生

个人科研主页: http://www.quxiaofeng.me/research


* * *


“开学了”——正是形容正在“训练”阶段的深度神经网络最贴切的状态。神经网络和所有的学生一样,通过接受教育,来学习如何完成工作。


确切的说,训练好的神经网络,可以根据其所学,在数字化的世界中轻松地完成各种各样的工作,如:识别图像、识别记录口述的语言、检测血液中的疾病,或者推荐符合某人风格的一双鞋子等等。此时的神经网络,由于经过了完善的训练,可以快速高效地从新的数据中“推断”各种结论。在人工智能术语中,称之为“推断”(Inference)


推断(Inference),就是深度学习把从训练中学习到的能力应用到工作中去。


不难想象,没有训练就没法实现推断。我们人也是这样,通过学习来获取知识、提高能力。同样,我们显然并不需要非得拖着我们所有的老师,带着一堆塞满书的书架和一座红砖的校舍,才能读懂红楼梦(或者莎士比亚十四行诗)。深度神经网络推断的时候也是一样,完成推断任务,并不需要其训练时那样的海量资源。


下面,就让我们梳理下从训练到推断的整个过程,包括二者在人工智能中所起到的作用,详细讲清楚。


训练深度神经网络

* * *


我们可以把深度学习的训练想象成学校。这个学校训练网络以便让其能够在广阔的世界里面解决现实问题。




同样,显然地,我们并不需要非得拖着我们所有的老师,带着一堆塞满书的书架和一座红砖的校舍,才能读懂红楼梦(或者莎士比亚十四行诗)。深度神经网络推断的时候也是一样,完成推断任务,并不需要其训练时那样的海量资源。


尽管目的都是获取知识,但一个神经网络的“教育”(训练)跟人还是不一样的。神经网络大体上以人类大脑的神经结构为基础,即一组互相连接的神经元。但与人脑并不完全相同。人脑神经元与周围一小圈范围内的所有神经元都是互相连接的,而人工神经网络是分层的、是在层与层之间互相连接的、网络中数据的传播是有向的。


训练神经网络的时候,训练数据被输入到网络的第一层。然后所有的神经元,都会根据任务执行的情况,根据其正确或者错误的程度如何,分配一个权重参数(权值)。


在图像识别网络中,第一层可能会寻找图像中的边缘。第二层可能会寻找这些边缘所组成的图形,如长方形或者圆形。第三层可能会寻找特定特征,如闪亮的眼睛或者远远鼻子。每一层都把图像传递到下一层,直到最后一层。而最终的输出由网络中所有的权值共同决定。


这里,神经网络的训练与人类的教育就不一样了。以识别图像中的猫为例,神经网络读入所有训练图像,根据权值,得出是否是猫的一个论断。网络训练所额外需要的,仅仅是这个论断是“正确”还是“错误”这样的反馈。


训练是运算密集的

* * *


如果算法告诉神经网络其论断错误,网络并不需要知道正确的答案是什么。但这个错误会回传到网络各层,让网络再猜一下,给出一个不同的论断。


每次给出论断时,网络都要考虑所有特性,在这个例子里面就是“猫”的所有特性,然后根据其检测到的特性调整网络中的权值,调高或者降低。然后再次给出论断,一次又一次,一次再一次,直到网络中的权值都调整到位,几乎每次都能够输出正确论断。那就是猫了。



训练会先教深度学习网络在一个有限的图像集里标出猫的图像,稍后,该网络就会在广阔的世界中检测猫。


现在,我们得到了数据结构和根据训练数据学习到的达到平衡的一整套的权值。这可是精心调配的精美机器。可问题是,这也是需要一直吞噬运算能力的巨兽。曾在 Google 和斯坦福磨砺人工智能、现在百度硅谷实验室的吴恩达教授说,百度训练一个中文语言识别模型不仅需要 4TB 的训练数据,在整个训练循环中,还需要两千亿亿次浮点运算能力(20 exaflops, 20 billion billion)。不知道有没有人想用智能手机试一下。


接下来,就是推断了。


恭喜!你的神经网络训练完成,可以进行推断了

* * *


精心调整权值之后的神经网络基本上就是个笨重、巨大的数据库。现在,原本为了教育这个笨家伙而投入的巨大资源,即相当于教育过程中的笔本、书籍、老师的白眼等,在完成现实任务时已经根本用不上了。呃,毕业似乎就是要扔掉这些东西?


为了充分利用训练的结果,完成现实社会的任务,我们需要的是一个能够保留学习到的能力,还能迅速应用到前所未见的数据上的,响应迅速的系统。这就是推断,根据真实世界中的少量数据,迅速地提供正确的答案(其实你也把它理解为预测,prediction)。


这可是计算机科学的全新领域。现在主要有两种方法来优化庞大笨拙的神经网络,以实现高速低延迟的应用。


如何应用推断?

* * *



想看看推断在真实世界中的使用效果?看看你的智能手机就可以了。


推断的应用效果?打开你的智能手机就可以了。推断用在深度学习的每一个场景,从语言识别到照片分类。


第一个方法,是查找神经网络中经过训练后并没有用到、也就是说尚未激活的部分。这些区域在应用中并不需要,所以可以被清洗掉。


第二个方法,则是把神经网络中的多个层融合为一个单独的计算步骤。


在数字图像上,压缩很常见。设计师可能绘制恢宏壮丽,百万像素宽和高的图像。但放上网的,却都是有损压缩图像的JPEG格式。人眼无法看出区别,几乎是一模一样,但分辨率确实降低了。推断也是同样的——我们可以达到几乎一样的预测、识别准确率,但模型确实是简化了、压缩了、针对运行的性能进行优化了。


这意味着所有人都在使用推断。我们的手机中语音助手使用推断。Google 的语言识别、图像搜索、垃圾邮件过滤等也都使用了推断。百度的语言识别、恶意程序检测和垃圾邮件过滤也都使用推断。Facebook 的图像识别和亚马逊及 Netflix 的推荐引擎也都依赖于推断。

 

GPU,由于它出色的并行运算能力,可以一次做很多件事情,因此它非常适合进行深度学习的训练和推断。使用 GPU 训练得到的深度学习系统,让计算机能够与人类一样,甚至有些时候比人类更好地检测模式和物体。


训练完成之后,神经网络部署于现场,以便推断分类数据或推导结果。在这里,GPU 及其并行运算能力同样可以为神经网络识别模式和物体所需的数以亿计的海量运算提供帮助。


我们将会看到这些模型逐渐地变得更加聪明、更加迅速、更加准确。训练会变得不那么烦人,而推导也会带来生活中方方面面的新应用。就像我们年轻时经常听到的“谆谆教诲”,似乎看来对“人工智能”也同样适用——“别傻了,在学校好好念书。”推断自然就在外面等着呢~