自监督SOTA框架 | BYOL(优雅而简洁) | 2020


  • 文章原创自微信公众号「机器学习炼丹术」
  • 作者:炼丹兄
  • 联系方式:微信cyx645016617

本篇文章主要讲解两个无监督2020年比较新比较火的论文:

  • 论文名称:“Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning”
  • 论文链接:https://arxiv.org/pdf/2006.07733.pdf

0 综述

BYOL是Boostrap Your Own Latent,这个无监督框架非常的优雅和简单,而且work。收到了很多人的称赞,上一个这样起名的在我认知中就是YOLO。两者都非常简单而优美。

1 数学符号

这个结构有两个网络,一个是online network,一个是target network。

  • online network:用 θ \theta θ来表示online network的参数,包含,encoder f θ f_{\theta} fθ,projector g θ g_{\theta} gθ和predictor q θ q_\theta qθ
  • target netowrk:使用 ξ \xi ξ来表示参数,也有 f ξ f_{\xi} fξ g ξ g_{\xi} gξ,但是没有predictor。

我们会更新online network,然后用滑动平均的方式,更新target network:

ξ ← τ ξ + ( 1 − τ ) θ \xi\leftarrow \tau\xi + (1-\tau)\theta ξτξ+(1τ)θ

现在我们有一个图像数据集D,其中获取一个图片 x ∈ D x\in D xD,然后我们对这个D做不同的图像增强,得到了两个新的分布 T \Tau T T ′ \Tau' T,然后从两个新分布中获取的图片,用 v v v v ′ v' v标记。也就是说,如果用 t ( ) t() t() t ′ ( ) t'() t()表示对图像做图像增强的过程,那么 v = t ( x ) , v ′ = t ′ ( x ) v=t(x),v'=t'(x) v=t(x),v=t(x)

2 损失函数

我们现在有 v v v,经过encoder,得到 y = f θ ( v ) y=f_{\theta}(v) y=fθ(v),经过prejector,得到 z = g θ ( y ) z=g_{\theta}(y) z=gθ(y),经过predictor,得到 q θ ( z ) q_{\theta}(z) qθ(z);同理,target network也是如此,只是没有最后的predictor,最终得到 z ′ z' z

我们对 z ′ z' z q θ ( z ) q_{\theta}(z) qθ(z)做l2-normalization,含义为取出这两个隐含变量的绝对大小,而保留其方向性,为后面要做的向量点乘做铺垫。

上图中, q θ ˉ ( z ) = q θ ( z ) ∣ ∣ q θ ( z ) ∣ ∣ 2 \bar{q_{\theta}}(z)=\frac{q_{\theta}(z)}{||q_{\theta}(z)||_2} qθˉ(z)=qθ(z)2qθ(z),损失函数不难,其实有点像是: 2 − 2 cos ⁡ θ 2-2\cos\theta 22cosθ

上面,我们得到了损失 L θ , ξ L_{\theta,\xi} Lθ,ξ,接下来,我们需要计算symmetric loss,这个是把v和v‘分别放入target network和online network计算,得到的 L ~ θ , ξ \widetilde{L}_{\theta,\xi} L θ,ξ,然后论文中提到,通过SGD来最小化

L θ , ξ B Y O L = L θ , ξ + L ~ θ , ξ L^{BYOL}_{\theta,\xi}=L_{\theta,\xi} + \widetilde{L}_{\theta,\xi} Lθ,ξBYOL=Lθ,ξ+L θ,ξ

需要注意的是,这个优化的过程,仅仅更新online network,target network的参数不变化,目的是让online network逐渐拥有target network的性能

因此,这个BYOL的整个训练过程可以浓缩成下面的两行:

3 细节部分

3.1 图像增强

3.2 结构

上图中的encoder f θ , f ξ f_{\theta},f_{\xi} fθ,fξ使用的是resnet50和post activation,这里第一次看到post activation,就去看了一下发现,其实就是先卷积还是先激活层,如果relu放在conv后面就是post activation,relu放在conv前面就是pre activation。

经过encoder,一个图片会输出2048个features,然后经过MLP,特征扩展到4096个特征,最终输出256个特征,在SimCLR模型中,MLP后跟了一个BN层和Relu激活层,但是在BYOP中没有BN层。

3.3 优化器

使用的是LARS优化器,使用cosine 学习率衰减策略,训练1000epoch,其中包含10个warn-up epoch。学习率设置的为0.2。

至于online更新到target的参数 τ \tau τ, τ b a s e = 0.996 \tau_{base}=0.996 τbase=0.996,

τ = 1 − ( 1 − τ b a s e ) ( cos ⁡ π k K + 1 ) 1 2 \tau=1-(1-\tau_{base})(\cos\frac{\pi k}{K}+1)\frac{1}{2} τ=1(1τbase)(cosKπk+1)21

k is current training step and K is maximum training steps.

3.4 财力

batchsize为4096,分布在512个TPU v3的核,训练encoder大约需要8个hour。

4 模型评估

在ImageNet上做监督学习,先用无监督训练好encoder后,然后用标准的resnet50进行监督微调:

前面同行,这里的监督训练也是获取ImageNet上的少部分数据集进行训练,所以叫做semi-supervised:

这样的方法在其他的分类数据集上的效果:

觉得笔记不错的,可以关注作者的微信公众号「机器学习炼丹术」。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到自动驾驶目标估计和预测方法时,有一些先进的技术被认为是SOTA(State-of-the-Art,最新技术)的。以下是一些SOTA自动驾驶目标估计和预测方法的示例: 1. 基于深度学习的方法:深度学习在自动驾驶目标估计和预测领域取得了巨大的成功。通过使用卷积神经网络(CNN)和循环神经网络(RNN)等深度学习模型,可以从传感器数据中提取特征并进行目标检测、跟踪和预测。这些方法通常使用大规模的标注数据进行训练,并具有较高的准确性和鲁棒性。 2. 多传感器融合方法:自动驾驶系统通常使用多种传感器(如相机、激光雷达、雷达等)来获取环境信息。多传感器融合方法将这些传感器的数据进行融合,以提高目标估计和预测的准确性和可靠性。常见的融合方法包括基于卡尔曼滤波或粒子滤波的传感器数据融合。 3. 基于图像语义分割的方法:图像语义分割可以将图像中的每个像素分类为不同的物体类别。这些方法可以用于自动驾驶目标估计和预测中,以提供更精细的目标边界和形状信息。通过结合语义分割和目标检测/跟踪算法,可以实现更准确的目标预测和轨迹规划。 4. 基于概率建模的方法:这些方法使用概率模型来表示目标在未来的位置和轨迹。常见的方法包括高斯混合模型(GMM)和条件随机场(CRF)。这些方法可以通过历史轨迹数据和环境信息来估计目标的未来行为,并进行预测。 5. 端到端学习方法:端到端学习方法直接从传感器数据到车辆控制命令进行学习,省去了传统的模块化设计。这些方法通常使用深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN),以实现端到端的自动驾驶目标估计和预测。 需要注意的是,自动驾驶领域的研究和技术发展迅速,新的SOTA方法不断涌现。因此,上述列举的方法只是目前为止的一些示例,未来可能会有更多创新的方法被提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值