2013年6月22日,星期六

集成电路 2013:稀疏,深度和随机

集成电路 2013 对组织者来说,这是今年的一次伟大的会议。 对于个人来说,要全面了解所有内容实在太大了,但我确实注意到了三种趋势。

首先,稀疏性作为一种结构性约束似乎无处不在。  由于我对该子领域知之甚少,因此我非常关注最初两分钟的谈话,这些谈话通常会(很快地)讨论一些基本问题,例如,“人们为什么完全关心稀疏性?”.  我听到了一些通用动机,例如计算便利性和清晰度。 我还听到了一些具体的动机,例如 阿南库玛(Anandkumar)等等 表明对于特定的生成模型结构,可以通过稀疏编码技术来识别参数; Ruvolo和Eaton主张 模型的稀疏编码 在多任务学习中促进任务之间的知识转移。

第二,深度学习继续复苏。 特别是两次演讲提出了一些重要的未来方向。 首先是Coates关于以下架构的深度学习的演讲: 16台带有4个GPU的机器,每个通过infiniband连接.  我在这个博客上抱怨过SGD的高通信成本如何使它成为一种不良的分布式学习算法,但Coates等。等直接用硬件来解决这个问题。 这显然是不久的将来。 最重要的是,我们确实没有更好的神经网络训练算法,但是解决问题的经济性非常重要,以至于有可能“throw hardware 在 it”,硬件将被抛出。 The second talk was 递归神经网络训练的难点 由Pascanu等等人讨论了在递归环境中基于梯度的学习的一些改进。 显然,深度学习专家主导了“natural UI”在移动空间中如此重要的问题(例如语音识别和图像标记)现在正在寻求控制顺序预测任务(随着自治系统的普及,其重要性将日益增加)。 他们将与核心人员展开激烈的竞争:Le Song在精彩的演讲中 条件分布的希尔伯特空间嵌入 应用于顺序预测。

说到内核家伙,第三个主题是随机的,尤其是Alex Smola的演讲 核学习的快速随机逼近 (“FastFood”) was a real treat.  据推测,随机计算技术与条件分布的希尔伯特空间表示相结合,将产生用于顺序预测和其他潜在建模任务的强大算法。 在这方面的另一个突出表现是Mahoney的演讲 回顾Nyström方法以改善大型机器学习.

请注意,与前两个主题(稀疏和深层主题)不同,我不会说random是广泛流行的主题。 我个人对此感到非常兴奋,并且我认为对机器学习的影响很大,尤其是在分布式环境中。 基本上,使用这些随机算法的数值线性代数专家一直在研究“架构感知计算”多年以来,机器学习社区才开始意识到这一点。 想要一窥这对您意味着什么,请考虑戴维·格莱希(David Gleich)关于 Hadoop中的瘦身QR分解.

最后,我不得不提到John Langford和HalDaumé进行了关于命令式学习的精彩演讲,这与上述任何内容都不适合。 我找不到任何在线资料,这很不幸,因为这真的很酷,而且如果您曾经将机器学习算法应用于现有的生产系统中,那么您会立即喜欢上它。 基本思想是您,最终用户,程序“normally”并调用实现为协同程序的学习算法。 这有两个优点:首先,该算法自然地体验了由程序引起的决策的分布,因此“dataset collection”问题和相关错误得到缓解(这对于顺序预测尤为重要);其次,训练和评估时间码的路径相同,因此在生产中的实现既容易,又不易出错。 请注意,此设置中的评估时间开销很小,因此没有诱惑来重写生产算法。 引入了测试时间开销,但是可以通过使用额外的注释修饰代码来减轻此负担,从而使学习算法能够适当地记忆。 实在太热了,我想自愿在附近尝试一些顺序的预测任务,以尝试一下。

2013年6月6日,星期四

生产力即将等待

我最近发表了有关应用数据科学的实用技巧的演讲,我认为我的最佳观察确实很简单:从业人员要经历长期运行的数据处理过程,这意味着要等待的时间很多。如果您可以减少等待时间,那么这将直接转化为您的生产力。有一部很酷的科幻书,叫做 碳改变 角色将自己上载到模拟器中以便更快地思考:在减少等待的程度上,您正在做类似的事情。

为了使事情简单,我在头脑中将事情分为不同的时间范围:
  1. 立即:不到60秒。
  2. 上厕所休息时间:少于5分钟。
  3. 午休时间:少于1小时。
  4. 隔夜:少于12小时。
即时休息次数是午休时间的20倍以上。您一个月只能工作20天,因此减少等待时间意味着您一天之内就可以完成别人一个月内的工作。 此外,由于您(人类)在面对更长的延迟时会更倾向于尝试执行多任务,并且当人们从即时区域移至洗手间区域时,生产率会出现超线性下降。 在多任务处理方面很恐怖.

这是我避免等待的一些技巧。

使用更少的数据

这是一个简单的策略,但是人们仍然无法利用。在进行试验或调试时,您对数据或软件的了解不足,无法证明对所有数据或软件进行计算都是合理的。正如埃迪·伊扎德(Eddie Izzard)所说, ``缩小一点!''

亚线性调试

这里的想法是随着计算的进行输出足够的中间信息,以在完成之前确定您是否注入了重大缺陷或重大改进。在线学习尤其适用于此,因为它取得了相对稳定的进步并提供了瞬时损失信息,但是可以采用其他技术来做到这一点。学习曲线有时会交叉,但是亚线性调试非常适合立即识别出您已经胖了一些东西。

巧妙的术语由John Langford提供。

线性特征工程

我发现线性模型的工程功能然后在相同表示形式(例如神经网络,梯度提升决策树)上切换到更复杂的模型是一个富有成果的模式,因为线性模型的速度有助于快速实验。某些适用于线性模型的事物将倾向于适用于其他模型。当然,要设计出适用于线性模型的特征比较困难。另外,您必须牢记要使用的最终模型,例如,如果最终要使用树,则单变量的单调变换只会对线性模型有所帮助。

将代码移至数据

这是Hadoop的存在点,但是即使在更简单的设置中,确保您在数据所在的位置附近进行工作也可以节省宝贵的传输时间。如果您的数据位于云存储提供商中,请在同一数据中心内启动虚拟机。