ニューラルネットワークについていくつか理解しようとしています。まず、Web を調べてみると、ニューラル ネットワークを介して (離散) フーリエ変換を計算する方法がないようです。変換用のフーリエ定数を含めるようにハードコーディングすることでハッキングし、適切な結果を得ることができます。なぜ機械はこれらを自分で判断できないのでしょうか?
3 に答える
DFT は線形演算子です。一部のニューラル ネットワークでは、計算パスにシグモイド、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)。
私が理解しているように、ニューラルネットワークは単なる「学習」する分類方法です。ニューラル ネットワークを使用して問題を解決するには、次のものが必要です。
- 分類器の入力を定義する
- 分類器の出力を定義する
- トレーニング セットを提供する: ペアのセットです (入力、出力)
- トポロジー (レイヤーの数、レイヤーごとのニューロンの数など) と、個々のニューロンが入力を出力に変換するために使用する関数を選択します。
ニューラル ネットワークがトレーニングされた後、新しい入力が与えられると、ニューラル ネットワークは出力を生成します。出力の良し悪しは、トレーニングの「良さ」に依存します。通常、データの代表性はトレーニング データセットです。この手法は、入力と出力の間に未知の関係がある分類問題を解決しようとする場合に非常に役立ちます。
高速フーリエ変換は単なる関数です。音波のような 1 次元の現象に適用される 1 次元で FFT を使用できます。この場合、値のベクトル (音波の強度のサンプル) を渡し、周波数のベクトルを取得します。より具体的には、合成されたときに元の音波を生成する、異なる周波数の倍音の振幅。2 次元では、FFT は行列を入力として受け取ります。たとえば、画像の場合、グリッド内のポイントでの色の強度になります。FFT はこれを高調波の行列に変換します。ベクトルの長さ、または行列の次数は、元の信号のサンプリング レートによって決まります。
ニューラル ネットワークを適用して FFT を計算するには:
- 1 次元と 2 次元で FFT を計算するアルゴリズムは明確に定義されています。その複雑さは O(n log n) であり、非常に効率的です。ニューラル ネットワークの実装は、その使用を正当化するために非常に効率的 (並列処理?) である必要があります。
- サンプリング レートを変更する場合は、ニューラル ネットワークを再トレーニングする必要があります。たとえば、特定のサンプリング レートの FFT を計算するテイインド ネットワークがあるとします。サンプリング レートを大幅に下げると、ニューラル ネットワークはデータを「オーバーフィット」し、逆に。
以上のことから、パラメーター (サンプリング レートなど) が変わらない限り、ニューラル ネットワークは FFT の特定の実装に非常によく適合すると思います。