ディープラーニングにおけるdeconvolutionとは何か
2018.11.6
こんにちは。データサイエンスチームのtmtkです。
この記事では、GAN(Generative Adversarial Network)やautoencoderの文献でよく出てくる、deconvolutionというものについて解説します。
deconvolution, transpose convolution, fractionally-strided convolution, up-convolution, backwards convolutionはすべておなじもの
GANやautoencoderの文献を読んでいると、deconvolutionやup-convolutionなどという単語に出会うことがあります。他にも、transpose convolution、fractionally-strided convolution、backwards convolutionなど、似た単語がいろいろ出てきます。
しかし、私の理解では、これらはすべて同じものを指す単語です。
以下で、実際にこれらの単語が出てくるところを例示します。DCGANの論文では、
fractionally-strided convolutions (in some recent papers, these are wrongly called deconvolutions)
(fractinally-strided convlution(最近の論文では、間違ってdeconvolutionと呼ばれていることがある))
と書かれています。Fully Convolutional Networks for Semantic Segmentationという論文では、
backwards convolution (sometimes called deconvolution)
(backwards convolution(deconvolutionと呼ばれることもある))
と書かれています。Troubling Trends in Machine Learning Scholarship(学問としての機械学習の厄介な動向)という論文では、
3.4.2 Overloading Technical Terminology
A second avenue of misuse consists of taking a term that holds precise technical meaning and using it in an imprecise or contradictory way. Consider the case of deconvolution, which formally describes the process of reversing a convolution, but is now used in the deep learning literature to refer to transpose convolutions (also called up-convolutions) as commonly found in auto-encoders and generative adversarial networks.
として、「deconvolutionは形式的にはconvolutionの逆という意味だが、現在では単にtranspose convolution(up-convolutionとも呼ばれる)のことを指してしまっている」という指摘がされています。(この論文によれば、Deconvolutional networksという論文では、deconvolutionという単語が本来のとおりconvolutionの逆の操作を指しているそうです。deconvolutionがほかと違った意味をもつ少ない例の一つかもしれません。)
このように、いろいろな呼ばれ方をしていますが、基本的には同じものを指しています。以下では、これらすべてをdeconvolutionと統一して呼ぶことにします。
convolutionとは何か
deconvolutionの解説をしたいのですが、その前に、機械学習におけるconvolution(畳み込み)について復習します。機械学習分野でいうconvolutionは、数学などでいうconvolutionとは若干違ったものになっているので、注意が必要です。
以前の記事でも説明しましたが、convolutionは次のような操作です。例を挙げて説明します。入力が長さ6のベクトル
、convolutionのフィルターが長さ2のベクトル
のとき、入力のフィルターによるconvolutionは長さ5のベクトル
になります。
上の例はstrideという値が1の場合のconvolutionで、strideを2に変更すると、convolutionは長さ3のベクトルになり、長さが短くなります。
ここで、convolutionは線形写像であり、行列で表示できることに注意します。上のstrideが2の場合の例で考えると、
という式が成り立つので、convolutionは入力の縦ベクトルに行列
を左からかけることだと考えることができます。
ここでは1次元データの場合について考察しましたが、画像などの2次元データの場合にも全く同様に考えることができます。たとえば、縦が224pixel、横が224pixelの2次元データは、長さ224×224の1次元データだと思えば、やはりconvolutionを線形写像として書き下すことができます。
deconvolutionとは何か
deconvolutionについて説明します。
convolutionでは、strideが1より大きいと、入力の次元より出力の次元が小さくなってしまいます。deconvolutionはこの点でconvolutionの逆の操作だとみなすことができ、入力より次元が大きい出力を得ることができます。また、convolutionをしてから、そのconvolutionに「対応する」deconvolutionをすれば、convolutionをする前の入力と同じ次元の出力をdeconvolutionから得ることができます。
deconvolutionは、数学的に端的にいってしまえば、convolutionに対応する行列の転置(transpose)を左からかける操作です。
上で考察した例では、入力が次元6のベクトル、convolutionのフィルターが次元が2のベクトル、strideが2のとき、convolutionに対応する行列は
なのでした。それに対応するdeconvolutionは、入力が次元2のベクトル、deconvolutionのフィルターが次元2のベクトル、strideが2のときのdeconvolutionで、それはconvolutionをに対応する行列の転置行列
をに左からかけて、
となります。
convolutionでは長さ6のデータが長さ2に縮小されましたが、deconvolutionで長さ2のデータが元の長さ6に拡大されている様子がわかると思います。
ここでは1次元のデータについて解説しましたが、convolutionのときと同じように、2次元以上のデータに対してもまったく同じように考えることができます。
数学的な注意
線形写像を標準基底で表示した行列がのとき、その双対写像を双対基底で表示した行列はになります。双対写像が引き戻しであることを考えれば、convolutionで縮小されたデータがdeconvolutionが拡大される状況がわかりやすいかもしれません。
まとめ
deconvolution, transpose convolution, fractionally-strided convolution, up-convolution, backwards convolutionはすべて同じ操作を指し、それはconvolutionをあらわす行列の転置行列であらわされる操作です。deconvolutionによってデータの長さが大きくなるので、生成ネットワークやautoencoderのdecoder部分で使われます。
参考文献
- [1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
- Fully Convolutional Networks for Semantic Segmentation
- [1807.03341] Troubling Trends in Machine Learning Scholarship
- Deconvolutional networks
- [1603.07285v1] A guide to convolution arithmetic for deep learning
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterデータ分析と機械学習とソフトウェア開発をしています。 アルゴリズムとデータ構造が好きです。
Recommends
こちらもおすすめ
-
ディープラーニングを使ったウェブアプリケーションをすばやく作る
2018.12.1
-
「21世紀の相関係数」を超える(2)
2018.4.6
-
機械学習を学ぶための準備 その4(行列の掛け算について)
2015.12.13
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16