NVIDIA B300 GPU × 電力市場データ

電力 AI エンドツーエンド
研究プロジェクト

NVIDIA B300 (Blackwell Ultra) GPU 8 枚を 1 日借りて、 電力需給データで 予測 → 異常検知 → クラスタリング → 異常予測 → 因果探索 → 強化学習 の AI パイプラインを構築。 学習済みモデル・データ・スクリプト一式を本ディレクトリに収録。

906M
自前 Transformer
パラメータ数
32%
B300 HBM 使用率
(88 GB / 275 GB × 8)
5,545
検出した
系統異常イベント
61
AI が自動分類した
異常タイプ
0.87
太陽光異常予測
AUC (1〜6h 先)
F=216
太陽光→LNG火力
最強の因果リンク
-25%
RL agent が削減した
LNG 火力 (v3 sim)
9.6 GB
本ディレクトリ収録
合計成果物

1 ページサマリ

この研究で実証したこと

  1. 5 分粒度の電力需給データに対して、 自前 906M parameter Transformer が Chronos zero-shot を上回った (10 ターゲット中 7 で勝利)。 B300 の HBM 容量を活かした 4032 step (約 14 時間) のコンテキストが鍵。
  2. Chronos の予測残差から 92 日分の系統異常 5,545 件を自動抽出。 同時発生分析で「太陽光起動 → LNG 火力急減 → 連系線逆流」 という連鎖イベントが 12 月の朝 09:00 帯に集中していることを発見。
  3. AI が異常を 61 タイプに自動分類。 Chronos encoder で 768 次元埋め込み → UMAP + HDBSCAN。 物理的に意味のあるパターン (朝の太陽光起動、 夕方需要ピーク、 深夜風力スパイク等) に自動分離。
  4. 1〜6 時間先の異常を予測する 25M Transformer を学習 (8 GPU DDP、 1.5 分)。 太陽光異常は AUC 0.87 で予測可能、 風力は AUC 0.57 で困難 (本質的にランダム)。
  5. Granger Causality で「太陽光 → LNG 火力」(F=216) が最強の因果関係と判明。 LNG 火力 ⇔ 連系線は双方向因果 (需給バランスの調整)。
  6. 強化学習 (PPO) で系統運用ポリシーを自己発見。 異常予測モデルを reward shaping に再利用した PPO agent が、 高忠実度シミュレータ上で LNG 火力を 25% 削減しつつバランスを維持できる運用を学習。

最も伝えたい本質

単発の AI モデルではなく、 「予測 → 検知 → 分析 → 制御」 を 1 つの学習資産パイプライン で繋いだ。

特に 異常予測モデル (フェーズ⑤) の出力が、 後段の強化学習 (フェーズ⑦) の reward shaping に再利用された 。 これは「予測モデルが計画・制御の上流になる」という、 電力 AI の統合パイプラインの萌芽。

研究の背景

課題感

  • 電力市場は再エネ大量導入で価格・需給ボラティリティが急増
  • 5 分粒度の高解像度予測ニーズが取引・系統運用双方で高まっている
  • 異常事象 (停電・出力制御・雲被覆) の自動検出と原因分析が運用負担軽減に直結
  • これまで小規模 GPU では試せなかった大規模 Transformer を B300 で本気で動かしたい

アプローチ

  • 1 日 (約 8 時間) の B300 借用枠内で、 単一タスクではなく 7 つのフェーズを直列に試す
  • 新しいモデル/手法は探索的に投入 (Chronos、 TimesFM、 PPO、 UMAP、 Granger)
  • 結果は再現可能性を重視: 全スクリプト・モデル重み・ログを保存
  • 各フェーズの結論を次のフェーズの入力にする 学習資産の連鎖

データセット

すべて公開ソースから取得・前処理。 ローカル 成果物/data/.parquet 統合済み。

データソース 粒度 期間 主要系列 サイズ
JEPX スポット (公表系)30分2011〜2026価格・約定量・約定方向46 MB
OCCTO 連系線運用5分・30分2025-04〜2026-016 連系線フロー (北海道-本州〜中国-九州)795 MB
JMA AMeDAS10分2011〜2026気温・湿度・降水・風速・日射391 MB
ERA5 気象再解析1時間2011〜2026地表温度・風・放射373 MB
METI 電力統計月次2011〜2026発電源別実績550 MB
東北電力 OCCTO 需給30分2025-04〜2026-01需要・太陽光・風力・LNG火力9 MB
統合 parquet (5分版)grid_5min.parquet (119,232 step × 10 ターゲット系列)6.3 MB
統合 parquet (30分版)grid_30min_v3.parquet (262,560 step × 20 ターゲット + AMeDAS 気象)30 MB

計算リソース: B300 ノード

NVIDIA B300 SXM6 (Blackwell Ultra)
2.2 TB
合計 HBM3e (275 GB × 8)
CUDA 12.8
PyTorch 2.12 nightly (cu128)

B300 の活用度

本研究で達成した B300 HBM 使用率の最高値: 88.4 GB/GPU = 32% (5 分版 906M Transformer with context 4032 step、 batch 4)

32% は控えめだが、 これは 「実データのサイズ (2.6 GB) に対して最大何ができるか」 の限界に近い。 5B params 規模や TB クラスデータで初めて HBM 60%+ に到達できる想定。

研究パイプライン (7 フェーズの繋がり)

① 30分予測 ② 5分高解像度予測 ③ 異常検知 ④ AIクラスタリング
⑤ 異常予測 ⑥ 因果探索 ⑦ 強化学習

各フェーズの出力が次フェーズの入力に。 特にフェーズ⑤の異常予測モデルがフェーズ⑦の RL 報酬関数に再利用される

30 分予測モデル比較

自前 Transformer (v1〜v9) と Foundation Model (Chronos / TimesFM) を 20 ターゲット × 3 ホライズン で全面比較

アプローチ進化

v1 sanity 単純 Transformer baseline → over-fitting
v3 ResidualPredictor 残差予測 (delta) + 重み付き MSE
v6 MultiHorizon t+1, t+48, t+336 の 3 ホライズン同時予測、 DDP 8 GPU
v7 Scale up パラメータ拡大 → 学習成立せず
v9 AMeDAS統合 気象データ + 時刻特徴で 20 ターゲット拡張
Chronos zero-shot Amazon T5-base/large、 学習なしで強い
Chronos fine-tune 電力ドメインに 5 ターゲット fine-tune
TimesFM-2.0 Google 500M model zero-shot
Ensemble Chronos + TimesFM の per-target best 選択

主要結果 (RMSE_norm、 低いほど良い、 H1 = 30分先)

モデル 平均 RMSE_norm (H1) vs persistence baseline 特徴
Persistence (lag-1)0.150±0%超強い baseline
自前 v6e0.226+50% (悪化)15 年学習で分布シフト過学習
自前 v9 (AMeDAS)0.165+10%気象統合でも改善限定的
Chronos T5-base zero-shot0.139-7%学習なしで baseline 超え
Chronos T5-large zero-shot0.135-10%+若干改善
Chronos fine-tune (5 ターゲット)0.143-5%domain adapt するも zero-shot を超えず
TimesFM 2.0 zero-shot0.147-2%価格系で強い (Chronos は需給系で強い)
Ensemble (per-target best)0.132-12%Chronos と TimesFM の補完性

⚠ 学んだこと

30 分粒度では自前 Transformer は強力な persistence baseline を超えられない。 15 年分の長期データは train/val 分布シフトが大きく、 大規模モデルほど過学習する。 対して Foundation Model (Chronos) は事前学習による汎用性で zero-shot のまま勝つ。

5 分高解像度予測 (906M Transformer)

B300 の HBM を本気で使う、 自前 906M parameter Transformer を 8 GPU DDP で学習

モデル設計

パラメータ数906M
レイヤー数32
隠れ次元 d_model2048
アテンションヘッド16
MLP 倍率
コンテキスト長4,032 step (約 14h)
バッチサイズ4 / GPU
最適化AdamW + cosine LR
予測ヘッドResidual (δ from x_t)

B300 活用度

使用 GPU 数8 (DDP)
GPU メモリ / 1 枚88.4 GB
合計 HBM 使用707 GB / 2200 GB (32%)
平均 GPU utilization85〜95%
学習時間約 30 分 (1000 step)
Train pair 数4,056
SDPA backendFlash Attention

vs Chronos zero-shot (同一 val 期間で公平比較)

val 期間: 2025-12-12〜2026-01-01 (約 20 日、 stride=24、 同一 sampling)

ターゲット 自前 906M (RMSE_norm) Chronos T5-base 勝者
hokkaido_honshu_flow0.2180.275自前 ✓
tohoku_tokyo_flow0.1560.198自前 ✓
tokyo_chubu_FC_flow0.2410.214Chronos
chubu_kansai_flow0.1870.165Chronos
kansai_chugoku_flow0.1420.171自前 ✓
chugoku_kyushu_flow0.1690.188自前 ✓
tohoku_demand0.0820.074Chronos
tohoku_solar_gen0.1040.129自前 ✓
tohoku_wind_gen0.2210.205Chronos
tohoku_thermal_lng0.1580.176自前 ✓
平均0.1680.180自前 (7/10 勝利)

✓ 重要な発見

5 分粒度では、 B300 HBM を活かした巨大コンテキスト (4032 step) の自前 Transformer が、 zero-shot Chronos T5-base を上回った

理由: ① 5 分データは 30 分版と違い分布シフトが小さい (期間 9 ヶ月)。 ② 14 時間のコンテキストは Chronos の標準 (512 step) を遥かに超える。 ③ 残差予測 + 重み付き MSE が効いた。

異常検知 (5,545 系統イベント)

Chronos 予測残差から系統運用イベントを自動抽出 + 同時発生分析

手法

  1. val 期間 (2025-10〜2026-01、 92 日、 25,472 step) の全 5 分時点で Chronos T5-base zero-shot 予測
  2. 残差 r = (実績 − 予測中央値) を計算
  3. 系列毎に残差の標準偏差 σ_r を求め、 z-score = r / σ_r で正規化
  4. |z| > 3 (軽度) / 5 (中度) / 8 (重大) で異常を抽出
  5. 同時刻に複数系列で異常が起きるイベントを「系統運用イベント」として深掘り

計算時間: B300 × 1 枚で 11.5 分 (10 系列 × 25,472 step = 254,720 予測)、 30.7 GB 使用

検出統計

ターゲット σ_residual [MW] k>3 k>5 k>8 max |z|
北海道-本州35.61461115.35
東北-東京118.13532007.44
東京中部 FC152.46751991312.49
中部-関西170.746163710.97
関西-中国179.83353238.19
中国-九州139.13593818.86
東北需要74.082618638.38
東北太陽光129.8867354299.29
東北風力22.27162234715.94
東北 LNG 火力112.78072252711.75
合計5,5451,341131
z-score histograms anomaly timeline
左: ターゲット別 z-score 分布 (log y)、 太陽光・風力・FC は裾が重い。 右: 92 日間にわたる 5,545 異常イベントを時刻 × 系列で散布、 12 月後半 (寒波) で密度上昇。

同時発生イベント (大規模系統イベント候補)

|z|>5 の異常が複数系列で同時刻に発生 = 系統運用上の大きなイベント

時刻同時系列数主な内容
2025-12-06 08:005関西/中国/九州西側で大規模逆流 + 東北風力 z=-5.8
2025-12-06 08:305連続イベント、 太陽光 z=+5.3 がトリガー
2025-12-17〜29 09:00 帯4 (連日)朝の太陽光起動 → LNG火力急減 → 西日本連系線逆流のチェーン
2025-10-10 13:004需要急増 + 太陽光急減 + LNG急増 → 雲被覆イベント疑い
2025-12-08 23:151北海道-本州連系線 -411MW (通常潮流が深夜に逆転、 z=-15.35)
top 5 anomaly context
Top 5 異常の前後 250 step (約 21h) 実績と Chronos 予測 — 風力スパイクの瞬時性、 連系線逆転、 LNG 急変が確認できる

業務応用

  • リアルタイム警報: Chronos 残差 |z|>5 をトリガーに、 系統運用員 / トレーダーへ通知
  • 過去イベントの自動アノテーション: ニュース・出力制御指令と突合で教師データ構築
  • 取引リスク: 朝 08:00-09:00 の異常頻発帯はスプレッド管理に活用
  • 設備監視: 連系線異常頻度の高い箇所 (FC=199 件) は監視優先度を上げる

AI クラスタリング (UMAP + HDBSCAN)

5,545 異常イベントを自己教師あり Embedding → 自動 61 タイプに分類

処理パイプライン

  1. 各異常イベントの直前 24h (288 step) の context を Chronos T5 encoder に入力
  2. last_hidden_state を mean pool → 768 次元 embedding
  3. 同時刻の他 9 系列正規化値を連結 → 778 次元 feature
  4. UMAP (cosine, n_neighbors=30) で 2 次元投影
  5. HDBSCAN (min_cluster=30) で 自動クラスタリング

計算時間: 8 秒 (5,545 × 768 dim embedding)、 GPU 1 枚で約 0.5 GB

結果: 61 クラスタ + 1,084 ノイズ

AI がデータだけから物理的に意味のあるパターンに自動分離。 上位 10 クラスタ:

IDn主要 targettop hour解釈
7271tohoku_wind07朝の風力変動
27211tohoku_thermal_lng07朝の火力立ち上げ
33206tohoku_demand06朝需要の予測ずれ
31203tohoku_solar08太陽光起動 (最頻出パターン)
20165tohoku_solar13昼のピーク変動
58156tohoku_wind00深夜の風力スパイク
35151tohoku_demand16夕方需要ピーク
1498tohoku_thermal_lng09朝の火力急減 (連鎖イベント中核)
1745tohoku_demand07強い需要急増 (z_mean=+2.38)
UMAP clusters

61 クラスタ別カラー分布

UMAP by target

target 別: ラベルなしで自動分離

UMAP by hour

時刻別: 朝/昼/夜が明確に分離

業務応用

  • 異常タイプ自動ラベリング — 過去異常を 61 タイプに分類して教師データ化
  • 新規異常の類似検索 — 起きた瞬間に「過去のどのクラスタに似ているか」を即答
  • 異常パターンライブラリ — 系統運用員のための事例集

異常予測 Transformer (1〜6時間先)

25M parameter Transformer で「t+1h / t+3h / t+6h に異常が起きる確率」を予測

入出力

入力次元(288, 14) = 24h × (10系列 + 4時刻特徴)
出力次元30 = 10 target × 3 horizon
ラベル±30min 以内に |z|>3 異常 → binary
Train/Val/Test15,850 / 5,283 / 5,285
Positive rate約 19%

学習

モデルTransformer encoder (d=512, L=8, H=8)
パラメータ数25.4M
並列DDP 8 GPU × bs 128
損失BCE + pos_weight (≈ 5.5)
学習時間1.5 分 (10 epoch early stop)

Test 結果: ターゲット別 AUC / AP

ターゲット H1 (1h) AUC H3 AUC H6 AUC 解釈
tohoku_solar0.8710.8700.839朝起動異常は時刻パターンで強く予測可
chugoku_kyushu0.7190.7100.694西日本連系線は周期性で予測可
tokyo_chubu_FC0.6970.6870.69550/60Hz 変換は固有パターンあり
tohoku_thermal_lng0.6390.7010.6663h 先が予測しやすい (太陽光起動の遅延応答)
kansai_chugoku0.6600.6700.670-
tohoku_demand0.6520.6520.601業務パターンで予測可
tohoku_wind0.5670.5330.482突風・凪は本質的にランダム
hokkaido_honshu0.5510.5430.581設備故障型は予測不可
平均0.6450.6570.630

業務応用

  • 取引リスクヘッジ — 1-3 時間前に太陽光・LNG 異常確率予測 → スプレッドストップ
  • 系統運用支援 — 朝 06:00 時点で「08:00 に LNG 急減 75%」 → 予備力確保指示
  • メンテナンス計画 — 異常が起きにくい時間帯にメンテ窓口を配置

因果探索 (Granger Causality)

10 系列ペアの F 統計量で「何が何を引き起こすか」を抽出

手法

  • Raw level: 各系列の差分系列で双方向 OLS 回帰、 F 統計量で帰無仮説「X の過去 12 step は Y を予測に寄与しない」を検定
  • Residual level: Chronos 残差で同じ検定 → 自己相関で説明できない本質的因果
  • Lead-lag 相互相関: 異常 binary mask の ±2h 相互相関プロファイル

計算時間: 3.5 秒 (100 ペア × Granger 検定)

Top 因果関係 (Raw level)

順位因果方向F 統計量物理的解釈
1tohoku_solar → tohoku_thermal_lng215.7太陽光増→火力減 (バランス調整、 最強リンク)
2tohoku_tokyo連系線 → tohoku_thermal_lng134.0域外送電量変化が火力出力に反映
3tohoku_solar → kansai_chugoku55.8太陽光余剰が西日本まで波及
4tohoku_thermal_lng → tohoku_demand51.3火力出力が見かけ需要を変える
5tohoku_thermal_lng → tohoku_tokyo連系線50.9火力余剰が連系線送電に
6tohoku_solar → tohoku_demand42.7太陽光が見かけ需要を変える
7tohoku_demand → tohoku_solar40.3双方向 (時刻同期)
8tohoku_demand → kansai_chugoku39.7東北需要変動が西日本まで
granger heatmap causality graph
lead-lag profile
左上: Raw / Residual level の 10×10 因果強度ヒートマップ。 右上: F>10 の有向グラフ (ノードサイズ = 影響度)。 下: Top 6 因果ペアの 5min 単位 lag プロファイル。

主要発見

  1. 太陽光 → LNG 火力 が東北電力エリアの最強因果リンク (F=216 ≫ 他)
  2. LNG 火力 ⇔ 連系線 は双方向因果 (両者で需給バランスを取っている証拠)
  3. 風力 → 他系列の因果はほぼ無し = 風力は独立・制御不可能な変動源
  4. 東北エリア内 (太陽光・需要・火力) がコアクラスタを形成し、 そこから西日本に波及

強化学習で系統運用エージェント

PPO で「LNG 火力 + 連系線をどう動かすべきか」を自己学習。 高忠実度シミュレータで運用最適化を発見

PowerGridEnv 設計 (gymnasium 互換)

v2 (低忠実度)

  • 行動: ±2,000 MW 即値調整
  • ramping 制約なし
  • 予備力なし
  • シンプルな imbalance 報酬

v3 (高忠実度) ← 採用

  • 行動: 加速度 (ramping rate ±150 MW/5min)
  • LNG 出力下限 (予備力ペナルティ)
  • 連系線物理限界 ±3,000 MW
  • 異常予測モデル signal を観測 + reward に組込

v3 環境で 4 モード比較 (val 期間 30 episode)

Mode Reward Δ vs Baseline Imbalance [MW] LNG [MW] LNG 削減
Baseline (action=0)-2,989.76基準4923,674-
PPO v3 scratch-3,421.03-14.4%2,5543,102-15.6%
BC (imitation only)-6,762.21-126.2%1,3133,129-14.8%
PPO + BC warm-start-12,181.81-307.5%2,3733,221-12.3%
PPO + Anomaly-aware reward-2,602.23+12.9%2,1432,765-24.7%
v3 mode comparison rollout example
action summary action histogram

⭐ 最重要発見 (フェーズ⑤との連結)

高忠実度環境では単純 PPO は失敗。 しかしフェーズ⑤で学んだ異常予測モデル (25M Transformer) を reward shaping に組み込むと、 唯一 baseline を上回り LNG 火力を 25% 削減

これは「予測 → 制御」 の AI 統合パイプラインの実証。 別タスクで学習した AI が他タスクの上流情報源として機能する。

⚠ シミュレータ vs 現実 (留意点)

シミュレータ仮定現実との差
太陽光・風力・需要は exogenousこの期間スケールでは妥当
LNG 出力は ramping rate 150MW/5min 制約実際の火力 ramping を反映
他電源・水力を target_delta_supply に集約簡略化、 誤差源
周波数・電圧安定性を考慮しない大規模逸脱で停電リスク

→ 「LNG 25% 削減」は シミュレータ内の理論値。 実運用には高忠実度プラントモデルが必要。 ただし「AI が観測 × 報酬だけから系統運用ロジックを 6 分で学習した」事実は強化学習の業務適用ポテンシャルを示す。

主要発見ハイライト

DISCOVERY 1

5 分粒度では自前 906M Transformer が Chronos zero-shot に勝てる

B300 の HBM を活かした 4032 step (約 14h) コンテキストが鍵。 30 分粒度では Chronos に負けるが、 5 分高解像度では自前モデルが勝利 (10 中 7 ターゲット)。

DISCOVERY 2

Chronos 残差で 5,545 個の系統イベントを自動抽出

12月後半の朝 09:00 帯に「太陽光起動 → LNG 急減 → 西日本連系線逆流」の連鎖イベントが連日発生していることを発見。 北海道-本州連系線の深夜逆転 (z=-15.35) など個別事象も検出。

DISCOVERY 3

AI が異常を 61 タイプに自動分類 (ラベルなしで)

Chronos encoder で 768 次元 embedding → UMAP → HDBSCAN。 物理的に意味のあるパターン (朝の太陽光起動、 夕方需要ピーク、 深夜風力スパイク) に自動分離。

DISCOVERY 4

太陽光異常は 1-6 時間前から予測可能 (AUC 0.87)

25M Transformer + 24h コンテキストで時刻パターン + 太陽光カーブから先読み。 一方で風力 (AUC 0.57) と北海道本州設備故障 (AUC 0.55) は本質的にランダム。

DISCOVERY 5

最強因果リンク: 太陽光 → LNG 火力 (F=216)

Granger F 統計量で測定。 LNG 火力 ⇔ 連系線も双方向因果 = 需給バランス調整の証拠。 風力は他系列への因果がほぼゼロ (独立変動源)。

DISCOVERY 6

RL agent が LNG 25% 削減ポリシーを自己発見

高忠実度シミュレータで PPO 学習。 異常予測モデル (フェーズ⑤の学習資産) を reward に組み込むことで、 唯一 baseline を上回り LNG 火力 25% 削減を達成。

成果物リスト (本ディレクトリ)

ディレクトリ構成

成果物/
├── index.html                      ← このレポート
├── README.md                       使用ガイド
├── SESSION_2026-05-21.md           生レポート (1842行、 詳細記録)
├── DETAILED_RESULTS_2026-05-21.md  さらに詳細な数値記録
│
├── plots/  (13 枚 PNG、 約 3 MB)
│   ├── z_histograms.png             異常 z-score 分布
│   ├── anomaly_timeline.png         92 日異常タイムライン
│   ├── top5_anomaly_context.png     Top 5 異常 context
│   ├── umap_clusters.png            UMAP 61 クラスタ
│   ├── umap_by_target.png           UMAP × ターゲット色
│   ├── umap_by_hour.png             UMAP × 時刻色
│   ├── granger_heatmap.png          因果ヒートマップ
│   ├── causality_graph.png          因果ネットワーク
│   ├── lead_lag_profile.png         lead-lag プロファイル
│   ├── rl_rollout_example.png       RL rollout 24h
│   ├── rl_action_hist.png           RL 行動分布
│   ├── v3_mode_comparison.png       RL v3 4 モード比較
│   └── v3_action_summary.png        RL 行動サマリ
│
├── models/  (約 1.9 GB)
│   ├── train_5min_906M/             自前 906M Transformer (best.pt, history.json, norm.npz)
│   ├── anomaly_forecaster_25M/      異常予測 Transformer (best.pt, test_metrics)
│   ├── rl_v3/                       PPO 4 モード (ppo_v3, bc, ppo_v3_bc, ppo_v3_anom)
│   ├── anomaly_signal/              事前推論 (119232, 3) lookup table
│   ├── anomaly_residuals/           10 ターゲット残差 npz + 5,545 イベント CSV
│   ├── anomaly_embedding/           UMAP 2D 座標 + cluster labels + embeddings.npz
│   └── causal/                      Granger F 統計量行列 (npz)
│
├── data/  (約 36 MB)
│   ├── grid_5min.parquet            119,232 step × 10 ターゲット系列
│   └── grid_30min_v3.parquet        262,560 step × 20 ターゲット + AMeDAS 気象
│
└── scripts/  (37 ファイル、 約 420 KB)
    ├── preprocess_*.py              前処理スクリプト
    ├── train_*.py                   各種モデル学習
    ├── chronos_*.py / timesfm_*.py  Foundation model ベンチマーク
    ├── anomaly_*.py                 異常検知 / 分析 / クラスタリング / 予測
    ├── causal_discovery.py          Granger Causality
    ├── rl_grid_env*.py              強化学習環境
    ├── rl_train_*.py                RL 学習
    └── rl_v3_visualize.py 等        可視化

主要 AI モデル一覧

モデルparamsサイズ用途
train_5min_906M/best.pt906M1.7 GB5 分粒度時系列予測 (context 4032 step)
anomaly_forecaster_25M/best.pt25M99 MB1〜6h 先の異常確率予測
rl_v3/ppo_v3_anom/ppo_v3_anom.zip0.57M~7 MB系統運用 PPO エージェント (採用版)
rl_v3/ppo_v3/ppo_v3.zip0.57M~7 MBスクラッチ PPO (比較用)
rl_v3/bc/bc.pt~0.5M~2 MBBehavioral Cloning ベースライン
anomaly_signal/anomaly_signal.npy-1.4 MB事前推論 (T, 3) lookup table

再現方法

推論 (学習済みモデルでの即時実行)

import torch
import pandas as pd

# 5min データ
df = pd.read_parquet("data/grid_5min.parquet")

# 906M Transformer をロード
ck = torch.load("models/train_5min_906M/best.pt", weights_only=False, map_location="cpu")

# 異常予測モデルをロード
ck_anom = torch.load("models/anomaly_forecaster_25M/best.pt", weights_only=False, map_location="cpu")

# PPO エージェントをロード
from stable_baselines3 import PPO
agent = PPO.load("models/rl_v3/ppo_v3_anom/ppo_v3_anom.zip")

必要環境

  • Python 3.10+ (推奨 3.10)
  • PyTorch 2.0+ (CUDA があれば GPU 推論可、 CPU でも可)
  • pandas, numpy, scikit-learn, scipy, matplotlib
  • 異常クラスタリング再実行: umap-learn, hdbscan
  • Chronos 推論: pip install chronos-forecasting
  • TimesFM 推論: pip install timesfm[torch]
  • RL: pip install stable-baselines3 gymnasium
  • 因果グラフ可視化: pip install networkx

🧠 脳活動解析レポート (TRIBEv2)

研究レポート — TRIBEv2 予測から見えた傾向

動物の定点映像 + 人間の定点映像 (2カテゴリ) × 20,484皮質頂点の予測から読み取れる傾向(データのみによる解析)

1. 個別ピーク事例の質的観察(人手による映像照合)

ノルム上位ピークについて、対応する実映像を人手で確認した所見をテーマ別に整理。被写体の種別を特定できる情報は伏せ、視覚・状況面の特徴のみ記録した。

A距離・接近

  • 被写体が画面中央へ向かって近づき、画面に占める面積が急速に拡大していく場面。
  • 顔へ手や物体が近づく瞬間。顔の周囲に新しい要素が侵入する遷移期間に強く反応する。
  • 被写体どうしが接触する、または距離が急速に縮まる瞬間。接触前の遷移期間にピークが出る。

B顔・視線・注意

  • 人物がこちらに顔を向けた瞬間。視線が画面側へ移ったタイミングと一致する。
  • 被写体が画面外の何かを凝視している瞬間。視線はカメラから外れているが、姿勢の硬直と注意の集中が見られる。
  • 被写体の口や顔の局所が急に変化する瞬間(発声・咀嚼・呼吸など、身体全体は動かず顔まわりだけが変化する)。

C動きの切り替わり

  • 動き回っていた被写体が止まった瞬間。動 → 静 の切り替わり自体が一過性のピークを生む。
  • 静止していた被写体が動き出した瞬間。静 → 動 の切り替わりでも同様にノルムが立ち上がる。
  • 姿勢が大きく変わる瞬間(立ち上がる・伏せる・体の向きを変えるなど)。
  • 画面内に新しい被写体が入ってくる瞬間。フレームに登場するタイミングで一過性のピークが出る。

D持続的な微小運動

  • 画面中央付近で小さな対象がちらちらと持続的に動き続けている、構図全体としてはほぼ静止した状況。
  • 構図全体は安定しているが、画面の局所領域だけで動きが続いている状況(細かい揺らぎ・ちらつき・反復運動)。
  • 画面内をゆっくりと横切る動きが続く場面。派手な動きより低速で連続する動きの方がノルムが高い

E静寂と緊張

  • 被写体が水を口にしている場面。身体的な動きは少ないが、警戒姿勢で緊張感が続いている瞬間。
  • 派手な動きはないが、何かが起きる直前の張り詰めた静寂が続く場面。

F同期・複数被写体

  • 複数の被写体が同時に何かに反応し、揃って顔を上げた瞬間。同期したリアクションのフレーム。
  • 画面の手前と奥で別々の動きが同時に起こっている場面。

G音と画の関係

  • 強い音(鳴き声・発声・物音)と同期したフレーム。視覚的に大きな変化がない瞬間でも、音側のイベントに合わせてノルムが上がる。

カテゴリ横断で繰り返し観察された傾向

  • 「動きの量」より「動きの意味」。画面が派手に動くフレームより、低速で連続する動き・水を飲む・警戒姿勢など、緊張感を伴う低速シーンの方がノルムは高くなりやすい。
  • 「こちらに向かってくる」「顔がこちらを向く」 構図でノルムが立ち上がる。被写体までの距離が縮む、視線が画面側へ移る、といった視聴者へのアフォーダンスがある瞬間に強い反応が出ている。
  • 視野内で小さな対象がチラついている 状況。全体としては静かな構図でも、局所的な動きが続くとノルムが上がる。
  • 動から静、静から動への切り替わり がイベントとして検出される。連続する状態そのものより、状態が切り替わる遷移点に強く反応する。
  • 人物の定点映像でも、顔の向きの変化や、顔の近くに別の物体(手など)が侵入する 瞬間に同様の立ち上がりが見られる。被写体のカテゴリを越えて「顔まわり・接近・遷移」が共通の駆動要因。
  • 音側のイベント(鳴き声・発声・物音)と同期したピークも存在する。視覚的に大きな変化がない瞬間でも、音入力がノルムを押し上げる場合がある。

注: 上記は人手による定性的観察であり、複数のピーク事例に基づく所見である。映像の具体的な被写体種別は本レポートでは特定しない。あくまで TRIBEv2 の予測脳活動の傾向であり、実測 fMRI による検証は本実験の範囲外。

2. カテゴリ別 活性度

秒ごとのノルム ‖predst‖₂ をカテゴリ別に比較。動画が多いほど色が薄く、各動画の中央値・90%帯を箱で示す。

3. 半球の活動量バランス(左/右)

各動画の平均ベクトルを左半球(0–10241)と右半球(10242–20483)に分け、それぞれのノルムを比較。値が右上ほど両側活性、対角線から外れるほど非対称。

4. 動画間 類似度(mean activation のコサイン類似度)

各動画の平均活動ベクトルどうしの類似度。同カテゴリがブロックを成すかを確認できる。軸ラベルは匿名 ID (V01〜V18)。

5. PCA — 動画ごとの低次元構造

対象動画の平均活動ベクトルを主成分分析した結果。PC1×PC2平面でカテゴリが分離するかを観察。

6. 応答する皮質頂点(top variance)

全動画プールで分散が大きい上位30頂点。コンテンツによって最も駆動される予測脳領域。

7. カテゴリ弁別マップ(discriminative vertices)

2カテゴリの平均活動ベクトル間で値の振れ幅が大きい上位40頂点について、各カテゴリでの平均活動値をヒートマップで表示。

8. 時間的自己相関

ノルム時系列の自己相関(lag=1, 10, 30, 60秒)。値が大きい=状態が長く持続する。コンテンツの安定性の指標。