為什麼頻率維度需要進行非等變卷積?

倒地發表於2024-04-06

閱讀 demucs 程式碼時,發現對頻率維度有這樣的操作:

add frequency embedding to allow for non equivariant convolutions over the frequency axis.

但什麼是非等變卷積?非等變性又是什麼?

等變性 equivariant、不變性 invariant

等變性:對於一個函式來說,若輸入資料發生變化(例如平移),則輸出資料也會以相同的方式變化。例如對於卷積,如果將輸入影像平移一段距離,輸出的特徵也會向相同方向平移。

不變性:對於一個函式,輸入資料發生的變化不會影響到輸出。例如對於 maxpool,輸入影像進行較小平移可能不會影響到輸出特徵的分佈。

所以,非等變卷積就是指:輸入資料的變化不會導致輸出資料也會相應直接變化 的卷積。

題外話:CNN 的空間不變性

例如對於一張貓貓圖,略微向左平移依然是一張貓貓圖。對於卷積分類模型(例如 Resnet),對影像進行平移幾乎不會影響分類結果。這主要歸功於卷積神經網路的池化層。

空間不變性是 CNN 歸納偏置(inductive bias)之一。CNN 的另一個歸納偏置是區域性相關性(locality)。

為什麼頻率維度需要進行非等變卷積?

聲音的頻率軸很特殊,不同頻率上的聲音往往有特別的意義(例如人聲總是佔據中高頻,貝斯總是佔據低頻)。為了讓網路就學習到與頻率位置相關的特徵,不被平移混淆,需要進行非等變的卷積。

demucs 的做法很直接,使用 nn.Embedding 對 512 個頻率位置進行編碼。這樣一來網路就能意識到不同頻率有著自己的意義了。

demucs 在這裡用到了兩個 trick:初始化 nn.Embedding 引數使其平滑遞增;新增 scale 讓 embedding 權重的訓練更加敏感。非常有趣。

參考來源

  • https://github.com/adefossez/demucs
  • “什麼叫CNN的空間不變性?”,https://www.zhihu.com/question/280577481
  • Lunarnai,“CNN中的equivariant vs. invariant”,https://zhuanlan.zhihu.com/p/41682204

相關文章