示例工程【免费下载链接】NYU-DLSP20NYU Deep Learning Spring 2020项目地址https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning点击查看免费下载本文基于 NYU-DLSP20(NYU 2020 春季深度学习课程)第 10 周讲义 A「Self-Supervised Learning - Pretext Tasks」(docs/tr/week10/10-1.md,英文原版见 docs/en/week10/10-1.md)展开,系统讲解监督式 ImageNet 预训练范式为何无法规模化、自监督学习如何把数据自身变成标签、图像/视频/音画多模态三类 pretext(前置)任务的设计与训练方式,以及 pretext 网络学到的表征该如何评估迁移能力。读完本文,读者将掌握 pretext 任务从构造、训练(含多任务切换)到线性探针/微调评估的完整方法论,并理解「末层 mAP 骤降」这一判断预训练任务与下游任务是否对齐的关键证据。图 1:标注复杂度与可用数据量的关系。标注要求越严格,可获得的数据越少;反过来,不标注的数据几乎无限可用,这正是自监督学习的出发点。一、监督式预训练的成功与它的天花板过去十年,计算机视觉最成功的配方之一是:用 ImageNet 分类做监督式学习来学习视觉表征,再把学到的表征(或模型权重)作为其他视觉任务的初始化。这套预训练 微调范式之所以成立,前提是存在大规模人工标注数据。但讲义指出这一前提正在崩塌,原因有三:1. 标注成本不可承受。ImageNet 标注 1400 万张图像粗略耗费了 22 个人年(human years)。以这个速率,给全网照片做同类标注是完全不可行的,社区因此开始寻找替代的标注来源,例如社交媒体的 hashtag、GPS 定位,或者标签本身就是数据样本某种属性(自监督)的方式。2. 标注复杂度决定数据规模的量级。讲义给出一组关键的数量关系:数据范围规模带物体级类别 边界框标注的图像约 100 万张放宽边界框约束约 1400 万张互联网上全部可达图像再高约 5 个数量级图像之外的数据(视频、音频等)需要其他感官模态才能采集与理解3. 长尾问题与域偏移问题。互联网图像的标签分布呈长尾形态:大量标签只对应极少图像,而为长尾末端类别取得足够标注样本需要标注海量数据。另一方面,当下游任务属于完全不同的域(如医学影像)时,ImageNet 预训练 下游微调的效果更加存疑,而且根本无法为每个域都凑出 ImageNet 规模的数据。这三点共同指向同一个结论:表征学习必须摆脱对人工标签的依赖。二、什么是自监督学习讲义给出两条并行的定义路径:基于监督式学习定义:网络仍然执行监督式学习,但标签以半自动方式获得,不需要人工输入;预测问题定义:数据的一部分被隐藏、其余部分可见,目标是预测被隐藏的数据本身,或隐藏数据的某些属性。与另外两类学习范式的区别在于标签来源:范式标签来源监督式学习预定义、通常由人提供的标签无监督学习没有任何监督、标签或正确输出,只有数据自监督学习标签从与样本共现的模态(co-occurring modality)或样本自身的另一部分中派生Word2Vec:自然语言处理中的自监督原型以 Word2Vec 为例:给定一个句子,任务是从该句中预测被刻意删去的那个词。标签集合因此是词汇表中的全部单词,而正确标签就是被删去的那一个。这样网络就可以用常规的梯度下降方法训练,学到词级别的表征。这展示了自监督的一个通用形态:人为构造一个删除/遮挡 预测的 pretext 任务,让标签自动生成。讲义总结了选择自监督学习的三条理由:只通过观察数据各部分之间的相互作用关系就能学习数据的表征;大幅降低对大规模标注数据的需求;可以自然利用与单个数据样本相关联的多种模态(如视频 音频)。三、计算机视觉中的 pretext 任务3.1 两段式流水线:pretext 任务 下游任务视觉中的自监督学习通常由两个任务组成:pretext(前置)任务:一个自监督学习任务,目的是学习视觉表征;训练过程中得到的表征或模型权重将被用于后续任务。讲义明确指出 pretext 任务是被解决的任务,其价值体现在产出;下游(real)任务:在标注数据不足场景下的分类、检测等实际任务,使用 pretext 阶段学到的表征或权重来初始化。pretext 任务的构造原则也很直接:可以用图像、视频,或视频 音频来构造;每个 pretext 任务都存在可见部分与隐藏部分,任务要么是预测隐藏部分,要么是预测隐藏部分的某个属性。3.2 示例一:预测图像块的相对位置这是讲义给出的第一个具体 pretext 任务,可以看作 pretext 任务设计的标准模板:输入:两块图像 patch,一块是 anchor(锚),一块是 query(查询);任务:网络预测 query 相对于 anchor 的位置;建模:给定 anchor,query 可能出现在周围 8 个相对位置之一,因此这是一个8 分类问题;标签生成:标签可以直接由 query 相对 anchor 的几何位置自动算出,无需任何人工。图 2:相对位置任务示意。给定 anchor,query 的 8 个可能相对位置自动构成分类标签。如何评估学到的表征?讲义给出的是一套可复用的最近邻检索评估法:计算数据集中所有图像的 CNN 特征,作为检索的候选池(sample pool);计算待评估 patch 的 CNN 特征;在候选特征向量池中找到该特征的最近邻,检查它们是否符合预期。结果是:相对位置任务能找到与输入 patch 视觉上高度相似、且对物体颜色等因子保持不变的 patch。也就是说,该任务确实学到了视觉表征——外观相似的图像块在表征空间中也彼此靠近。3.3 示例二:预测图像旋转旋转预测是最流行、架构最简单的 pretext 任务之一,采样成本极低:对图像分别施加 0°、90°、180°、270° 旋转;将旋转后的图像送入网络,网络执行一个4 分类预测被施加的是哪种旋转。需要强调一点:预测旋转本身没有任何语义意义。讲义明确指出,它只是被当作一个**代理任务(proxy)**来迫使网络学到可供下游任务使用的特征与表征。它为什么有效?这一点已被实验证明。直觉是:为了预测图像朝向,模型必须理解图像的大致边界与结构表征——例如要能把天空与水面区分开、把沙地与水面区分开、知道树木是向上生长的。这些中间知识恰好是下游视觉任务也需要的。3.4 示例三:图像上色(Colorisation)在 pretext 阶段预测灰度图的颜色:对任意图像去除颜色信息,把灰度图喂给网络,让它预测原图的彩色版本。这个任务本身就有很直接的应用价值,例如给老式黑白胶片上色。任务背后的直觉:网络必须理解树是绿色的、天空是蓝色的这类有意义的世界知识,才能上色。讲义特别提醒一个常被忽略的性质:颜色映射不是确定性的,存在多个合法解。因此当某个物体可能有多种颜色时,网络会把它输出为灰色——即所有可能解的均值。针对这一点,有后续工作用变分自编码器(VAE)和隐变量来实现多样化上色;与本仓库配套的 VAE 笔记 11-VAE.ipynb 正好覆盖这部分背景知识。3.5 示例四:补全空白(Fill in the Blanks)遮挡图像的一部分,让网络根据周围可见部分预测被遮挡区域。讲义认为这有效的原因在于:网络被迫学习数据的隐含结构,例如车行驶在路上建筑由窗户和门构成这类结构性先验。四、视频 pretext 任务:Shuffle Learn视频是帧序列,而顺序这个概念正是自监督的核心思想来源,可以构造帧顺序预测、补全、目标跟踪等 pretext 任务。讲义以Shuffle Learn为例:从一段视频中抽取 3 帧:若顺序正确则标为正样本,若被打乱则标为负样本;问题转化为二分类:预测这 3 帧是否处于正确时序;直观理解就是给定起点帧和终点帧,判断中间帧是否是二者的合理解释(插值);网络结构:三塔 Siamese(孪生)网络——三帧各自独立前向,把生成的特征向量拼接(concatenate)后,接一个二分类头判断帧是否被打乱。用最近邻可视化网络学到了什么。讲义把 Shuffle Learn 学到的表征与 ImageNet 监督预训练、随机初始化网络的最近邻结果对比:ImageNet 表征善于压缩语义:第一组查询认出是体育馆场景,第二组认出是带草地的户外场景;随机初始化网络则高度依赖背景颜色;Shuffle Learn 起初看不出是在关注颜色还是语义,但仔细观察多个样例后发现,它关注的是人物的姿态(pose)——例如第一例中人是倒立的,第二例中脚部位置与查询帧相似,而场景和背景色被忽略。其解释是:pretext 任务是判断帧顺序是否正确,要做到这一点,网络必须关注场景中的运动体,而运动体正是那个人。定量验证:关键点估计。把该表征微调(fine-tune)到人体关键点估计任务(给定人体图像,预测鼻子、左肩、右肩、左肘等关键点位置),在 FLIC 与 MPII 两个数据集上与监督式 ImageNet 预训练结果对比:Shuffle Learn 在关键点估计上给出了很好的结果,与其最近邻分析中关注人体姿态的观察一致。该方法对目标跟踪与姿态估计都有实用价值。五、视频 音频 pretext 任务:判断音画是否匹配视频与音频构成多模态输入,天然适合自监督:任务预测一个视频片段是否与给定的音频片段匹配。采样构造正负样本:对一段带鼓声的视频,把视频帧与对应音频作为正样本对;再把鼓的音频与吉他演奏视频帧配对,作为负样本;训练:把问题作为二分类训练网络;架构:视频帧进入视觉子网络、音频进入音频子网络,各自产生 128 维特征/嵌入,拼接融合后做二分类,预测两路输入是否相互对应。这个任务的潜力是预测画面中谁在发出声音。直觉:如果声音是吉他的,网络就必须大致理解吉他长什么样;鼓同理。也就是说,音画匹配任务迫使网络学习模态间的对应关系,而这类关系在下游感知任务中普遍有用。六、理解 pretext 任务到底学到了什么这一节回答pretext 任务的表征质量从何而来,是理解整个方法体系的关键:1. pretext 任务应该是互补的。以相对位置和上色两个任务为例,把同一个模型同时用于学习两个 pretext 任务可以提升性能(讲义给出的对比实验基于 ResNet101,比较了两个任务分别单独训练与联合训练的结果)。结论是:单一 pretext 任务未必是学习自监督表征的最优解,多个互补任务的联合训练能覆盖更多维度的视觉知识。2. pretext 任务难度差异很大,难度与表征质量正相关:相对位置只是简单分类,任务偏容易;掩码/补全(masking and fill-in)难得多,因此学到更好的表征;对比学习方法(contrastive methods)产生的信息量甚至超过 pretext 任务。3. 如何同时训练多个 pretraining 任务?技巧在于:pretext 输出与输入类型绑定,而网络最后一层全连接层可以按 batch 类型热替换(swap)。例如:先喂一个黑白图像 batch,让模型输出彩色图(上色头);然后换掉最后一层,喂一个 patch 序列 batch 去预测相对位置。骨干网络参数不变,只切换任务头,即可在多个 pretext 任务上交替/联合训练。4. pretext 任务该训练多久?讲义给出的经验法则:选一个足够难、且确实能提升下游任务的 pretext 任务。实践中 pretext 阶段训练好之后通常不再重新训练;在开发迭代期,它作为整条流水线的一部分被训练。七、规模化自监督:Jigsaw 拼图任务Jigsaw(拼图)由 Noorozi Favaro(2016)提出:把图像切分为多个 tile(拼图块)并打乱,让模型预测原图被施加了哪种置换(permutation),把拼图还原。训练方式的工程细节:构造以 tile 为单位的 batch,同一图像的每个 tile 被独立评估,即每个 tile 单独通过共享权重的卷积网络;各 tile 的卷积输出被拼接(concatenate)起来,再由网络预测整图的 tile 置换顺序——本质上是一个 n 路 Siamese 结构。图 3:Jigsaw 任务的 Siamese 架构示意。各 tile 独立前向、编码拼接后预测置换,编码器参数共享。讲义列出三个设计要点,对工程实践很关键:只使用置换的子集:例如 3×3 切分理论上有 9! 种置换,实际只用其中 100 种作为分类类;n 路 ConvNet 使用共享参数,不同 tile 走同一个编码器;问题复杂度 子集大小,也就是你要预测的信息量。增大子集规模就是在增大 pretext 任务难度。Jigsaw 有一个重要性质:它有时在下游任务上优于监督式预训练方法,因为网络被迫学习输入几何结构的概念。同时讲义也给出了它的短板:在 few-shot(极少标注样本)场景下,自监督学到的表征样本效率并不占优——这是评估这类方法时必须声明的适用边界。八、评估表征:微调 vs 线性分类器这一节讨论怎么量化一个自监督表征的好坏,讲义强调该评估形式本质上是一类**迁移学习(transfer learning)**评估:微调(Fine-Tuning):把整个 pretext 网络作为初始化,在下游任务上更新全部权重继续训练;线性分类器(Linear Classifier):冻结 pretext 网络,只在顶层训练一个小型线性分类器完成下游任务。讲义给出一条判断标准:好的表征应该能在很少训练量下完成迁移——也就是说,如果冻结网络 线性头就能取得好结果,说明表征本身质量高,而不是靠下游训练补救出来的。跨多任务评估 逐层分析。更有诊断力的做法是:从网络的不同层提取表征作为固定特征(fixed features),在多个不同下游任务上评估其有用性,以mAP(Mean Average Precision,所有任务精确率的平均)度量。讲义列举的任务包括:目标检测(微调方式)、表面法向量估计(NYU-v2 数据集)等。逐层分析给出两个结论:总体上,层越深,其表征在下游任务上的 mAP 越高;但最后一层会出现 mAP 的明显骤降,因为该层过度**特化(specialized)**于 pretext 任务本身。这一点与监督式网络形成鲜明对比:监督网络中 mAP 通常随层深单调上升。这一差异揭示了一个重要事实:pretext 任务与下游任务并未良好对齐——监督预训练之所以能迁移,很大程度是因为预训练任务(ImageNet 分类)本身就语义相关;而 pretext 任务的收益必须通过跨层、跨任务评估来检验,而不能只看最后一层。九、仓库延伸:本课程的配套材料结合本仓库的组织结构,可以按以下线索继续深入:第 10 周讲义 B 紧接着讨论 pretext 任务的缺陷,以及用**聚类(ClusterFit)与对比学习(PIRL)**改进自监督表征的思路,见 docs/en/week10/10-2.md;本周三讲总览见 docs/tr/week10/10.md;上色任务中提到的变分自编码器,对应仓库中的 VAE 教程 11-VAE.ipynb;重建式自编码器 10-autoencoder.ipynb(从代码可见其在 MNIST 上训练自编码器并可视化重建)属于重建即自监督这一与 pretext 同源的路线,可作为对照阅读;本周 practicum 是 Truck Backer-Upper(14-truck_backer_upper.ipynb),从纯观测数据中学习卡车动力学模型并据此优化控制器,与本讲不依赖人工标签、从数据自身结构中学习的主题精神一致;需要卷积网络背景知识的读者可回顾 06-convnet.ipynb,因为本文所有 pretext 任务都假设一个共享权重的 CNN 特征提取器。小结本文沿讲义脉络梳理了 pretext 任务方法的完整技术闭环:监督式标注的三重瓶颈(成本、长尾、域偏移)确立了自监督的必要性;隐藏部分 预测的统一框架派生出相对位置(8 分类)、旋转预测(4 分类)、上色(多解回归)、补全、Shuffle Learn 帧序二分类、音画匹配二分类、Jigsaw 置换预测等具体任务;训练层面支持按 batch 类型切换任务头来联合学习多个互补 pretext;评估层面则通过冻结 线性头检验表征质量、通过逐层 mAP 诊断预训练与下游的对齐程度,并以末层 mAP 骤降为信号识别过度特化的层。这套从任务设计到迁移评估的方法论,是自监督视觉表征学习的基础框架。赞分享示例工程【免费下载链接】NYU-DLSP20NYU Deep Learning Spring 2020项目地址https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning点击查看免费下载相关推荐自监督学习与预文本任务全解从 ImageNet 预训练瓶颈到旋转、Jigsaw 与 Shuffle LearnNYU-DLSP20 第 10 周课程精读自监督学习与预文本任务全解从 ImageNet 预训练瓶颈到旋转、Jigsaw 与 Shuffle LearnNYU DLSP20 第 10 周课程精读示例工程自监督学习与预文本任务Pretext Tasks完全解析NYU-DLSP20 第十周课程实战指南自监督学习与预文本任务Pretext Tasks完全解析NYU DLSP20 第十周课程实战指南 导读 本文基于 NYU Deep Learning Sp示例工程自监督学习与预文本任务全解析从图像、视频到多模态NYU-DLSP20 第 10 周讲座笔记自监督学习与预文本任务全解析从图像、视频到多模态NYU DLSP20 第 10 周讲座笔记 本文基于 NYU Deep Learning Spring 2示例工程上一篇【亲测免费】 探索未来影像FILM——大规模运动帧插值框架下一篇探索AnuPpuccin一款获奖的Obsidian个人主题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考