明敏 发自 凹非寺
量子位 报道 | 公众号 QbitAI
在我们的生活中,大到天体观测、小到MP3播放器上的频谱,没有傅里叶变换都无法实现。
通俗来讲,离散傅里叶变换(DFT)就是把一串复杂波形中分成不同频率成分。
比如声音,如果用声波记录仪显示声音的话,其实生活中绝大部分声音都是非常复杂、甚至杂乱无章的。
而通过傅里叶变换,就能把这些杂乱的声波转化为正弦波,也就是我们平常看到的音乐频谱图的样子。
不过在实际计算中,这个过程其实非常复杂。
如果把声波视作一个连续函数,它可以唯一表示为一堆三角函数相叠加。不过在叠加过程中,每个三角函数的加权系数不同,有的要加高一些、有的要压低一些,有的甚至不加。
傅里叶变换要找到这些三角函数以及它们各自的权重。
这不就巧了,这种找啊找的过程,像极了神经网络。
神经网络的本质其实就是逼近一个函数。
那岂不是可以用训练神经网络的方式来搞定傅里叶变换?
这还真的可行,并且最近有人在网上发布了自己训练的过程和结果。
DFT=神经网络该怎么训练神经网络呢?这位网友给出的思路是这样的:
首先要把离散傅里叶变换(DFT)看作是一个人工神经网络,这是一个单层网络,没有bias、没有激活函数,并且对于权重有特定的值。它输出节点的数量等于傅里叶变换计算后频率的数量。
具体方法如下:
这是一个DFT:
- k表示每N个样本的循环次数;
- N表示信号的长度;
- 表示信号在样本n处的值。
一个信号可以表示为所有正弦信号的和。
yk是一个复值,它给出了信号x中频率为k的正弦信号的信息;从yk我们可以计算正弦的振幅和相位。
换成矩阵式,它就变成了这样: