Geometric Deep Learning (GDL)
幾何学的深層学習(GDL)は、グリッド、グラフ、メッシュ、点群の対称性をニューラルネットワークに組み込み、CNN、GNN、Transformerを統合します。
幾何学的深層学習(GDL)は、データがピクセルグリッド、グラフ、点群、球面、曲面のいずれに存在するかにかかわらず、その構造や対称性に基づいてニューラルネットワークを設計する深層学習の分野です。中心となる考え方は、画像の移動、分子の原子のラベル変更、3Dスキャンの回転など、意味を変えない入力の変換に対して、モデルが予測可能な反応を示すべきだというものです。Michael Bronstein、Joan Bruna、Yann LeCun、Arthur Szlam、Pierre Vandergheynstは、2017年のサーベイGeometric Deep Learning: Going Beyond Euclidean Dataでこの名称を広めました。2021年のBronstein、Bruna、Taco Cohen、Petar Veličkovićによるプロトブックでは、グリッド、群、グラフ、測地線、ゲージという5つの領域を軸にこの分野を体系化しました。
不変性、同変性、GDLの設計指針#
2つの性質が大きな役割を果たします。関数の出力が変換後も同じであれば、その関数は変換に対して不変です。猫が移動しても、画像分類のラベルが「猫」のままであることがその例です。入力に合わせて出力も変換される場合、その関数は同変です。物体と一緒に移動するセマンティックセグメンテーションのマスクがその例です。GDLの設計指針では、近傍間の情報を混合する同変レイヤー、領域を粗くするプーリング処理、そしてタスクが単一の答えを必要とする場合の最後の不変な読み出しを積み重ねます。領域の対称群を選ぶことで、よく知られたアーキテクチャが得られます。
畳み込みは、すべてのピクセル位置で1つのカーネルを共有するため、グリッド上で並進同変なケースが畳み込みニューラルネットワーク(CNN)です。グラフニューラルネットワーク(GNN)は、すべてのエッジに同じ関数を適用するため、ノードのラベルを変更しても出力の順序が変わるだけです。Transformerはトークンを完全結合グラフとして扱います。自己注意は置換同変であるため、トークンの順序を把握するには位置エンコーディングが必要です。GNNは最もよく知られたGDLモデルであり、GDLはこの3つをすべて説明する、より広範な枠組みです。Taco CohenとMax Wellingが2016年に提唱した群同変CNNは、重み共有を回転や反射に拡張します。また、メッシュネットワークや多様体ネットワークでは、曲面上の局所座標系で畳み込みを定義します。
Ultralytics YOLO26はグリッドのケースにあたります。畳み込みではピクセル位置間で重みを共有し、アーキテクチャに組み込まれていない対称性はデータ拡張によって学習させます。デフォルトでは、学習中に各画像を確率fliplr=0.5で水平方向に反転しますが、垂直反転(flipud)とランダム回転(degrees)は無効になっています。
グラフ上のメッセージパッシング#
GDLのグラフモデルは、メッセージパッシングに基づいて構築されます。各ノードは近傍ノードからメッセージを受け取り、和、平均、最大値などの順序に依存しない関数で統合して、自身の埋め込みベクトルを更新します。GoogleのJustin Gilmerらは2017年、多くのグラフアーキテクチャがこのメッセージパッシングの枠組みに当てはまることを示し、分子の量子化学的性質の予測に応用しました。小さなグラフのノードを並べ替えると、2つの対称性を直接確認できます。
import torch
torch.manual_seed(0)
nodes = torch.randn(5, 3) # 5個の原子またはユーザー、各3個の特徴量
adjacency = torch.zeros(5, 5)
edges = torch.tensor([[0, 1], [1, 2], [0, 2], [2, 3], [3, 4]])
adjacency[edges[:, 0], edges[:, 1]] = adjacency[edges[:, 1], edges[:, 0]] = 1
w_self, w_neighbors, w_dense = torch.randn(3, 4), torch.randn(3, 4), torch.randn(15, 4)
# ノードをランダムな順序で並べ替えます。同じグラフを異なる順序で列挙します
order = torch.randperm(5)
nodes_p, adjacency_p = nodes[order], adjacency[order][:, order]
# メッセージパッシング:各ノードは自身の特徴量と近傍ノードの合計を統合します
out = torch.relu(nodes @ w_self + adjacency @ nodes @ w_neighbors)
out_p = torch.relu(nodes_p @ w_self + adjacency_p @ nodes_p @ w_neighbors)
print(torch.allclose(out_p, out[order])) # 同変:ノードの並べ替えに応じて出力も並べ替わります
print(torch.allclose(out_p.sum(dim=0), out.sum(dim=0))) # 不変:グラフ全体の読み出し結果は変わりません
# ノードリストをフラット化して全結合層に入力すると、並べ替えたグラフは新しいデータとして扱われます
print(torch.allclose(nodes_p.flatten() @ w_dense, nodes.flatten() @ w_dense))True、True、Falseが出力されます。メッセージパッシングレイヤーの出力はノードの並べ替えに正確に追従し、グラフ全体の合計読み出し結果は変わりません。一方、通常の全結合層は、同じグラフを別の順序で列挙すると異なる答えを返します。PyTorch Geometricには、グラフのサイズが異なる場合のバッチ処理とともに、こうしたレイヤーが数十種類まとめられています。
用途#
分子は原子と結合からなるグラフであるため、メッセージパッシングネットワークは創薬における溶解性や結合性などの性質を予測します。タンパク質には3D形状も加わります。AlphaFold 2は不変点注意機構を使って予測構造を精緻化します。この機構では、タンパク質全体を空間内で回転または平行移動しても同じ結果が得られます。
LiDARスキャンや深度センサーは、順序のない3D点の集合である点群を生成します。StanfordのCharles Qiらが2017年に発表したPointNetは、すべての点に同じネットワークを適用して結果を最大値プーリングするため、出力は点の順序に依存しません。この設計は、自動運転車やロボティクスで使われる多くの3D物体検出システムの基盤となっています。ユーザーとアイテムのソーシャルグラフや商用グラフは、PinterestのPinSageなどのGNNベースのレコメンデーションシステムに利用されます。また、ナレッジグラフでは、エンティティとその関係に同じメッセージパッシングを適用します。
天気予報モデルは球面上で動作します。Google DeepMindが発表し、2023年にScience誌に掲載されたGraphCastは、全球を覆う二十面体を細分化して作られたマルチスケールメッシュ上でメッセージを伝達します。0.25°の解像度で10日先まで数百の変数を1分足らずで予測し、1,380の検証対象の90%で、主要な実運用の決定論的予報であるECMWFのHRESを上回りました。










