Neural network 神经网络可以';你搞不懂傅里叶变换吗?

Neural network 神经网络可以';你搞不懂傅里叶变换吗?,neural-network,fft,dft,Neural Network,Fft,Dft,我想了解一些关于神经网络的事情。首先,在网上浏览之后,似乎没有办法通过神经网络计算(离散)傅里叶变换。你可以通过硬编码把傅里叶常数包含在变换中,然后得到一个不错的结果。为什么机器不能自己解决这些问题呢?DFT是一个线性算子。某些神经网络在计算路径中有一个sigmoid、RLU或其他非线性元素,这可能会使模拟线性算子变得更加困难 补充:完整DFT是一个N乘N的矩阵乘法。一个神经网络必须足够大,以表示那么多的乘法(至少O(NlogN))。据我所知,神经网络只是一种“学习”的分类方法。要使用神经网络解

我想了解一些关于神经网络的事情。首先,在网上浏览之后,似乎没有办法通过神经网络计算(离散)傅里叶变换。你可以通过硬编码把傅里叶常数包含在变换中,然后得到一个不错的结果。为什么机器不能自己解决这些问题呢?

DFT是一个线性算子。某些神经网络在计算路径中有一个sigmoid、RLU或其他非线性元素,这可能会使模拟线性算子变得更加困难


补充:完整DFT是一个N乘N的矩阵乘法。一个神经网络必须足够大,以表示那么多的乘法(至少O(NlogN))。

据我所知,神经网络只是一种“学习”的分类方法。要使用神经网络解决问题,您需要:

  • 定义分类器输入
  • 定义分类器输出
  • 提供一个训练集:它是一组成对的(输入、输出)
  • 选择一个拓扑(有多少层,每层有多少个神经元…)和单个神经元将用于将输入转换为输出的函数
  • 神经网络经过训练后,给定一个新的输入,神经网络产生一个输出。产出的好坏取决于培训的“好坏”。通常,训练数据集的数据代表性如何。当试图解决输入和输出之间存在未知关系的分类问题时,此技术非常有用

    快速傅里叶变换只是一个函数。可以在一维中使用FFT,它应用于一维现象,如声波。在这种情况下,传递一个值向量(声波强度的样本)并返回一个频率向量。更具体地说,合成时产生原始声波的不同频率谐波的振幅。在二维中,FFT以矩阵作为输入。例如,对于图片,它可以是网格中各点的颜色强度。FFT将其转换为谐波矩阵。矢量的长度或矩阵的阶数由原始信号的采样率给出

    要应用神经网络计算FFT:

  • 计算一维和二维FFT的算法定义良好。它的复杂性是O(nlogn),这使得它非常有效。神经网络的实现需要非常高效(并行性?)才能证明使用它的合理性
  • 如果你改变采样率,你需要重新训练你的神经网络:假设你有一个为给定采样率计算FFT的固定网络,如果你显著降低采样率,神经网络将“过度拟合”数据,反之亦然
    有了这些,我认为只要参数(采样率…)不变,神经网络就可以很好地适应FFT的特定实现

    我想我找到了一篇关于这个主题的研究论文:


    它说,“为了实现一个处理DFT的神经网络,必须应用一种策略,将DFT的数学公式映射到神经网络的结构”,似乎他们让它工作了(第6节)。

    我可以使用线性激活函数。你觉得就这些?罪/因默认情况下不会让我走上线性思考的道路。我在这里给予赏金,因为我认为这个回答最接近问题的答案。谢谢大家。Sin/Cos函数可以用多项式来近似,也许可以训练一个(足够大的)神经网络来近似这些多项式。但这种神经网络可能比硬编码FFT更大/更慢。我以前没有见过这个事实(但我不是神经网络专家)。你能给我一些推荐信吗?我看到一篇论文声称这一点,但并没有提出有力的理由。他们可以很好地学习DFT。制作一个单一的密集层,线性(无激活函数),输出数与输入数相同(输入/输出的一半保持实部,一半保持虚部),并在FFT前后对其进行复白噪声训练。它将计算出所有系数(绘制时看起来很酷)。它的计算效率不如FFT,但它证明了神经网络可以自己计算频谱。更具体地说,合成时产生原始声波的不同频率谐波的振幅。不完全正确。fft的输出是复数。每个复数代表振幅和相位,但在其原始形式中,并不完全如此。2.人们说谐波是指基频的整数倍()。事实上,傅立叶变换得到的采样频率只有奈奎斯特,所以FFT将其转换为谐波矩阵是不正确的。