为什么频率维度需要进行非等变卷积?
阅读 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律