## MAE 的正面证据,也要说清使用接口 原论文的端到端微调、最后块微调和线性读出,允许改变的计算不同。 ### MAE 的正面证据也依赖评价接口 [独立阅读](/course/blocks/mae-finetuning-evidence.html) MAE论文Table 3使用ImageNet-1K图像作自监督预训练,再端到端微调分类。ViT-L/16在224输入的top-1为85.9%;同表从零训练实现为82.6%。这里的结果支持:遮挡像素目标可以为较大视觉模型提供有效起点。它不是只看重建图好不好看。 论文Figure 9进一步指出,同一ViT-L表示的线性读出为73.5%,只微调最后一个块即可到81.0%。因此线性读出低,并不自动意味着这份表示不适合适配;评价允许改变多少计算,会影响判断。 这些是论文在明确训练与评价条件下的结果,不是本课程LAB 08的数字。阅读时区分三层:MAE原论文、当前教学卷积模型、页面里的16块索引图。它们分别提供研究实证、可运行学习链和透明机制。 **出处:**[MAE 原论文 §3、Table 3、Figure 9](https://arxiv.org/html/2111.06377v3) ## 先说明允许哪些参数改变,再比较结果 ## 解释、算例与证据 # P23 · 冻结读出和微调,在问不同的问题 把第一部分的方法转为使用与评价:冻结读出问现成表示,微调问适配起点,二者应各有协议。 图内标签与数值:P23 学习表示机制图,状态 1;线性读出;编码器 · 冻结;线性头 · 可训练;现有特征能否读出?;微调适配;编码器 · 可训练;任务头 · 可训练;适配后能到哪里?;空间迁移;空间特征 · 按协议;检测 / 分割头;位置与边界可用吗?;共同写明:新数据切分 · 标签预算 · 训练参数范围 · 任务指标 冻结编码器的线性读出、可训练编码器的微调和空间任务三种协议,训练范围与数据条件并列。 - 线性读出 - 编码器 · 冻结 - 线性头 · 可训练 - 现有特征能否读出? - 微调适配 - 编码器 · 可训练 - 任务头 · 可训练 - 适配后能到哪里? - 空间迁移 - 空间特征 · 按协议 - 检测 / 分割头 - 位置与边界可用吗? - 共同写明:新数据切分 · 标签预算 · 训练参数范围 · 任务指标冻结编码器的线性读出、可训练编码器的微调和空间任务三种协议,训练范围与数据条件并列。 [查看对应图解状态](/#/l3-r2-p23/0)[查看完整图解](/course/figures/l3-r2-p23-0.html) ## 课堂讲述 第一种检查,冻结编码器,只训练一个线性读出。这在问:在这种受限的读出方式下,已经得到的特征有多可用? 第二种检查,允许部分或全部参数继续学习。这在问:以已有参数为起点,适配新任务能够达到什么结果?成功可能来自原有表示,也可能包含适配过程中重新学到的能力。 第三种,是把表示放进检测或分割,检查空间任务。它们需要的信息和训练接口又不同。所以报告“迁移很好”时,至少要补上迁移到哪里、训练哪些参数、使用多少标签、怎样切分新数据。对科研实践来说,这比只记一个 ImageNet 分数更有用。 ### 冻结读出与微调分别在问什么? [独立阅读](/course/blocks/readout-versus-finetuning-protocol.html) 冻结读出把 $f_\theta$ 固定,只学习新头 $Wh+b$。它问“当前表示中,答案能否被这个受限读出取出?”kNN甚至不拟合新网络,但仍用训练标签建参考库,并依赖距离、归一化和k。微调允许编码器改变,问“这个起点经过给定适配后能做到什么?” 公平比较首先固定目标任务、原图划分、标签预算和评价规则。按原图先划分再生成视图,避免同一原图的两个裁剪分别进入训练和测试。超参数和停点用验证集选择,测试集用于最终报告。已经看过的保留结果可供探索,却不再是未知验收题。 冻结参数还不自动冻结所有状态。含BatchNorm时,运行统计可能在train模式改变;`eval()`、`no_grad()`与`requires_grad_(False)`控制不同对象。LAB 02保留这项实现选读,主讲先抓住“哪些参数可动,答案用在哪里”。 #### 图示条件与公式约定 线性读出:冻结编码器,仅训练线性头;微调:注明解冻部分或全部;空间任务也须注明骨干训练范围。不能由一种协议结果替代另一种。 #### 这条线索的展开与后续阅读 - [信息可以存在,却不一定线性可读](/supplement.html?return=l3-r2-p23/0#/l3-readout-proof/0) L03补充阅读 - [冻结读出与微调,分别回答什么?](/supplement.html?return=l3-r2-p23/0#/l3-transfer/0) 本页说明 - [预训练表示,确实可以在新任务里复用](/supplement.html?return=l3-r2-p23/0#/l3-transfer-evidence/0) 本页说明 - [对比任务由我们构造|怎样检查这项解释](/supplement.html?return=l3-r2-p23/0#/l3-infonce-matrix-evidence/0) 本页说明 ## 四点 XOR:信息存在,不等于一条直线能读出 把表示中的任务信息、输入身份和读出函数类分开,避免用单一失败作过强结论。 ### 信息还在,与一条直线能读出是两件事 [独立阅读](/course/blocks/information-and-readable-form.html) 四点 h 为 (−1,−1)、(−1,+1)、(+1,−1)、(+1,+1),同号标签 0、异号标签 1。每一点都不同,标签由 h 完全确定;但两类位于对角,无法用一条直线完全分开。 ![左图四个 h 坐标:同号两角为标签 0、异号两角为标签 1;右图 z=h1h2 数轴,两个标签 1 输入都落在 −1,两个标签 0 输入都落在 +1,阈值为 0。每个数轴位置对应两个输入。](/course/knowledge-assets/xor-readable-form.svg)[放大查看四点图 ↗](/course/knowledge-assets/xor-readable-form.svg) · 精确构造的四点读出:左图保留输入身份,右图用乘积改变可读形式。图中位置和标签由数据表确定,并非训练输出。 左图每个输入都有独立坐标,标签也完全由坐标确定;但同类占据对角,不能用一条直线把两类完全分开。右图只保留乘积 $z=h_1h_2$:两个异号输入都落在 −1,两个同号输入都落在 +1。现在一个零阈值 $z<0$ 就能正确读取标签;每个数轴位置合并了两个输入,图中不通过抖动伪造不同的 z 值。 | h1 | h2 | 标签 y | z=h1h2 | | --- | --- | --- | --- | | −1 | −1 | 0 | +1 | | −1 | +1 | 1 | −1 | | +1 | −1 | 1 | −1 | | +1 | +1 | 0 | +1 | 这个变换没有增加标签信息,并且合并了原来不同的输入身份。它是四点上的精确构造,不是某次训练得到的表征,也不能证明任意压缩都会改善读出,或少量训练样本一定能学出这个变换。 以下是备课用模拟追问,不是课堂实录。 **学生:**“既然左图不能画一条分界线,是不是标签信息已经丢了?” **教师:**“先看数据表,每个 h 都仍唯一确定标签;失败的是单一直线这类读出。换一个乘积坐标后,一条阈值就足够。可是只看 z,你已不能恢复原来是哪一个同号角点。这正好把‘某任务的信息’‘原输入身份’和‘读出函数能否使用’分开。” 因此低维不必等于丢掉任务信息,线性失败也不必等于信息全无。LAB18 同时报告 XOR 读出与离散 bit 算例;把结论限定在明确的输入、标签和函数类上,比笼统说“表示越压缩越好”更准确。 ## 读 LAB01:固定表示,只改变预算与读出 编码器始终不动,先固定标签预算比较读出,再固定读出比较预算。 ### 同一表示,增加标签与改变读出是两种干预 [独立阅读](/course/blocks/fixed-representation-label-budget-evidence.html) LAB 01使用一个已有有监督CNN的32维表示,目标为MNIST数字是否≥5。640个目标样本与源模型训练/验证索引分离,目标再分256训练、128验证、256保留;图像统一右移2像素。 保存结果中,标签32→256时,kNN保留准确率从0.7148到0.9492;固定C=10的线性逻辑回归从0.6133到0.8359。编码器从头到尾未变,所以差别来自标签预算与读出使用方式,而不是编码器重新学了一次。 这提供一个很具体的学习动作:先固定预算比较两种读出,再固定读出比较预算。不要把这组结果误读成“自监督胜过监督”;源CNN本来就是监督训练的。也不要据单次差距断言表示中没有某种信息——正则强度和读出函数类都是竞争解释。 ## 读 LAB02:按预定规则,接受迁移没有获胜 共享起点与数据顺序,比较head、late、all以及scratch,按最低验证CE选择。 ### 解冻更多参数,不保证更好 [独立阅读](/course/blocks/adaptation-scope-and-negative-result.html) LAB 02从同一十分类CNN出发比较head、late、all,并加入随机起点scratch。新任务仍是数字是否≥5;head只更新新头,late更新后部,all更新全网。三种迁移共享源checkpoint、新头初始化、数据顺序和训练轮数。 已有默认协议是256训练、128验证、4轮、Adam学习率0.002。保存的最低验证交叉熵为head 1.906、late 0.877、all 0.849、scratch 0.611。按预先确定的“最低验证CE”规则,这一次应选择scratch,而不是因为课程在讲迁移就偏爱迁移模型。 这个负结果有教学价值:迁移是一种可检验起点优势,不是身份保证。相同轮数并不等算力,相同学习率也未必给每种范围公平的调优机会。可进一步只改标签预算或位移,再事先确定新的验证协议;不能反复看同一测试集直到挑出喜欢的结果。 ## 沿这个问题继续 基础路线选LAB 01;需要参数迁移再做LAB 02。XOR与域变化是解释某种失败时才打开的分支。 #### 按问题回查的讲解与短练习(4) **出处:**[MAE 原论文 §3(2021)](https://arxiv.org/html/2111.06377v3)