パスワードを忘れた? アカウント作成
1420714 story
数学

高速フーリエ変換より高速なフーリエ変換アルゴリズム 61

ストーリー by hylom
温故知新 部門より
あるAnonymous Coward 曰く、

MITの研究者らが、高速フーリエ変換(FFT)より高速なフーリエ変換アルゴリズムを開発しているそうだ(MIT news論文)。

MIT newsによると、このアルゴリズムは特定の状況下においては従来のFFTと比べ10倍も高速に実行できるという。信号を一定の帯域幅ごとに分割して処理する、というのがポイントのようだ。この手法では、信号に含まれる周波数分布が疎であるほど高速化できるらしい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by wakatonoo2 (30019) on 2012年01月23日 20時21分 (#2085961) 日記

    DFT(短時間フーリエ変換)した結果がkスパースな
    (=ほとんど0ばっかりで、0以外のデータが最大でもk個しかない)
    ような、信号に対して行える高速アルゴリズムの話しのようです。

    計算オーダー
    ・DFT O(n^2)
    ・FFT O(n log n)
    ・NOSFT ①O(k log n)      ※理想
                    ②O(k log n log(n/k))  ※一般的な入力

      ただしk≦n, フーリエ変換結果がkスパースな場合。
      理想的には、kスパースなデータであれば①なんでしょうけど、
      わりあいkスパースなデータであれば②程度。外れていれば誤差が増える。

      10倍早いという感じは受けなかったのですが、
      イメージ的には全データ1024個だったら、フーリエ変換した後の結果が
      0以外のデータ102以下、ほとんど0データが残992個であれば、
      ②の演算が採用でき、k=102, n=1024としてFFTに比べ10倍高速ですね。

    FFT (高速フーリエ・コサイン・サイン変換) の概略と設計法 [kyoto-u.ac.jp]などにあるように、
    基底(=2.7が最適)から始め、Cooley-Tukey型FFT、Prime Factor型FFT、
    実数限定など組み方次第、メモリアクセスや、CPUキャッシュなどの実環境で
    FFTの演算スピードなんて大きく変わりすぎるので、なんとも言えませんが。

    リンク先 [kyoto-u.ac.jp]はSETI@homeに使われているFFTなども載っています。

    以下、意訳
    ---
    我々はn次DFTのkスパースな近似を計算する問題について提案する。
    我々は以下の2つのアルゴリズムを示す。

    ・入力信号が最大でもk個の非ゼロフーリエ係数を持つ(=kスパース)入力信号に対する計算量O(k log n)アルゴリズム
    ・一般的な入力に対する計算量O(k log n log(n/k))のアルゴリズム

    両方のアルゴリズムとも、どんなkであってもk = O(n)を満たし、、
    オーダーはO(n log n)より改善される。よってFFTより高速であるといえる。

    なお、これらのアルゴリズムはFFTより高速な条件を満たす初めてのものとなる。
    また、もしFFTが最適であるとしても、kスパースなケースではあらゆるkについて
    k=n^Ω(1)を満たすので、確かに最適なアルゴリズムとなる。

    一般的な信号の"疎フーリエ変換"を計算するための任意のアルゴリズムは、
    それが適応的サンプリングを行った場合でも、
    少なくともΩ(K log(n/ k)log log n)個の信号データを使用する必要があることを
    我々は示すことによって、提案アルゴリズムの結果を補足した。

    • 長くなったのでこちらに。

      MemCalc百問百答 [gms-jp.com]などにも載っていますが、
      適応化フィルタの理想タップ数は、赤池情報量規準AICなどで予想できます。

      今回のNOSFTが要求しているフーリエ結果がkスパースな入力データというものも、
      AICからある程度予測できそうな気がします。
      これはAICから予測できる理想タップ数が、含まれている周波数の種別の数に
      なっているからです。

      AICの理論はよく判りませんが、入力データを行列とみなして対角化し、
      行列の固有値を大きいほうから並べ、変曲点までの個数を数え、
      それを理想タップ数とします。これが周波数の種別の数になります。
      (正確には定常エルゴート過程にある自己相関関係にある周波数の数)

      適応フィルタは、含まれている周波数の数の分だけタップ数にすると安定です。
      タップ数がむやみに大きいとニセピークなどが現れます。
      NOSFTもnに比べk-スパースであるのが必要なので、似た動作をするような気がします。

      親コメント
    • by wakatonoo2 (30019) on 2012年01月23日 21時38分 (#2086006) 日記

      リンク先 [srad.jp]にある、グラフをみてみましたが、
      特に4番目 [mit.edu]ですが、

      n=2^22=4194304, k=100
        FFTW :550msec
        sFFT1.0 : 55msec

      周波数差として、0.0016%幅の中に全てのピークが入るような時に
      やっとFFTより10倍速い。おっそろしく正弦波な感じのイメージ。

      理論的には速いのかもしれませんが、
      実装上は、今のところ評価不能な感じです(とても遅い。入力波形に制限がある)

      親コメント
      • by ggy (39364) on 2012年01月23日 22時28分 (#2086038)
        いやいや、k個の非ゼロ値が連続している必要はないですから、 >>0.0016%幅の中に全てのピークが入るような時 なんて要請はないですよ?
        親コメント
        • by wakatonoo2 (30019) on 2012年01月23日 23時40分 (#2086075) 日記

          >k個の非ゼロ値が連続している必要はない

          それはそうなのですが、DFTの場合、そんなに周波数分解能が良くないので、
          4194304タップ中、
          ・100タップのみが非ゼロ値
          ・あとの4194204タップが0
          なんてフーリエ値(=パワースペクトル)というのは非現実的な気がするのです。
          考え方が間違っているのかな(でも他のグラフも同じような傾向のようです)

          親コメント
          • by ggy (39364) on 2012年01月23日 23時46分 (#2086079)
            なんか賢いつもりで翻訳の真似事してるけど、 そもそもDFTって言葉の意味もわかってないでしょ?
            親コメント
            • by wakatonoo2 (30019) on 2012年01月23日 23時55分 (#2086084) 日記

              >そもそもDFTって言葉の意味もわかってないでしょ?
              離散フーリエ変換discrete Fourier transform、DFT
              たたみこみ演算で計算することが多い。

              高速フーリエ変換(FFT)も説明が必要ですか?

              >なんか賢いつもりで翻訳の真似事してるけど、
              >ggy (39364)

              無いものは自分でやる主義ですから。

              親コメント
              • by ggy (39364) on 2012年01月24日 0時09分 (#2086089)
                >>高速フーリエ変換(FFT)も説明が必要ですか? なんというか、苦笑いしか出てこないけど、 バカにされたと思ったならごめんね。 あきらかに誤読しているのに自信満々に書いてて、 あげくに「なんじゃこりゃ 」とか「保留」とか 上から目線で批評してるので、指摘してあげないと 他の読者にまずいと思ったので。 >>DFTの場合、そんなに周波数分解能が良くないので ところでこれはどういう意味? なぜ勝手に分解能が良くないと決めるの?
                親コメント
              • by ggy (39364) on 2012年01月24日 0時11分 (#2086090)

                ごめん、改行失敗した、再送

                >>高速フーリエ変換(FFT)も説明が必要ですか?
                なんというか、苦笑いしか出てこないけど、
                バカにされたと思ったならごめんね。
                あきらかに誤読しているのに自信満々に書いてて、
                あげくに「なんじゃこりゃ 」とか「保留」とか
                上から目線で批評してるので、指摘してあげないと
                他の読者にまずいと思ったので。

                  >>DFTの場合、そんなに周波数分解能が良くないので
                  ところでこれはどういう意味?
                  なぜ勝手に分解能が良くないと決めるの?

                親コメント
              • by ggy (39364) on 2012年01月25日 1時32分 (#2086931)

                いやだから、私が
                  >>そもそもDFTって言葉の意味もわかってないでしょ?
                って書いたのは、翻訳のしょっぱなに
                  >>DFT(短時間フーリエ変換)
                なんて書いてるので、一般のDFTの話を勝手に短時間FTに限定しているから。
                DFTといえば時系列データが対象で実用上窓関数が必須、と思い込んでいるようだが、あなたの従事する分野でそうだったとしても、一般を論じている今回の論文とは全く関係ないことですよね。
                FFTには例えば3次元のカルテシアン座標上でポアソン方程式をスペクトル法で解く、なんていう窓関数とは無縁の用途もたくさんあるわけで。
                だから、この人はDFTって言葉の意味すらわかってないんじゃないか、と思ったわけ。

                >>窓関数の辺りのこと(データの最初と終わりが不連続になってピークが広がりを持つ)ことを言ってるのではないの?

                この発言もちょっとおかしくて、窓関数が前提なことがそもそも間違いなのは先に指摘したとおりだけど、窓関数はサンプル区間の境界でデータの不連続をなくすために適用するもんなので、言っていることが意味不明。
                窓関数を適用しないでぶった切る、つまり「矩形窓」を使うんだったら確かに不連続になってしまうけど、データの不連続が問題なんだったらそうならないような窓関数を適用するべきで、窓関数っていうのは普通はそういうものを指す。

                で、窓関数があろうがなかろうが関係なく、この論文は変換後の波数空間でk個の非ゼロ値が連続しているなんて前提は一切ないのに、 あなたは、じゃなかったwakatonoo2氏は、著しい誤読の挙句、まるで意味がないかのような批評をしているので、誰か理解している人が指摘してあげないといけないでしょ?

                あと、
                >>離散ポイント間を矩形近似してることの誤差とか
                こんなこと言い出したらこの論文の手法どころか、DFTそのものが無意味と言っているようなもんですよ。
                FFTなんて速くてもまったく意味がない、って言ってるのと同じです。
                もちろんそんなわけはなくて、離散化の誤差が問題になるのだったら問題にならないほど高いサンプリングレートをとる、あるいはレートが不十分ならそんな高周波は解析対象としない(できない)、です。

                矩形近似ってのも意味わからんですが。
                サンプルは点でとるので、FFTのアルゴリズム自体にそのサンプル間をどう補間するかという前提は全くないですよ。
                強いて言えば正弦波の重ね合わせで補間する、ですかね。
                少なくとも矩形補間ではないですね。

                とまあ、乗りかかった舟なんで、私の知識で指摘できることは指摘してきます。

                親コメント
              • by the.ACount (31144) on 2012年01月26日 13時51分 (#2087825)

                言い訳が長すぎて、読む気が起きないので評価しない。
                長い言い訳が必要と言うことは、最初のコメントに遡って無価値と判断。

                --
                the.ACount
                親コメント
              • by wakatonoo2 (30019) on 2012年01月27日 16時10分 (#2088573) 日記

                >窓関数の辺りのこと(データの最初と終わりが不連続になって
                >ピークが広がりを持つ)ことを言ってるのではないの?
                >あるいは離散ポイント間を矩形近似してることの誤差とか?

                もっと根本的なもので、FFTではたとえ単一周波数でも、スペクトルの裾野が
                広がってしまう(=スパースでない)ように思います。

                周波数分解能はどのように決めるのか? [onosokki.co.jp]
                >FFT法
                >スペクトルの瞬時時間変動を見たい場合には時間分解能を上げる
                >(そのためには時間窓長を小さくする)必要があり、
                >(1)式から周波数分解能が悪くなる。これより、通常の FFT分析では
                >スペクトルの時間分解能と周波数分解能とは逆数の関係となる。

                FFTでは最短でも1周期分の波形長が必要で、周波数x時間分解能がある一定以下になりません。
                通常(とは言っても、私の考える通常ですが)、FFTはスパースを云々できるほど、
                スペクトルピークが0が続くことはありません。

                スペクトル解析法 [wakwak.com]
                >最大エントロピー法(MEM:Maximum Entropy Method)と言う スペクトル解析法があります。それは...
                >有限な測定データからそれだけでは測定不可能な大きなラグを持つ 自己相関関数を情報エントロピーが最大となるように推定することにより スペクトル推定を行う。
                >したがって 無限に続く信号(現象)の一部分だけからスペクトル解析をす るのに適している。
                >FFTと比較すると スペクトルの分解能が高い・ 信号の周期に対してデータ長が短くてもスペクトル推定が出来る・ 雑音に対して比較的強い etc.
                >MEMの使用上の注意点としては 自己回帰モデルの次数決定が難しい最終予測誤差 (FPE:Final Prediction Error)を用いているが どのデータでもこの方法がうまく行くとは限らない・ スペクトルの推定結果は和とはならない(高さは保証されない)・ FFTに比べ計算時間が長い etc.

                MEMでもAR, RLS, QRD-LSLだろうと何でも良いのですが、3タップ程度の自己回帰モデルを決め、
                タップからウィーナー‐ヒンチンの定理でパワースペクトルを求めると、周波数分解能が
                (FFTに比べ)飛躍的に向上します(k→小のkスパースが言えるほどの)。

                1周期の波形をFFTした結果のパワースペクトルの裾野の広がりは、
                0.2周期程度の波形を自己回帰モデルからパワースペクトル求めたものと同じ印象です。
                そういった意味で、FFTは分解能が悪いとしました。
                私が扱う音声解析や、生体信号など扱うレベルでは、FFTの分解能は悪いです。
                kスパースを言えるほど、スペクトルピークが0が続きません

                親コメント
  • by Anonymous Coward on 2012年01月23日 17時17分 (#2085847)

    どこかで何度も誰かが話されているので今更なのですが、

    並列性能が遅かったら業界によっては意味が無いです。大規模な計算で FFT がボトルネックになるのは全通信が必要など、並列化に向いていない仕様のためです。そのため超大規模・超並列系ではFFTは使わない方向で進化している。

    シングルで10倍速くても、数百並列が限界とすると、15並列くらいできっちりシングル演算の速度を越えることが出来て数千・数万並列くらいまであまり速度劣化がなければそっちの方が結果的に速いです。無論、シングルで速いに越したことはないですが。当然、ここいらの需要は業界によって異なります。それでも単純に10倍速くなると言うのは画期的かとは思いますし、ただのFFTど等程度の並列コストならばそれだけで10倍の規模の計算が出来るわけですので。いやースゲーです。偉い人。すごい人。

    # 論文読めって?すんません後で(汗)
    # イントロがいきなりDFTっす。そっちの人? FFTWとかのInterfaceがあるとうれしい気がする。

  • by Anonymous Coward on 2012年01月23日 15時06分 (#2085746)

    Faster Fourier transform?

  • by Anonymous Coward on 2012年01月23日 15時16分 (#2085750)

    よく知らないので識者に聞きたいのですが
    FFTって音声とか周波数とかの超基礎アルゴリズムですよね。
    これが10倍速くなったってことは、通信も数倍速くなったりするんですか?

    • by atdp117 (41595) on 2012年01月23日 15時26分 (#2085759)
      通信速度は帯域幅と変調方式で決まるので変わらないと思います。
      10倍速くなった分、CPUなりDSPの動作時間率が下がれば低消費電力化は期待出来ると思いますが。
      親コメント
    • by Anonymous Coward on 2012年01月23日 15時33分 (#2085767)

      通信そのものは速くなりません。
      受信後の信号を抜き出す処理が速くなる可能性はありますが、回線上の通信の遅延にくらべたら微々たるものです。

      とはいえ、軽量なアルゴリズムが開発されることにより、ソフトウェアが軽量化され、結果的にはCPUリソースその他が有効活用されるようになります。
      DSPなどで実装されている場合も、回路やマイクロコードが簡略化できる可能性があり、それは消費電力の低減などに寄与するかもしれません。

      現在の通信方式も、FFTで周波数ごとの信号を読みだしていますが、新方式が「特定の状況下で10倍速い」というなら、その特定の状況になりやすい通信方式などが出てくる可能性もありますね。

      親コメント
    • by Anonymous Coward

      >通信も数倍速くなったりするんですか?

      FFTの演算部分が律速になってる場合は速くなるでしょうが、通信だと大抵の場合速度を制限してるのはS/N比だとか帯域だとかな気がしますので、速くならないんじゃないでしょうか。

    • by Anonymous Coward

      変換のオーバーヘッドが減るだけ

    • by Anonymous Coward

      一般的な影響はまったくありません
      この論文が取り扱っている条件はかなり特殊なものなので、一般的な連続時間信号を離散化して扱う音声処理などとは無関係です

      • by Anonymous Coward

        >> この論文が取り扱っている条件はかなり特殊なものなので、一般的な連続時間信号を離散化して扱う音声処理などとは無関係です

        えっ?ちゃんと論文読みました?

    • by Anonymous Coward

      FFTは色々な線形演算に応用できるので、それなりに影響は大きいです。
      例えば、FFTで「たたみ込み演算」を高速化(高効率化)できるのは有名ですが、
      たたみ込み演算は線形デジタルフィルタの演算そのものなので、各種フィルタ演算を
      高速化できます。

      他にも最近サービスが始まったドコモの Xi は信号の変調、復調にFFTをそのまま使いますので、
      計算効率が10倍良くなるとすると、現在ハードウエアでやっているFFT処理が、
      ソフトウエアで出来るのではないかと考えたくなります。

      でも今回のやつはデータを選ぶようなので応用は限られているような気がします。

  • by Anonymous Coward on 2012年01月23日 15時30分 (#2085763)

    高速フーリエ変換だと、サンプル数と基底数が2^nに固定されるけど
    この方法だと独立に選べるからそれによって高速に処理できるってこと?

    • by tamanegi (38323) on 2012年01月23日 17時09分 (#2085836) 日記

      FFTW のライブラリでも既にサンプル数が 2^a*3^b*5^c*7^d*11^e*13^f (ただし e+f=0 or 1)
      が扱えたりする(一応 2^n が最も効率良いはず)のでそういうことではないと思う。

      ある程度以上に疎な場合(重みのでかい周波数が多くない場合)に高速に変換できうる
      アルゴリズムを作ったというかより一般的に使える形に発展させた、みたいな話に見える。

      FFT を使うような場合はデータはある程度は疎であるような気がしなくもないから
      結構有用だったりするのかな。ただ、特定の状況で 10 倍くらいだと普通の状況
      だとほとんど効かないんじゃ、的なことはありえるかも。あと不可逆になるのかなぁ。

      # 論文はちらっと見たけど速攻で諦めた。無理。

      親コメント
  • by Anonymous Coward on 2012年01月23日 15時55分 (#2085780)

    >信号に含まれる周波数分布が疎であるほど
    非可逆な希ガス。成分の存在はどうやって判定するんだろう。決めうち?
    あらかじめ分布を知っていないといけないの?
    IFFTやって元の信号に戻らないなら、応用は限定されるね。
    OFDMのこのキャリア(周波数)要らない!ってのなら使えるかな。

    • by 335 (4199) on 2012年01月23日 18時00分 (#2085870) 日記

      >あらかじめ分布を知っていないといけないの?

      線形とみなせる測定対象なら固有振動モードが有限な数しかないだろう。それはFFTしたい測定対象の大多数だと思うけど。

      親コメント
    • by Anonymous Coward

      そこはスラドのタレコミにつっこむんじゃなくて。
      論文取り寄せて読んだら解決かと。

  • by Anonymous Coward on 2012年01月23日 16時12分 (#2085802)

    スパースなのでMPEGとかJPEG、もしくはその延長線にはあんまりインパクトない気はしますが
    (私が不勉強であるかもしれないが)
    有限要素法とか境界要素法に使えるみたいですね(スパース行列の典型ですし)。
    本質的に線形偏微分方程式の数値解法なんだから、新たな計算法の開発も
    できるかもしれない。

  • by Anonymous Coward on 2012年01月23日 17時12分 (#2085839)

    特定の状況下においては従来のFFTと比べ10倍も高速に実行

    そう思っていた時期もありました

  • by Anonymous Coward on 2012年01月23日 18時02分 (#2085872)

    JPEG2000の時代来た?

  • by Anonymous Coward on 2012年01月23日 19時40分 (#2085932)
    にはすごく有用な気がしますです
  • by Anonymous Coward on 2012年01月23日 22時25分 (#2086035)

    を動かすマシンの性能を1段低いもので良くなるのですね。

  • by Anonymous Coward on 2012年01月23日 23時22分 (#2086068)

    フーリエ変換は、直交変換の一種である。
    直交変換は、線形変換の一種である。

    なんてことを考え出すと、どう考えていいものやら。

    計算手順は示せるけど、定式化した上であれこれ
    考えるのは難しい種類の話かも。

typodupeerror

Stay hungry, Stay foolish. -- Steven Paul Jobs

読み込み中...