<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深度學習中用于張量重塑的 MLP 和 Transformer 之間的差異圖解

          共 2765字,需瀏覽 6分鐘

           ·

          2021-10-24 22:28

          來源:Deephub Imba

          本文約1800字,建議閱讀5分鐘?

          本文介紹在設計神經網(wǎng)絡時如何解決張量整形的問題


          在設計神經網(wǎng)絡時,我們經常遇到張量整形的問題。張量的空間形狀必須通過改變某一層來適應下游的層。就像具有不同形狀的頂面和底面的樂高積木一樣,我們在神經網(wǎng)絡中也需要一些適配器塊。

          改變張量形狀的最常見方法是通過池化或跨步卷積(具有非單位步幅的卷積)。在計算機視覺中我們可以使用池化或跨步卷積將空間維度輸入形狀的 H x W 更改為 H/2 x W/2,甚至更改為不對稱的 H/4 x W/8。要覆蓋比簡單縮放更復雜的變換,比如執(zhí)行單應(homography),我們需要一些更靈活的東西。多層感知器(MLP)或Transformer是兩個現(xiàn)成的解決方案。

          計算機視覺中使用的神經網(wǎng)絡張量通常具有 NxHxWxC 的“形狀”(批次、高度、寬度、通道)。這里我們將關注空間范圍 H 和 W 中形狀的變化,為簡單起見忽略批次維度 N,保持特征通道維度 C 不變。我們將 HxW 粗略地稱為張量的“形狀”或“空間維度”。
          在 pytorch 和許多其他深度學習庫的標準術語中,“重塑”不會改變張量中元素的總數(shù)。在這里,我們在更廣泛的意義上使用 重塑(reshape) 一詞,其中張量中的元素數(shù)量可能會改變。


          如何使用 MLP 和 Transformers 來重塑張量?


          如果我們忽略內部處理的詳細機制(MLP 中的隱藏層和 Transformers 中的交叉注意),MLP 和 Transformer 具有相似的輸入和輸出接口,如下圖所示。


          使用 MLP 來改變輸入張量的形狀相對簡單。對于只有一個全連接層的最簡單形式的 MLP,從輸入 X 到輸出 O 的映射如下。


          如果我們這里忽略激活函數(shù)和偏置b,本質是矩陣乘法,重塑過程完全被權重矩陣W捕獲。張量重塑可以通過與W的左乘來實現(xiàn)。


          我們在上面隱式假設特征通道維度C=1,張量格式為HWxC,忽略batch維度。這樣我們就可以乘以 Input 左邊的 W 矩陣來改變空間形狀。


          對于Transformers ,按照原始公式,我們有以下映射。


          對于交叉注意力模塊,在上面的等式中,K和V是線性投影的輸入X,Q是線性投影的輸出查詢?。輸出查詢 ? 與輸出 O 具有相同的空間形狀。Q、K 和 V 具有以下形狀。



          矩陣與投影矩陣W相乘的目的是將輸入X和輸出查詢?提升到相同的特征維度。這里使用的是右乘法,這是與前面提到的MLP中的重塑操作不同的操作。如果我們忽略縮放因子和Softmax激活函數(shù),我們有以下方程。


          自注意力機制是 Transformers 原始論文中用于特征提取的亮點。但是,自注意力保持原始輸入形狀,因為輸出查詢也是自注意力模塊中的輸入 X。為了重塑輸入張量,必須使用具有不同形狀(所需輸出形狀)的輸出查詢。


          與 MLP 相比,我們有非常相似的公式,都將輸入與學習的加權矩陣 W 左乘以實現(xiàn)形狀變化。但是,有兩個不同之處。

          1. 輸出 O 通過了一個額外的線性投影,將特征通道從 1 的輸入提升到 d_k 的輸出。
          2. Transformers 中的 W 矩陣取決于輸入 X。

          第一個區(qū)別相對微不足道,我們可以將 MLP 與一個額外的線性投影相匹配來改變特征通道。第二個有重大影響。我們將深入探討 MLP 和 Transformer 的兩種加權矩陣 W 之間的差異。

          區(qū)別1:數(shù)據(jù)依賴


          MLP 學習的 W 矩陣不依賴于輸入數(shù)據(jù),而 Transformers 則依賴于輸入數(shù)據(jù)。MLP 的加權矩陣在訓練期間學習推理期間是固定的。對于 Transformer 來說,權重矩陣的數(shù)據(jù)依賴可以看作是一種動態(tài)權重,它可以適應不同的輸入。

          這可以使 Transformer 更具表現(xiàn)力,但也使 Transformer 比 MLP 更難訓練。具體來說,對于固定的視圖變換例如逆透視映射(IPM)或其他類型的單應性 ,MLP本質上只是學習輸入和輸出之間的固定映射。對于Transformer ,額外的輸入數(shù)據(jù)可能會阻礙模型的初始收斂。需要在 GPU、數(shù)據(jù)和訓練時間上做出重大努力,才能獲得良好的性能。


          區(qū)別2:輸入順序


          對于 MLP,輸入和輸出的順序被編碼在矩陣 W 中。每一行和每一列對應于輸入和輸出形狀的權重。MLP 不需要位置編碼來幫助索引輸入和輸出。

          對于Transformers 就比較復雜了,對于輸入的順序是一個不變量(invariant ),先看看交叉注意力的方程


          如果X沿空間形狀維進行某種排列,紅色部分X^T X將保持不變,因此輸出也保持不變。從另一個角度看,K和V是字典的鍵-值對,字典中的順序無所謂,只要鍵值映射不變就行。交叉注意機制是建立在查詢和關鍵字之間的相似性上,而不是建立在位置上。

          對于自注意力(self-attention),其中輸出查詢?=X,那么O的順序也經歷了與輸入X相同的排列。從數(shù)學上講,自注意是排列等變(permutation equivariant)的,而交叉注意是排列不變(permutation invariant)的。


          關于注意力等方差和不變性的數(shù)學陳述 來源見引用2

          注意機制不對位置信息進行編碼的也正是位置編碼 (PE) 需要為順序重要的應用程序輸入索引的原因。具體來說,在 NLP 應用中,“貓追狗”和“狗追貓”會導致詞對之間的注意力完全相同,這顯然是有問題的。

          上述交叉注意機制也常用于圖神經網(wǎng)絡(GNN)。它允許網(wǎng)絡在訓練期間從所有輸入實例中捕獲共同特征,因為查詢獨立于輸入并且由所有輸入實例共享。這是 GNN 的先驅之一 Thomas Kipf 的推文,他評論了自注意力模塊的排列等效性。


          總結


          1. MLP 和 Transformers(交叉注意力)都可以用于張量重塑。
          2. MLP 的重塑機制不依賴于數(shù)據(jù),而 Transformers 則依賴于數(shù)據(jù)。這種數(shù)據(jù)依賴性使 Transformer 更難訓練,但可能具有更高的上限。
          3. 注意力不編碼位置信息。自注意力是排列等變的,交叉注意力是排列不變的。MLP 對排列高度敏感,隨機排列可能會完全破壞 MLP 結果。


          引用


          • Attention is All you Need, NeurIPS 2017
          • Mathematical properties of Attention in Transformers, Professor Shuiwang Ji’s class notes, TAMU

          編輯:于騰凱
          校對:李敏
          瀏覽 138
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  北条麻妃无码一区二区三区视频 | 亚洲操操操| 欧.美干逼逼 | 免费插逼| 91嫩草久久久天美传媒 |