高速フーリエ変換で畳み込みを高速化する 2. 高速フーリエ変換(FFT)入門
2018.7.26
Topics
こんにちは。データサイエンスチームのtmtkです。
前回の記事(1.離散フーリエ変換入門)では、離散フーリエ変換を紹介しました。今回の記事では、離散フーリエ変換を高速に計算できる高速フーリエ変換(FFT)というアルゴリズムを紹介します。
高速フーリエ変換とは
高速フーリエ変換は、離散フーリエ変換を分割統治法によって高速に計算します。計算量は入力のベクトルの次元に対してになります。
離散フーリエ変換の定義を思い出すと、の離散フーリエ変換
は
で定義されるのでした。これを素朴に計算すると、を計算するためにの掛け算と回の足し算が必要なため、を計算するのに時間かかります。これをを動かして繰り返すと、を計算するのに全体としての計算量がかかります。高速フーリエ変換では、これがに改善されます。
いま、次元数が偶数であると仮定してこれを少し変形すると、
と計算できます。次元のベクトルをで定めれば、
と書くことができます。ただしに対しては次元ベクトル空間の元ですが、でに自然に拡張して同一視します。なお、いまはが偶数の場合について述べましたが、それ以外の場合でも適宜修正すれば同様の計算ができます。
以上の議論により、次のことがわかります。の離散フーリエ変換を計算するには、次元のベクトルをで定め、の離散フーリエ変換を計算し、その線形結合を計算すればよい。
この方法で繰り返し対象のベクトルの次元を小さくしていき、再帰的に計算して離散フーリエ変換を計算するアルゴリズムを、高速フーリエ変換と呼びます。この分割統治法により、離散フーリエ変換が時間計算量で計算できます。
まったく同じ方法で、逆離散フーリエ変換も高速に計算することができます。この方法を逆高速フーリエ変換とよびます。
まとめ
この記事では、高速フーリエ変換(FFT)のアルゴリズムを紹介しました。高速フーリエ変換は離散フーリエ変換を高速に計算するアルゴリズムで、分割統治法を用いて、次元のベクトルを時間計算量で離散フーリエ変換できます。
次の記事では、高速フーリエ変換の応用として、畳み込み処理を高速化する方法を紹介します。
参考文献
- 山下幸彦他『工学のためのフーリエ解析』
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter
tmtk
データ分析と機械学習とソフトウェア開発をしています。 アルゴリズムとデータ構造が好きです。
Recommends
こちらもおすすめ
-
「21世紀の相関係数」を超える(2)
2018.4.6
-
機械学習を学ぶための準備 その4(行列の掛け算について)
2015.12.13
-
機械学習 オーバーフィッティング(過学習)について
2016.5.31
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16