同一张猫咪图片经过剪裁得到的另一视图被视作正样本 , 正样本与原图经过神经网络编码得到的表征应该相似;而数据集中的其余图片被视为负样本 , 经网络编码后的结果应当差异较大 。
完成正负样本的构建后 , 对比学习一般采用InfoNCE Loss来进行损失计算和模型更新 , 其形式如下:
其中
一. MoCo
MoCo是对比学习中一个非常有代表性的方法 , 其主要思想是将对比学习过程看作一个“查字典”的过程:在一个由众多样本构成的键值(key)字典中检索到与查询样本的编码结果(query)相匹配的正样本 。 为了提升对比学习的效果 , 提出两点假设:
一.键值字典的容量应该尽可能增大以提高自监督任务的难度 , 从而提升训练效果;
二.键值字典应该在训练过程中保持一定程度的一致性以保障自监督学习过程能够稳定进行 。
基于以上两点假设 , 分析了几种对比学习机制 。
1端到端训练
即对于所有的查询样本的编码结果(query)和字典键值(key)同时进行梯度传播 , 但这一方法中显存大小会极大地限制键值字典的大小 , 导致自监督任务难度降低 , 影响训练效果;
2.基于memory bank的训练方法
迭代过程中将键值编码存储到一个memory bank中 , 每轮对比学习过程中所需要的字典键值直接从memory bank 里选取 , 而梯度计算只对查询样本的编码网络分支进行 。 因为MoCo不需要对键值字典的分支进行梯度计算 , memory bank方法可以显著提升键值字典的容量 , 但是由于每个样本在memory bank中的键值在被模型重新编码时才会被更新 , 键值字典中键值间的一致性较差 , 从而降低了训练的稳定性 。
因此 , 提出一种momentum encoder来实现对键值字典的编码 。 对于查询样本 , 使用普通encoder进行编码并直接进行梯度计算;而对于键值字典 , 首先由一个动态更新的队列维护字典的输入样本 , 再使用momentum encoder将样本编码为键值 。 Momentum encoder在训练过程中不会进行梯度计算 , 而是采用动量更新的方法从encoder更新参数 , 更新方法如下:
- 36氪首发|烹饪机器人公司「智谷天厨」获数千万元天使轮融资,羲融善道独家投资
- 网友热议|母亲回应3个孩子2个上清华:只能教孩子做人诚实守信 学习都靠自己努力
- 机器人|华为机器人新专利上线 网友:先有华为后有天开上鸿蒙如升仙
- 金字塔是时间机器?用途是拉伸和压缩时间,或能使生命延长和衰老
- 第六届全省中小学生互联网+机器人设计活动决赛顺利结束
- “文旅机器人小i”上岗
- 文旅机器人“小i”来了
- 如何评价扫地机器人离家出走一事?
- 李飞飞团队将ViT用在机器人身上,规划推理最高提速512倍
- 格力电器|不要再说Python难了,按照这个学习路线,四周速成Python
