BYOL论文简析——笔记

原讲解视频地址,感谢UP的讲解!受益匪浅!

真诚的向大家推荐这个UP主,论文讲述的方法清楚,脉络清晰,听君一席话胜读十年书。

论文名称:Bootstrap your own latent: A new approach to self-supervised Learning

论文地址: https://arxiv.org/abs/2006.07733

代码: https://github.com/deepmind/deepmind-research/tree/master/byol

【左脚踩右脚上天的神奇方法】Bootstrap

目录:1.Intro 2. methodology 3. intuition 4. result and ablation study 5. conclusion

1. Introduction

为什么使用Self-supervise这些方法?

因为随着深度学习的发展,模型越来越大,出现梯度爆炸、梯度消失等情况,训练越来越论难,需要的数据越来越多(大量标记过的数据)。我们需要一个模型能够以更低的样本的成本来训练出一个好的模型。这个模型能够更加泛化,对于多种视觉任务都能有所帮助。

图1 庞大的网络结构(34层的ResNet)

2.  Methodology

图2 BYOL模型结构

BYOL的亮点在于会同时维护两个相同的网络\theta \xi \theta 为Online Network,\xi 为target Network。在训练的过程中使Online Network不断的逼近Target Network。Target Network使用Momentum(动量)的方式更新自己的参数,从而缓慢的向Online Network靠拢。从而自己依靠自己的力量缓慢的提升模型的性能。

模型流程解析:

对于一幅输入的图像(input image)x,对其进行两种随机的图像增广策略tt^{\prime}得到增广的两幅图像vv^{\prime}v送入Online Network,v^{\prime}送入Target Network。

f_\theta 是常见的encoder(CNN:ResNet 50...)。x通过f_\theta 后得到表征(representation)y_{\theta},这是我们最终会使用到的图像所提取的feature。在此基础之上,利用g_\xiy_\theta由feature space映射到latent space得到z_\theta。这一步即称为projection(投影)。

在target network中x经过t^{\prime}这一增强后得到了一个新的图像v^{\prime}。送入一个与online network结构相同的encoder f_\xi中得到v^{\prime}的representationy^{\prime}_{\xi}。(两个encoder的参数是不同的,target network中的encoder参数使用的是动量更新)同样,将y^{\prime}_{\xi}通过g_\xi映射到latent space得到z^{\prime}_{\xi}

截止到这里online network与target network进行的是同样的工作。到这一步我们需要思考,我们有了之前的铺垫,如何让online network和target network产生联系呢?也就是说我们要思考如何来构建loss。

BYOL的做法是在online network里增加了一层网络的结构q_\theta。将z_\theta 输入q_\theta 中,使输出值q_\theta(z_\theta)尽量的靠近z^{\prime}_{\xi}。也就是说使Online network的projection的prediction尽量的向target network的projection靠拢。从而使得online network不断的向target network逼近。

注:target network中的sg即为stop gradient(停止梯度传播)。也就是说在得到loss之后只是在训练online network,并没有训练target network。但是target network并不是一成不变的,它依据动量更新在缓慢的向online network靠拢。但是他们二者永远不会达到相同的参数。

(其实我以为这里就是在通过不同的增广来积累同类图像的特征,从而使模型不断的优化。因为两种增广后的图片实际上属于同一类别,因此online network向target network靠近是合理且可行的。并且通过这种靠近最终希望模型能够学习到各种增广下各类图像的特征。

或者换一种说法,BYOL实际上是以prediction这一步来代替了之前SimCLR和MOCO中的负样本的存在。)

接下来让我们对本文的loss进行梳理:

L_{\theta ,\xi}\triangleq\|\overline{q_\theta}(z_\theta)-\overline{z}^{\prime}_\xi\|_2^2=2-2\cdot \frac{\langle q_\theta(z_\theta),z_\xi^{\prime} \rangle}{\|q_\theta(z_\theta)\| _2\cdot \|z_\xi^{\prime} \|_2}

这一loss的主要目标就是希望q_\theta(z_\theta)向量与z_\xi^{\prime}的夹角越小越好,夹角越小\frac{\langle q_\theta(z_\theta),z_\xi^{\prime} \rangle}{\|q_\theta(z_\theta)\| _2\cdot \|z_\xi^{\prime} \|_2}的值就越大,从而loss越小。

如果有初学者看到这个公式可能会不理解,下面补充一些二范数的基础知识,毕竟在深度学习的论文中常常会看到它的出现:

若存在向量w,则\|w\|^2_2的意思是向量w欧几里得范数的平方

如果你不明白公式推导中的2从哪里来,可以去论文中找找答案。这里我简单用文字来描述一下。

欧几里得范数的平方展开其实就是简单的完全平方差公式的展开,而2来自于两个平方项的和。

其中\overline{q_\theta}(z_\theta) \triangleq\frac{q_\theta(z_\theta)}{\|q_\theta(z_\theta)\|_2}\overline{z_\xi} ^{\prime}\triangleq\frac{z_\xi ^{\prime}}{\|z_\xi ^{\prime}\|_2}

这两项的平方自然都等于1,加起来就是2了。

在实际的训练当中BYOL还会调换生成的vv^{\prime}。也即将v送入target network,将v^{\prime}送入online network。这样可以得到另一个loss \tilde{L}_{\theta,\xi}。将这一个loss与之前的loss相加可以得到BYOL最终的loss。

L_{\theta,\xi}^{BYOL}=L_{\theta ,\xi}+\tilde{L}_{\theta,\xi}

使用该loss只对online network进行训练。根据训练得到的\theta再更新target network。也即论文中的:

\theta\gets optimizer(\theta,\nabla_\theta L_{\theta,\xi}^{BYOL},\eta )

\xi \gets \tau\xi+(1-\tau)\theta

以上就是整个BYOL网络的核心思想。以下是作者给出的伪代码,其流程与上述我们所讲述的是一致的。

图3 BYOL伪代码

通过以上流程我们将得到一个强的好的encoder f_\theta。通过好的encoder学习到好的representation,用于下游的计算机视觉任务的开展。

3. Intuition

到此我们需要深思一个问题:为什么这种方法没有使用负样本,没有使用contrastive loss却可以避免模型的坍塌呢?

在feature space中图像是由每一个dimension的值来描述的。但是我们如果在feature space中观察两幅增广图像的信息,他们之间的相互关系其实并不明显。因此我们需要再使用一串神经网络将它们投影到更高维的space中(latent space)。在这个高维space中我们希望两幅图像vector(可能就是高维空间中的“点”)尽可能的靠近。通过这两个vector的距离来表示二者的关系。因为vector实际来自于参数不同的两个网络中,所以它们在latent space中不可能是完全一致的。所以BYOL在online network后又增加了几层神经网络将online network中的projection预测到target network的latent space中。(这一过程实际上就是在latent space中将一个vector向另一个vector推近的过程。)为了能够完美的达成以上目标,整体的网络结构必须能够很好的克服图像增强对图像的影响,能够准确的将增广后的图像聚集(靠拢)在一起。这样实际上强迫了encoder学习出一个好的、更高级语义的表达。

在训练中只训练online network,target network实际上是一种过去的online network。这也就导致了无论怎么训练这个模型都不能使loss达到最小值。作者在此处指出本文的模型其实有些类似于GAN,有两个network进行对抗,始终无法将loss降下来。

4. Result

通过几个下游任务来测试方法的结果:

图4 结果一
图5 结果二
图6 与SimCLR对比结果

最后:

注:停止target network的梯度传播是非常有必要的,对结果的影响很大。(论文中有对比实验)

一些人对BYOL的质疑:sensitive to batch size and optimizer choices。

感谢您的阅读,欢迎在评论区分享您的见解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352