我试图了解一些关于神经网络的事情。首先,在网上浏览了一下,似乎没有办法通过神经网络计算(离散)傅里叶变换。您可以通过对事物进行硬编码以包含用于变换的傅立叶常数来破解它,然后获得不错的结果。为什么机器不能自己解决这些问题?
3 回答
DFT 是线性算子。一些神经网络在计算路径中具有 sigmoid、RLU 或其他非线性元素,这可能会使足够紧密地模拟线性算子变得更加困难。
补充:完整的 DFT 是 N 乘 N 矩阵乘法。神经网络必须足够大以表示那么多乘法(至少 O(NlogN))。
我想我找到了关于这个主题的研究论文:http ://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144.9688&rep=rep1&type=pdf
它说“为了实现处理 DFT 的神经网络,必须应用一种策略,将 DFT 的数学公式映射到神经网络的结构”,似乎他们让它发挥作用(第 6 节)。
据我了解,神经网络只是一种“学习”的分类方法。要使用神经网络解决问题,您需要:
- 定义分类器输入
- 定义分类器输出
- 提供一个训练集:它是一组对(输入,输出)
- 选择一个拓扑结构(有多少层,每层有多少个神经元......)以及单个神经元将用于将输入转换为输出的函数
在神经网络被训练后,给定一个新的输入,神经网络产生一个输出。输出有多好取决于训练有多“好”。通常,数据的代表性是训练数据集。在尝试解决输入和输出之间存在未知关系的分类问题时,此技术非常有用。
快速傅里叶变换只是一个函数。您可以在一维中进行 FFT,它适用于声波等一维现象。在这种情况下,您传递一个值向量(声波强度的样本)并返回一个频率向量。更具体地说,不同频率的谐波在合成时产生原始声波的幅度。在二维中,FFT 将矩阵作为输入。例如,对于一张图片,它可能是网格中各点的颜色强度。FFT 将其转换为谐波矩阵。向量的长度或矩阵的阶数由原始信号的采样率给出。
应用神经网络计算 FFT:
- 在 1 维和 2 维中计算 FFT 的算法是明确定义的。它的复杂度是 O(n log n),这使得它非常高效。神经网络实现需要非常高效(并行性?)才能证明使用它的合理性。
- 如果你改变你的采样率,你需要重新训练你的神经网络:假设你有一个为给定的采样率计算 FFT 的固定网络,如果你显着降低采样率,神经网络将“过度拟合”数据,并且反之亦然。
有了这一切,我认为只要参数(采样率......)不改变,神经网络就可以很好地适应 FFT 的特定实现。