時系列のための生成AI
時系列生成AI
GANを使用した時系列データの合成データの生成:DoppelGANger
時系列データ(トラフィックデータ、株価、天気やエネルギーの計測値、ヘルスケアの信号など)は、基本的に時間の経過とともに連続的に生成されるデータです。
この時間依存性は、合成データの生成プロセスに新たな複雑さをもたらします。時間にわたるトレンドと相関を保持することは、通常の表形式データの特徴や属性間の相関を保持することと同じくらい重要です。また、時間の経過が長くなればなるほど、それらの関係を保持することは困難になります。
これまで、データサイエンスチームは高品質な合成時系列データを生成する適切な方法を定義しようと試みてきました。その中で、Generative Adversarial Networks(GAN)は現在非常に人気があります。
この記事では、ユーモアのあるアーキテクチャ、DoppelGANger(ダブルガンガー)の特異性について詳しく説明し、最新のydata-syntheticパッケージに追加されたDoppelGANgerを使用して複雑な時系列データセットから合成データを生成する方法を探っていきます。
時系列データの双子を生成するにはどうすればいいですか?
経験豊富なデータサイエンティストであっても、合成データの生成には多くの微妙な点があるため、少し難しい場合があります。実際、データ準備の最適な調整方法やデータ合成のための適切な機械学習モデルの選択方法を決定することは、Data-Centric AI Communityで議論してきた主要なトピックの1つです。
教育目的のために、私たちはydata-syntheticを最も適した選択肢とし、表形式データで十分にテストしました。今回は、時系列データを使用して、時系列合成データ生成のための最新モデルであるDoppelGANgerを使用して実験しています。
(素晴らしい)名前からもわかるように、DoppelGANgerは「Doppelganger」というドイツ語の言葉(似たような人や人の二重)と「GAN」という人工知能モデルのダジャレを利用しています。
DoppelGANgerはGANベースのモデルであり、DoppleGANgerでも同じ一般的な原則が適用されます。生成器と識別器は、合成データ(生成器によって作成される)と実データ(識別器または批評家が合成データと区別しようとするデータ)を比較することで、連続的に最適化されます。ただし、先に述べたように、GANは時系列データの特異性に苦労してきました。
- GANは長期的な時系列の関係を捉えるのが難しい。一般的なアプローチとしては、ウィンドウ処理を考慮することがあります。つまり、データの短いセグメントを定義し、これらのセグメントだけでモデルを評価します。これはTimeGANが採用しているアプローチです。ただし、長期的な相関を保持する必要がある場合、すべての時系列データを複製する必要があるユースケースでは、これは実現不可能です。
- GANはモード崩壊に苦労します。データが多峰分布を持つ場合、最も表現されていないモードは最終的に崩壊します(消えます)。時系列データは、測定範囲がしばしば非常に可変であるため、特にこれに対して脆弱です。
- GANは測定値と属性間の複雑な関係をマッピングするのが難しい。および異なる測定値間の関係も同様です。時系列データの構造を思い出してみると、口座残高とトランザクションの種類(属性)との関係、および口座残高と手数料金額などの他の測定値との関係をマッピングすることは難しい場合です。
これらの制限を克服するために、DoppelGANgerではいくつかの変更が導入され、より良い合成時系列データの生成に対応しています。
- 時系列の相関を捉えるために、DoppelGANgerはバッチ生成を使用します。1つのレコードを1つずつ生成する代わりに、バッチでレコードを生成します。これは長い時系列に対してはより良く、シングルトンレコードを生成する際に忘れられるであろう時系列の相関を保持するのに役立ちます。
- モード崩壊に対処するために、DoppleGANgerは自己正規化を使用します。入力データを測定値のグローバルな最小値と最大値で正規化する代わりに、各時系列信号は個別に正規化されます。各系列の最小値と最大値はメタデータとして使用され、GANはそれらを生成する方法を学習し、モード崩壊を緩和します。
- 測定値と属性間の関係をマッピングするために、DoppleGANgerは測定値と属性の共同分布をモデル化し、補助識別器を導入します。属性の生成は、属性に条件付けられた測定値の生成から切り離され、それぞれが専用の生成器を使用します。さらに、補助識別器が導入され、属性のみを識別します。
主な利点と使用時のポイント
このアーキテクチャの概要と、時系列データのいくつかの既知の課題を克服する方法について包括的な概要を把握したところで、DoppelGANgerがなぜ人気のあるモデルであるかが理解しやすくなります。
- 正確な時系列パターンの生成: DoppelGANgerは、データの短期および長期のパターンの両方に対応できるように設計されており、季節変動などの特性を模倣できます。たとえば、金融時系列のユースケースで週次および年次の相関を捉えることができます。
- リアルな時系列の相関: DoppelGANgerは、測定値と属性の相関を保持することが重要なユースケースに適しています。たとえば、消費パターンが他の属性(曜日、年齢や性別などの個人要因、マーケティングおよび広告情報)と関連する電子商取引アプリケーションでのトレンドの再現に使用できます。
- 柔軟な生成: DoppelGANgerは、ユーザーが定義したさまざまなメタデータ/属性分布に基づいて合成データの生成を可能にします。この方法で、ヘルスケアデバイスや不正検知トランザクションなどでよく見られるレアイベントの増強に対応できます。
実際のユースケースを見てみましょう。
実際の例:ブロードバンドアメリカの測定
DoppelGANgerの応用を探るために、連邦通信委員会(FCC)のウェブサイト(ライセンス情報)で無料で入手できる「Measuring Broadband America (MBA)」データセットを使用します。このデータセットは、元の論文でDoppelGANgerモデルを紹介するために使用されたデータセットの一つであり、米国のいくつかの家庭から往復時間やパケットロス率などの数値を報告しています。詳細は後ほど説明します。フルフローを含むノートブックを使用して、このチュートリアルに従うことができます。
チュートリアルを始めるには、まずプロジェクト用の仮想環境を作成し、ydata-syntheticパッケージをインストールする必要があります。
ydata-syntehticをインストールします。ydata-syntheticはTensorflowを利用します。
次に、必要なモジュールをインポートします。具体的には、pandasとmatplotlib、およびモデルとトレーニングパラメータを含むsynthesizersモジュール、そしてDoppelGANgerの実装です。
開発に必要なパッケージをインポートします。
次に、データを読み込むことができます。データセットには5つの特徴があり、それぞれの特徴には異なる振る舞いがあります。traffic_byte_counterとping_loss_rateは連続した特徴であり、興味のある測定値を表しています。各測定値には、isp、technology、stateという3つのカテゴリカルな特徴またはメタデータが関連付けられています。
以下はデータセットの短いプレビューです。
次に、モデルとトレーニングパラメータを定義してみましょう。
モデルパラメータとモデルトレーニングパラメータを設定します。
これらのパラメータは、DoppelGANgerの実装で使用されるさまざまな設定に対応しています。
- batch_sizeは、各トレーニングイテレーションで一緒に処理されるサンプル(データポイント)の数を指定します。
- lrは「学習率」を表し、トレーニング中に推定された誤差に応じてモデルの重みがどれだけ更新されるかを決定します。
- betasは、モデルの正則化係数であり、モデルが学習率を時間とともにどのように適応させるかを定義します。
- latent_dimは、生成器が操作する低次元空間である潜在空間の次元を指定します。
- gp_lambdaは、トレーニングを安定化させるための損失関数内の勾配ペナルティ項の強度を制御します。
- pacはモード崩壊を軽減するために設計されたパッキング度です。
- epochsはトレーニングイテレーションの回数です。
- sequence_lenghtは各時系列の長さです。
- sample_lenghtは時系列のバッチサイズであり、各RNN展開で生成される時間ステップの数です(元の論文のパラメータS)。
- roundsはバッチごとのステップ数です。
- measument_colsはデータセット内の既存の測定値を指します。
定義されたパラメータを使用して、モデルをトレーニングし、最終的に新しいデータを合成することができます:
モデルのトレーニングとサンプル生成
新しく作成した合成データを持っているので、データの可視化に頼ることで、合成データが元のデータの挙動を一般的に再現しているかどうかを迅速に判断することができます。シーケンス全体をプロットするか、より詳細に結果を確認し、ハイパーパラメータの調整が必要かどうかを決定するために56ポイントの短い時間ウィンドウをプロットすることができます:
全体的に見て、結果は非常に有望であり、DoppelGANgerは短期および長期の特徴を含め、時間の経過に合わせて完全に私たちのデータを複製することができます。これは単純なデータセットの例示であり、次元数も低く、欠損値などの重要な問題もありません。より複雑なシナリオでは、データセットを事前に徹底的に調査することが賢明です。
結論
本記事を通じて議論してきたように、時系列データは従来のGANアプローチではマッピングが難しい複雑さをもたらします。
DoppelGANgerはこの複雑さの一部を克服するために挑戦し、非常に有望な利点を備えており、現在のデータプラクティショナーの間で非常に人気があります:
- 頑健なデータ生成:短期および長期の関係を扱うことができるDoppelGANgerは、元のデータに密接に似た新しい現実的なデータセットを作成することができます。これはアプローチの最も興味深いユースケースであり、データサイエンティストが開発サイクル中に安全でカスタマイズ可能な実験のためにデータセットのデータダブルを作成することができます。
- 柔軟性と汎用性:複雑な文脈(カテゴリー、連続、多次元のデータセットを含む)に対応できるDoppelGANgerは、人間の手間をかけずに実世界のデータの全体的な特性を処理することができるため、開発を加速させます。
- 多様なアプリケーションと業界:データ共有、プライバシー保護、高精度な合成データ生成など、DoppelGANgerは幅広いユースケースに適用されます。これにより、ネットワーク、金融、セキュリティなど、さまざまな異なる業界で非常に興味深いものとなります。
データ駆動の洞察に無限の飢餓を抱えた世界で、DoppelGANgerは非常に貴重なアプローチとして登場し、データサイエンティストに必要なデータを提供し、プライバシーや品質を損なうことなく、双子のようにインテリジェントな意思決定を可能にします!
通常どおり、このチュートリアルで使用されたすべてのコードは、当社のリポジトリで利用でき、パッケージで現在サポートされている他のモデルで実験するためのドキュメントを常に確認できます。
私について
データに情熱を持つ人。データ駆動型AIの採用を支援するためのデータ品質ソリューションの開発に向けて努力しています。
CDO @ YData | LinkedIn
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles