关于深度学习局部视野与全局视野的一些思考

关于深度学习局部视野与全局视野的一些思考

最近,我在学习一个基于Transformer的网络模型时,注意到了一些局部特征和全局特征的概念。引发了一些疑问:

  1. 为什么说CNN只能看到局部区域,而transformer能看到全局区域?
  2. 什么是token? 对于图像中又指代什么?
  3. 一个卷积核只看它覆盖的小区域(patch),无法直接"看到"整张图。 但卷积核划过整幅图,为什么说只看到局部特征?
  4. CNN通过堆了多层,比如三层 3×3 卷积,来扩大感受野 ,为什么堆积多层就会提高感受野?
  5. 关于全局语义增强后的图像特征序列, 这些特征是体现在数值上的改变么?
  6. encoder,decoder做了什么?

第一个问题:为什么说CNN只能看到局部区域,而transformer能看到全局区域?

我们都知道,CNN是通过卷积核来提取图像特征的,直观上来看,最让人注意到的就是通过卷积之后图像变小了,这就像是将一个大的图像压缩成一个小的特征图,我之前更多关注的是,这样做降低了计算压力。

现在来理解为什么说CNN只能看到局部区域,假如有一个33大小的卷积核,以步长为1的方式划过整幅图像。在结果图中,第一次卷积的结果只跟它看到的3 3像素大小的区域有关。这就有点像盲人摸象,有个盲人去摸大象来判断是什么样子的。第一次摸到鼻子,就说大象像一条蛇,第二次摸到耳朵,就说大象有两个翅膀,可能会飞。以下图为例,结果图中的5,4,5,5这四次卷积得到的特征结果是相对独立的。

而在transformer中,通过将5,4,5,5并排展开成序列,通过注意力机制,就是为了使相对独立的结果块与其他结果块相互比较,加权来建立联系。通过这种方式,我们认为transformer看到了全局区域,能够学习全局的特征。

第二个问题:什么是token? 对于图像中又指代什么?

在语言文字模型中,token代表一个单词,而在图像中,token代表图像的一个个切块(patch),就比如256256的图像,通过一串卷积后得到了16 161024特征图。 其中1616特征图中的每个像素值,都代表着对应于图像的一个个小切块(patch),这个小切块是卷积看到的区域。每个 token 对应的是图像上的一个小区域的位置,并且它的值就是这个区域的特征向量(1024维)

第三个问题:一个卷积核只看它覆盖的小区域(patch),无法直接"看到"整张图。 但卷积核划过整幅图,为什么说只看到局部特征?

虽然卷积核确实会划过整幅图像,但每次滑动只关注一个3*3的小区域,输出的一个数值(向量),仅代表这个小区域的特征;虽然划过了整幅图,但每个输出值只跟那一小块区域有关,有联系。

第四个问题:CNN通过堆了多层,比如三层 3×3 卷积,来扩大感受野 ,为什么堆积多层就会提高感受野?

感受野(Receptive Field)指的是 输出特征图中某一个神经元在输入图像中所"看见"的区域大小。

用直白一点的话说:一个输出位置能"看到"输入图像的多大范围。

假设有一个 3×3 的卷积核,它在输入图像上滑动,那么这个卷积核一次只看输入图像的 一个 3×3 小块,所以,输出特征图中的每个点,感受野就是 3×3。当使用连续堆叠的三层3*3卷积(无池化,步幅为1,padding为1),来看它是怎么让感受野变大的。

第1层:输出的每个像素来自输入的 3×3 区域→ 感受野是 3×3

第2层:它的输入是上一层的输出。上一层的输出的每个点"看到"3×3 → 所以这一层的卷积核,其实在最初输入图像上"看"到了 5×5 的区域。

第3层:继续类推,它的输出每个点能"看到"上层输入中的 3×3→ 上层输入的每个点又看到 5×5→ 最终这个输出的每个点可以看到原图中的 7×7 区域。

堆叠多层卷积层,相当于在原图上间接建立了更大范围的信息融合路径,从而扩大感受野,让模型能提取更"全局"的信息。这里大胆推测CNN网络的发展为了叠加多层,就是为了扩大感受野。

但对于transformer来说,他不用经历艰难的堆叠来一点点扩大感受野,通过自注意力及交叉注意力就能获得包含全局信息的特征。

第四个问题:关于全局语义增强后的图像特征序列, 这些特征是体现在数值上的改变么?

全局语义增强后的图像特征序列通常体现在数值上的改变。具体来说,图像的每个特征向量(通常是卷积网络中的输出)表示了图像的某个局部区域的信息。在通过全局语义增强时,这些特征向量会根据全局信息(比如整个图像的上下文、长程依赖等)进行调整或更新。这些改变可以是通过以下方式进行的:

特征加权:全局语义增强方法可能会通过某种机制(比如自注意力机制)对每个特征加权,使得某些特征在增强后变得更加突出,或者根据其与全局上下文的关系进行调整。这种加权操作会改变特征向量中的数值。

上下文信息融合:通过考虑图像中远离当前区域的信息,特征向量会融入更多的上下文信息。这种信息融合使得原本局部的特征能够获得更多全局信息的影响,进而改变其数值表示。

特征变换:例如通过变换网络(如 Transformer、图卷积等)进行的操作,可能通过非线性函数或者线性映射来调整特征数值,使得它们更能代表图像中的全局语义信息。

因此,经过全局语义增强后,每个特征的数值通常会有所变化,反映出该特征与全局语义的关系增强或调整。这种数值变化有助于更好地捕捉图像中的高层次语义信息,提升后续任务(如分类、目标检测、分割等)的性能。

encoder,decoder做了什么?

简单说,encoder,decoder都是通过query,key,value;注意力机制来完成的。encoder更多的是为了输出包含全局信息的value.

而decoder,会根据query信息,生成与query信息反应强烈的对应value值,通过解码value值,就可以得到预测的结果。

相关推荐
科技社6 分钟前
咪咕互娱亮相数字中国峰会:“精品游戏+轻量终端”组合,打开数字娱乐新想象
人工智能
数智化精益手记局1 小时前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
Flying pigs~~1 小时前
RAG 完整面试指南:原理、优化、幻觉解决方案
人工智能·prompt·rag·智能体·检索增强生成·rag优化
博.闻广见1 小时前
AI_概率统计-2.常见分布
人工智能·机器学习
企业架构师老王1 小时前
2026制造业安全生产隐患识别AI方案:从主流产品对比看企业级AI Agent的非侵入式落地路径
人工智能·安全·ai
Aleeeeex1 小时前
RAG 那点事:从 8 份企业文档到能用的问答系统,全过程拆给你看
人工智能·python·ai编程
冬奇Lab2 小时前
一天一个开源项目(第87篇):Tank-OS —— Red Hat 工程师用一个周末,把 AI Agent 塞进了一个可启动的 Linux 镜像
人工智能·开源·资讯
小糖学代码2 小时前
LLM系列:2.pytorch入门:8.神经网络的损失函数(criterion)
人工智能·深度学习·神经网络
Jmayday2 小时前
Pytorch:RNN理论基础
pytorch·rnn·深度学习
Captaincc2 小时前
转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动
人工智能·vibecoding