## 在 z 上比较,梯度仍然改变 h ## 解释、算例与证据 # P12 · 训练时比较 z,使用时读取 h 解释训练空间与使用空间可以不同,同时明确投影头不截断梯度,也不保证保存一切。 图内标签与数值:P12 学习表示机制图,状态 2;使用:冻结编码器,训练受限读出;编码器 f · 冻结;h;投影头 g;z;线性读出 · 可训练;新标签监督读出;h 是下游可以检查的表示;“投影头之前”本身不是信息保留保证。 图像、编码器f、h、投影g、z及对比损失路径;第二状态从冻结h接出可训练线性读出。 - 使用:冻结编码器,训练受限读出 - 编码器 f · 冻结 - h - 投影头 g - z - 线性读出 · 可训练 - 新标签监督读出 - h 是下游可以检查的表示;“投影头之前”本身不是信息保留保证。图像、编码器f、h、投影g、z及对比损失路径;第二状态从冻结h接出可训练线性读出。 [查看对应图解状态](/#/l3-r2-p12/1)[查看完整图解](/course/figures/l3-r2-p12-1.html) ## 课堂讲述 SimCLR 在视觉编码器后面增加一个投影头。编码器得到 h,投影头把它变成 z,对比损失作用在 z 上;用于下游任务时,可以取投影头之前的 h。 这就给两个位置不同的分工可能:z 更直接服务于当前的视图比较,h 可能保留一些下游还用得上的变化。原工作通过实验比较了投影头的设计,这不是只为了多加几层。 但请注意,“提供这种可能”和“保证这种分工”不是一回事。损失仍然会通过投影头影响前面的编码器。我们不能看到这张结构图,就宣布某种颜色、边界或者其他细节一定安全地保存在 h 里。接下来用你们的问卷例子检查这个推论。 ### 在 z 上比较,为什么 h 仍会学习? [独立阅读](/course/blocks/projection-head-gradient-and-retention.html) 训练路径是 $x\to f_\theta\to h\to g_\phi\to z\to L$。投影头不是一道截断墙:链式法则中 $\partial L/\partial\theta=(\partial L/\partial z)(\partial z/\partial h)(\partial h/\partial\theta)$,梯度穿过g更新f。迁移时读取h,是选择另一个使用接口。 考虑一个可行构造:$h=(u,c)$分别含形状与颜色,$g(h)=u$。两视图颜色不同但形状相同,那么z可以满足颜色不变性,而h仍有位置放颜色。这解释了投影头为什么可能缓和“训练要忽略”与“未来要保留”的冲突。 这个构造不保证网络一定学成这样。LAB 06的真实换色训练中,h的颜色5NN读出也接近机会水平(不等于所有读出都无法取得颜色);有时z的形状读出反而优于h。正面理解是投影头提供了分工空间,实证问题则是训练后哪一层对哪项任务更有用。 **出处:**[SimCLR 原论文 §2–4](https://proceedings.mlr.press/v119/chen20j/chen20j.pdf) #### 图示条件与公式约定 f 是视觉编码器,g 是投影头。预训练的损失经 g 传播到 f;读出时冻结 f 并训练线性头。采用 h 不构成特定属性保留保证。 #### 这条线索的展开与后续阅读 - [投影后的 z 用于学习,投影前的 h 可以迁移](/supplement.html?return=l3-r2-p12/0#/l3-simclr/0) 本页说明 - [h 与 z 可以分工,但分工不是训练保证](/supplement.html?return=l3-r2-p12/0#/l3-projection-proof/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 算例;把结论限定在明确的输入、标签和函数类上,比笼统说“表示越压缩越好”更准确。 ## 沿这个问题继续 读h=(u,c)构造,再看LAB 06的实际h/z表;需要区分信息与线性可读时读XOR块。 #### 按问题回查的讲解与短练习(2) **出处:**[SimCLR 原论文(2020)](https://arxiv.org/abs/2002.05709)