2012年12月2日,星期日

模型复杂度,数据资源和计算约束

阿布·莫斯托法(Abu-Mostofa)在他的精彩视频讲座之一(讲座8 在视频中@ 44:45)指出了“将模型复杂度与数据资源相匹配,而不是目标复杂度”。但是,在大数据机器学习中,这是没有做的。例如,如果您想赢得 卡格勒 涉及约10个数据集的竞赛5 行和大约102 在列中,您使用了庞大的增强决策树集合(与其他东西组合在一起)。但是,将这些数字缩放4个数量级,并且(主要)线性预测变量或接近朴素的贝叶斯风格的方法占主导地位。更多数据,更简单的模型。 ??

发生的事情是计算约束占主导。您可能会认为这是纯粹的工程问题,需要通过分布式学习,GPU等来扩展更复杂的模型。但是,您还可以利用所有额外的功能将更多的数据提供给更简单的模型。因此,这就引出了一个问题:为了学习更复杂的模型,值得丢弃一些数据资源吗?还是放弃一些模型复杂性以保留更多数据资源更好?请注意,考虑到生成模型所需的数据量和计算量,我只是考虑最终模型的质量:在实践中,诸如模型评估时间等用于预测面向消费者的互联网服务至关重要,但让我们忽略这一点。

在我最近的职业生涯中,我只是认为以模型复杂性(较少)换取数据资源(更多)是更好的选择,但是我从未真正对此进行调查或质疑。最近,我开始在Kaggle上玩耍,我发现有很多有趣的数据集并没有那么大,而重磅锦标赛风格的收益促使人们使用比我通常专业使用的模型更为复杂的模型。这让我很想添加一些更强大的技术 威杜布 现在有一个神经网络简化,但你猜怎么着?是s-l-o-w。 Vee-dub具有分布式学习功能,所以我有一个分布式神经网络学习系统,但是如果我要为一个问题吃掉整个集群,我应该使用相对快速的线性学习和更多数据,还是使用相对较慢的神经网络学习,从而减少学习数据?这里有一个数据模型的复杂性前沿,正确的权衡尚不清楚。

对于固定算法,有很多示例,例如, 阿加瓦尔(Agarwal)等。等;对于固定的数据集,有很多示例比更简单的模型要好,例如, mnist。想象一个3维图,其中z轴是``模型真棒'',x轴是数据资源,而y轴是模型复杂度。这些结果基本上是关于此二维函数的一维轴平行语句。有没有可以在两个维度上进行比较的结果?一项很棒的研究将比较,例如,在同一问题上对万亿级线性学习与千兆深度学习进行了比较,并尝试对每种技术使用相同的计算资源。

我怀疑对于万亿级学习问题,拥抱线性预测器是一个好主意(到目前为止!),但是鉴于当前可用的数据资源和计算约束条件,在建模能力方面仍有一定的改进空间。这表明对于这种情况,所写的神经网络简化方法是不可取的,因为它没有从输入层到输出层的直接连接。如果我增加这些多余的连接,希望不会增加任何隐患,并且从相对较少的隐藏单元中获得一些适度的好处(尽管我在学习线性预测器的同时还难以学习低阶潜在模型,因此无法保证) 。

对于Kaggle区域,我非常确定能够将大约10台机器扔掉 6 大约10行3 隐藏的单位将会很棒。

1条评论:

  1. 当然,还有另一个维度是您进行优化的接近程度(请参阅Bottou等人)。必须权衡模型的复杂性,数据集大小和运行时间。

    回复删除