首页 技术 正文
技术 2022年11月15日
0 收藏 573 点赞 4,171 浏览 2331 个字

深度学习和神经网络,在此技术背后的理念,已经发展了好几十年了,为何现在流行起来了?

  最直接因素:

    将帮助你在自己的组织中,发现好机会,来应用这些东西

为什么深度学习这么厉害?

  

  x轴表示完成任务的数据数量,y轴代表机器学习算法的性能,比如垃圾邮件过滤的准确率、广告点击预测的准确率、用于人工智能判断其他车辆的位置的神经网络准确率

  传统机器学习算法,比如支持向量机,或logistic回归,作为数据量的一个函数,它的性能一开始,随增加数据时会上升,但是一段时间之后,它的性能进入平台期(天花板),假如水平轴拉的很长很长,因为这些模型无法处理海量数据。而在过去的20年,在我们社会中,遇到的的问题,只有相对较少的数据量,数据化社会的到来,现在收集到海量数据轻而易举

  人类花了很多时间在数字王国中,在电脑上、在网站上、在手机软件上数字设备上的活动都能创造数据,同时也归功于便宜的相机,以及物联网中各种传感器,我们收集到越来越多数据,过去20年中,我们收集到了大量的数据,远超传统学习算法能发生作用的规模

  神经网络模型中,我们发现,如果你训练一个小型的神经网络 ,一个中等的神经网络,训练一个大型的额神经网络,性能会这样,越来越好

  注意两点,一点是,如果你想达到这么高的性能的水平,有两个条件,第一个是需要训练一个规模足够长度的神经网络,以发挥数据规模巨大的优点,另外,要到x轴的这个位置,因此我们经常说,规模一直推动着深度学习的进步,规模不仅仅是神经网络的规模,我们需要一个有许多隐藏单元的神经网络,有很多参数和很多连接,而且还有数据的“规模”。事实上,要在神经网络上获取更好的表现,在今天最可靠的手段,往往就是要么训练一个更大的神经网络,要么投入更多的数据,更多的数据只能在一定程度上起作用,因为最终你耗尽了数据或者最终你的规模太大,需要训练时间太久,但提升规模,已经让我们在深度学习的世界中获得大量进展。为了使这个图从技术上,更准确一点,我还要加点说明,x轴写明了数据量,技术点来说,这是“带标签的数据”量。带标签的数据,在训练样本时,我们有输入x和标签y,使用小写字母m,表示训练集规模或者说训练本的数量,这个小写的字母m,就是x水平轴,这个图形中,还隐藏着一条信息,关注训练集不大的这一段,各种算法的性能相对排名,并不是很确定,当训练集不大的时候,效果取决于你手工设计的组件会决定最终的表现,因此很有可能假如有些人训练出一个svm,可能因为手工设计组很厉害,有些人训练的规模会大一些,可能训练集不大的时候,svm表现更好,训练集不大的时候,各种算法之间的优劣,并没有很明确,最终的取决于手工设计组件的技能,以及算法处理方面的一些细节,只有在大数据领域,非常庞大的训练规模,也就是m值越大,我们才能看见神经网络,稳定的领先其他算法

  

  在深度学习崛起的初期,是数据和计算能力规模的进展,训练一个特别大的神经网络的能力,无论是在cpu还是Gpu上,是这些发展让我们取得了巨大的进步。但是渐渐的。尤其是在最近这几年,我们也见证了,算法方面的极大创新,不可忽略算法方面的巨大贡献,有趣的是,许多算法方面的创新,都是为了让神经网络运行的更快

  

  列举一个例子,神经网络方面取得巨大突破是,从sigmoid函数,转换到RrLu函数,使用sigmoid函数,机器学习问题是,在整个sigmoid函数x大于0的区域,sigmoid函数的斜率梯度会接近于0,所有学习变得非常缓慢,因为用梯度下降法时,徒弟接近0时,参数会变化的很慢,学习也变得很慢,而通过激活函数,神经网络使用Relu函数——修正新单元,它的梯度,对所有为正值的输入,输出都是1,因此梯度不会逐渐趋向0,而这里的梯度,这条线的斜率,在这左边为0, 我们发现,只需要将sigmoid函数转换成RrLu函数,便能是的“梯度下降法”运行的更快,有点简单的算法创新,但是最终算法创新所带来的影响,是增加计算速度,也就是下面这个图的循环越快

  还有很多这样的例子,我们通过改变算法,使得代码运行的更快,这也使得我们,能够训练规模更大的神经网络或者在合理的时间内完成计算即使在数据量很大网络也很大的场合。快速计算很重要的另外一个原因是训练神经网络的的过程,很多时是凭直觉,有了新想法,关于神经网络架构的想法,然后写代码实现你的想法,然后跑一下实验,可以告诉你,你的神经网络效果有多好,知道结果之后再回去改,去改你的神经网络中的一些细节,然后你不断重复这个循环。当你的神经网络需要很长时间去训练,需要很长时间才能走完一圈循环的话,在实现神经网络时,迭代速度对你的效率影响巨大,如果你有一个想法,直接去试试,10分钟后就能看到结果或者最多花上一天,如果你的神经网络,用了一个月的时间,有时候确实需要这么久,如果你能很快的得到结果,比如10分钟或者一天内,你可以尝试更多的想法,那你很可能发现,适合你的应用的神经网络,所以计算速度的提升,真的有帮助提高迭代速度,让你更快的得到实验结果,这也同时帮助了神经网络从业人员和有关研究人员在深度学习的工作中,迭代的更快,也能更快的改进你的想法,所有极大的额推动了整个深度学习社区的研究,快到令人难以置信。人们一直在发明新的算法,持续不断的进步,这些力量支持了深度学习的崛起,这些力量不断发挥作用,让深度学习更进一步。

  我们看数据,我们的社会还会产生更多的数字化数据,我们看计算GPU这类专用硬件还在持续发展,网络速度更快,各种硬件更快,我们很有信心,可以实现超大规模神经网络的能力,或者从计算能力这个角度看,也在持续发展,深度学习,依赖于算法创新,也会持续进步很多年。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,983
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,500
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,344
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,127
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,761
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,838