OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する
第2回 交通流予測モデルを構築する
交通流データセットの構造
第1回では OpenStreetMap と UXsim を利用して、
(20,288,122)
の交通流データセットを作成しました。
- ①OpenStreetMapから浅間下交差点周辺の交通流データセットを作る
https://qiita.com/ahaya/items/95567b4c44d0635bdbc8
今回はこのデータセットを用いて交通流予測モデルを構築します。
交通流予測では、道路ネットワーク上の位置関係と時間変化の両方を考慮する必要があります。
そこで本研究では、Graph Embedding と Transformer を組み合わせたモデルを構築し、過去1時間の交通流から未来1時間の交通流を予測します。
作成した交通流データセットの形状は表1の通りです。
表1 交通流データセット
| 軸 | サイズ | 内容 |
|---|---|---|
| Day | 20 | シミュレーション日数 |
| Time | 288 | 5分間隔の時間ステップ |
| Node | 122 | 交差点ノード数 |
traffic_tensor.shape
(20, 288, 122)
さらに、予測モデルの入力データは次のようになります。
予測モデルの入力
今回は過去12ステップから次の12ステップを予測します。
表2 予測ステップ
| 時刻 | 内容 |
|---|---|
| t-11 | 122ノード交通量 |
| t-10 | 122ノード交通量 |
| ... | ... |
| t-1 | 122ノード交通量 |
| t | 122ノード交通量 |
入力形状は
(12, 122)
となります。
出力データも同様に12ステップであり、
target_data.shape
(12, 122)
したがって本研究では、
過去1時間
↓
未来1時間
の交通流予測を行います。
モデル構成
交通流予測では、道路ネットワーク構造と時系列変化の両方を扱う必要があります。
そこで本研究では、
交通流
↓
Graph Embedding
↓
Transformer
↓
交通流予測
という構成を採用しました。
Graph Embeddingは道路ネットワーク上の接続関係を表現し、Transformerは交通流の時間変化を学習します。
従来研究では、Graph Convolutional Network (GCN) や Graph Neural Network (GNN) を利用して道路ネットワーク構造を学習する手法が提案されています。
一例として、AGCRN (Adaptive Graph Convolutional Recurrent Network) では、ノード埋め込みから適応的な隣接行列を学習し、道路ネットワーク上の空間的依存関係を表現しています。
参考:
- AGCRN: Adaptive Graph Convolutional Recurrent Network for Traffic Forecasting
https://arxiv.org/abs/2007.02842
本研究でも、道路ネットワーク構造を表現するためにノード埋め込み(Graph Embedding)の考え方を採用しました。
ただし時間方向のモデルにはRNNではなくTransformerを利用しています。
その理由は、
- 長期依存関係を扱いやすい
- 並列計算が可能
- 将来的な道路ネットワーク間転移との親和性が高い
ためです。
特に本シリーズでは、ノード数の異なる道路ネットワーク間でモデル転移を行うことを最終目標としているため、空間構造を表現するGraph Embeddingと、時系列パターンを学習するTransformerを分離した構成を採用しました。
モデル全体の構成を図1に示します。
図1 予測モデル構成図
Graph Embeddingでは、道路ネットワークの接続関係を利用して各ノードを特徴ベクトルへ変換し、その後、Transformerによって時系列方向の依存関係を学習し、未来1時間分の交通流を予測します。
本モデルでは入力として過去12ステップ(1時間)の交通流を与え、未来12ステップ(1時間)の交通流を同時に予測しています。
なお、Transformer部分については、以前投稿した Decision Transformer と同様の構成を利用しています。
- 参考 Decision Transformer実験環境をつくる ③ エキスパート軌跡の生成とDecision Transformerのスクラッチ実装
Decision Transformerでは状態系列を入力としていましたが、本研究では交通流時系列を入力としている点が異なります。
そのため本モデルは、
Decision Transformer
+
Graph Embedding
とみなすこともできます。
モデル実装
Graph Embedding はノードIDを埋め込みベクトルへ変換するために利用しています。
各ノードは64次元の埋め込みベクトルとして表現されます。
self.node_embedding = nn.Embedding(
num_nodes,
embed_dim
)
得られた埋め込みベクトルと交通流データを結合し、Transformerへ入力します。
Transformerは時間方向の依存関係を学習し、未来12ステップの交通流を予測します。
Transformer内部では、位置エンコーディング(Positional Encoding)によって時系列の順序情報を付与しています。
これにより、過去12ステップの交通流の時間的な並びを考慮しながら特徴抽出を行うことができます。
本モデルでは、
- ノード数:122
- 埋め込み次元:64
- 入力長:12
- 予測長:12
として学習を行いました。
Graph Embeddingによる空間特徴表現
各ノードには学習可能な埋め込みベクトルを割り当てます。
例えば122ノードの道路ネットワークの場合、
Node 0 → 64次元ベクトル
Node 1 → 64次元ベクトル
...
Node121 → 64次元ベクトル
となります。
これにより道路ネットワーク上の各交差点は、高次元特徴空間上で表現されます。
図2にGraph Embeddingの概念図を示します。
図2 Graph Embedding概念図
この埋め込みベクトルは学習によって更新されます。
そのため、交通流の振る舞いが似ているノード同士は近い特徴ベクトルとして表現されるようになります。
Graph Embeddingは道路ネットワークの空間的特徴を学習する役割を担っています。
学習条件
主な学習条件を表3に示します。
表3 学習条件
| 項目 | 値 |
|---|---|
| 入力長 | 12 |
| 予測長 | 12 |
| ノード数 | 122 |
| 埋め込み次元 | 64 |
| Optimizer | Adam |
| Loss | MSELoss |
| Epoch | 4000 |
| Batch Size | 16 |
学習結果
図のように学習が進むにつれてロスが収束することがわかります。
図4がターゲットと予測値の比較です。
図4から交通量の増減パターンを概ね再現できていることが確認できます。
特に交通流の周期的な変動やピーク発生タイミングを捉えられていることが分かります。
予測ホライズン(1時間)全体の評価結果は表4となりました。
表4 メトリック評価結果
| Metric | Value |
|---|---|
| MAE | 2.986 |
| RMSE | 5.376 |
| MAPE | 36.16 % |
考察
今回構築したモデルでは、Graph Embeddingによって道路ネットワークの空間構造を表現し、Transformerによって交通流の時間変化を学習しました。
図4より、交通量の周期的な変動やピーク発生タイミングを概ね再現できていることが確認できました。特に交通流の増減パターンについては良好に追従しており、Graph EmbeddingとTransformerの組み合わせが交通流予測に有効であることが示唆されます。
一方で、局所的に発生する大きなピークについては予測値が平滑化される傾向も見られました。
これは学習データ数が20日と比較的少ないことや、Transformerが平均的な変動パターンを優先して学習していることが原因として考えられます。
それでも予測ホライズン全体で
MAE = 2.986
RMSE = 5.376
を達成できているので、交通流の将来変動を一定精度で予測できることが確認できました。
また、Graph Embedding と Transformer を分離した構成としているため、Graph Embeddingのみを再学習することで、異なる道路ネットワークへの適応が可能になると期待されます。
まとめ
今回は、第1回で作成した交通流データセットを利用して交通流予測モデルを構築しました。
モデルには Graph Embedding と Transformer を採用し、過去1時間の交通流から未来1時間の交通流を予測しました。
評価結果は以下の通りになりました。
表5 メトリック評価結果(再掲)
| Metric | Value |
|---|---|
| MAE | 2.986 |
| RMSE | 5.376 |
| MAPE | 36.16 % |
Graph Embeddingによる空間特徴表現とTransformerによる時系列学習を組み合わせることで、交通流の変動パターンを良好に予測できることを確認できました。
次回は、今回学習したモデルをノード数の異なる道路ネットワークへ適用し、Graph Embeddingの再学習のみで交通流予測モデルを転移できるかどうかを検証する予定です。
関連記事
-
OpenStreetMapから交通流予測モデルを構築し、道路ネットワーク間転移へ挑戦する ③ノード数の異なる道路ネットワークへの転移学習を試す
https://qiita.com/ahaya/items/eb1ff83f522f2165f5ec -
OpenStreetMapから交通流予測モデルを構築し、道路ネットワーク間転移へ挑戦する ④浅間下交差点周辺と川崎市立幸高校周辺を対象としたマルチネットワーク交通予測モデルの試作
https://qiita.com/ahaya/items/90ef60e375a25a382123 -
OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する ⑤ 複数道路ネットワークによる共同学習を試す
https://qiita.com/ahaya/items/f9a4af657a7982ca80fd

