convolutionはすべておなじものconvolutionとは何かdeconvolutionとは何か数学的な注意まとめ参考文献こんにちは。データサイエンスチームのtmtkです。Network)やautoencoderの文献でよく出てくる、deconvolutionというものについて解説します。convolutionはすべておなじものGANやautoencoderの文献を読んでいると、deconvolutionやup-convolutionなどという単語に出会うことがあります。convolutionなど、似た単語がいろいろ出てきます。私の理解では、これらはすべて同じものを指す単語です。以下で、実際にこれらの単語が出てくるところを例示します。convlution(最近の論文では、間違ってdeconvolutionと呼ばれていることがある))と書かれています。convolution(deconvolutionと呼ばれることもある))と書かれています。convolution(up-convolutionとも呼ばれる)のことを指してしまっている」という指摘がされています。networksという論文では、deconvolutionという単語が本来のとおりconvolutionの逆の操作を指しているそうです。deconvolutionがほかと違った意味をもつ少ない例の一つかもしれません。)このように、いろいろな呼ばれ方をしていますが、基本的には同じものを指しています。以下では、これらすべてをdeconvolutionと統一して呼ぶことにします。convolutionとは何かdeconvolutionの解説をしたいのですが、その前に、機械学習におけるconvolution(畳み込み)について復習します。機械学習分野でいうconvolutionは、数学などでいうconvolutionとは若干違ったものになっているので、注意が必要です。以前の記事でも説明しましたが、convolutionは次のような操作です。例を挙げて説明します。よるconvolutionは長さ5のベクトルになります。なり、長さが短くなります。ここで、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)を左からかける操作です。strideが2のとき、convolutionに対応する行列はなのでした。左からかけて、となります。convolutionでは長さ6のデータが長さ2に縮小されましたが、deconvolutionで長さ2のデータが元の長さ6に拡大されている様子がわかると思います。ここでは1次元のデータについて解説しましたが、convolutionのときと同じように、2次元以上のデータに対してもまったく同じように考えることができます。双対写像が引き戻しであることを考えれば、convolutionで縮小されたデータがdeconvolutionが拡大される状況がわかりやすいかもしれません。convolutionはすべて同じ操作を指し、それはconvolutionをあらわす行列の転置行列であらわされる操作です。deconvolutionによってデータの長さが大きくなるので、生成ネットワークやautoencoderのdecoder部分で使われます。learningツイート#数学#機械学習tmtkデータ分析と機械学習とソフトウェア開発をしています。アルゴリズムとデータ構造が好きです。