在较早的深度学习文章中,我们讨论了推理工作负载(使用已经训练的神经网络来分析数据)如何可以在相当便宜的硬件上运行,但是运行神经网络“学习”的训练工作却是数量级的更贵。
特别是,您对算法的潜在输入越多,在分析问题空间时扩展问题就越不受控制。MACH是莱斯大学的Tharun Medini和Anshumali Shrivastava共同撰写的研究项目的所在地。MACH是通过散列合并合并平均分类器的首字母缩写,并且根据**研究员Shrivastava的说法,“ [其训练时间约为7到10速度快了两倍,并且...内存占用量比以前的大规模深度学习技术小2-4倍”。
在描述极端分类问题的规模时,Medini提到了在线购物搜索查询,并指出“在线上很容易有超过1亿种产品”。如果有的话,这是保守的—一家数据公司声称仅亚马逊美国公司就售出了6.06亿种独立产品,整个公司在全球范围内提供了超过30亿种产品。另一家公司估计美国的产品数量为3.53亿。Medini继续说道:“一个神经网络,它接受搜索输入并根据1亿个输出或产品进行预测,通常每个产品将带有大约2,000个参数。因此,将它们相乘,神经网络的**一层就是2000亿个参数。我正在谈论一个非常非常死的简单神经网络模型。”
在这样的规模下,一台超级计算机可能只需要太字节的工作内存就可以存储模型。当您将GPU带入画面时,内存问题变得更加严重。GPU处理神经网络工作负载的速度比通用CPU快几个数量级,但是每个GPU都有相对较少的RAM,即使是最昂贵的Nvidia Tesla GPU也只有32GB的RAM。Medini说:“由于大量的GPU间通信,训练这样的模型是禁止的。”
马赫并没有对全部1亿个结果(在本例中为产品购买)进行培训,而是将它们分为三个“存储桶”,每个存储桶包含3330万个随机选择的结果。现在,MACH创造了另一个“世界”,在那个世界中,这1亿个结果再次被随机分为三类。至关重要的是,**世界和第二世界中的随机排序是分开的,它们各自具有相同的1亿个结果,但是每个世界中它们在存储桶中的随机分布是不同的。
实例化每个世界后,将同时向“世界**”分类器和“世界第二”分类器提供搜索,每个搜索只有三个可能的结果。“这个人在想什么?” 问Shrivastava。“最可能的类别是这两个桶之间的共同点。”
此时,有九种可能的结果-世界一中的三个存储桶乘世界第二中的三个存储桶。但是,MACH只需要创建六个类(World One的三个存储桶 再加上 World Two的三个存储桶)来建模九个结果的搜索空间。随着创建更多“世界”,此优势将得到改善。三世界方法只能从创建的九个类中产生27个结果,四世界方法可以从十二个类中获得81个结果,依此类推。Shrivastava说:“我正在以线性方式支付成本,并且得到了指数级的改进。”
更好的是,MACH更适合在较小的单个实例上进行分布式计算。梅迪尼说,世界“甚至不必彼此交谈”。“原则上,您可以在单个GPU上训练每个[世界],这是使用非独立方法永远无法做到的。” 在现实世界中,研究人员将MACH应用于一个4,900万产品的Amazon培训数据库,将其随机分为32个独立世界中的每个10,000个存储桶。这将模型中所需的参数减少了一个数量级以上-根据Medini的说法,与在具有可比较参数的模型上报告的一些**的培训时间相比,训练模型所需的时间和内存更少。
当然,如果我们不对意外后果进行愤世嫉俗的提醒,那么这将不是Ars关于深度学习的文章。不言而喻的现实是,神经网络实际上并没有在学习向购物者展示他们所要求的东西。相反,它正在学习如何将查询转化为 购买。 神经网络不知道或不在乎人类实际上在寻找什么;它只是知道人类最有可能购买什么产品,并且在没有足够监督的情况下,受过培训以这种方式提高结果概率的系统可能最终会 向流产或更糟的妇女建议婴儿用品。
http://www.qudaishu.com/art/7258367.html
资讯来源:http://www.qudaishu.com/art/7258367.html
|