热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【笔记】探索简单孪生网络表示学习

点击上方,选择星标或置顶,每天给你送干货!阅读大概需要10分钟跟随小博主,每天进步一丢丢每日英文Youcannearlyal

点击上方,选择星标置顶,每天给你送干货!

阅读大概需要10分钟

跟随小博主,每天进步一丢丢

每日英文

You can nearly always enjoy something if you make up your mind firmly that you will.

只要你下定决心做某件事,总能从中找到乐趣。

Recommender:王萌

作者:StayGold

链接:https://zhuanlan.zhihu.com/p/321642265

编辑:王萌 (深度学习自然语言处理公众号)

论文

题目:Exploring Simple Siamese Representation Learning

来源:arXiv

原文链接:https://arxiv.org/pdf/2011.10566.pdf

来自:学习NLP的皮皮虾

Abstract

孪生网络的结构是无监督图像表示学习中的一个通用的结构,通过最大化同一个图像两个增强版本的相似度,同时通过一些方法来避免坍缩(collapsing)的问题。本文通过实验结果证明了即使是最简单的孪生网络也可以用于图像表示无监督预训练,并取得较好的效果。相比于其它工作,本文证明了以下组件是不必要的:

  • 图像负样本对;

  • 很大的batch size;

  • 动量编码器

根据实验结果,确实发现了坍缩到固定表示的问题,但通过一个stop-gradient的操作能有效避免坍缩。随后本文还提出了一个假设来解释stop-gradient的效果,并通过实验验证了该假设。本文的简单方法(孪生网络+stop-gradient)在图像无监督表示学习上能取得和目前SOTA相近的效果。

Introduction

近一年出现了许多无监督、自监督图像表示学习的工作(MoCo、SimCLR、SwAV、BYOL等)。尽管它们的出发点、创新点各有不同,但大部分模型都遵从孪生网络的框架。即通过一个共享的编码器网络对同一个图像的不同增强版本(两个或多个)编码,使得它们具有较高的相似度。孪生网络是比较实体之间相似度的一个非常自然的工具。

但是,如果只是简单的最大化相似样本编码后的距离,孪生网络的输出会坍缩到某个固定常量。在这种情况下,网络输出的所有的表征都近似相同,因此损失降到最低,但准确率近乎为零。目前有一些策略来避免这一点,比如:

  • 对比学习通过引入负样本,使得模型在最大化相同图像的相似度的同时,也得和负样本远离;

  • SwAV引入聚类的目标,达到类似的效果;

  • BYOL只包含正样本,但使用了动量编码器。

本文证明了即使没有上面三个策略,简单的孪生网络(称为SimSiam)也能达到类似的效果,只需要一个stop-gradient的操作。

作者认为,孪生网络很可能是目前的相关工作能够成功的关键因素,因为它从模型结构上引入了建模“不变性(invariance)”的归纳偏差(inductive bias)。

Method

本文的结构很简单,包含:

  • 一个参数共享的编码器  ,通过ResNet实现;

  • 一个非线性映射网络  ,通过MLP实现,称为predictor;

  • stop-gradient操作,放在没有predictor的另一侧;

首先随机采样图像  的两个增强版本  和  ;随后,通过两侧的网络分别对其进行编码:  、  ;最后,将两个向量归一化后,最小化下面的负余弦距离损失:

进一步可以定义出对称的版本: 

上面损失的最小值就是 -1。

一个非常重要的、能让模型work的操作是stop-gradient操作,作者使用  来表示这一操作,这样,上面的两个损失分别变成了:

 

算法的伪代码如下:

Baseline设置:

  • 优化器默认使用SGD,学习率根据batch_size缩放,256时为0.05;学习率通过cosine衰减,weight decay为0.0001;SGD动量设为0.9;

  • 预测MLP为两层,中间层包含BN,维度为512,输入输出维度为2048;

Empirical Study

1. Stop-gradient的作用


  • 图左呈现了训练损失,如果没有stop-grad,损失很快到达0;而使用stop-grad的话,损失在不断下降;

  • 第二张图显示了输出表示的方差,如果没有stop-grad,方差近乎为0(发生了坍缩);而使用stop-grad能让方差为  ,差不多就是表示均匀分散在  维空间的单位超球平面上;

  • 第三张图展示了KNN分类的准确率,可以看到没有stop-grad的话,KNN的准确率近乎为0;若加上stop-grad,则准确率随训练稳定上升。

2. Predictor的作用

为了验证Predictor的效果,作者对比了三种变体:

  • 去掉Predictor:发生了坍缩(从训练公式上就可以推出来,和不包含stop-grad的设定等价了);

  • 随机初始化Predictor并固定:模型无法收敛,损失很高;

  • Predictor部分的learning rate不衰减:获得了更高的结果。

3. Batch Size的影响

上图验证了batch size的影响,在256和512上获得了最好的效果,过大的batch size反而会损害性能,显示了本方法不依赖于过大的batch size。


4. Batch Normalization

上图验证了BN的效果,实验证明在projection(ResNet内)网络中的隐层和输出层,在predictor网络中的隐层加BN效果最好。


5. Similarity Function

这里验证了损失函数的比较。其它所有因素保持一致。实验证明了对于cross-entropy也能work,证明了坍缩现象和损失函数无关。

6. Symmetrization

这里通过消融分析,说明了使用对称还是不对称的损失函数(3或4式)并不影响模型的收敛情况。作者倾向于认为对称的版本加强了数据,因此做了一个非对称(2x)的实验,发现能在1x的基础上进一步提升。


Hypothesis

基于上面的实验结果,本文提出了一个假设,来解释SimSiam隐式优化的目标。作者认为SimSiam类似于EM(Expectation-Maximization)算法,它隐式地和两组参数相关联,并通过一种迭代的方式分别优化这两组参数。stop-gradient存在的作用就是引入第二组可优化参数。

考虑如下的损失函数形式:

这里的  表示图像增强操作。这里引入了第二个可优化变量,即  。这里的  表示索引,即通过图像  找到对应的那个  ,它不再必须是神经网络的输出,而需要将其看作是优化问题中的一个参数。优化目标就是: 

这里的优化目标同时和  和  关联,就和k-means有点相似。在k-means中,也有两组需要优化的参数:一组是聚类中心(k个类别的聚类中心),这类似于优化目标中的  ;另一组是“每个样本分别属于哪个聚类”,这就类似于上面优化目标中的  (即对于每一张增强的图像都有一个与之对应的表征)。k-means算法中,优化上面两组参数是迭代进行的,即交替地计算每个类别的聚类中心,随后计算每个样本的聚类所属情况,直到训练稳定。上面的优化目标也类似,迭代进行以下两步: 

 

上面公式中,  代表迭代到了第几次,  表示赋值操作。

优化(7)式时,就使用神经网络梯度回传、更新;优化(8)式时,就使用如下的重新计算、赋值更新操作:

 

上式显示了,  的更新是通过计算不同增强版本的图像  的表示期望来得到的。

作者认为,SimSiam实际上模拟了上面(7)、(8)式的一步更新操作,只不过公式(9)中的采样只做一次:

 

将其代入公式(7)的子优化问题,得到:

 

上面的公式其实就是SimSiam的结构加上stop-gradient操作。

Predictor

作者接下来阐述了引入predictor  的目的。根据定义,期望最小化  。最优的  需要满足  。在公式(10)的优化中,因为只采样一次,期望  被忽略了,而引入  就可能通过神经网络的拟合能力去学习“预测期望”。

Proof of concept

作者构造了两个实验用来证明上述假设的正确性:

  • 在同一个迭代内(公式(7), (8)),执行多步的SGD更新;

  • 将Predictor去掉,然后通过一个滑动平均作为优化  的手段。

对于第一个实验,发现在同一个迭代内更新多步SGD能进一步提升性能:

对于第二个实验,发现去掉  ,引入滑动平均更新后,模型也能取得55%的准确率,和上面的表只取得0.1的准确率相比,说明了上述假设大致是正确的。


Comparisons

1. ImageNet

在ImageNet linear evaluation上,与目前SOTA的无监督表示学习方法对比:

本文的方法在100 epoches的时候达到了最优效果,尽管随着epoch数增加,逐渐落后于其它方法。同时相比SimCLR,在任何epoch数的情况下均有提升。


2. Transfer Learning

在目标检测任务上迁移,发现本文的方法对比其它方法也是有竞争力的:


3. 与其他方法的对比:

上图比较了目前的一些无监督图像表示预训练的方法,本文的SimSiam可以视为是公共结构,是其它方法减去某些组件后的共同的结构。

与SimCLR对比

SimSiam可以视为是SimCLR去掉负样本。为了进一步对比,作者对SimCLR加上了predictor和stop-grad结构,效果没有提升:

与SwAV对比

SimSiam可以视为SwAV去掉online clustering。作者同样对SwAV做了一些对比:

加入predictor依然没有提升,同时去掉stop-grad之后导致模型无法收敛。

与BYOL对比

SimSiam可以视为是BYOL去掉了动量编码器。如上面所说,公式(8)也可以通过其它优化器来优化,例如基于梯度的优化器(而不是简单赋值)。这会导致  相对平滑地更新。动量编码器也类似地起到了这种效果,因此BYOL效果较好。作者认为公式(8)的其它优化方法可以作为未来的研究方向。

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Python基础知识:注释、输出和input交互
    本文介绍了Python基础知识,包括注释的使用、输出函数print的用法以及input函数的交互功能。其中涉及到字符串和整数的类型转换等内容。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 论文阅读:《Bag of Tricks for LongTailed Visual Recognition with Deep Convolutional Neural Networks》
    基于深度卷积神经网络的长尾视觉识别技巧包摘要近年来,挑战性长尾分布上的视觉识别技术取得了很大的进展,主要基于各种复杂的范式(如元学习)。除了这些复杂 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • Word2vec,Fasttext,Glove,Elmo,Bert,Flairpre-trainWordEmbedding源码数据Github网址:词向量预训练实现Githubf ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
author-avatar
辰小坏2602938945
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有