特征学习“Building High-level Features Using Large Scale Unsupervised Learning”

摘要:GoogleBrain中特征学习的原理,通过使用未标记的图像学习人脸、猫脸high-level特征,得到检测器。文章使用大数据构建了一个9层的局部连接稀疏自编码网络(模型有1 billion个链接,数据有10 million 个200*200的图像)。使用模型并行化和异步SGD在1000个机器(16000核)上训练了3天,实验结果显示可以在未标记图像是否有人脸的情况下训练处一个人脸检测器。

之前特征学习方法有:RBM,autoencoder,sparse coding,K-means,这些方法学到的是low-level 特征,如边缘,团块,本文学习high-lvel特征。

算法原理:稀疏编码可以在未标记的数据上训练产生接受域,但稀疏编码结构比较浅,只能获取low-level的特征。文章构建了一个稀疏深度自编码网络,包含三个特征:局部接收域,池化和局部对比度归一化。局部接收域是为了处理大图,L2 池化和对比度归一化是为了对局部变形不变。深度自编码由三个相同的步骤组成:局部滤波,局部池化和局部对比度归一化,共9层,如figure1所示。
特征学习“Building High-level Features Using Large Scale Unsupervised Learning”_第1张图片

网络的特点是节点的局部连接,第一层输入图像所有通道,接收域维18*18,第二层只有一个通道,第一层输出线性滤波响应,第二层输出平方和的平方根,即L2池化。与CNN不同,这里权值不共享。网络节点达到了10亿个,但依然比人的视觉系统节点小 106 数量级。

学习及最优化
学习:学习时,第二子层参数维均一的权值,第一层的编码权值 W1 和解码权值 W2 使用以下方法优化:
特征学习“Building High-level Features Using Large Scale Unsupervised Learning”_第2张图片
λ 平衡稀疏度与重建,m = #examples,k = #pooling units, Hj 是权值向量。该优化方法为topographic ICA。第一项编码数据重要信息,第二项在池化中聚集相似特征。

最优化:训练时使用模型并行化将局部权值 W1 W2 和H分布到不同的机器。研发组开发了一个框架Distbelief, 为了加速训练,系统使用了异步SGD。将训练分为5部分,之后使用模型的拷贝在每个部分上运行。模型通过一些列参数中央参数服务器通信,参数服务器维护每个分服务器参数的状态。简单的说,在处理前,每个model replica向参数服务器请求一份mini-batch模型参数的拷贝,之后它计算mini-batch的参数梯度,之后将梯度发送至合适的参数服务器,P步更新一次,G步上传一次可以降低通信压力,异步的SGD在有机器损坏的情况下依然可以继续进行。

在人脸上的实验结果:
测试数据有37 000张图像,包含标记的人脸图像和从ImageNet获取的随机图像。测试网络是否能在随机图像中找到人脸。网络中最好的神经元获得了81.7%的人脸检测准确率,随机猜测准确率为64.8%。单层的网络:71%,最好的线性分类器:74%。网络对人脸和非人脸的激活值直方图为:
特征学习“Building High-level Features Using Large Scale Unsupervised Learning”_第3张图片

在ImageNet上的分类实验,网络最后一层加了一个1-all的逻辑分类器,训练逻辑分类器之后微调网络,20K类识别准确率为15.8%(???)。

你可能感兴趣的:(深度学习)