高速フーリエ変換で畳み込みを高速化する方法 3. 離散フーリエ変換と畳み込みとは?
2018.8.1
こんにちは。データサイエンスチームのtmtkです。
前回までの記事(1.離散フーリエ変換入門、2.高速フーリエ変換(FFT)入門)では、離散フーリエ変換と、それを高速に計算するアルゴリズムである高速フーリエ変換を紹介しました。今回の記事では、離散フーリエ変換を用いて畳み込みを高速に計算する話を紹介します。
巡回畳み込みとは
離散フーリエ変換と相性のよい処理として、巡回畳み込みという処理があります。巡回畳み込みの定義は以下のとおりです。
を自然数として、
を
次元ベクトルとする。ただし、
で
を拡張し、周期
をもつ整数値複素関数
と同一視する。このとき、
の巡回畳み込み
を
で定義します。
巡回畳み込みは、離散フーリエ変換と次のような関係があります。
離散フーリエ変換と巡回畳み込み
離散フーリエ変換と巡回畳み込みに関して、次が成り立ちます。
(ただし、
高速フーリエ変換で巡回畳み込みを高速化できる
高速フーリエ変換を使うと、巡回畳み込みの計算を高速化することが可能です。
巡回畳み込みは、定義にしたがって素朴に計算するとを計算するのに
回の掛け算と
回の足し算が必要です。それを次元の数
回だけ繰り返し計算するので、全体の計算量は
になります。
一方で、先ほど離散フーリエ変換と巡回畳み込みの性質から
が成り立ちます。すなわち、巡回畳み込みを計算するには、
つまり、高速フーリエ変換を使うことで、巡回畳み込みの計算量が
高速フーリエ変換と巡回畳み込みの応用例
巡回畳み込みを高速フーリエ変換で高速化することの応用例として、機械学習における畳み込みへの応用を紹介します。
機械学習において、畳み込みとは以下のような処理です。いま、入力が1次元の場合を考えることにします。畳み込みカーネルをとするとき、入力
に対するカーネル
による畳み込み
は、
に対して
で定義されます。(通常は
畳み込みは、古典的な画像処理や最近流行りのディープラーニングでも用いられています。画像認識の本やディープラーニングの本に詳しいことが書かれています。
さて、この畳み込みは巡回畳み込みを使って計算することができます。例として、
と計算されます。これの第1要素から第4要素までを抜き出したものが、畳み込み
機械学習における畳み込みの計算量は
その他にも、多倍長整数の掛け算などを高速フーリエ変換を使って高速化できるようです。
まとめ
この記事では、巡回畳み込みを定義し、フーリエ変換の積が巡回畳み込みの離散フーリエ変換と等しいことを紹介しました。また、その応用として、機械学習における畳み込みを高速フーリエ変換を使って高速化できることを紹介しました。
参考文献
- Ian Goodfellow『深層学習』
- 山下幸彦他『工学のためのフーリエ解析』
- アダマール積 – Wikipedia
- 離散フーリエ変換を用いた多倍長乗算の話
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterデータ分析と機械学習とソフトウェア開発をしています。 アルゴリズムとデータ構造が好きです。
Recommends
こちらもおすすめ
-
純粋数学専攻がデータサイエンティストに転身してからの半年間を振り返る
2017.12.19
-
機械学習理論の考え方をゲームを使ってみてみる
2016.1.12
-
機械学習を学ぶための準備 その4(行列の掛け算について)
2015.12.13
-
「21世紀の相関係数」を超える(2)
2018.4.6
Special Topics
注目記事はこちら

データ分析入門
これから始めるBigQuery基礎知識
2024.02.28

AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16