深度学习中为什么不同的特征信息可以直接相加

深度学习视觉

共 1529字,需浏览 4分钟

 · 2022-04-15

class ImageFeatureDecoder(nn.Module):      def __init__(self, vocab_size, d_model, N, heads, dropout, max_length=1024):       super().__init__()       self.N = N       self.embedX = Embedder(vocab_size, d_model)       self.embedP = Embedder(max_length, d_model)       self.layers = get_clones(DecoderLayer(d_model, heads, dropout), N)       self.norm = Norm(d_model)          def forward(self,image_tensor,operation,trg_mask):       position = torch.arange(0, image_tensor.size(1), dtype=torch.long,                                   device=image_tensor.device)       x = image_tensor+self.embedP(position)+self.embedX(operation)       for i in range(self.N):           x = self.layers[i](x, trg_mask)       return self.norm(x)

这串代码讲的是,把有限的历史画面特征、对应画面序号信息和操作信息进行融合后再编码,得到混合后的融合特征。但是这串代码中直接将三种信息相加的语句让我很不理解。这样直接相加不同类型的特征,特征岂不会混乱了,为什么不用concat。

其实当concat的信息共用一个权重矩阵的时候,与直接相加的效果一样。(img+pos)W=img*W+pos*W。多一个权重矩阵也就多一笔计算量,所以,在有的场合(concat作用不大的情况)直接用add。此外,参数少还能有效减少过拟合的风险。

人眼有一项能力,在一张图片中,除了可以看见物体、人物,还可以通过低频信息读出白天还是夜晚的信息。拍同一场景,黑夜与晚上各一张。虽然时间与场景叠加,但是你依然能找到图片中的高频信息(人与物),这就是人天生傅里叶变换逆向转换的能力。但是当时间信息非常夸张的话,过分的黑与白,会让你看不清高频信息。但是高频信息依然存在,不过它会因为各种因素(拍照设备,观测设备)趋向于没有。事实上,一种信息淹没另外一种信息,需要非常强的信息能量。不过,既然这个信息非常强,那说明这个信息很重要,如果不重要,那必然会被反向传播给优化处理。

我将768长度的位置信息与图像特征信息点的形式画在图上,其中红色点是位置信息,蓝色点是图像信息,绿色点是相加信息。从图中可以看出,也许二维空间中无法区分出来这些信息,但是,这要是放到768维空间中的话,这区分也就没有那么困难。

推荐阅读

违背常识的深度学习识别能力

神经网络原始的启发

如何比医生识别患者病情恶化早八个小时

如何自动化标注海量数据

Python必学知识点总结

王者荣耀智能AI

公众号粉丝礼包:
后台关键词:python大礼包
礼包内容:Matlab,数据分析与机器学习实战,数据科学概率基础,数学基础,算法讲解视频
整理不易,还请点击在看与分享,谢谢。

希望您能喜欢“在看”

浏览 105
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报