2012年12月19日,星期三

你真的有大数据吗?

有个 宗教战争 在ML社区酝酿。一方面,那些认为大型集群是处理大数据的方式的人。另一方面,那些认为高端台式机可以提供足够的功能而又不那么复杂的人。我认为这场辩论是由不同的扩展动机驱动的。
  1. 对于数据。本质上,有人希望学习尽可能多的数据以获得最佳模型。大型群集可能是该数据的操作存储,并且将数据编组到高端台式机上是不可行的,因此算法必须在群集上运行。原型问题是使用文本特征的广告定位(高经济价值和高数据量)(这样,双线性模型可以很好地实现,但是特征是zipf分布的,因此大数据可以提供有意义的改进)。
  2. 用于计算。数据量可能相对较少,但是学习问题在计算上很激烈。这里的原型问题是在自然数据集上使用神经网络进行深度学习(计算成本较高)(尽管其大小通常适合于舒适地放置在桌面上, 这正在改变)以原始表示形式(因此需要非凸面的``特征发现''样式优化)。
因此,即使您仅针对计算进行扩展,为什么不使用群集?具有多个核心和多个GPU的高端台式机实质上是一个(小型)群集,但其中一个具有高速互连。使用时,这种高速互连是关键 新元 解决非凸优化问题。 新元是一种惊人的通用优化策略,但具有致命弱点:它会生成许多小的更新,这在分布式环境中意味着高同步成本。在单台机器上,比在群集上减轻此问题(例如,通过微型批处理和流水线操作)更容易。目前,在商品交换集群上,我们几乎只知道如何很好地解决凸优化问题(使用批处理算法)。

单个桌面的带宽相对有限,这意味着单机工作流程可能始于将大型集群上的数据与运营商店争用(例如,通过Hive),但是在某些时候,数据被二次采样到可以由单机管理的大小。这种二次采样实际上可能很早就开始了,有时是在数据生成时开始的,在这种情况下,它变得隐含了(例如,使用编辑判断而不是行为穷举)。

从这个角度来看,辩论的确是:您需要多少数据才能为特定问题建立良好的解决方案,并且最好是针对较少的数据来解决更复杂的优化问题,而针对较多的数据来解决不太复杂的优化问题。概括的问题是``您真的有大数据吗?''这取决于问题,使宗教战争得以持续。

在这种情况下,以下示例很有趣。我拿了 mnist 并在其上训练了不同的预测变量,在其中我改变了隐藏单元的数量。输入与输出之间存在直接连接,因此零隐藏单位表示线性预测变量。这是我正在寻找的一种``模型复杂度表盘'' 以前的帖子 (尽管这远非理想,因为从0到1的步长将事物从凸变为非凸)。毫不奇怪,添加隐藏单元可以提高泛化能力,但也可以增加运行时间。 (注意:我选择了学习率,通过次数等来优化线性预测器,然后在添加隐藏单位的同时重复使用相同的设置。)


现在想象一下一个计算约束:训练线性预测器只需要27秒。我在每种情况下都随机抽样数据,以使训练时间在所有情况下均约为27秒,然后我评估了整个测试集的概括性(因此您可以将这些数字与上一张图表进行比较)。


对于mnist来说,抛弃数据以学习更复杂的模型似乎最初是个好策略。总的来说,我希望这是高度依赖问题的,作为研究人员或从业人员,最好直觉知道自己偏爱的方法在哪里竞争。 YMMV。

6条评论:

  1. 对。相比之下,很多自然语言处理似乎确实从更多数据中受益。这真的取决于。

    但是,即使实际模型估计是使用相对较小的数据集完成的,您仍可能必须使用聚类将模型快速应用于其余数据集。那'我遇到的情况。

    回复删除
  2. 我没't aware 那里 was a war brewing but I have been wondering about the value of Mahout in certain scenario's. I'我曾经看到人们在群集上使用Mahout,而我认为我的笔记本电脑上的其他工具(VW)可以达到目的。

    是否有人对您知道的某些用例进行了适当的比较?

    回复删除
    回覆
    1. Mahout举例说明了I / O可以为分布式迭代计算带来的挑战。

      总的来说,每个人都同意从笔记本电脑上的数据样本开始进行快速的初始实验,并且可视化是一个合理的过程。是否'足够取决于上下文。以此类推,许多程序是用脚本语言编写的,而有些程序则是用汇编语言编写的,以实现最佳性能。广告投放是如此有利可图,以至于微小的改进在经济上是有价值的,但是我怀疑,对于许多问题,由二次抽样数据产生的预测变量可能是最终产品。

      I'我还没有发现您寻求的任何公开比较。

      删除
  3. (代表Dinesh B Vadhia发布)

    嗨保罗

    没有't在第3方不拥有身份的情况下发表评论的选项。无论如何,另一个很棒的职位。

    结论如下:
    a)如果您想在商业上(竞争性)合理的时间内进行预测,则坚持使用传统的学习方法,如果不是,则尝试深度学习?

    b)更快的硬件有助于两种方法。

    c)深度学习算法的内在性能必须提高一个重要因素,才能与现有方法在商业上竞争。

    Is that about 对?

    最好 ...
    Dinesh

    回复删除
    回覆
    1. 总体信息基本上是"there'没有数据像更多数据 " is sometimes misleading because in practice 那里 is a computational constraint which affects the types of learning methods that are feasible. Sometimes throwing away data to allow for more complicated learning methods is worth it.

      特别:

      a)如果您有中等大小的数据集(中等="装在一个盒子上,用多核/ GPU训练的速度慢得令人难以忍受"),对于哪种转换会使您的问题看起来更线性的想法几乎没有直觉(aka,没有关于好的内核的直觉)。您还应该查看GBDT,因为它们在此区域中效果很好。

      b)是的,恒定因素很重要!但是重要的信息是,网络I / O是分布式上下文中的主要瓶颈。如果NUMA变得流行,则这些机器将开始看起来更像是小型群集,因此我们可以'只是忽略这个问题。

      c)对于特定类型的问题,深度学习方法优于所有其他现有选择。在实际情况下成功的关键是了解您所面对的问题的类型以及哪些技术可能行之有效。

      删除
    2. 谢谢保罗。

      期限'Big Data' is a misnomer because 那里 can be significant value in small data but as you say, it depends on the problem type.

      c),如果该行业开始分类DL在哪些类型的问题上比较有优势,那将很有用,否则宗教战争将继续,但也会使想要这样做的组织感到困惑。'right' thing.

      顺便说一句,很高兴看到基于计算约束(27秒)的分析,因为很少覆盖的区域是重新训练的时间(随着新数据的获得),重新训练的时间必须越来越近实时成为现实。

      删除