使用大规模无监督学习建立高层特征

简介: 翻译:《Building High-level Features Using Large Scale Unsupervised Learning》

使用大规模无监督学习建立高层特征

摘要

我们从未标记的数据中建立高层的分类明确的特征的检测器。比如说,可不可以从一些未标记的图片中学习人脸识别呢?为了回答这个问题,我们训练了一个稀疏的自编码器在大量的图片集合上(这个模型大概有一亿个连接,数据集包括了一千万个200x200的像素图片)。我们使用并行模型和异步SGD训练了三天这个网络。和公认的猜测相反的是,我们的实验得出用大量无标记的图像也能训练出一个脸部识别器的结论。控制实验显示这个特征显示器很稳健,不仅对平移,也对旋转。我们也发现这个网络对其他的高层概念比如说猫脸或人的身体也一样敏感。从这些特征开始,我们训练我们的网络来识别22000个分类,并且取得了70%的提升。

介绍

我们的工作重心是建立一个高层-分类明确的特征检测器,用来检测无标记图片。我们想要知道能不能从未标记图片上建立一个人脸识别器。这个方法的灵感来源于神经科学的一个推测:人脑中存在分类明确的神经元。这个推测还有待考察,但是目前的实验性证据表示一些位于脑皮层的神经元是被选择用来进行分类的,比如说脸,手,甚至是人类。

计算机视觉的方法强调了标记数据在获得分类明确的特征检测器中的重要性。比如,为了建立一个人脸识别器,一个人需要大量的包含了人脸的图片,经常表现在围绕人脸的一个方块。这种需求为我们的问题带来了挑战。虽然大家都更喜欢不需要标记的数据,但是它们在建立高层图像时很难表现的很好。

这个工作探究了从未标记数据中建立高层特征的可行性。从实际角度看,这为从未标记的图像提取体征提供了一个廉价方法,但是更重要的是,它是一个研究“grandmother neuron“能不能从未标记数据中学习的问题。非正式地,这个将会至少原则上证明人类幼儿学会分类脸部是因为它们见了太多脸而不是因为它们被通过监督和补偿进行指导。

非监督特征学习和深度学习早就用来从未标记数据中建立特征。使用未标记的数据来学习特征是self-taught learning 框架的关键。成功的特征学习算法和他们的应用能够在很多文献中找到。目前为止,很多这些算法都只在学习低层特征比如边缘检测器上取得成功。我们工作的主题就是捕获更复杂的特征。

最近的工作显示,最近的主流是训练深度学习算法来生成先进的结果。我们推测过长的训练时间是高层特征没有被记录的一个因素。

我们解决这个问题通过提升训练深度网络的核:数据集,模型,计算资源。首先,我们使用了一个从youtube上随机采用生成的大数据集。我们的输入数据是200x200的图像,比平常的32x32的图像都要大。我们的方法,一个包括池化和局部对比度归一化的深度自编码器,使用大的计算机堆来匹配大图片。我们使用局部感受野。这个方法减少了机器之间的连接损耗,因此允许模型并行(参数按机器分布)。异步SGD被用来支持数据并行。这个模型是分布式的方法在1000个机器中训练了三天。实验结果表明它确实能从未标记数据中建立高层特征。特别的事,使用一个包含了脸部和干扰项的hold-out测试,我们发现脸部有个特征被高度选择。这个结果也被优化过的可视化证明。控制实验显示检测器不仅能检测出平移也能测出旋转和缩放。相似的实验证明网络也能学习猫脸和人的身体的概念。

使用这些特征,我们在Imagenet上的识别获得了极大的提升。对于22000个分类,我们实现了15.8%的准确性,并且提升了70%。随机猜测的准确性要少0.005%。

方法

一个训练集由来源于10000个youtube视频的取样组成。为了防止重复,每个视频只提供一张图像,每个样例都是200x200的彩色图像。

我们的算法能被当作一个有三个重要部分组成的稀疏的深度自编码器:局部感受野,池化和局部对比归一化。首先,使得一个自编码器能适用大图片,我们使用一个被称为局部感受野的简单方法。这个方法表示自编码器中的每一帧都能被连接到一个低层中的小区域。接下来,为了实现局部变形的不变性,我们使用了局部l2池化和局部对比归一化。L2池化允许学习刚性特征。

我们的深度自编码器由复制三次由局部filtering和局部池化和局部对比归一化组成的阶段。这个阶段的输出是作为下一阶段的输入,并且总体模型能用九层的网络表示。第一和第二个下降层经常被称为filtering(取样)和池化。第三个下降层被用来作局部消减和分裂归一化。

我们的方法的核心是使用神经元之间的局部连接。在我们的实验中,第一个下降层有18x18像素的接收空间并且第二个下降池有5x5的相互重叠的特征。在第一层的神经元同输入的所有像素相连,第二层的神经元只和一个通道的像素相连。当第一层输出线性滤波响应,池化层输出输入的平方和的平方根,因此,被称为L2池化。虽然我们使用局部感受野,它们并不卷积:这个参数并没有被图片的不同地方分享。除此之外,为了更加可行,不分享权重允许学习更多。

从scale的层面上来看,我们的网络是目前所知的最大的网络之一。他有十亿个参数要训练。值得一提的是,我们的工作同人脑相比仍然非常小。

这个模型使用大概1000个机器平行训练,细节在下面描述。

实验

在这个部分,我们首先关注分析脸部识别的表达。

这个测试集包括了来自两个数据集的37000个图像样本。这里有13026张未标记的脸部采样,其余的都是随机取样的干扰项。这些图片等大小都被重新调整来适应顶部神经元的可视区域。

训练后,我们使用这个测集来检测每个神经元在识别脸部和干扰项时的表现。对每个神经元,我没发现它的最大最小激活值,然后找到二十个相同的空间下限。准确性是二十个中的最优的分类准确性。

神经网络中最好的神经元在识别脸部时表现的很好,即使没有监督信号。他也达到了81.7%的准确性。在测试集中有13026个脸,所以猜测只达到了64.8%。一层网络中的最优神经元只能实现71%的准确性,随机从训练集中选取100000filter的样本,只达到了74%。

我们也使用两个可视化的方法来验证神经元的最佳刺激是不是一个脸。第一个方法是可视化测试中反映最激烈的刺激。因为测试集很大,这个方法能有效的检测。第二个方法是用数值最优化来找到最佳刺激。我们能找到一个最大化输出y的一个有界的输入x。

在我们的实验中,这个优化问题被通过线性搜索的梯度下降算法解决。

这个网络也学习了别的高层概念。相似的可视化显示能也能学习猫脸和人体和其他概念。

接下来我们将这个特征学习方法用来测试。使用一个已经用上述方法学习过的网络,我们接下来在网络的最高层增加一对所有的逻辑分类器。这个通过非监督学习初始化一个网络的方法,被称为非监督预处理。在使用标记图像的监督学习中,低层的参数和逻辑分类器的参数一起被调整。这是通过首先调整逻辑分类器然后调整整个网络来实现的。在控制实验中,我们也能用随机权重来训练一个网络(没有使用非监督预处理:所有的参数都被随机初始并且只被标记的数据调整)。

我们将数据随机分成两组,一组用来训练一组用来验证。我们记录验证组的表现,并且比较。分组不同,验证组表现也不同。

这个结果显示我们的方法相当好。在有10000个分类的Imagenet中,我们的方法实现了15%的提升。在22k分类中,实现了70%的提升。

相关文章
|
机器学习/深度学习 人工智能 运维
10 分钟搞懂 LLMOps
10 分钟搞懂 LLMOps
3171 0
|
存储 设计模式 缓存
DDD领域驱动设计实战-分层架构及代码目录结构(下)
DDD领域驱动设计实战-分层架构及代码目录结构
2355 0
DDD领域驱动设计实战-分层架构及代码目录结构(下)
|
12月前
|
人工智能 Kubernetes 调度
基于 AI 网关和 llmaz,提升 vLLM 推理服务可用性和部署易用性的实践
本文介绍了如何使用 llmaz 快速部署基于 vLLM 的大语言模型推理服务,并结合 Higress AI 网关实现流量控制、可观测性、故障转移等能力,构建稳定、高可用的大模型服务平台。
819 18
|
1月前
|
JSON NoSQL API
开源项目观察|ds4:本地 Agent 推理,不只是把模型跑起来
Redis作者antirez新开源项目ds4(DwarfStar 4),是专为DeepSeek V4 Flash设计的轻量级本地推理引擎。聚焦Agent场景,支持OpenAI/Anthropic API、Disk KV Cache复用、工具调用精准映射与长上下文优化,在MacBook等高端个人设备上实现高效端到端推理。
590 3
开源项目观察|ds4:本地 Agent 推理,不只是把模型跑起来
|
10月前
|
存储 人工智能 NoSQL
万字解码 Agentic AI 时代的记忆系统演进之路
本文深入探讨了在 Agentic AI 时代,记忆(Memory) 作为智能体核心能力的定义、构建与技术演进。
3030 9
万字解码 Agentic AI 时代的记忆系统演进之路
|
存储 人工智能 安全
AI战略丨全面投入升级 AI 大基建
云厂商拥有全栈技术储备,并通过基础设施的全面升级,让 AI 训练、推理、部署和应用整个生命周期变得更高效。
|
机器学习/深度学习 人工智能 自然语言处理
🔍 Prompt、RAG、Fine-tuning三者各自的优势是什么?
【10月更文挑战第15天】在人工智能模型的开发中,Prompt、RAG(检索增强生成)和Fine-tuning是三种常见的优化技术。Prompt通过少量示例引导模型生成特定输出,简单灵活;RAG结合检索和生成,适合需要大量外部知识的场景,提高答案准确性和可解释性;Fine-tuning通过特定任务或数据集训练模型,提升特定场景下的表现,适用于有大量数据和计算资源的场景。开发者需根据具体需求选择最合适的优化策略。
1067 4

热门文章

最新文章