0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

④OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する ~浅間下交差点周辺と川崎市立幸高校周辺を対象としたマルチネットワーク交通予測モデルの試作 ~

0
Last updated at Posted at 2026-11-01

OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する 

第四回 浅間下交差点周辺と川崎市立幸高校周辺を対象としたマルチネットワーク交通予測モデルの試作 

はじめに

第1回では、OpenStreetMapとUXsimを利用して交通流データセットを作成しました。

対象としたのは横浜市西区の浅間下交差点周辺であり、122ノード・210リンクから構成される道路ネットワークを作成しました。

第2回では、このデータセットを用いて交通流予測モデルを構築しました。

モデルには Graph Embedding と Transformer を採用し、

過去1時間
↓
未来1時間

の交通流を予測しました。

第三回では浅間下交差点周辺で学習したモデルを利用し、ノード数の異なる川崎市立幸高校周辺の道路ネットワークへ転移学習を行いました。

この回では、ある道路ネットワークで学習したモデルを別の道路ネットワークへ転移できることを確認しました。

行ったのは、浅間下交差点周辺で学習したモデルを川崎市立幸高校周辺へ転移する一方向の転移学習です。

今回はさらに発想を進め、複数の道路ネットワークを一つのTransformerで扱うことを考えます。

浅間下交差点周辺と川崎市立幸高校周辺という 異なる道路ネットワークを対象に、 マルチネットワーク交通予測モデルを試作しました。

対象道路ネットワーク

今回対象とするのは、

横浜市西区 浅間下交差点周辺(122ノード)
川崎市幸区 川崎市立幸高校周辺(126ノード)

の2つの道路ネットワークです。図1の赤丸で囲んだ2か所になります。

Map_total.png
地図データ:© OpenStreetMap contributors
図1 予測対象とした2か所(赤丸)

マルチネットワーク交通予測モデル

多言語Transformerとの類似

自然言語処理の分野では、日本語や英語など異なる言語を一つのTransformerで処理する多言語モデルが広く利用されています。

例えば、

日本語
↓
Tokenizer

英語
↓
Tokenizer

Shared Transformer

という構成をとることで、入力表現が異なっていても、文法や意味といった共通知識をTransformer内部で共有できます。

参考文献

[1] Alexis Conneau et al.,
"Unsupervised Cross-lingual Representation Learning at Scale",
ACL 2020.
https://arxiv.org/abs/1911.02116

本研究ではこの発想を道路ネットワークへ適用します。

両者の対応関係を表1に示します。

表1 多言語NLPとの対応表

多言語NLP 本研究
日本語Tokenizer 浅間下GraphEmbedding
英語Tokenizer 川崎GraphEmbedding
Shared Transformer Shared Transformer
言語別Head 道路ネットワーク別Fully

道路のマルチネットワーク

図1で示した2つの道路ネットワークはノード数や道路構造が異なります。

本研究では、

  • GraphEmbedding
  • PositionEmbedding
  • Fully

には道路ネットワーク固有の情報が含まれる一方、

  • Transformer
  • LayerNorm

には道路ネットワークを超えて利用可能な交通流の共通知識が含まれているという仮説を立てました。

この仮説に基づき、図2に示すマルチネットワーク交通予測モデルを構築します。

なお、本実験では比較を容易にするため、両ネットワークで車両需要プロファイルは共通としています。

したがって本稿で評価するのは需要パターンの違いではなく、

異なる道路ネットワーク構造に対して
Transformerの内部表現を共有できるか

という点です。

図2 モデル構成

実装

本研究では道路ネットワークごとの情報を NetworkAdapter として保持します。

class NetworkAdapter(nn.Module):

    def __init__(
        self,
        num_nodes,
        graph_pos_embedding_table,
        graph_embedding,
        fully
    ):
        super().__init__()

        self.num_nodes = num_nodes
        self.graph_pos_embedding_table = graph_pos_embedding_table
        self.graph_embedding = graph_embedding
        self.fully = fully

浅間下交差点周辺と川崎市立幸高校周辺について、それぞれ独立した Adapter を用意します。

adapters = {

    "sengenshita":

        NetworkAdapter(
            num_nodes=122,
            graph_pos_embedding_table=
                sengenshita.graph_pos_embedding_table,
            graph_embedding=
                sengenshita.graph_embedding,
            fully=
                sengenshita.fully
        ),

    "kawasaki":

        NetworkAdapter(
            num_nodes=126,
            graph_pos_embedding_table=
                kawasaki.graph_pos_embedding_table,
            graph_embedding=
                kawasaki.graph_embedding,
            fully=
                kawasaki.fully
        )
}

forward() は

def forward(
    self,
    data,
    batch_size,
    network_name
):

    adapter =
        self.adapters[network_name]

    graph_pos_emb =
        adapter.graph_pos_embedding_table(...)

    temp =
        adapter.graph_embedding(data)

    x = tokens + graph_pos_emb

    x = self.shared_blocks(x)

    x = self.shared_ln_f(x)

    x = adapter.fully(x)

    return x

ポイントは、

  • GraphEmbedding
  • PositionEmbedding
  • Fully

をネットワークごとに切り替えている一方、

  • Transformer
  • LayerNorm

は共通化している点です。

これにより異なる道路ネットワークを一つのTransformerで処理できます。

GraphEmbeddingの詳細は第2回を参照してください。

実験条件

次のような条件で推論を行いました。
どちらのadapterを使うかはコンフィグファイルの中でselected_areaとして指定します。

表2 実験条件

項目 内容
対象ネットワーク① 浅間下交差点周辺(122ノード)
対象ネットワーク② 川崎市立幸高校周辺(126ノード)
共有対象 Transformer, LayerNorm
個別保持 GraphEmbedding, PositionEmbedding, Fully
需要プロファイル 共通

推論結果

まず、それぞれの道路ネットワークに対して推論を行った結果を表3に示します。

表3 推論結果

ネットワーク ノード数 MAE RMSE MAPE
浅間下交差点周辺 122 2.986 5.376 36.16%
川崎市立幸高校周辺 126 3.021 5.842 41.62%

表3より、浅間下交差点周辺と川崎市立幸高校周辺の両方に対して良好な予測精度が得られました。

推論結果の例を図3、図4に示します。

sengenshita.png
図3 浅間下交差点周辺の予測結果

kawasaki.png

図4 川崎市立幸高校周辺の予測結果

第三回との違い

今回のモデルと第三回のモデルを比較すると表4のようになります。

表4 第三回との比較

項目 第三回 第四回
手法 転移学習 マルチネットワーク
Transformer 川崎へ転移 共通利用
GraphEmbedding 個別 個別
PositionEmbedding 個別 個別
Fully 個別 個別
推論対象 川崎のみ 浅間下・川崎
ノード数 122→126 122・126同時対応

考察

表3より、 浅間下交差点周辺では MAE=2.986、 川崎市立幸高校周辺では MAE=3.021 となり、両ネットワークでほぼ同等の予測性能が得られました。

今回のモデルでは、

  • GraphEmbedding
  • PositionEmbedding
  • Fully

をネットワークごとに保持し、

  • Transformer
  • LayerNorm

のみを共有しています。

つまり予測性能が維持されたことは、

Transformer内部で学習された交通流表現の一部が、道路ネットワークを超えて利用可能である可能性を示しています。

これは第三回で行った転移学習の結果とも整合しています。

第三回では浅間下交差点周辺で学習したTransformerを川崎市立幸高校周辺へ転移し、一定の性能が得られることを確認しました。

今回の結果はさらに一歩進み、

道路ネットワークごとに

GraphEmbedding
PositionEmbedding
Fully

を持ちながら、Transformerを共有します。

つまり単なる転移学習ではなく、 一つのTransformerを複数道路ネットワークで共有するというマルチネットワーク構成が成立する可能性を示しています。

この構造は、多言語Transformerが言語ごとのTokenizerとHeadを持ちながらTransformerを共有する構成とも類似しています。

そして今回の結果は、交通流予測においても道路ネットワークを超えて共有可能な表現が存在する可能性を示唆しています。

まとめ

本稿では、

  • 横浜市西区浅間下交差点周辺(122ノード)
  • 川崎市幸区川崎市立幸高校周辺(126ノード)

を対象として、マルチネットワーク交通予測モデルを試作しました。

道路ネットワークごとに

  • GraphEmbedding
  • PositionEmbedding
  • Fully

を持たせる一方、

  • Transformer
  • LayerNorm

を共有する構造を採用しました。

その結果、両ネットワークで同等の予測性能が得られ、
交通流に関する共通知識がTransformer内部で表現されている可能性が示されました。

今回は道路ネットワークごとに個別に推論を行いましたが、今後はLoRAのBatch Inferenceのように複数道路ネットワークを同時に処理する仕組みや、複数ネットワークのデータを用いたShared Transformerの共同学習にも取り組みたいと考えています。

将来的には、個別道路ネットワークに依存しない交通流の基盤モデル(Foundation Model)構築への発展を目指せればと思います。

関連記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?