首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深度学习崛起探秘

深度学习崛起

探秘

性能改善

深度学习和神经网络背后的基本技术理念已经存在好几十年了,为什么现在却突然的流行起来?我们来看看使得深度学习流行起来的主要因素,这将会帮助我们在自己的公司或者团队中发现应用深度学习的好机会,在过去的几年,有很多人问我,为什么深度学习突然这么厉害了?我回答的时候,通常给他们画一个图,画一条水平轴线,代表完成任务的数据的数量,垂直的坐标轴代表机器学习算法的性能,比如,垃圾邮件过滤的准确率,广告点击预测的准确率,用于无人驾驶中判断其他车辆位置的神经网络的准确率。根据这幅图可以发现,把传统机器学习算法的表现,比如说支持向量机,或logistic回归,作为数据的一个函数,你可能会得到这样一个函数,它的性能一开始增加数据量会上升,但是一段时间之后,性能将会进入平台期,假设水平轴拉的很长,那是因为这些模型无法处理海量的数据。

2018.5.26

而在过去的20年,在我们的社会中,我们遇到的很多问题,早期只有少量的数据,多亏了数字化社会,现在收集海量的数据非常容易,我们人类在数字王国花费了很多时间,在电脑中,在网站上,在手机软件中,在数字设备的使用中都会创造数据,同时也要归功于廉价的相机,被内置于手机中,还有加速仪以及物联网中的各类传感器,我们收集了越来越多的数据。在过去20年的很多应用中,我们收集了海量的数据,远远超过传统的学习算法能发挥作用的规模。而运用神经网络,我们发现,如果你训练了一个小型的神经网络,那么性能可能会像黄色曲线这样的趋势;训练一个稍微大一点的神经网络,比如说一个中等规模的神经网络,性能表现的可能会更好一些,像绿色曲线的趋势;如果训练一个非常大的神经网络,性能可能会像蓝色曲线一样,并且还会越来越好。

注意到两点,一点是如果你想达到这么高的性能水平,有两个条件,一个是需要训练一个规模足够大的神经网络,以发挥数据规模量巨大的优势;另外要到x周的位置,则需要很多的数据。因此,我们说规模一直推动着深度学习的进步,这里所说的规模不仅仅是指神经网络的规模,我们需要一个有许多隐藏单元的神经网络,有许多的参数,许多的连线,而且也需要数据的规模,事实上,如果希望在神经网络上有所表现,在今天最可靠的手段就是要么训练一个更大的神经网络,要么投入更多的数据,这只能在一定程度上起作用,因为最终你会耗尽数据,或者最终你的神经网络太大,需要训练的时间太长,但是提升规模,已经让我们在深度学习的世界里面获得了大量的进展。

2018.5.26

为了使这个图从技术上更准确一点,这里需要加点说明,在x轴下面注明了数据量,从技术上讲,这是“带有标签的数据”量,带标签的数据在训练样本的时候,我们会输入x和标签y,在这里介绍一点符号约定,在后面的内容中会继续用到,我们用小写的字母m表示训练集的规模,或者训练样本的数量,这个小写的m就是水平轴,图像还有其他的细节。如果训练集数量不大,各种算法的性能排名其实不是很确定,其效果取决于你人工设计的组件,会决定最终的表现,因此很有可能是这样的,假设有人训练出了一个SVM,可能是因为手工设计的组件很厉害,有些人训练的规模会大一些,可能训练集不大的时候SVM表现更好一些,所以在这个图形的左边,各种算法之间的优劣,并不是定义的很明确,最终的性能则更多取决于手工设计的组件的技能以及算法处理方面的细节。只有在大数据领域,非常庞大的数据集,也就是右边的m特别大的时候,我们才能看到神经网络稳定的领先于其它算法。

进步不断

计算能力提升

如果你的朋友问你,为什么神经网络这么流行,我鼓励你也为他们画一个这样的图像。可以这么说,在深度学习崛起的初期,是数据和计算能力规模的进展,训练一个特别大的神经网络的能力,无论是在CPU上还是在GPU上,是这些技术的发展才让我们取得了巨大的进步。但是渐渐地,尤其是最近这几年,我们见证了算法方面的极大创新,在这里我们也不想忽视算法方面的巨大贡献。有趣的是,很多算法方面的创新,都是为了神经网络运行的更快,举一个例子,神经网络方面的一个巨大的突破是,从sigmoid函数转换到ReLU函数,这个函数我们在前面提到过,如果你目前还不是很理解这些内容,也不用太担心。但是使用sigmoid函数时,机器学习的问题是,在第一、三象限的曲线梯度会接近0,所以学习起来会非常缓慢,因为用梯度下降法时,梯度接近于0,参数会变好的非常慢,学习也会变得很慢。通过改变激活函数,神经网络使用ReLU函数,也就是修正线性单元ReLU,这个函数的梯度对于所有输入为正值的输入值,输出都是1,因此梯度不会逐渐趋向为0,而这里的梯度,也就是这条线的斜率,在左边是0,我们发现只需要将sigmoid函数替换为ReLU函数,便能够使得“梯度下降法”运行得更快,这就是一个例子,有点简单的算法创新的例子,但是最终算法创新带来的影响是增加计算速度。

算法改变

有很多像这样的例子,我们通过改变算法,使得代码运行得更快,这就可以让我们训练更大规模的神经网络,或者即使在数据量很大,网络很大的情况下,也可以在合理的时间内完成计算。快速计算很重要的另一个原因是训练神经网络的过程,很多时候都是凭直觉的,你有了新的想法,关于神经网络架构的想法,然后你写代码实现你的想法,实现了之后,然后跑一下试验,就可以验证你的神经网络的效果到底怎么样?知道结果之后,再回去调整,修改你的神经网络中的某些细节,然后你就不断的重复这个过程。当你的神经网络需要很久的时间去训练,需要很长时间才能走一圈循环的话,在实现神经网络时,迭代速度对算法的效率有着巨大的影响。如果你有一个新的想法,你直接就去试,10分钟后就能直接看到结果,或者更长一点,最多花上一天时间。如果你训练自己的神经网络,用了一个月的时间,有时候确实需要这么久的时间。如果你能在10分钟或者一天内很快的得到结果,你就可以常识更多的想法,那么你很可能会发现非常适合你的业务的神经网络。

2018.5.26

持续创新

所以,计算速度的提升,是可以帮助提升迭代速度的,从而让你更快的得到试验结果,这也同时帮助神经网络从业人员和有关项目的研究人员在深度学习的工作中迭代的更快,也能够更快的改进你的想法,所有这些都极大的推进了整个深度学习社区的研究,速度快的令人难以置信。

人们一直在发明新的算法,持续不断的进步,是这些力量支撑起了深度学习的崛起。好消息是,这些力量还在不断的增强过程中,让深度学习更进一步。我们的社会还在不断的产生更多的数字化数据,计算GPU此类的专用硬件还在持续发展,网络速度更快,各种硬件也更快,我们对实现超大规模神经网络的能力很有信心,或者我们从计算能力的角度来看,也在继续进展。从算法的角度来看,我们希望深度学习研究社区能够在算法上持续创新,基于这些因素,我们可以乐观的回答,深度学习还会在未来的很多年中持续的进步。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180526G0PWJD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券