NILM(Non-Intrusive Load Monitoring)の論文紹介 3回目です。 今回は2023年に発表された論文の1つを紹介します。
3行で説明する
- NILMの分野で初めてDiffusion modelを使った
- 全体電力と埋込み時間情報を入力とする条件付きDiffusionモデル
- 計算量には目をつぶるが既存手法を上回る結果を達成した
アプローチ
拡散モデル(Diffusion model)は 以下の図のように 拡散過程 と 逆拡散過程 から成り、逆拡散過程によってランダムノイズからデータを生成します。
NILMは分離のタスクなので
- 入力:家全体の消費電力の系列
- 出力:(そのうちの)ある家電の消費電力系列
となります。
単純に拡散モデルを適用してもランダムに電力データが出力されるだけとなり目的には合いません
条件付き拡散モデル
そこで条件付きの拡散モデルの出番です。 DALL・Eなどの画像生成AIではプロンプトがそれ(条件)に当たり、条件に応じた生成データを出力してくれます。
図中のConditional inputsとなるところが条件入力となり、
- Aggregated power data: 家の全体電力の系列
- Embedded temporal features: 時間系列の埋め込み情報
が入力されます。
これにより、家全体の消費電力情報と時間情報に応じて各家電の消費電力データ(Diffused appliance-level power data)を生成できるようになります
(拡散モデルなのでモデル自体は真の家電消費電力データに近づくように取り除くべきノイズ成分 $ \epsilon_{\theta} $ を出力します)
時間情報埋め込み
家電は季節や時間帯によって使われやすい/使われにくいが変わってくるので時間情報を埋め込みとして入力するのは Make sense です
- Month of year:何月
- Hour of day: 何時
- Day of week: 何曜日
の3次元情報を ~0.5~+0.5 の範囲で埋め込みます
アーキテクチャ
推定ノイズ成分 $ \epsilon_{\theta} $ を出力するネットワークです
- $ X_\overline{a} $:ノイズ含む家電消費電力系列
- $ \sqrt{\overline{a}} $:ノイズレベル
- $ X_{aggre} $ : 家全体の消費電力系列
- $ X_{time} $:時間埋め込み情報
実験情報では 残差レイヤーは10個 とのことで大きいネットワークです。
活性化関数としては SiLu (Sigmoid Linear Unit)が使われています。
学習とサンプリングの手順
学習フェーズ
実験情報では T = 1000 となっています
- 開始
- 学習データセットから家電正解電力 $ x_0 $ を取り出す
- 1~1000の一様分布から $ t $ をサンプリング
- 時刻 $ t $ でのノイズ率 $ \sqrt{\overline{\alpha}_{t}} $ 〜 $ \sqrt{\overline{\alpha}_{t-1}} $ の一様分布から ノイズ率 $ \sqrt{\overline{\alpha}} $ をサンプリング
- 標準正規分布から ノイズ $ \epsilon $ をサンプリング
- モデルで予測したノイズ成分 $ \epsilon_{\theta} $ と $ \epsilon $ の L1対数誤差 を損失関数として 逆伝搬させる
- $ \sqrt{\overline{\alpha}} $ :ステップ4のノイズ率
- $ x_{\overline{\alpha}} $ :正解電力 $ x_0 $ にノイズ率 $ \sqrt{\overline{\alpha}} $ に応じてノイズを付加したデータ
- $ x_d $ : 全体電力データと時刻情報埋め込みデータ
- 収束するまで続ける
L1損失ではなく対数L1損失を使うほうが収束も速く、結果も良かったとのことです。
サンプリングフェーズ
- 標準正規分布からランダムノイズ $ x_T $ をサンプリング
- $ T_{infer} $ ステップ分、以降の処理(3. ~ 6.)を繰り返す
- 標準正規分布からランダムノイズ $ z $ をサンプリング
- ノイズスケジューラから時刻 $ t $ における $ \overline{\beta}_{t} (= 分散)$ を計算
- モデルにノイズ成分 $ \epsilon_{\theta} $ を予測させ、$ x_t $ から引き算する(→時刻 $ t $ での $ x_t $ の平均値 $ \mu_{\theta} $)
- 時刻 $ t $ での平均値 $ \mu_{\theta} $ に ステップ3のランダムノイズ $ z $ に分散をかけたものを加算し、$ x_{t-1} $ とする
- $ t = 0 $ になるまで繰り返す
- $ t = 0 $ 時点での 生成電力データ $ x_0 $ (=家電の予測電力データ)を返す
実験情報からは $ T_{infer} = 8 $ ということで たった8ステップで生成できるのは驚きました
fast sampling([2106.00132] On Fast Sampling of Diffusion Probabilistic Models)という手法らしいです。
評価
データセット
が使われています
評価指標
- 分類
- Accuracy
- F1-score
- 回帰
- MAE
- MRE (Mean Relative Error)
MRE は分母が 正解値と予測値のmaxとなっており、正解値を分母とするMAPEとは若干違っています
MAPEでは正解値が小さいときに大きく外すと分母が小さいため大きなペナルティが課されますが、MREではそれが緩和されています。
正解値 | 予測値 | 誤差 | MAPE | MRE |
---|---|---|---|---|
100 | 1000 | 900 | 9.0 | 0.9 |
1000 | 100 | 900 | 0.9 | 0.9 |
リファレンスモデル
リファレンスモデルは以下の4つです
- Bi-LSTM
- CNN (Seq2Point)
- BERT4NILM
- cGAN (Seq2Subseq)
cGANの論文はIEEEの有料論文となっていて購入しない限り読めないですが ICASSPでの発表スライド(SEQUENCE-TO-SUBSEQUENCE LEARNING WITH CONDITIONAL GAN FOR POWER DISAGGREGATION | SigPort)は閲覧可能です
評価結果
<REDDでの評価結果>
提案手法であるDiffNILMが分類タスク(F1スコア)でも回帰タスク(MAE、MRE)でも全体を通して良い結果になっています。
特に、電力パターンが複雑なWasher(洗濯機)、Dish washer(食洗機)において良いスコアを示しています。
<UKDALEでの評価結果>
REDDでの結果よりもDiffNILMの優勢さが目立つ結果になっています。
もう1つの生成モデルであるcGANもスコアがREDDに比べて改善しており、学習データ量が増えたことにより性能を発揮するようになったと考えられます。(REDDの4ヶ月に対してUKDALEは3年)
学習データが十分にないときに生成モデルを使うことは不適当であることを示唆しています
所感
計算量は膨大だと思われますが分離性能は有望そうであり、今後、計算コストの改善を期待したいです。(すぐに思いつくのは潜在拡散モデルの導入ですがどうなんだろう)
以下のような色々な細かい工夫がなされているので
- ReLuではなく、SiLu
- L1損失ではなく、対数L1損失
- fastサンプリング
安定的に学習&予測させるのは大変なんだろうなぁと思いつつ、 サンプル実装が公開されたら追試してみたいところです。