本文约3000字,建议阅读9分钟。
本文带你一窥Twitter整个产品链的构成,了解数据科学是怎样在各类型公司中发挥作用的。
GIF来自:
giphy/gifs/features-7BldZFcv2pof6
如何构建更厉害的特征检测器?我们可以通过无监督学习来做到这一点吗?
请注意,本文是一篇我自己留档用的回顾总结材料。
Paper来自此网站:
arxiv/pdf/1112.6209.pdf
摘要
这篇文章的作者们喜欢利用未标记数据制作特定的分类特征识别器。(例如,使用未标记的人脸图像制作人脸识别器。)为实现这一目标,作者在大型数据集上制作了一个9层的自动稀疏编码器。与普遍的认知相反,这可以在没有任何标签数据的情况下构建面部检测器,而且优于ImageNet数据的最新性能。 (在2012年)。
介绍
这篇文章的目的是只依靠未标记图像构建一个特定的分类特征识别器,同时这也是神经科学的构想:“人类大脑中存在高度特定类的神经元”,通常被非正式地称为“母神经元”。在传统的计算机视觉中,大多数研究人员使用标记数据来获得这些识别器,然而大量数据时就比较困难。这个实验的成功说明,可以从未标记数据中学习高级特征和母神经元。大多数这些方法(如自动稀疏编码器)仅仅可以用于低级特征,如边缘或斑点(edges or blobs)。
作者假设深度学习花费如此多时间的原因是由于缺少高级特征,例如,图像被重新调整得更小,这样的降级会破坏高级特征的学习。作者没有缩小图像,也没有使用大量计算能力。经证明,有可能从未标记的数据中学习更高级别的特性。最后,使用学习过滤器,他们能够超越ImageNet数据集的最新技术性能。(2012年)。
数据集结构/算法
如上所述,来自1000万个Youtube视频随机选择的片段,他们通过使用OpenCV脸部识别得出结论,在1000万个采样片段中,面部出现的概率不到3%。
这里使用的算法的灵感来自不同类型的无监督学习算法的成功。(RBM,稀疏自动编码器等......)。作者的目的是学习更高水平的特征,而不仅仅是低水平。
如上所述,作者使用的架构可以被认为是深度自动的稀疏编码器,带有一些转动(twist)同时它们也是局部感受器,池和局部响应归一化(使用了L2池)。堆叠(stacking)一系列统一模块,大脑所采用的架构是在选择性和允差层(tolerance layers)之间转换。有一件需要注意的重要的事是,虽然网络使用局部感受器,但是它们并不是卷积的(参数在图像中的不同位置不可共享),这在生物学上更合理。
学习和优化
在学习期间第二子层会被固定为均匀的权重,所有编码器和解码器中的其他权重通过上面的成本函数来处理。优化问题也称为重建地形独立成分分析(Topographic ICA),基本上第一项确保编码中关于数据的重要信息,第二项鼓励将有相似特征的特性组合在一起以实现方差。
这篇文章的作者使用了异步随机梯度下降(ASGD),并使用1000簇机器对网络进行了为期三天的处理。
面部实验
这个测试数据由37,000个来自Labeled FacesIn the Wild数据集和ImageNet数据集的图像组成。经过训练之后,作者使用测试集来测量每个神经元检测面部的表现。令人惊讶的是,最好的神经元能够以81.7%的准确度检测到面部。对于没有局对比度归一化的层,精度会降低至78.5%。
他们将激活值转化为直方图得到上面的图表,可以明显看出,即使没有标记数据,也是有可能训练人脸检测器的。
作者通过使用两种技术使神经元的刺激最大化。(使测试集里响应最积极的刺激物可视化,最大化数值以找到最佳刺激物)。这样可以验证神经元是否确实在寻找一张脸。并且通过额外的实验,结果显示已知的权重会对应不同的方差,例如,垂直方向或左右方向旋转和缩放。
猫和人体探测器
作者还想知道网络是否能够学习更高级别的特性例如猫和人体等。如上所述,网络中的一些神经元能够检测到更高级别特征的形状例如猫或人体。在他们自己的数据集上测试的结果显示在猫和人体上分别达到74.8%和76.7%。
通过ImageNet进行图像识别
在经过训练后的权重上添加一对所有逻辑分类器后,他们在ImageNet数据集上重新训练网络(此方法也称为无监督预训练),能够比当时的基线(2012年)表现得更好。在具有22,000类别的ImageNet上,它超越了其他最高结果70%。同时所有的表现都可以在上面的表格看到。
结论
总结来看,使用大量数据和计算机力量,有可能实现仅使用未标签数据识别脸部和身体高级性能。另外,这种方法会比2012年ImageNet数据集的基准线表现要优越。
尾声
这是一个非常酷的实验,但是所需的数据量特别大(以及计算能力),也许这就是它没有实现的原因。