Lecture 03 学习讲义
正文
工具
按问题查找
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

CLS 03 · 视觉与语言:任务、训练与接口

主线阅读与优先实验

caption历史、VQA、CLIP候选、关系控制、GLIP/LLaVA与生成桥梁

对应课堂(11 页)

可先阅读已有结果,再决定是否运行。重算时请核对各节记录的数据、参数、环境与日期。

同一张图可以配文字、生成描述、回答问题,也可以按短语返回区域。本册把这四种输出放到同一条线上:语言此刻是答案、学习信号,还是任务条件?

你想解决的问题 先读 再做或深读
图像怎样改变一句话或一个答案 P51 描述、P54 问答 CLS 09,按兴趣选 LAB13 或 LAB14
图文配对怎样得到可复用表示 P57 矩阵、P58 候选 优先 LAB 04;需要图库缓存时再进 LAB12
一句话指哪个对象,视觉如何接入语言模型 P63 定位、P64 接口 CLS 11,其中 LAB15 是可复算的关系规则练习

读完应能为一个任务说清输入、训练目标、输出和适合的检验;不要求把所有分支顺序运行。本册的矩阵与规则代码是小算例,真实CLIP模型证据在LAB04。最后用条件多解连接第四讲;用研究划分小例检验自己的评价是否对应未来场景。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

1. 语言可以在同一系统里承担三种作用

此段独立阅读

前一部分用框和点指定对象。现在把任务说出来:“描述这张桌面图”“找到红杯”“谁拿着球”。这些句子对系统提出的输出要求不同。

语言的作用 本部分追问 需要建立的接口
作为输出 如何利用图像和已生成词,描述所见? 视觉表示连接词序列预测
作为学习信号 图文配对怎样教会匹配与检索? 图像与文本进入可比较空间
作为任务条件 这句话指哪个区域,或要求回答什么? 区域—词语对应,或视觉条件下的指令作答

这不是互斥的三类系统,也不是后一阶段淘汰前一阶段。一个视觉助手可以使用图文配对学习,用问题指定任务,再生成文字回答。先明确语言此刻的作用,再讨论需要的训练与接口。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

2. 语言作为输出:看图说话怎样接上已有能力?

此段独立阅读

图像描述学习 p(yt∣I,y<t)p(y_t\mid I,y_{<t}):视觉特征与已有文字一起决定下一词。训练时配对描述给出目标;推理时从开始符号出发,只能接续自己的输出,直到结束符号。今天先把这条接口看清,循环网络内部留第五讲。

返回图像条件的课堂图。完整的 shifted target、EOS/PAD 和保留集生成对照归并到 CLS 09 · 图像条件输出:描述与问答 与 LAB 13 · 看图生成一句话:训练、解码与消融;本册不复制两份训练说明。

一张图可有多种真实描述。“桌上有杯子”与“左侧红杯靠近书”聚焦信息不同。先说明任务要求概括还是详细描述,再判断遗漏是否构成错误。图像条件怎样进入一个可变长度答案 · 已保存的条件生成实验:视觉输入确实改变了句子。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

研究背景:组件到位后,选择哪一个新问题?

2014–2016 年,视觉预训练、文字预测与图文数据汇合,出现描述、区域对齐和视觉问答等不同研究入口。Trevor Darrell 是 LRCN 的共同作者之一;这里使用公开研究背景,不推断个人动机或讲者私下经历。

这段历史的重点是正面进展:已有表示确实开始支持可训练、可比较的新任务。再问组合缺口和局部关系,才知道后续工作为何需要新机制。课堂历史图 · 历史事实、评价结果与来源 · DCC 的配对缺口。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

3. 语言作为学习信号:把配对变成可比较关系

此段独立阅读

CLIP 使用已配对的图像与文字,同时训练两种编码器。训练后,可以把“a photo of a cup”等候选描述编码成文字向量,与图像向量比较,做分类或在已有集合中检索。CLIP

这项能力来自配对学习:图像向量与文字向量本来并不天然处在可比较的坐标系。图文配对包含人的文字和数据选择,是外部学习信号;不使用固定类别标签不等于完全没有监督。

设红杯、蓝杯、书三张图分别与三段描述配对。把归一化表示记为 uᵢ 和 vⱼ,组成 Sᵢⱼ=uᵢᵀvⱼ。每一行回答“这张图配哪段文字”;每一列回答“这段文字配哪张图”。正确配对位于对角线,两种方向的分类损失一起参与训练。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

活动 A:一张小矩阵,两种查找方向

行与列共同使用红杯、蓝杯、书的固定顺序。构造三维单位图像向量为三个坐标轴;对应文字向量在自身轴上取 4、另外两轴上取 1,再除以 √18 归一化。因此下表的每一项都是真正的余弦相似度:对角为 4/√18≈0.9428,非对角为 1/√18≈0.2357。这些向量是教学构造,不是 CLIP 推理输出。

红杯描述 蓝杯描述 书描述
红杯图 4/√18 1/√18 1/√18
蓝杯图 1/√18 4/√18 1/√18
书图 1/√18 1/√18 4/√18

先将温度设为 τ=1,令 logits=S/τ。先预测: 把蓝杯文字向量对红杯轴的权重从 1 改大并重新归一化,哪张图与哪段文字的正确配对可能变难?运行后分别看行与列的正确配对概率,而不是只看一个总分。

批内未配对不保证语义完全无关,近重复和描述质量都会影响目标。这里先固定对角配对关系,隔离双向损失的计算。

按默认构造计算,行、列方向的正确配对概率均约为 [0.5035, 0.5035, 0.5035],双向平均损失约 0.686192。这是本页教学向量的确定性计算结果,可先阅读再改条件。

此段独立阅读
展开完整实现代码
# 独立 CPU 的双向配对目标;余弦来自归一化教学向量。
import math
objects = ['redcup', 'bluecup', 'book']
image_vectors = [[1.0,0.0,0.0],[0.0,1.0,0.0],[0.0,0.0,1.0]]
text_weights = [[4.0,1.0,1.0],[1.0,4.0,1.0],[1.0,1.0,4.0]]
def normalize(vector):
    norm=math.sqrt(sum(x*x for x in vector))
    return [x/norm for x in vector]
text_vectors=[normalize(vector) for vector in text_weights]
S=[[sum(a*b for a,b in zip(u,v)) for v in text_vectors] for u in image_vectors]
temperature=1.0
logits=[[s/temperature for s in row] for row in S]
def softmax(row):
    exps=[math.exp(x-max(row)) for x in row]
    return [x/sum(exps) for x in exps]
row_prob=[softmax(row) for row in logits]
col_prob=[softmax(list(col)) for col in zip(*logits)]
row_loss=-sum(math.log(row_prob[i][i]) for i in range(3))/3
col_loss=-sum(math.log(col_prob[i][i]) for i in range(3))/3
print('对象顺序:',objects,'温度:',temperature)
print('余弦矩阵:',[[round(s,6) for s in row] for row in S])
print('每张图找正确文字:',[round(row_prob[i][i],4) for i in range(3)])
print('每段文字找正确图:',[round(col_prob[i][i],4) for i in range(3)])
print('双向平均损失:',round((row_loss+col_loss)/2,6))
assert all(abs(sum(p)-1)<1e-12 for p in row_prob+col_prob)
assert all(abs(sum(x*x for x in vector)-1)<1e-12 for vector in image_vectors+text_vectors)
if text_weights==[[4.0,1.0,1.0],[1.0,4.0,1.0],[1.0,1.0,4.0]] and temperature==1.0:
    assert all(math.isclose(S[i][j],(4 if i==j else 1)/math.sqrt(18)) for i in range(3) for j in range(3))
    assert math.isclose((row_loss+col_loss)/2,0.6861917388550698)
此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

从这张教学矩阵,走到真实模型

上面代码使用三维单位向量和 τ=1,正确概率约 0.5035、平均损失约 0.686192。课堂 P57 使用另一组四维单位向量和 τ=.2,正确概率约 0.90876、损失约 0.09567。两套都是自洽的教学构造;不要把一套的温度、矩阵和另一套的结果拼在一起。

LAB 04 · CLIP:候选、提示与关系检验 固定真实猫图与 CLIP checkpoint,分别扩大候选、改模板和删除正确类别;这是模型证据。LAB 12 · CLIP延伸:缓存与检索(近似索引选读) 使用同一编码器得到的完整向量,继续看缓存与检索。先完成前者再选后者,避免重复做两份“图文匹配”。为什么候选 softmax 会变。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

4. 看衣色,还是看关系?让两种规则作出不同预测

此段独立阅读

正式问题保留两句候选:

  • A. A person in red holds a ball beside a person in blue.
  • B. A person in blue holds a ball beside a person in red.

条件1:左红持球

条件1:左红持球

条件2:左蓝持球

条件2:左蓝持球

条件3:右蓝持球

条件3:右蓝持球

条件4:右红持球

条件4:右红持球

两个人、一个球;左右均按观看者位置。每个条件的持球人及另一人是否接触球应从图中确认。

原来两幅图的持球人都站在左侧:左红持球时 A 合适,左蓝持球时 B 合适。两个观察同时符合两条规则:读取持球者衣色,或者仅仅读取左侧人物衣色。因此原两图不足以区分两种解释。

新增右侧人物持球的两种条件,保持 A/B 候选不变。现在两条规则会给出不同预测,实验才有机会区分它们。图中独立生成的姿态、背景、光照也可能变化,所以它是针对竞争解释的条件设计,不声称所有图像只变了一个像素因素。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

四条件的规则预期

条件 左侧 右侧 持球位置 持球者衣色规则 左侧衣色规则
1 红 蓝 左 A A
2 蓝 红 左 B B
3 红 蓝 右 B A
4 蓝 红 右 A B

前两行两规则相同,后两行不同。先预测: 假如模型在第 3、4 行也跟随持球者,能否据此证明它理解所有关系?这会支持当前检验中的关系解释,但更广结论还需不同人物、位置、动作和候选表达。

下格只计算这张规则预期表。真实 CLIP 分数需固定模型、预处理、四幅输入与候选后实际推理,再与表中规则比较。

此段独立阅读
展开完整实现代码
# 独立 CPU 规则对照;输出 A/B 来自明确规则,不是 CLIP。
conditions=[('1','red','blue','left'),('2','blue','red','left'),
            ('3','red','blue','right'),('4','blue','red','right')]
answer_of={'red':'A','blue':'B'}
rows=[]
for cid,left,right,holder_side in conditions:
    holder_color=left if holder_side=='left' else right
    relation=answer_of[holder_color]
    shortcut=answer_of[left]
    rows.append((cid,relation,shortcut))
    print('条件',cid,'持球者规则',relation,'左侧规则',shortcut,'一致?',relation==shortcut)
assert rows==[('1','A','A'),('2','B','B'),('3','B','A'),('4','A','B')]
此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

5. 语言指定任务之一:这句话指的是哪个区域?

此段独立阅读

CLIP 整图相似度给配对程度;“蓝杯左边的杯子”还要求输出目标区域。这里需要分开目标、参照物与关系,不能看到 blue 就返回蓝杯。

P63 的 GLIP 说明对象级语言定位的学习路线;CLS 11 · 语言定位与视觉模型接口 展开监督、空间输出和模型接口;LAB 15 · 语言指代小练习:目标、参照与关系 用像素提框与关系规则做完整对照。后者不是 GLIP 推理,但能准确解释为什么旧关键词规则选错。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

6. 语言指定任务之二:根据画面回答这个问题

此段独立阅读

原始 LLaVA 的接口是视觉编码器 → 线性投影 → 语言模型。送入的是视觉网格向量,不是一个类别标签。阶段一冻结视觉与语言模型,只训练投影;阶段二仍冻结视觉,更新投影与语言模型。

P64 与 P65 对照这两个阶段。完整解释集中于 CLS 11 · 语言定位与视觉模型接口;注意后续版本的连接器不倒写为原始配置,RNN/attention 的内部结构留第五讲。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

指令答案也需要信息来源

原始 LLaVA 的部分指令资料由文本 GPT-4 根据 caption、对象类别和框坐标制作,该步骤没有让它直接看原图。随后 LLaVA 才用原图和这些指令共同训练。若文字记录遗漏接触和遮挡关系,长回答也不能凭空补足监督。

这个细节把第三部分接回第一部分:目标从哪里来,决定系统练习什么。完整说明与课堂练习。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

7. 哪些能力可以继承,哪些环节还要重新学习?

此段独立阅读
新任务 可以复用的部件 仍要建立的环节
固定表示分类 视觉编码器 目标标签与读出
检测与实例分割 视觉主干 区域组织、空间读取、框/掩码监督
图文匹配 合适的视觉与语言编码器 共同空间、配对学习与候选定义
文字定位 视觉空间特征与文字表示 区域—词语交互与定位训练
视觉问答 视觉编码器与语言模型 连接层、视觉指令与回答评价

这张表不要求每个系统都从上一行起步。它提醒我们:复用已有能力之后,仍要说明新任务的学习信号、输出与接口。

回到全讲中心问题:网络学到的视觉表示,怎样变成可复用、可指定、可检验的能力? 现在再改变一次任务:把输入图像拿走,只保留描述,要求系统创造一幅新图。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

8A. 只给一句描述,怎样产生一幅新图像?

此段独立阅读

我们已经用图像与句子做匹配,用词语指定区域,也能根据图像回答问题。现在拿走图像,只留下:

红色杯子放在木桌上。

使用者不再递交一张图供分析,而是要求系统产生新的视觉内容。给候选打分,还没有给出生成这些像素的方法。 我们需要说明输出的表示、学习目标,以及从条件到一个具体结果的生成过程。

第三讲的 captioning 与看图回答已经可能通过生成文本实现,MAE 也涉及重构。本讲的焦点是表示与任务接口;第四讲将把生成分布、训练和采样本身作为研究对象。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

8B. 同一句话,为什么有多种合理图像?

此段独立阅读

满足条件 A

满足条件 A

满足条件 B

满足条件 B

满足条件 C

满足条件 C

违反红杯条件:蓝杯

违反红杯条件:蓝杯

同一“红杯+木桌”条件下的三种合理样本,以及一张违反指定条件的对照。它们是条件与多样性的情境示例,不是生成方法质量对比。

先看图再判断: 哪些细节必须满足?哪些是描述没有指定的?红杯与木桌是条件;杯型、视角、光照、摆放位置仍有自由度。不同合理图像不必是同一幅图的微小扰动。

因此,训练不只是寻找唯一正确像素答案,而是学习符合条件的多种可能;采样再从这些可能性中得到具体结果。用记号写就是 x ~ pθ(x | c):c 是条件,模型参数 θ 规定条件分布,x 是一次产生的结果。

图文相似度可以为某些生成系统提供信号,但相似度函数本身不是完整采样器。MAE 的既有遮挡训练配方,也不会自动给出任意文生图能力。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

8C. 从任务接口走向生成机制

此段独立阅读

图像描述已经在生成文字;前面的条件多解图又说明,同一句描述不必对应唯一像素答案。第四讲会进一步问:训练反馈怎样支持这些可能,采样又怎样得到一个结果?

GAN、VAE、Diffusion 的路线比较与原始来源,已移到第四讲:从条件多解走向生成模型。

此段独立阅读
Lecture 03CLS 03 · 视觉与语言:任务、训练与接口

8D. 带着三项判断结束本讲

此段独立阅读

选择本讲的一个系统,依次说清三件事:训练答案从哪里来;表示怎样被读成区域、像素或文字;哪项干预或保留评价支持它学到了所需能力。

这三项判断可以串起表示、空间输出与视觉语言,也会成为下一讲研究生成机制的起点。需要回查具体例子时,从第三讲导读的八条问题路径进入,不必重新顺读全部实验。

此段独立阅读