2013年3月15日,星期五

mnist 演示

我已经检查了两个演示到的主要分支 威杜布 在里面 演示/ 目录,其中之一是 mnist 基于。该演示练习了由“一反所有”归约构成的神经网络归约。 mnist 是规范的神经网络测试数据集,包括从灰度像素表示开始的10位多类分类问题。对于没有完全利用空间结构的方法,现有技术的测试误差约为0.8%,对于利用一切的邪恶集合体的测试误差约为0.25%。使用vee-dub时,对原始像素使用神经网络在mnist上进行训练时的测试错误率为2.2%(在我的台式机的一个核心上花费5分钟),而在mnist上进行训练时的测试错误率为1.1%。 mnist 8分钟 (在我的台式机的一个核心上需要一个小时)。

上面的数字是可以的,但不会给任何顽固的神经网络爱好者留下深刻的印象。但是,vee-dub中的神经网络支持并非旨在取代传统特征工程,而是对其进行补充:这是 大声一点 风格。

令人惊讶的是,一点要素工程的效果如何。我已经注意到 n克帮助mnist 但是vee-dub中内置的n-gram支持是针对文本而设计的,因此是一维的。因此我写了一个 小程序 计算垂直,水平和对角线像素n-gram,并将其输入到vee-dub。在mnist上训练时,像素为n-gram的线性模型的测试误差为1.75%,使用3个核进行训练需要1分钟。这些核心中有2个被占用来计算像素n-gram,实际上vee-dub比2个特征提取过程要快,因此在不影响挂钟训练吞吐量的情况下,仍有空间添加一些隐藏单元。仅添加1个隐藏单元(每个班级)可将测试误差降至1.6%,而完全不影响培训时间。在mnist8m上训练像素n-gram线性模型会导致测试误差为1.25%。使用4个核心需要一个小时,其中3个专职用于计算像素n-gram。再次,vee-dub并不是瓶颈,添加5个隐藏单元(每个班级)可使测试误差降至0.9%,而不会影响训练时间。这使vee-dub受到尊重。

在mnist8m上进行培训,尽管对计算的要求更高,但总是有帮助的。 mnist 8分钟 是通过采用mnist训练集并将其变形的方式构造的,该方式对预测变量进行编码(将其视为利用空间结构),从而对预测变量进行编码。这是一个古老的想法,至少可以追溯到1994年,当时是Abu Mostafa的 提示学习 论文,另外表明可以从未标记的数据构建虚拟示例。虚拟示例是一种成功态度的一部分,它表示1)首先提高模型的复杂性,然后2)担心正则化。还有其他通用的方式进行正则化(例如,装袋,辍学,正确的贝叶斯推断),但虚拟示例可让您编码特定于问题的信息并利用未标记的数据,因此我认为它们很不错。

mnist 8分钟 数据集由Loosli,Canu和Bottou作为社区服务实现;他们的软件在运行过程中产生了不变的变形,因此虚拟示例可能仍然短暂。这可以很好地映射到vee-dub简化架构,因为可以轻松编写一个简化来从在线实际示例中动态构建临时虚拟示例的简化。