深度學(xué)習(xí)中為什么不同的特征信息可以直接相加
class ImageFeatureDecoder(nn.Module):def __init__(self, vocab_size, d_model, N, heads, dropout, max_length=1024):super().__init__()self.N = Nself.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)
這串代碼講的是,把有限的歷史畫面特征、對應(yīng)畫面序號信息和操作信息進(jìn)行融合后再編碼,得到混合后的融合特征。但是這串代碼中直接將三種信息相加的語句讓我很不理解。這樣直接相加不同類型的特征,特征豈不會混亂了,為什么不用concat。
其實(shí)當(dāng)concat的信息共用一個(gè)權(quán)重矩陣的時(shí)候,與直接相加的效果一樣。(img+pos)W=img*W+pos*W。多一個(gè)權(quán)重矩陣也就多一筆計(jì)算量,所以,在有的場合(concat作用不大的情況)直接用add。此外,參數(shù)少還能有效減少過擬合的風(fēng)險(xiǎn)。
人眼有一項(xiàng)能力,在一張圖片中,除了可以看見物體、人物,還可以通過低頻信息讀出白天還是夜晚的信息。拍同一場景,黑夜與晚上各一張。雖然時(shí)間與場景疊加,但是你依然能找到圖片中的高頻信息(人與物),這就是人天生傅里葉變換逆向轉(zhuǎn)換的能力。但是當(dāng)時(shí)間信息非??鋸埖脑?,過分的黑與白,會讓你看不清高頻信息。但是高頻信息依然存在,不過它會因?yàn)楦鞣N因素(拍照設(shè)備,觀測設(shè)備)趨向于沒有。事實(shí)上,一種信息淹沒另外一種信息,需要非常強(qiáng)的信息能量。不過,既然這個(gè)信息非常強(qiáng),那說明這個(gè)信息很重要,如果不重要,那必然會被反向傳播給優(yōu)化處理。

我將768長度的位置信息與圖像特征信息以點(diǎn)的形式畫在圖上,其中紅色點(diǎn)是位置信息,藍(lán)色點(diǎn)是圖像信息,綠色點(diǎn)是相加信息。從圖中可以看出,也許二維空間中無法區(qū)分出來這些信息,但是,這要是放到768維空間中的話,這區(qū)分也就沒有那么困難。
推薦閱讀
神經(jīng)網(wǎng)絡(luò)原始的啟發(fā)
如何比醫(yī)生識別患者病情惡化早八個(gè)小時(shí)
公眾號粉絲禮包: 后臺關(guān)鍵詞:python大禮包 禮包內(nèi)容:Matlab,數(shù)據(jù)分析與機(jī)器學(xué)習(xí)實(shí)戰(zhàn),數(shù)據(jù)科學(xué)概率基礎(chǔ),數(shù)學(xué)基礎(chǔ),算法講解視頻 整理不易,還請點(diǎn)擊在看與分享,謝謝。
希望您能喜歡“在看”

