元のpaperはこちら ↓
https://ir.lib.uwo.ca/cgi/viewcontent.cgi?article=1182&context=electricalpub
背景:
例えば電力の需要予測とか、LSTM的なRNNで解こうとすると学習するのに正解データが大量に必要だよね。
でも電力データってプライバシーの問題とかで集めるの難しいんだよなぁ。
ってわけでGANで学習用データを作っちゃおうぜ。
ポイント1:モデル
GANって基本画像ばっかで使われてるけど、generatorもdiscriminatorもCNNのところをRNN(LSTM)にして時系列データを作らせようぜ。(R-GAN)
あとさ、GANってそもそもが不安定だし、モード崩壊とか勾配消失とかの対策が必要だからWasserstein GANにしようよ。(WGAN)
それから生成されたデータも全部がクオリティ高いってわけじゃないし、データの品質向上のためにMetropolis-Hastings GANも利用しよう。(MH-GAN)
generatorの全層とdiscriminatorのRNN層のactivationにはGELUを使ったよ、なんかReLUとかより良いらしいし、discriminatorのdense層は普通にtanh。
ポイント2:特徴量
各時間の電力値だけってのも特徴量として寂しいしノイズだらけだからさ、時間依存性を捉えるためにARIMAとフーリエ変換を用いて追加の特徴量を作るよ。
ポイント3:評価方法
GANの評価って難しいけどさ、やっぱりタスクに合わせて決めるべきだよ、今回は学習用データを作りたいって話だからさ、生成したデータで学習したモデルと実際のデータで学習したモデルの精度を比較するのが良いと思うな。
・TRTS(Train on Real, Test on Synthetic)
・TSTR(Train on Synthetic, Test on Real)
・TRTR(Train on Real, Test on Real)
・TSTS(Train on Synthetic, Test on Synthetic)
今回はTSTRとTRTRの結果が絶対値に関係無く近い値になればOKかな、これらの評価値は色んな示唆を含んでいるから覚えておいてね。
結果:
基本的には以下の2つのデータセットで同じような結果だったよ。
・University of California, Irvine appliances energy prediction data set
・Building Data Genome set
どちらも生成したデータで学習したモデル(TSTR)と実際のデータで学習したモデル(TRTR)の精度がとても近かったんだ。
ARIMAとフーリエ変換も無いよりあった方が良さそうだし。
備考:
Building Data Genome setの方だとARIMAが無い方がモデルの精度が高かったけど、それは予測モデルの多重共線性の問題で、データ生成の問題では無いよ。
それから一応、生成されたデータと実際のデータの分布をテスト(Kruskal-Wallis H検定、Mann-Whitney U検定)してみたけど、有意差は無いってことで良さそう、つまり同じ分布から生成されたと言っても良さそうだったよ。