この記事は、架空の大学「圏峰(けんぽう)工科大学」の研究室を舞台にした、ひとつの対話篇です。
登場するのは、ゲーム理論にも経済学にも触れたことがない学部生と、圏論・経済学の応用を専門とする若手専任講師のふたりです。
前回の対話篇「圏論はゲーム理論を書き換える(Compositional Game Theory 入門)」の続編にあたります。
前回の記事をまだお読みでない方にも、この記事を単独でお読みいただけるように書きましたが、ところどころで前回を振り返ります。
人物や大学はフィクションですが、扱う中身(理論・論文・実装)は、すべて実在する研究にもとづいています。出典は、この記事の末尾にまとめました。
想定読者は、高校の数学はだいぶ忘れてしまったけれど、日々 Python のコードと向き合っているエンジニア・データサイエンティスト・機械学習エンジニア・AI Research Scientistの皆様です。
難しい専門用語や数学用語は、すべて初出の段階でかみくだいて説明します。数式が出てきても、読み飛ばしていただいて差し支えありません。高校数学を忘れてしまっていても、この記事をお読みいただく上で、何の問題もありません。
想定読者
- 日々 Python のコードと向き合っているエンジニア・データサイエンティスト・機械学習エンジニア・AI Research Scientist
-
高校・大学の数学はだいぶ忘れてしまったけれど、「最適化」「配送ルート」「在庫」といった言葉には、実務で何となく触れている方
-
オペレーションズ・リサーチ(OR)も、圏論も、どちらも名前は聞いたことがあるが、いずれもまだ専門的には学んだことがない方
- 前回の「合成的ゲーム理論」の対話篇をお読みになり、「圏論によって、複雑で巨大な問題を扱うゲーム理論が、"部品から組み立て直される"という発想」に興味を持たれた方(前回の記事を読んでいなくても、問題ありません)
数学やアルゴリズムの予備知識は、前提にしていません。
難しい専門用語や数学用語は、高校数学の復習となる程度から、丁寧にかみくだいて説明いたします。
数式や圏論の記号が出てきても、読み飛ばしていただいて、この記事の全体像はつかんでいただけるように執筆しました。
この記事を読むことで得られること(この記事を読む価値)
-
OR(オペレーションズ・リサーチ)とは何か、その全体像をつかんでいただけます。具体的には、OR が、配送・在庫・生産計画といった、ビジネスの現場の意思決定を最適化する数理的な手法であることが、見えてきます。また、「最適化」という言葉の意味が、どのように使われているのかも見えてきます。
-
規模の大きい「大規模な最適化問題」を、いったん「部品」に分解し、その「部品」から「組み立てる」というアプローチが、なぜ有効なのか? ── このことを、エンジニアの皆様にとって馴染み深い感覚(モジュール化・分散処理)に引きつけて理解できます。
-
「装飾コスパン」・「ハイパーグラフ圏」・「オペラッド」・「代数射」 といった、難しそうな専門用語が何を意味するのかを、配線図やコンパイラの比喩を通してつかんでいただけます。
-
「最適化問題」そのものを部品から組み立て、それを解くアルゴリズムまで自動的に導くという最先端の研究を、具体例(最小費用流・設計最適化)を実装コードを交えて、ひも解いてイメージをつかむことができる。
- 前回の記事で取り上げた 「ゲーム理論」(合成的ゲーム理論)というテーマと、今回とりあげるOR・最適化・機械学習というテーマが、「部品から組み立てる」「構造を保つ変換」「不動点」という、共通の言葉でつながっていること が、一枚の地図として 見えてきます。
- この記事で取り上げる技術は、2026年6月現在では、まだ、「すでに産業界で広く使われている技術」ではなく、「研究の最前線」であるという、技術の現在地点をおさえることができる
なお、この記事は、OR(オペレーションズ・リサーチ)や圏論を体系的に解説する教科書ではありません。
「線形計画」の解き方や、圏論の厳密な定義を網羅するものではなく、「圏論によって OR を組み立て直すとは、どういう発想なのか」という発想のかたちと、全体像の見取り図をお渡しすることに徹しています。
この記事で取り上げる分野に関して、厳密な理解を得られたい方は、本記事末尾の文献リストと論文リストをご参照ください。
(結論先取り)「一枚の地図」
その 「一枚の地図」 を、ここで先取りしてお見せします。
( conclusion comes first )
なお、この地図は、いまはまだ「予告」です。
記事を読み終えたときに、末尾の「第8幕 ── まとめ:応用圏論という地形図」で、同じ地図に、今回学んだ専門用語(装飾コスパン・オペラッド・不動点……)が書き込まれた、完成版として再会します。
いまは輪郭だけ、頭の隅に置いておいてください。
前回の ゲーム理論、今回の OR・最適化、そして次回の 機械学習 ── これらは本来、別々の分野です。
ところが、応用圏論という土台 の上では、「部品から組み立てる」「構造を保つ変換」「不動点」 という、同じ言葉 で語られはじめています。
バラバラに見えた分野が、ひとつの地形の上に並ぶ ── それが、この記事を通して見えてくる風景 です。
TL;DR ── この記事で分かること(お急ぎの方へ)
オペレーションズ・リサーチ(OR) は、配送ルート・在庫・生産計画・スケジューリングといった「大規模な意思決定」を最適化する、産業界の屋台骨です。
そのORを、圏論の言葉で「部品から組み立てる」 研究が、近年の応用圏論(Applied Category Theory, ACT) で進んでいます。
電気回路を部品としてつなぐように、最適化問題そのものを「入力と出力を持つ開いた部品」として表し、配線図のようにつないで大きな問題を組み立てる
── そして、つないだ大きな問題を解くアルゴリズムまで、合成構造から自動的に導く。これが、この記事の主題です。
鍵となる道具立て:
-
「装飾コスパン」(decorated cospan) と 「ハイパーグラフ圏」(hypergraph category) ── ネットワーク状の部品を、入出力の境界でつなぐための圏論的な土台
-
「オペラッド」(operad) と 「代数射」(algebra morphism) ── 最適化問題を階層的に組み立て、解法(勾配降下法など)を「構造を保つ変換」として導く枠組み
- 「不動点」(fixed point) ── 前回の記事で、ゲーム理論に登場する「Nash 均衡」を、「不動点」 として捉えたのと同じことが、「設計最適化」(co-design)でも、「最適解=最小不動点」として再登場すること
この記事の本質を、一文で言うと?
前回の記事で、「ゲームを部品から組み立てた」のとまったく同じ精神で、今回の記事は以下のメッセージをお届けます。
(この記事のメッセージ )
「最適化そのものを部品から組み立てる」
── 応用圏論という地形の上では、ゲーム理論もORも機械学習も、同じ言葉で語られはじめている。
序章 ── 前回の「予告編」を、回収しにきた
学部生:
先生、お久しぶりです。前回の「合成的ゲーム理論」の対話、兄貴に見せたら、強い興味を持ったようでした。
講師:
それはよかった。今日はね、その続きを話そう。
前回の終盤、僕はこう言って話を切り上げたのを、覚えている?
── いまオペレーションズ・リサーチ(OR)の話が出たね。ORは、それ自体が大きなテーマだ。今日は深入りしないが、稿を改めて、別の機会に、この対話篇でじっくり議論しよう。
学部生:
覚えています。
「線形計画、組合せ最適化、待ち行列、在庫管理 ── どれもエンジニアの実務に直結する」と。
そして、「OR と圏論にも、ちゃんと接続がある」 という"予告編"も。
講師:
ちゃんと覚えてくれたんだね。
今日は、その予告編を回収しよう。
前回の主題は「ゲームを部品から組み立てる」だった。
今日の主題は、それと双子のような話
── 「最適化を、部品から組み立てる」
だ。
学部生:
ゲームの次は、最適化そのもの、というわけですね?
講師:
その通り。
前回の対話の最後に、こんなやりとりをしたのを、覚えているだろうか。
学部生:ゲーム理論だけじゃなくて、最適化そのものまで「部品から組み立てる」流れがあるんですね!
講師:そうなんだよ。「大きなものを、小さな部品から、配線図のように組み立てる」── 応用圏論という大きな地形の上では、ゲーム理論も、最適化も、機械学習も、同じ言葉で語られはじめている。
今日は、この 「最適化を配線図のように組み立てる」という話 を、主題として正面から扱う。
第1幕 ── そもそも、”OR”とは何か?(5分で確認)
学部生:
実は、僕はORについて、名前を聞いたことしかありません。
それも、大学の講義名のシラバスでたまたま目にしたくらいで・・・。
講師:
前回のゲーム理論と同じだ。
まずは、5分で輪郭 だけをつかもう。
オペレーションズ・リサーチ(Operations Research, OR) は、おおまかに言えば、
「限られた資源を、どう配分すれば最善か」を、数学で解く分野
だ。
第二次世界大戦中、軍事作戦(operations)の計画を科学的に最適化しようとしたのが起源で、戦後、産業界へと広がっていった。
学部生
具体的には?
講師
少し詳しく説明するよ。
ORの起源は、第二次世界大戦の直前にさかのぼる。
1936年、イギリスの空軍省が、サフォーク州フェリクストウ近郊に Bawdsey Research Station(ボードジー研究所)を設けた。
翌1937年、所長の A・P・ロウ(A. P. Rowe)が、当時の最新技術であったレーダーの早期警戒網「チェーン・ホーム(Chain Home)」を、いかに効率よく運用するか ── その分析と改善に、科学者たちを動員した。
これが、近代OR の出発点だ。
レーダー開発の中心人物 ロバート・ワトソン=ワット(Robert Watson-Watt)も、初期の研究に関わっている。「operational research(作戦の研究)」という名称も、このとき生まれた。
やがて、物理学者 P・M・S・ブラケット(Patrick Blackett、のちのノーベル物理学賞受賞者)が率いた学際チーム ── 数学者・天体物理学者・生理学者までを含む混成部隊だ ── は「ブラケットのサーカス(Blackett's Circus)」と呼ばれ、対空砲火や対潜哨戒の効率を、データにもとづいて劇的に改善してみせた。
1942年までに、イギリスの陸・海・空の3つの軍のすべてに、 OR チームが置かれる。そして戦後、この「科学的に意思決定を最適化する」という手法が、産業界へと広がっていった。
学部生
大戦中にORがイギリス防衛のために活用されたことは、産業界でも知られていたから、戦後、産業界で、企業の戦略立案や業務遂行にも、ORが活用されたという流れですか?
大戦中のORの利用実績は、機密扱いで非公開ではなかったのでしょうか?
講師:
良いところに気がついた。
結論から言うと ── 機密だったのは、「OR という方法論の存在」そのものではなく、「個々の作戦で得られた具体的なデータや結論」のほうだ。
たとえば、
「護送船団は何隻で組めば損害が最小になるか」
「爆雷を何メートルの深さで爆発させれば命中率が上がるか」
といった、生々しい数値や戦術上の結論
── これらは当然、戦時下では秘匿された。
敵に知られれば、ただちに対抗されてしまうからね。
だが、「科学者チームを編成し、データにもとづいて作戦を分析・最適化する、という"やり方"そのもの」は、深くは封印されなかった。
ここが、さっき君が挙げたブレッチリー・パークの暗号解読との、決定的な違いだ。
エニグマ解読は、成功を敵に悟られれば価値が消えるから、戦後30年近くも伏せられた。
一方ORは、手法が広く使われるほど価値が高まるものだし、隠し続ける軍事的な理由も乏しかった。
事実、戦後まもなく、「OR の父」Blackett 自身が、自らの戦時中の経験と方法論を、論文や講演で公にしている。具体的に、論文と講演録を挙げよう。
たとえば Blackett は、戦後の1950年、世界で初めての OR 専門誌『Operational Research Quarterly』の、記念すべき巻頭論文「Operational Research」を執筆している。
さらに翌1951年には、アメリカの物理学者向けの雑誌『Physics Today』にも「Operations Research」を寄せ、海の向こうへも、その考え方を伝えた。
- P. M. S. Blackett, "Operational Research," Operational Research Quarterly 1(1), 1950, pp. 3–6. https://doi.org/10.1057/jors.1950.2
- P. M. S. Blackett, "Operations Research," Physics Today 4(11), 1951, pp. 8–20. https://doi.org/10.1063/1.3067382
そして、彼が戦時中に書いた覚書 ── たとえば「Scientists at the Operational Level(作戦現場の科学者たち)」(1941)── も、戦後の論集『Studies of War』(1962)に再録され、誰でも読めるようになった。
秘密の報告書だったものが、こうして公開の記録になったわけだ。
- P. M. S. Blackett, Studies of War: Nuclear and Conventional, Oliver and Boyd, 1962.(戦時の覚書「Scientists at the Operational Level」(1941) 等を再録)
つまり ── 当事者であるBlackett 本人が、論文と講演を通じて、自らその手法を世に開いていった。
だからこそ、ORは軍の外へ、産業界へと広がっていけたんだ。
秘密のベールを、当事者が自ら開いていった、というわけだ。
だからこそ、戦後、この手法は民間へと広がっていけた。
そして、これはイギリス国内だけの話では終わらなかった。
最も大きく育ったのは、むしろ大西洋の向こう ── アメリカだ。
戦時中に、Blackettが1941年に書いた覚書は、アメリカでも広く回し読みされ、米軍にORチームが作られるきっかけになった。
その流れを受け継いだのが、海軍のORを率いた物理学者 **Philip Morse(フィリップ・モース)**だ。
彼は戦後、ORを民間へ橋渡しする中心人物になった。
1952年には、アメリカの OR学会(Operations Research Society of America, ORSA)が設立され、同じ年、MorseはKimballとともに、アメリカ初の OR の教科書『Methods of Operations Research』を世に出している。
そして、アメリカでORを一気に押し上げたのが ── コンピュータの普及だ。
1950年代から60年代にかけて、計算機が使えるようになると、それまで手計算では到底解けなかった規模の線形計画やシミュレーションが、現実的に解けるようになった。
この後押しで、航空会社、海運、製造業 ── アメリカの大企業の、およそ半数までもが、OR を業務に取り入れるようになったと言われている。
学部生:
イギリスからアメリカへ。では、日本はどうだったのですか。
講師:
日本にも、ちゃんと根づいた。
日本でも、ORが最初に使われたのは戦時中だ。
そして戦後 ── 欧米で学会が相次いで生まれたのに刺激されて、まず1955年に「経営科学協会」が関西を拠点に作られ、これを母体に、1957年、慶應義塾大学で「日本オペレーションズ・リサーチ学会」が設立された。
初代会長は久留島秀三郎だ。
1961年には、国際的な OR 連合 IFORS にも加盟している。戦後の高度経済成長を、生産計画や品質管理の面から支えた道具のひとつが、この OR だった。
学部生:
待ってください。イギリスやアメリカは分かりますが ── 日本は、その敵国ですよね。なぜ敵国だった日本が、戦時中に、イギリスの OR の情報を手に入れられたのですか。
講師:
そこは、よくある誤解だ。正確に言うと ── 日本は、敵国イギリスから OR を"入手"したのではない。情報をつかんだのではなく、似た発想に、独立にたどり着いていた、というのが実際のところだ。
「限られた戦力を、どう配分・運用すれば効果が最大になるか」という問いは、戦争をする国なら、どこでも自然に生まれる。だから日本でも、数学や統計の専門家を集めた組織が、独自に作られた。
具体的には ── 内閣に「戦力計算室」というものが設けられ、ニューギニア戦での戦力の見積もりや、部隊の配置を研究していた、という記録がある。
学部生:
日本にも、OR チームのようなものがあったんですね。
成果は、どうだったのですか。
講師:
ここは、正直に言わなければならない。
規模でも、成果でも、米英には遠く及ばなかった。
象徴的な逸話がある。
その戦力計算室は、東条英機首相が視察に訪れた、まさにその日をもって、廃止されてしまったと伝えられている。
ただ ── 正直に言っておくと、なぜ廃止されたのか、その確かな理由は、記録に残っていない。この逸話自体、後藤正夫という一人の証言として伝わっているものだ。だから、ここから先は、当時の状況からの推測になる。
考えられる背景は、いくつかある。
当時の日本の戦争指導は、精神論や、その場その場の作戦に重きを置きがちで、「数字やデータが導く、冷静な結論」を、腰を据えて受け止める土壌が、乏しかった。科学的な分析が、ときに「現場の士気をくじく、弱気な数字」と受け取られかねない空気もあった。
もし戦力計算室が、ニューギニア戦の戦力差について、楽観を許さない厳しい数字を出していたとしたら
── それは、上層部にとって、歓迎しづらいものだったかもしれない。
学部生:
都合のよい結論ではなく、冷徹な数字を出す部署だったからこそ、煙たがられた ── という可能性ですね。
講師:
あくまで推測だがね。ただ、はっきりしているのは ── イギリスが、ブラケットのような科学者の出す数字を、組織として受け止め、作戦に生かしていったのとは、対照的だった、ということだ。同じ「データで戦力を分析する」試みが、一方では根づき、一方では、視察の当日に消えた。その差が、何を意味するか ── 考えさせられる逸話だね。
腰を据えて科学的な分析を続ける、という文化が、当時の日本の戦争指導には根づかなかったわけだ。理論としても未成熟で、結局は経験則と大差ない、という厳しい評価もある。
ただ ── まったく無かったわけでもない。
戦後に「日本海軍とOR」を論じた永井政澄は、護送船団の組み方や、航空攻撃の回避法について、日本と米国が、最終的に似た結論にたどり着いていたことを指摘している。
日本側の成功例としては、空母を集中運用した第一航空艦隊の編成などが挙げられることもある。
学部生:
同じ問いに直面すれば、敵も味方も、似た答えにたどり着く ── ただ、それを「科学として組織的に続けられたか」で、大きな差がついた、ということですね。
講師:
まさに、その通りだ。
OR の本質は、特定の国の秘密兵器ではなく、「データにもとづいて、意思決定を最適化する」という、普遍的な姿勢そのものにある。
だからこそ、各国が独立にたどり着いた。
そして、それを戦後、最も組織的に育てたのが、アメリカとイギリスであり、やがて日本も続いた
── そういう流れなんだ。
学部生:
東条英機と言えば ── NHKの番組で見たのですが、総力戦研究所という、内閣直属の研究機関があったそうですね。
経済力、財政の余力、貿易や物資の海外依存度(いまで言う、国際物流・ロジスティクスの強靭さ)、外交力、国民の士気、軍事力、兵器の生産能力 ── そうした、あらゆる観点から、日本がアメリカと何年戦えるかを、シミュレーションしていた、と。
陸軍省や参謀本部、海軍省に軍令部、それに大蔵省や商工省、日本銀行、さらには三井・三菱といった商社や銀行、海運会社からも、20代から40代の、えりすぐりの俊秀を集めたと聞きました。平均年齢は、たしか33歳ほどだったとか。
そして、そのシミュレーションの結論は ──「日本必敗」。原爆の投下を予測できなかった点を除けば、その後の史実を、かなり言い当てていた、という声もあるそうです。
講師:
よく知っているね。ただ、いくつか、正確に押さえておきたい点がある。
まず ── その報告がなされた1941年8月の時点で、東条は、まだ「首相」ではない。陸軍大臣(陸相) だ。首相になるのは、その2か月後、同年10月のことだ。
そして、伝わるところでは、報告を聞いた東条は、こう述べたという。
「これはあくまで机上の演習であり、実際の戦争は、諸君が考えているようにはいかない。日露戦争も、やってみなければ分からなかった」
── そういう趣旨でね。せっかくのデータにもとづく分析が、政策には、ほとんど生かされなかった。
学部生:
データが「必敗」と告げているのに、「戦はやってみなければ分からない」と退けてしまった ── イギリスとは、なんとも対照的で、物悲しい話です。
講師:
ただ ── ここは、歴史家のあいだで議論があることも、付け加えておきたい。
近年の研究では、総力戦研究所の資料には「必敗」と言い切れない、別の見立て(「長期戦にならない限りは勝機あり」といった内容)もあった、と指摘されている。
「必敗」という劇的な単一の結論として語るのは、やや単純化が過ぎるかもしれない、という慎重な見方だ。
だが、君が感じた「物悲しさ」の核心は、結論が必敗だったか否か、ではない。
「データにもとづいて、冷静に先を読もうとする営みが、組織として根づき、意思決定に生かされたか」
── その一点だ。イギリスは、それをやってのけた。
日本にも、優秀な頭脳と、その試みは、確かにあった。だが、それを受け止める器が、十分ではなかった。
── ORという観点から見ると、ここに、最も大きな差があったんだ。
だが、それは「戦時中」の話だ。戦争が終わると、状況は大きく変わる。
ORは、軍の手を離れ、世界中の産業界へと広がっていくことになる。
学部生:
イギリス、アメリカ、日本
── 西側の産業国に、ひととおり広がったんですね?
講師:
いや
── 話はそこで終わらない。ここが面白いところだ。鉄のカーテンの向こう側、ソ連にも、独自の源流があった。
ソ連の数学者 レオニード・カントロヴィチ(Leonid Kantorovich)は、なんと1939年 ── Dantzig のシンプレックス法より、8年も早く、線形計画にあたる手法を独力で生み出していた。
資源の配分や生産計画に使える、と見抜いていたんだ。
学部生:
西側より先に? では、なぜ、あまり知られていないのですか。
講師:
時代と体制が、災いした。
彼の仕事は、当時のソ連の政府や経済学界には歓迎されなかった。
「資本の生産性」といった概念が、マルクス主義経済学では禁忌に触れたからだ。
西側にも長らく伝わらなかった。
再評価されたのは、スターリン後の1950年代後半になってからだ。
その後、彼の理論はソ連の「最適計画経済」を数理化する一派(経済サイバネティクス)の源流となり、最終的に、カントロヴィチは1975年にノーベル経済学賞を受ける。
学部生:
同じ「資源を最適に配分する数学」が、西側では企業の利益のために、東側では計画経済のために
── 別々に、独立に育っていたんですね。
講師:
そういうことだ。
体制もイデオロギーも違えど、「限られた資源を、どう配分すれば最善か」という問いそのものは、国境やイデオロギーを越えて、人類に共通だった。
だからこそ、OR は東西の双方で、独立に芽吹いたんだ。その出発点のひとつが、あのボードジー研究所のレーダーだった ── そう考えると、なかなか感慨深いだろう。
学部生:
そういう経緯だったんですね。
ドイツやフランス、イタリア、中国、オーストラリア、ニュージーランド、カナダ ── その他の国々では、どうだったのですか?
講師:
良い問いだ。
ただ、正直に言っておくと ── 国ごとの細かい事情は、記録の残り方にかなり差があって、はっきり言えることと、言えないことがある。
わかる範囲で、大きな傾向を話そう。
まず、イギリス連邦の国々 ── カナダ、オーストラリア、ニュージーランド、南アフリカなど ── は、イギリスと密接に連携して、ORを導入・実践した。
これらの国々は、英連邦の構成国として、そして、第二次大戦中に同じ陣営に立った国々として、人も手法も行き来していたからね。
実際、ORは「イギリス・アメリカ・カナダ・オーストラリア・南アフリカで発展した」と概説されることが多い。
英語圏で、知見が共有されやすかったわけだ。
学部生:
では、枢軸国側 ── ドイツやイタリアは?
講師:
ここが興味深いところだ。
ドイツは、レーダーやロケットといった"兵器そのものの技術"では、むしろ最先端だった。
だが、英米がやったような「科学者の学際チームが、作戦の運用そのものをデータで分析・最適化する」という型のORは、同じ規模・同じ組織性では発達しなかった、というのが歴史家のおおむね一致した見方だ。
さっき話した日本も、同じ構図だね
── 個々の技術は高くとも、それを"運用の科学"として束ねる文化が、根づきにくかった。
イタリアやフランスについては ── 戦時下の混乱もあって、英米のように体系立ったORの記録は、正直、あまり多くは残っていない。ここで確かなことを断定するのは、やめておこう。
学部生:
では、中国は、どうだったのですか。
講師:
中国については ── ひとり、どうしても紹介したい人物がいる。
銭学森(せん・がくしん / Qian Xuesen) だ。
彼は1929年、上海の名門・国立交通大学(いまの上海交通大学の前身だ)に入り、はじめは鉄道工学を学んで、機械工学で学士号を取った。
そして1934年、清華大学の公費留学(庚款留学 ── 義和団事件の賠償金を原資とする、アメリカ留学制度だ)の試験に、わずか20人の合格者の一人として選ばれ、渡米する。
アメリカでは、まずMITで学び、次いでカリフォルニア工科大学(Caltech)へ移り、1939年に航空学の博士号を取る。
師事した教授は、20世紀の空気力学の巨人、テオドール・フォン・カルマン(Theodore von Kármán) だ。
学部生:
フォン・カルマン ── あの「カルマンフィルター」の?
講師:
いや、そこは紛らわしいので、はっきりさせておこう。
別人だ。
カルマンフィルターのほうは、ルドルフ・カルマン(Rudolf Kálmán)
── 制御理論の人で、別の人物だ。
銭学森の師は、空気力学のフォン・カルマンのほう。
名前が似ているが、混同しないようにね。
その偉大な師匠から高い評価を受けた銭学森は、アメリカのロケット開発の黎明期に、深く関わった。
JPL(ジェット推進研究所)
── のちに NASA の中核となる研究所 ── の創設メンバーのひとりだ。
アメリカの高速飛行・ロケット研究の、まさに第一人者だった。
学部生:
それほどの人が、なぜ中国へ?
講師:
ここが、時代の悲劇でね。
戦後のマッカーシズム ── 赤狩りの嵐の中で、彼はスパイ容疑をかけられ、5年間も軟禁された。
そして1955年、米中の捕虜交換のような形で、事実上アメリカを追われ、中国へ帰る。
帰国後の彼は、中国の弾道ミサイルと宇宙開発を、一から主導した。
中国初の人工衛星の打ち上げも、ミサイル開発も、彼なしには語れない。
「中国宇宙開発の父」と呼ばれ、2009年に97歳で世を去ったときには、国を挙げて追悼された。
学部生:
それほどの科学者を擁した中国は、ORでも、さぞ……?
講師:
ところが ── ここが今日の話につながる。
銭学森が中国で打ち立てた学問は、ORそのものというより、その親戚にあたる 「工程制御論(engineering cybernetics, 工学的サイバネティクス)」 だ。
システムを制御し、最適に動かす、という発想だね。
中国でも、こうした「システムを科学的に最適化する」流れは確かに芽生えた。
だが、英米のように、戦時から戦後にかけてORが産業界の隅々まで一気に広がった、という形には、すぐにはならなかった。
本格的な普及は、もっと後 ── 改革開放を経てからになる。
学部生:
同じ戦争を戦っていても、「兵器を作る科学」と、「兵器の使い方を最適化する科学」は、別物だったんですね。
そして、後者を組織として育てられたかどうかで、差がついた、と。
講師:
まさに、その核心を突いた。
ORの本質は、新しい兵器それ自体ではなく、「すでにあるものを、データにもとづいて、いかに最善に使うか」 という姿勢のほうにある。
その姿勢を、国家の規模で組織的に続けられた国 ── 主に英米とその陣営 ── が、戦後、そのままORの中心地になっていった。
そして戦後は、敵味方の区別なく、世界中の産業界が、この"運用の科学"を受け継いでいったんだ。
学部生:
ORがイギリスで産声を上げたときの同時代の各国の状況と、戦後、ORがそれぞれの国々に広まっていった歴史について、よくわかりました。ありがとうございました。
ところで、このORですが、機械学習に比べると、大学でも出版される本でも、オンラインメディアやQiitaの記事でも、いまひとつ影が薄い印象があります。
深層学習を含む機械学習は、いまや知らない人を探す方が大変ですが、ORは、知っている人を探す方が大変。
それも、具体的に手法の詳細や歴史を語れる人は、本当に少ない印象を受けます。これはなぜなのでしょうか?
講師:
鋭い、そして正直な観察だ。
たしかに、その通りの現実がある。
理由は、いくつか思い当たる。順に話そう。
理由その1
ORは、最初から"裏方"だったことだ。
さっき話したように、ORは軍の作戦や、企業の物流・生産計画といった、現場の意思決定の裏側で働いてきた。
航空会社の予約システムや、宅配便のルート、工場の生産ラインの裏で、ひっそりと最適化を効かせている。
うまくいけばいくほど、表からは見えない。「気づかれない」ことが、いわば仕事のうちなんだ。
一方の機械学習は、画像を生成し、文章を書き、人と会話する ── 成果が、目に見えて、派手だ。
注目の集まり方が、そもそも違う。
理由その2
売り物になった相手が違うことだ。
ORは長らく、企業の経営層や、軍、政府といった「組織」に向けた、専門家のための道具だった。
コンサルティングや業務システムの中に溶け込み、個人の手元には降りてこなかった。
ところが機械学習は ── とりわけこの十数年 ── pip install ひとつで、学生でも個人でも、すぐに動かせる。手元で試せることが、裾野を一気に広げた。
理由その3
"流行の波"の差だ。
機械学習、とくに深層学習は、2010年代に劇的な成功を立て続けに収め、巨大な投資と人材を吸い寄せた。
機械学習ブームと深層学習ブームの到来が、本・大学の講座・オンライン記事を、雪だるま式に増やした。
ORにも、かつて戦後すぐにそういう熱気の時代はあった。
だが、いまの機械学習ほどの社会的な大波には、なっていない。
学部生:
裏方で、組織向けで、いまは流行の中心ではない ── だから、影が薄く見える、と。
講師:
そういうことだ。
ただ ── 誤解しないでほしい。影が薄いことと、重要でないことは、まったく違う。
いまこの瞬間も、世界中の物流、金融、エネルギー、製造、交通 ── そのスケジュールと資源配分は、ORが支えている。
君が当たり前に受け取る荷物も、乗る飛行機の便も、その裏でORが効いている。目立たないが、社会の土台に深く埋まっているんだ。
そして ── ここからが、今日の本当の主題につながる。
近年、その機械学習とORが、「最適化」という一点で、再び出会いはじめている。
講師:
具体例を、いくつか挙げよう。
どれも、君のような機械学習を学ぶ人間には、馴染みやすい話のはずだ。
1点目は、「ニューラル組合せ最適化」 だ。
さっき話した巡回セールスマン問題や、配送ルート問題(VRP)
── あの「組合せ最適化」の難問を、ニューラルネットや強化学習で解こうという研究が、いま盛んに進んでいる。
ORの古典的な難問に、機械学習が正面から挑んでいるわけだ。
学部生:
ということは ── ORは、いずれ機械学習に取って代わられてしまうのですか?
ORの難問を、機械学習が解けるようになるのなら。
講師:
それは、多くの人が抱く疑問だ。
だが、結論から言うと ── 「単純に代替される」とは、考えられていない。むしろ、両者は補い合う関係にある、というのが、いまの研究者のおおむね一致した見方 だ。
理由を、2つ話そう。
1つめ。
機械学習による解法には、ORが積み上げてきた"保証"が、まだ足りない。
伝統的なORの手法には、「この答えが、本当に最適である」とか「最適解から、せいぜいこれくらいしかズレていない」という、**数学的な裏づけ(最適性の保証)**がある。
一方、ニューラルネットが出す答えは、速くて、そこそこ良い
── だが「なぜそれが良いのか」「どれだけ良いのか」を、厳密には保証しにくい。
物流網全体の予算や、人命に関わる計画を任せるとなれば、この"保証"の有無は、決定的に重い。
2つめ。
実際の使われ方を見るとは、ORと機械学習が再会した様相は、「競合」ではなく「分業」だ。
さっき話した例を思い出してくれ
── 機械学習で需要を予測し、その予測をORの最適化に渡して解く。
あるいは、機械学習がORソルバーの勘どころを助けて、速くする。
どちらも、機械学習がORを置き換えているのではなく、互いの手を取り合っている。
機械学習は"勘と速さ"を、ORは"厳密さと保証"を持ち寄る、という 分業 だ。
学部生:
速くて柔軟な機械学習と、厳密で保証のあるOR
── 得意なものが違うから、片方がもう片方を消す、という話ではないんですね。
講師:
その通りだ。
だからこそ、いま面白いのは「どちらが勝つか」ではなく、「この二つを、どうきれいに組み合わせるか」のほうなんだ。
そして ── まさにその「組み合わせ方」を、思いつきや力技ではなく、数学的にきちんと記述するための言葉が要る。それが、今日これから話す圏論だ、というわけだ。
2点目は、「予測してから最適化する(predict-then-optimize)」という枠組みだ。
これは、具体例で考えるのが、いちばん分かりやすい。
たとえば、コンビニの発注を考えよう。
「明日、どの商品が、何個売れるか」
── これは、誰にも正確には分からない。
だが、過去の売上や天気、曜日のデータを使えば、機械学習が「明日はおにぎりが80個売れそうだ」と予測できる。
ところが、予測はゴールではない。
本当に決めたいのは「では、何を、何個、いつ発注すればいいか」だ。
これは、在庫スペースや予算、配送の都合という制約の中で、コストを最小にする
── まさに、ORの最適化問題だ。
そこで、こうつなぐ。
まず機械学習で「需要」を予測し、その予測された数字を、ORの最適化問題に"入力"として渡して、最適な発注計画を解く。
学部生:
なるほど。機械学習が「未来を当てる」係で、ORが「当てた未来をもとに、最善の手を決める」係なんですね。
講師:
まさに、その通りだ。
「予測」は機械学習の十八番、「最適化」はORの十八番。
その2つを、予測 → 最適化という1本の流れ(パイプライン)につなぐ
── それが「予測してから最適化する」だ。
配送ルートでも同じだよ。機械学習で「各区間の所要時間」を予測し、その予測をもとに、ORが最短ルートを最適化する、というふうにね。
3点目は、機械学習で、ORのソルバーそのものを速くする動き だ。
ORの定番アルゴリズム(たとえば分枝限定法)の中で、「次にどの選択肢を調べるか」という勘どころを、過去のデータからニューラルネットに学習させて、最適化を高速化する。
ベテラン棋士の大局観を、機械学習で再現するようなものだ。
学部生:
「OR の問題を機械学習で解く」
「機械学習で予測してからORで最適化する」
「機械学習でORを速くする」
── 方向は違えど、どれも、2つが手を取り合っていますね。
講師:
その通りだ。
この流れは、いまや一つの研究領域になっていて、2021年には、深層学習の大家のひとり Yoshua Bengio たちが、「機械学習と組合せ最適化」を体系的に展望する総説を、OR の主要誌に発表しているほどだ。
代表的な論文を、いくつか挙げておこう。興味があれば、あとで覗いてみるといい。
口火を切ったのは、Vinyals たちの「Pointer Networks」(2015)だ。
巡回セールスマン問題のような「順番を決める」問題を、ニューラルネットで解いてみせた、先駆けの仕事だね。
翌年、Bello たちが「Neural Combinatorial Optimization with Reinforcement Learning」(2016)で、これを強化学習と組み合わせた。「最適な順番を、報酬を頼りに自分で学ばせる」という発想だ。
そして、いまや定番として引かれるのが、Kool たちの「Attention, Learn to Solve Routing Problems!」(2019)── 君も名前を知っているだろう、あの「注意機構(attention)」を使って、配送ルート問題を解く手法だ。
そのうえで、この領域全体を見晴らしよく整理したのが、さっき触れた Bengio たちの総説(2021) だ。
「機械学習と組合せ最適化」という分野の地図を描いた一本で、ORの主要誌に載っている。
最初に読むなら、この総説から入るのがいい。
学部生:
先駆け、強化学習との融合、注意機構、そして総説 ── 10年足らずで、ひとつの分野が立ち上がったんですね。
講師:
その通り。
この速さこそ、いまORと機械学習の境界で起きていることの、熱量を物語っているよ。
派手な機械学習と、地味な OR が、「最適化」を蝶番(ちょうつがい)にして、がっちり噛み合いはじめている。
そして、今日これから話す圏論のアプローチは、この二つの再会を、さらに根っこのところで、同じ数学の言葉で捉え直そうとする試みなんだ。
具体例の話は、ここまで。いよいよ本題に入ろう。
派手な機械学習と、地味なOR。
この2つを、圏論という共通の言葉で、同じ地形の上に並べて眺めよう ── というのが、まさにこれから話すことなんだ。
学部生:
影の薄かったORが、機械学習と同じ土俵に上がってくる ── そういう話なんですね。楽しみになってきました。
もう1つ質問があります。
さきほど、「近代 OR の出発点」とおっしゃいましたね?
ということは、近代 OR ではない、古典的・前近代の OR もあるんですか?
講師:
鋭いところを突くね。
はっきりした境界線があるわけではない。
だが、「組織や資源の使い方を、数や理屈で考える」という営み自体は、もっと古くからあった。
たとえば、第一次世界大戦の頃には、対潜水艦戦や船団護衛の規模を、数理的に論じる試み がすでにあった。
さらにさかのぼれば、生産や在庫の管理を数式で扱う研究 もある。
物流・在庫の古典として名高いのが、フォード・W・ハリス(Ford W. Harris)が1913年に示した「経済的発注量(economic order quantity, EOQ)」 だ。
「一度にどれだけ仕入れれば、保管費と発注費の合計が最小になるか」を、たった一本の式で与えてみせた ── まさに、君が後で出会う 在庫管理の原型 だね。
ここで、念のため言い添えておくと、この Ford Whitman Harris(フォード・ホイットマン・ハリス)は、安価で手ごろな大衆車「T型フォード」の大量生産と大量販売で大成功を収めた、あのフォード自動車の創業者 ヘンリー・フォード(Henry Ford)とは、まったくの別人だ ── 「Ford」が名前か苗字かの違いで、紛らわしいがね。
こうした散発的な試みを、仮に 「前近代の OR」 と呼ぶなら ── それらは、個々の問題を、その場その場で解いたものだった。
これに対して、さっきのボードジー研究所で起きたことは、質が違う。
「現場の作戦(operations)そのものを対象に、科学者チームを常設し、組織的・継続的に分析する」 という、ひとつの方法論・職業として確立 した。
ここが分水嶺だ。
だから、あれを 「近代 OR の出発点」 と呼ぶ。
学部生:
単発の工夫ではなく、「科学的に意思決定を分析する」という営みが、ひとつの分野として根を張った瞬間、というわけですね。
たしかイギリスは、第二次世界大戦中に、ドイツ軍のエニグマ暗号を解読するために、コンピュータの父と言われるチューリングを含む数学者を、別の秘密の研究施設に動員してもいましたよね。
イギリスは、高度に抽象的な数学理論を専門とする研究者を、戦争を勝ち抜くという国家レベルの実用的な問題解決に、組織的に動員する歴史があるんですね。
講師:
まさに、その通りだ。よく知っているね。
君が言っているのは、ロンドン北西の ブレッチリー・パーク(Bletchley Park)── 政府暗号学校(Government Code and Cypher School)が置かれた、暗号解読の一大拠点だ。
アラン・チューリング(Alan Turing)は、ここでドイツ海軍のエニグマ暗号の解読を担う部門(Hut 8)を率い、解読を支える電気機械式の装置「ボンブ(Bombe)」の設計に深く関わった。最盛期には、数学者・チェスの名手・言語学者まで、およそ1万人が働いていたという。
同じ大戦のさなか、かたやボードジー研究所で、レーダー運用を最適化する OR が生まれ、片や ブレッチリー・パークで、抽象数学を武器に暗号が破られていた。
君の見立ては正しい。
「ふだんは浮世離れして見える、純粋数学や論理の専門家を、国家の死活問題に組織的に動員する」 ──
これは、当時のイギリスが、際立ってうまくやってのけたことだ。
そして、その伝統の上に、今日の主役である応用圏論の研究者たちも、地続きに立っている ── そう考えると、なかなか感慨深いものがあるだろう。
学部生:
ちなみに、ORの研究チームと、チューリングも参加していたエニグマ暗号解読チームは、互いに、知的なやりとりはしていたのですか?
両者のチームが取り組んでいる数理的な解析手法が、互いに相手のチームの問題解決に役立つ突破口を開く可能性もあったわけですよね?
難問に取り組んでいるときは、どの数学や、どの物理学・化学・生物学・工学の理論の枠組みや発想や視座・視点が、問題解決の糸口、つまり、ブレイクスルーになるのかは、最後までわかりませんからね。
それと、さきほどから 「応用圏論」 という怖い言葉が繰り返し出てきます。
前の記事でもお伝えしましたが、僕はまだ 圏論 をちゃんと専門的に学んでいません。
なので、「応用」という形容詞まで付いた「応用圏論」 の議論に、僕でもついていけるように、この後の対話ではフォローしてくださると大変助かります。
講師:
2つとも、大切な問いだ。
順に答えよう。
まず、2つのチームの交流について。
ここは、正直に言うと ── 活発に交流していた、とは言えない。
むしろ逆だ。
暗号解読を担ったブレッチリー・パークは、戦時下で最も秘匿性の高い拠点のひとつ だった。
職員は機密保持法に縛られ、施設の内部ですら、隣の部屋が何をしているかを知らされない「区画化(compartmentalization)」が徹底 されていた。
エニグマを破った事実そのものが、戦後30年近く、1970年代まで伏せられていたほどだ。
だから、レーダーの運用方法を分析するORチーム と、暗号解読チーム が、互いに手法を持ち寄って自由に議論する ── そうした横のつながりは、当時の秘密主義のもとでは、ほとんど望めなかった。
学部生:
そうか……知的な交流以前に、そもそも「隣が何をしているか」すら、秘密だったんですね。
講師:
そういうことだ。
ただ ── 君の見立てそのものは、まったく正しい。
「どの分野の発想が、問題解決の糸口になるかは、最後まで分からない」 ── これは、研究という営みの核心を突いている。
実際、暗号解読もORも、数学・統計・物理・工学の発想を、分野の垣根を越えて動員したからこそ成果を出せた。
当時の秘密主義が、その学問分野の横断を、「組織の壁の内側」に閉じ込めてしまったのは、いま振り返れば惜しいことだったかもしれない。
そして、まさにその「分野の垣根を越えて、共通の発想で問題を解く」という精神を、平時の数学として、最も徹底して追い求めている のが ── 今日の主役、応用圏論なのだ。皮肉なほど、君の問いと地続きの話だよ。
学部生:
あ、そこにつながるんですね。
講師:
つながる。
そして、2つ目の頼みごと
── 「圏論を専門に学んでいない自分でも、応用圏論の話についていけるように」
── これは、引き受けた。約束しよう。
この記事では、「圏」「関手」「オペラッド」といった言葉は、出てくるたびに、必ず日常的なたとえに翻訳してから使う。
記号や定義を覚える必要もない。
前回の対話で、「モノイダル圏とは、縦につなぐ・横に並べる世界のことだ」とかみくだいたのと、同じ要領で進める。
難しく感じたら、それは君の理解力の問題ではなく、僕の翻訳がまだ足りない、という合図だと思ってくれ。遠慮なく立ち止まろう。
学部生:
やっと安心できました。
ところで、このORは、具体的には、どのような問題を解くのですか。
講師:
君の実務にも近いものばかりだ。
配送、在庫、生産計画 ── すぐにでも具体例を挙げていきたいところだが、その前に、ひとつだけ土台になる言葉をはっきりさせておきたい。「最適化」だ。
ORが解くのは、煎じ詰めれば、すべて「最適化問題」だ。
ところが、この「最適化」という言葉、ふだん何気なく使っているわりに、いざ「何のことか」と問われると、答えに詰まる人が多い。きちんと説明できるだろうか。
学部生:
言われてみますと……「いちばん良くすること」くらいの、漠然としたイメージしかありません。
講師:
それでも、出発点としては悪くない。もう少しだけ、輪郭をはっきりさせよう。
最適化(optimization) とは、ひとことで言えば ──
「守らなければならない条件のもとで、ある"良さ"を測る数値を、いちばん良く(最大、または最小に)する選び方を見つけること」
だ。そして、どんな最適化問題も、必ず次の 3つの部品 から成り立っている。
-
① 決めたいこと(変数, variable) ── 自分が選べるもの。「どの経路を通るか」「何個仕入れるか」「価格をいくらにするか」など。
-
② 守るべき条件(制約, constraint) ── 勝手は許されない、という縛り。「予算は100万円まで」「トラックは10台まで」「在庫は倉庫に入る分だけ」など。ビジネスの現場や、国や自治体の政策、それに家庭や個人の暮らしの中の「最適化問題」では、なんらかの制約条件が常に付きまとう。この制約条件の中で、課題を解決しないといけない。
- ③ 良さのものさし(目的関数, objective function) ── 何をもって「良い」とするか。「コストを最小に」「利益を最大に」「移動距離を最短に」など。
この3つ ── 変数・制約・目的関数 ── がそろって、はじめて「最適化問題」になる。
ORとは、現実の意思決定を、この3つの部品の形に翻訳し、解く営みだ、と言ってもいい。
学部生:
あ、それは ── 機械学習の「損失関数を最小化する」のと、まったく同じ形ですね。損失関数が目的関数で、モデルのパラメータが変数で……。
それに、Excelのソルバー(Solver)機能でも、その3つの入力欄があります。そうか、あのExcelもソルバーも最適化計算をする機能でしたね。そう考えると身近に感じてきました。
講師:
まさに、そこに気づいてほしかった。
機械学習の学習も、れっきとした最適化の一種だ。
「損失(目的関数)を、パラメータ(変数)を動かして、最小にする」
── 君は、コードを書いたり、Excelのソルバー機能を立ち上げるとき、この3つの部品と向き合っている。
だから、「最適化」は、君にとって決して縁遠いものではない。
ORは、その最適化 を「現実のビジネスや社会の意思決定」へ向けた分野だ
── そう捉えてくれればいい。
では、そのORが扱う代表的な問題を、ひとつずつ、身近なたとえとともに見ていこう。
名前はいかめしくとも、中身は、いずれも君の日常に根ざしたものばかりだ。
講師:
では、ORが扱う代表的な問題を、これから順に挙げていこう。
線形計画、組合せ最適化、ネットワークフロー、待ち行列、在庫管理
── いずれも名前は仰々しいが、ひとつずつ、身近なたとえに引きつけていけば、何も恐れることはない。
学部生
① 線形計画、② 組合せ最適化、③ ネットワークフロー、④ 待ち行列、⑤ 在庫管理
── 全部で5つですね?
キーワードの解説をお願いします。
講師:
そうだね、全部で5つある。
まずは、最も基本的なものからだ。
① 線形計画(せんけいけいかく / linear programming, LP)
たとえ話で考えよう。君がカフェを営んでいて、コーヒーとケーキを売るとしよう。
線形計画のイメージ図
材料の制約が"作れる範囲(多角形)"を決め、その角のどこかに利益最大の点がある。」*
- コーヒー1杯の利益は200円、ケーキ1個は300円(← 良さのものさし)
- でも、豆も小麦粉も在庫に限りがある(← 守る条件)
- 1日に作ることができる数にも、上限がある(← 守る条件)
このとき、「コーヒーを何杯、ケーキを何個作れば、利益が最大になるか」を解くのが線形計画だ。
「線形」というのは、利益も制約も足し算とかけ算だけ(直線的な関係)で表される、という意味だ。
学部生:
材料の制約の中で、利益が最大になる組み合わせを探す。
素朴に見えますが、まさに実務そのものですね。
講師:
そのとおり。工場の生産計画、栄養を満たす最も安価な献立(栄養問題)、輸送計画 ── 世界中で日々、膨大な規模で解かれている。
② 組合せ最適化(くみあわせさいてきか / combinatorial optimization)
講師:
次は、選択肢が**とびとび(組み合わせ)**になる最適化だ。
最もよく知られたたとえは「配達員の巡回」── いわゆる**「巡回セールスマン問題」**だ。
組合せ最適化のイメージ図
家を回る順番は無数にあり、その中から最短ルートを賢く選ぶ。軒数が増えると組み合わせは爆発する。」*
君が宅配ドライバーで、10軒の家に荷物を届けるとしよう。
どの順番で回れば、走る距離が最短になるだろうか。
学部生:
順番をすべて試せばよい……いえ、しかし、順番の組み合わせは、爆発的に増えますね。
講師:
そこが問題の本質だ。
10軒なら順番は約36万通り。20軒ともなれば、天文学的な数にふくれあがる。総当たりでは、とうてい解けない。
この「膨大な組み合わせの中から、最善のものを賢く選び出す」のが、「組合せ最適化」だ。
配送ルート、勤務シフトの作成、限られた荷物入れに何を詰めるか(ナップサック問題)── いずれも、組み合わせの爆発との戦いだ。
学部生:
競技プログラミングで、ナップサック問題は見たことがあります。あれが OR だったのですね。
そういえば、少し話が脱線しますが ── 量子コンピュータには、「量子ビット方式(ゲート方式)」のほかに、「焼きなまし法」を使う「量子アニーリング方式」というものがありますよね。
たしか、カナダの D-Wave という会社が、もう10年以上前に、その量子アニーリング方式のマシンを世界で初めて商用化した、とニュースになっていた気がします(兄貴が騒いでいたから覚えています)。
そして、その方式は、まさにこの「組合せ最適化」問題を解くのに長けている、と聞いたことがあります。
この記事で OR や最適化問題のイメージをつかめると、こういう話題にも、これまでより親近感がわいてきますね!
講師:
よく覚えていたね。そのとおりだ。
量子アニーリングは、組合せ最適化を「エネルギーが最小の状態さがし」に置き換えて解く方式で、配送ルートやスケジューリングといった問題と相性がいい。
今日の主題(圏論で最適化を組み立てる)とは別の道筋だが、「最適化こそが、応用の最前線で引っ張りだこだ」という点では、地続きの話だよ。
③ ネットワークフロー(network flow)
講師:
「ものが、網(ネットワーク)の上を流れる」状況の最適化だ。
これは今日の主役となるので、しっかり押さえてほしい。
ネットワークフローのイメージ図
水源から各家庭へ、パイプ(経路)を通って流れる。物流・通信・電力もすべて同じ形。
水道管の網を思い浮かべてほしい。
水源から各家庭へ、パイプを通って水が流れる。
それぞれのパイプには、「流せる量の上限」や「通すためのコスト」がある。
このとき、「どのパイプに、どれだけ流せば、最小のコストで全員に届くか」を解くのが、ネットワークフローだ。
学部生:
水だけでなく、物流(荷物)、通信(データ)、電力(電気)も、同じ形ですね。
講師:
そのとおり。
「供給する場所」「消費する場所」「つなぐ経路」さえあれば、何であれ、この形になる。
第3幕で扱う「倉庫から店舗へ、最小のコストで運ぶ(最小費用流)」は、まさにこのネットワークフローの代表例だ。
この記事では、この問題を、圏論によって部品化 していく。
④ 待ち行列(まちぎょうれつ / queueing theory)
講師:
これは、その名のとおり、「行列・混雑」を数理モデルで分析する分野だ。
スーパーのレジを思い浮かべてほしい。
レジを何台開ければ、客を待たせすぎず、かつ店員を持て余さずに済むか。レジが少なければ行列ができ、多すぎれば人件費が無駄になる。
このちょうど良い均衡を、確率を用いて分析する。
待ち行列のイメージ図
レジ(やサーバ)が少なすぎれば行列、多すぎれば無駄。ちょうど良い台数を確率で見つける。
学部生:
あ、サーバの負荷設計と同じですね。
リクエストの到着間隔と処理時間から、サーバを何台立てるかを決める……。
講師:
まさに、そのとおり。
コールセンターの回線数、サーバの台数、窓口の数 ── 「到着」と「処理」のタイミングが読めない中で、混雑を抑える設計に用いる。
エンジニアである君には、最も馴染み深い例かもしれないね。
⑤ 在庫管理(ざいこかんり / inventory control)
講師:
最後は、「いつ、どれだけ仕入れるか」の最適化 だ。
コンビニの棚を思い浮かべてほしい。
仕入れすぎれば、売れ残りや保管コストで損をする。仕入れが少なすぎれば、品切れを起こし、売る機会を逃す。
このちょうど良い発注のタイミングと量を決めるのが、在庫管理だ。
在庫管理のイメージ図
持ちすぎれば保管コスト、少なすぎれば品切れ。需要が読めない中で、ちょうど良い発注を決める。
学部生:
多すぎても少なすぎても損をする、という板挟みですね。
講師:
そのとおり。
需要は読みきれず、届くまでに時間もかかる。
その不確実さの中で、「欠品による損」と「持ちすぎによる損」の均衡を取る。製造業の部品調達から、君が日々使うクラウドのリソース確保まで、考え方は同じだ。
学部生:
配送ルートや在庫は、まさに実務でぶつかる話です。
名前は難しそうでしたが、中身は、いずれも身近なものばかりだったのですね。
講師:
そのとおり。前回も触れたが、OR は 「現場の道具」 だ。
宅配大手の UPS が、配送ルート最適化システム ORION をORと機械学習で構築し、約10億ドルを投じて全米5万台超のトラックに展開、年間およそ1億マイルの走行と、3〜4億ドルのコストを削った
── これは前回も話した実例だ。
航空会社の乗務員スケジューリング、工場の生産計画、収益管理(ダイナミックプライシング)
── いずれも、OR が屋台骨となっている。
学部生:
ゲーム理論が、「複数のプレイヤーの駆け引き」を扱うのに対して、ORは、「ひとりの意思決定者が、資源の配分を最適化する」というイメージ でしょうか。
講師:
良い整理だ。おおむね、そのとおりだ。
ゲーム理論が**「複数主体の戦略的相互作用」を扱うのに対し、
OR の中心は「単一の目的関数を、制約のもとで最適化する」**こと。
もちろん両者は地続きで、重なる部分も多いけれどね。
そして今日の話は
── そのORの中心にある 「最適化問題」そのものを、圏論によって部品化できるか 、という挑戦だ。
第2幕 ── なぜ「部品化」したいのか:巨大な最適化問題の壁
学部生:
先生、しかし、最適化問題は、もう Python のライブラリで難なく解けますよね。
scipy.optimize や、PuLP、OR-Tools。
最近では、数式に近い記法で書ける CVXPY や、大規模なモデリング向けの Pyomo もよく使われています。
CVXPY にいたっては、cvxpylayers を使えば、PyTorch や JAX のニューラルネットの中に「最適化の層」として組み込むこともできると聞きます。
これだけ道具がそろっているのに、なぜ、わざわざ圏論などを持ち出す のですか?
講師:
もっともな疑問だ。
規模の小さい問題であれば、既存のソルバで十分だ。
圏論は要らない。
問題が生じるのは、問題の規模が大きくなり、かつ、それが「部品の組み合わせ」でできているとき だ。
前回の第1幕を思い出してほしい。
伝統的なゲーム理論 は、規模の大きなゲームを、「一枚岩(モノリシック)」 として一度に書き下ろそうとして、行き詰まった。
実は、大規模な最適化問題もまた、まったく同じ壁 にぶつかる。
学部生:
最適化問題も、一枚岩にすると行き詰まる 、と。
講師:
そのとおり。例で考えよう。
全国に、何千もの 倉庫・配送拠点・店舗があるサプライチェーンの、最適な物流計画を立てたいとする。
これを、一つの大規模な最適化問題 として丸ごと書き下ろすと、変数も制約も天文学的な数になる。
ソルバに委ねても、解けないか、解けても時間がかかりすぎる。
学部生:
しかし現実には、全国をひとかたまりにするのではなく、「地域という単位」や「拠点という単位」に分けられる構造がありますよね?
講師:
そこが重要なポイントだ。
現実の大規模な問題は、たいてい、階層構造や部品構造を持っている。
「地域 $A$ の物流」「地域 $B$ の物流」という部品があり、それらが「全国の幹線」でつながっている ── そうした、入れ子と接続の構造 だ。
ところが、問題を一枚岩のベクトルと行列に潰してソルバに渡した瞬間、その構造は消えてしまう。
ソルバは「ただの巨大な変数の塊」として、構造を知らずに 解こうとする。
学部生:
もったいない話ですね。
構造が分かっていれば、もっと賢く解けそう なのに。
講師:
まさに、それが、今日の話の動機 だ。
「部品の構造を保ったまま問題を組み立て、その構造を使って賢く(分散的に)解く」
── これを、圏論の言葉 できちんとやろう、という研究が進んでいる。
そして、これは前回の合成的ゲーム理論と、まったく同じ精神 なんだ。
- 前回:大きなゲームを、プラグから組み立て、一部を差し替えても全体を作り直さない
- 今回:大きな最適化問題を、部品から組み立て、構造を使って分散的に解く
学部生:
「規模の大きなものを、構造を保ったまま、部品から組み立てる」── 同じ思想ですね。
講師:
そのとおりだ。では、その「部品」を圏論でどう表すのか。その道具立てを見ていこう。
第3幕 ── 手を動かす:小さな物流ネットワークで実感する
上図
< 最小費用流問題の小さな例(左)と、それを「部品」として全国規模につなぐイメージ(右)。
倉庫A・Bから店舗C・Dへ、コスト最小の経路は A→C(3)と B→D(2)で、合計5。同じ形の部品が、関東・関西・九州……と地域ごとにあり、全国の幹線でつながって、巨大な物流網になる。*
学部生:
正直なところ、「一枚岩では行き詰まる」「部品化したい」というのは、まだ言葉として分かっただけで、実感がわきません。
もう少し、具体的な数字で見せていただけませんか。
講師:
そうだね。
では、電卓で追える程度の小ささの物流問題を、一緒に組み立ててみよう。OR の入口に最も近い例だ。
こういう状況を考える。
倉庫が2つ(A・B)、店舗が2つ(C・D)ある。倉庫から店舗へ、商品を運ぶ。それぞれの経路には、1個あたりの輸送コストがかかる。
- $A → C$ :3
- $A → D$ :8
- $B → C$ :5
- $B → D$ :2
たとえば、
「店舗 $C$ と $D$ が、それぞれ商品を1個ずつ欲しい」
「倉庫 $A$ と $B$ には、それぞれ十分な在庫がある」
としよう。
総輸送コストが最小になるように、どの倉庫から、どの店舗へ運ぶかを決めたい。
学部生:
これくらいなら、暗算でできそうです。
$C$ へは安いほうの $A →C$(コスト3)、
$D$ へは安いほうの $B → D$ (コスト2)
で運べば、合計5ですね。
講師:
そのとおり。最小費用は5だ。
これが、OR でいう「最小費用流問題(minimum cost network flow)」の、最も小さな例だ。
「ものを、どの経路で、どれだけ流せば、コストが最小になるか」を解く問題だね。
学部生:
思いのほか、易しいものでした。
講師:
そう、規模が小さいうちはね。
ここからが本題だ。
この問題を、ソルバに渡すために数式の形で書き下ろすと、どうなると思う?
それぞれの経路に「何個流すか」という変数を置く。
$A → C$ に流す量を$x_{AC}$、
$A → D$ を $x_{AD}$、
$B → C$ を $x_{BC}$、
$B → D$ を $x_{BD}$
とする。
すると、
-
最小化したいもの:$3x_{AC} + 8x_{AD} + 5x_{BC} + 2x_{BD}$(総コスト)
-
守るべき制約:「C には合計1個届く」$x_{AC} + x_{BC} = 1$、「D には合計1個届く」$x_{AD} + x_{BD} = 1$、ほかに「流す量はマイナスにならない」など
数式は読み飛ばして構わない。
肝心なのは、その形だ。
変数の列、コストの係数の列、そして、制約をまとめた表(行列) が現れる
── これが、最適化問題を「一枚岩」として書き下ろした姿だ。
学部生:
変数が4つ、制約が数本。まだ、ささやかな規模ですね。
講師:
そのとおり。ところが、現実は、この規模では終わらない。
倉庫が全国に500、店舗が1万あったら、経路の変数は単純計算で500万。
さらに「トラックの積載上限」「時間帯」「商品の種類」まで入れると、変数も制約も、あっという間に数千万〜億のオーダーになる。
この巨大な行列を、ソルバに丸ごと渡す── これが「一枚岩で解く」ということだ。
解けないか、解けても時間がかかりすぎる。
第2幕で述べた壁が、ここで具体的な数字となって現れる。
学部生:
先ほどの暗算が、にわかに天文学的な規模になりましたね……。
講師:
だが、ここで思い出してほしい。現実の物流網には、構造がある。
さっきの $A・B・C・D$ を、「関東地方の小さな物流」 だとしよう。
同じように、「関西地方の物流」「九州地方の物流」という、似た形の部品がいくつもある。
そして、それらが 「全国の幹線輸送」 でつながっている。
- 関東の部品:地域内の倉庫と店舗のフロー
- 関西の部品:同じく地域内のフロー
- 九州の部品:同じく地域内のフロー
- それらを結ぶ:地域間の幹線
学部生:
あ。先ほどの $A・B・C・D$ の小さな問題が、ひとつの部品となり、それがいくつも集まって全国規模になる、というわけですね。
講師:
まさに、そのとおりだ。
全国の物流問題は、地域ごとの小さなフロー問題(部品)を、幹線でつないだものとして捉えられる。
ところが ── さっきのように全部を一枚の巨大な行列に潰してソルバに渡すと、この「地域ごとの部品構造」は消えてしまう。
ソルバは、関東も関西も九州も区別のつかない、ただの巨大な変数の塊として 解こうとする。
学部生:
もったいない話です。
「関東は関東で解いて、関西は関西で解いて、あとでつなげばよいのでは」 と言いたくなります。
講師:
それこそが、今日の記事の核心だ。
君はいま、この記事の主題を、自分の言葉で言い当てた。
「小さな部品(地域のフロー問題)を、構造を保ったまま組み立てて、部品ごとに解いて、合成する」
これを、思いつきや経験則によってではなく、圏論の言葉で、数学的に正しく行おう ── というのが、これから紹介する研究だ。
先ほどの A→C:3、B→D:2 という小さな例が、その出発点となる。
学部生:
これから現れる難しそうな話に、心の準備ができました。
講師:
それが狙いだ。「部品」という言葉が、いまや君にとって、抽象論ではなく、あの A・B・C・D の小さなネットワークそのものになった。
この実感を保ったまま、道具立てへ進もう。
第4幕 ── 道具立て① 装飾コスパンとハイパーグラフ圏
学部生:
前回は「プラグ($X, Y, R, S$ の4つの入出力を持つ箱)」が部品でした。
今回の部品は、何にあたるのですか。
講師:
今回の主役は、装飾コスパン(decorated cospan) と、それが作る ハイパーグラフ圏(hypergraph category) だ。
名前はいかめしいが、その心は素朴だ。
まず、「開いたシステム(open system)」 という考え方から入ろう。
学部生:
開いたシステム ── 前回の「開いたゲーム(Open Games)」と、言葉が似ていますね。
講師:
まさに兄弟と言ってよい。発想は共通している。
閉じたシステムは、外とやりとりしない、それ単体で完結したもの。
開いたシステムは、「入力の境界」と「出力の境界」を持っていて、そこで他のシステムとつなげるもの。
電気回路を思い浮かべてほしい。
一つの回路部品には、端子(ターミナル) がある。端子と端子を結線することで、部品をつなぎ、大きな回路を組み上げる。
学部生:
ブレッドボードに部品を挿して、ジャンパ線でつなぐようなものですね。
講師:
まさに、そのイメージだ。
その「端子でつなぐ」操作を、数学的にきちんと表したものが、コスパン(cospan) だ。
コスパンとは、おおまかに言えば、
「左の境界 $→$ 真ん中の本体 $←$ 右の境界」
という形をした図式のこと。真ん中が部品の中身で、左右が「外とつなぐための差し込み口」だ。
学部生:
真ん中が本体、左右が端子。なるほど、分かりやすいです。
講師:
そして、ここで 「装飾(decorated)」 が効いてくる。
コスパンの真ん中(本体)に、どんな中身が乗っているかを指定するのが「装飾」だ。
- 電気回路なら、「ここに抵抗が、ここにコンデンサがある」という情報。
- 最適化問題なら、「ここにこういう目的関数と制約がある」という情報。
つまり、
-
コスパンの骨格が「どこが入力で、どこが出力で、どうつなぐか」を表し、
- 装飾が「その部品の中身は何か」を表す。
学部生:
骨格(つなぎ方)と中身(装飾)を、分けて持つわけですね。
講師:
そのとおり。
これは、Brendan Fong が学位論文と論文「Decorated Cospans」(2015年)で整備した枠組みだ。
そして、こうやって部品を端子でつないでいける構造を、圏論では、ハイパーグラフ圏(hypergraph category) と呼ぶ。
「ハイパーグラフ」 とは、1本の線が、任意の数の入力と任意の数の出力を結べる グラフのことだ。
普通のグラフの線は2点を結ぶだけだが、ハイパーグラフの線(ハイパーエッジ)は「3個の入力を2個の出力につなぐ」といったことができる。
部品のつなぎ方として、きわめて自然だ。
学部生:
配線図そのものを、圏として扱える、ということですか。
講師:
そのとおり。
ネットワーク状の図(配線図)が、そのまま数学的な「合成できる部品の体系」になる。
これが、装飾コスパンとハイパーグラフ圏の核心 だ。
前回の「縦につなぐ・横に並べる」モノイダル圏を覚えているね。
ハイパーグラフ圏は、そのモノイダル圏に、「端子を自由に結線・分岐・合流できる」という追加の構造 が乗ったものだと思えばいい。
学部生:
ここまでで、「モノイダル圏」「ハイパーグラフ圏」「コンパクト閉圏」と、似た名前の"圏" が次々に現れて、頭が追いつかなくなってきました。
これらは、それぞれ別物なのですか。
どういう関係にあるのでしょうか?
講師:
良いところでつまずいた。ここで一度、立ち止まろう。
これらの圏は、互いに無関係な他人ではなく、親子・兄弟のような家系をなしている。
ここで、まずは結論を先取りして、これから説明していくそれぞれの圏の関係図を示そう。いまは細部が分からなくてかまわない。「土台の圏に、構造をひとつずつ足していくと、別名の圏になる」── その家系の流れだけ、頭に入れてほしい。
学部生:
土台の「圏」から始まって、構造を足すごとに、名前が枝分かれしていくんですね。
ところで、圏論の教科書を専門的に学んでいくとき、今回の対話(この記事)で登場するそれぞれの圏は、どれくらいの難易度の高い圏になるんですか?
圏論を学び始めると最初の方に登場するのか、
中級レベルまで勉強が進んだところでお目にかかるのか、
それとも、かなり上級の専門論文を読むところにまで理解が及んで、初めて出会う圏なのか?
どれなのでしょうか?
講師:
良い質問だ。学ぶ順序のイメージを持っておくのは、大事なことだ。
おおまかに言うと、こうなる。
まず、「圏」そのもの は、圏論を開いて、いちばん最初に出会う、土台中の土台だ。対象と射、その合成 ── ここは入門の冒頭だね。
次の 「モノイダル圏」 は、基礎(関手や自然変換あたり)をひととおり終えた、中級の入り口で現れる。
「テンソル積で横に並べる」という構造を扱いはじめる段階 だ。
「コンパクト閉圏」 は、そのモノイダル圏に双対を加えたもので、中級から、やや上級。
有限次元ベクトル空間や、量子情報の数学を学ぶあたりで出会うことが多い。
そして、「ハイパーグラフ圏」
── これは、正直に言うと、かなり専門的だ。
標準的な圏論の教科書には、まず出てこない。
近年の応用圏論の論文や専門書で、はじめてお目にかかる類の圏だ。
学部生:
では、僕は今日、入門の土台から、いきなり研究の最前線で使われる圏まで、一気に駆け上がっていることになる んですね!
講師:
そういうことだ。
だが、心配は要らない。
今日の目的は、これらを数学的に厳密に使いこなすことではない。
「こういう道具があって、こういう役割を果たす」という地図とイメージをつかむことだ。
だからこそ、最初に家系図で全体を見渡しておく。
厳密な定義は、いつか専門書で学ぶときの楽しみに取っておけばいい。
講師:
では、気を取り直して、ここからそれぞれの圏をひとつひとつ取り上げていくよ。
誰が、いつ、何のために考え出したのか ── その来歴を知れば、頭の中がすっきりと整理される。少し回り道になるが、付き合ってほしい。
まず大前提として、「圏(category)」とは、おおまかに言えば「ものたち(対象)と、もの同士をつなぐ矢印(射)と、その矢印を縦につなぐ合成」がそなわった世界のことだ。
前回も話したね。
これが土台となり、ここに「追加の構造」を足していくことで、さまざまな名前の圏になる。
① モノイダル圏(monoidal category)── すべての出発点
最初の追加構造が、「横に並べる」操作(テンソル積 $\otimes$) だ。
圏はもともと「矢印を縦につなぐ(合成)」を持っている。
そこに「ものを横に並べる」を足したのが、モノイダル圏だ。前回さんざん使った「縦につなぐ・横に並べる」が、まさにこれだ。
-
誰が・いつ?
1963年、フランスの Jean Bénabou(ジャン・ベナブー) が「掛け算つきの圏(catégories avec multiplication)」という名で原型を発表し、同じ年、アメリカの Saunders Mac Lane(ソーンダース・マックレーン) が、その整合性条件(前回の五角形・三角形公理だ)を正しく定式化した。
「モノイダル圏」という名前自体は、Mac Lane の盟友 Eilenberg(アイレンベルグ) が付けたとされる。
-
何のために?
もとは、純粋数学 ── ベクトル空間や群の表現論など、「ものを掛け合わせる(テンソルする)」構造を、統一的に扱うため だった。
ORや物流のためではなく、抽象代数の都合から生まれたんだ。
-
どこで会うか?
前回の QNLP、量子計算、そして今回の出発点。
「縦・横につなぐ」あらゆる場面の土台だ。
② コンパクト閉圏(compact closed category)── ワイヤーを曲げられる圏
モノイダル圏に、さらに、「双対(そうつい / dual)」 という構造を足したものだ。
むずかしく聞こえるが、絵で言えば単純で、「線(ワイヤー)を U 字に折り返せる」 ようになる、ということだ。
入力として来た線を、ぐるっと曲げて出力にしたり、その逆をしたりできる。
この折り返しを、「カップ(cup)」「キャップ(cap)」 と呼ぶ。
-
誰が・いつ:
1980年、Max Kelly(マックス・ケリー) と Miguel Laplaza(ミゲル・ラプラサ) が論文「Coherence for compact closed categories」で定式化した。
-
何のために:
もとはやはり抽象的な圏論の整合性の研究から。だが後に思わぬ場所で主役になる ── 量子力学・量子計算だ。2000年代、Abramsky と Coecke が「量子のもつれや観測を、このワイヤーの折り返しで描ける」ことを示し、量子情報の図式的な計算(君が前回見た QNLP の祖先)の土台になった。
-
どこで会うか:
量子計算、そして次に話すハイパーグラフ圏の"裏の顔"として。
③ ハイパーグラフ圏(hypergraph category)── 今日の主役
そして今日の主役だ。
これは、**「線を自由に分岐・合流できる」**圏 ── 一本の線を二股に分けたり、三本を一点に集めたりできる。
配線図やネットワークを描くのに、これ以上ないほど自然な構造だ。技術的には「各対象が特別可換フロベニウス代数という構造を持つ対称モノイダル圏」と言うが、絵の気持ちは「ワイヤーを好きにつなぎ替えできる」でいい。
- 誰が・いつ:
驚くことに、この圏は歴史上、少なくとも5回、別々の人が別の名前で"再発見"している。
最初は1987年、Carboni(カルボニ)と Walters(ウォルターズ) が「well-supported compact closed category(台のしっかりしたコンパクト閉圏)」という長い名前で導入した。
その後も、「dgs-モノイダル圏」「ダンジョン圏」など、てんでバラバラの名で何度も生まれ直した。
いまの覚えやすい名前「ハイパーグラフ圏」が定着したのは、ようやく2010年代 ── Kissinger(キッシンジャー) や、今日の主役 Fong(フォン)と Spivak(スピヴァック) たちによってだ。
-
何のために:
「部品を、端子でつなぎ合わせてネットワークを作る」状況を表すため。電気回路、データベース、信号の流れ図、そして今日の最適化ネットワーク
── 「つなぐ」が主役のあらゆる分野で、独立に必要とされ、何度も再発見された。だからこそ応用が広いんだ。
-
どこで会うか:
まさに今日の装飾コスパン。そして第3幕の物流ネットワークを「部品からつなぐ」舞台そのものだ。
学部生:
なるほど……
モノイダル圏という親 がいて、それに、「双対(折り返し)」を加えるとコンパクト閉圏、「自由なつなぎ替え(フロベニウス構造)」を加えるとハイパーグラフ圏になる、そんな 家系図 なのですね。
まるで、親クラスに機能を追加した子クラスをつくっていくJavaやPythonのクラス継承みたいですね!
講師:
その直感は、とても good だ。実際、近い。
親クラスを継承して、機能(メソッドやフィールド)を足した子クラスを作る
── その「土台を受け継いで、能力を付け足す」という感覚は、まさに今やっていることと同じだ。
モノイダル圏という親を継承して、「双対」という能力を足したのがコンパクト閉圏、「つなぎ替え」を足したのがハイパーグラフ圏。
「is-a」の関係で言えば、コンパクト閉圏は「モノイダル圏でもある」し、ハイパーグラフ圏も「モノイダル圏でもある」。
ただ、ひとつだけ、頭の隅に置いておいてほしい違いがある。
クラス継承は、ふつう**「一本の親」から派生するけれど、圏のほうは、複数の構造を自由に組み合わせて**継承できる。「双対も、つなぎ替えも、両方足す」といったこともできる。
むしろ**多重継承や、ミックスイン(mixin)**を思い浮かべたほうが、近いかもしれないね。
学部生:
なるほど。「モノイダル圏」というインターフェースを実装したうえで、欲しい機能をミックスインで足していく、というイメージですね。腑に落ちました。
講師:
まさに、その捉え方でいい。プログラミングで body に染み込んだ「継承」「インターフェース」「ミックスイン」── その感覚が、そのまま圏の家系を理解する助けになる。
君がすでに持っている道具で、新しい数学が読める。これこそ、応用圏論を学ぶ醍醐味だよ。
学部生:
HaskellやIdrisだと、いま説明してくださったやり方で、ここに登場した圏を、クラス継承の概念で、型を宣言していけるのでしょうか?
関数型プログラミングはまだこれから勉強しようと思っているので、HaskellやIdrisのコードの実例を見せてもらえると今後の励みになります。
講師:
鋭いところを突くね。
答えは ── イエスだ。
とりわけ Haskell や Idris のような型システムの強い言語では、いま話した「圏の家系」を、まさに型クラス(type class)の継承として宣言できる。
さっきの「親クラスに機能を足す」という感覚が、ほぼそのまま使える。
実は、Haskell の標準ライブラリには、すでに「圏」そのものの型クラスが入っている。
Control.Category にある、これだ。
-- 「圏」── 恒等射 id と、射の合成 (.) を持つ
class Category cat where
id :: cat a a
(.) :: cat b c -> cat a b -> cat a c
cat a b が「対象 a から対象 b への射」を表す。
id(恒等射)と (.)(合成)
── まさに、今日いちばん最初に出てきた、圏の土台そのものだね。
その上に、「横に並べる(テンソル積)」を足せば、モノイダル圏になる。
継承(スーパークラス制約)で、こう書ける。
-- 「圏」を継承して、テンソル積 ⊗ を足したものが「モノイダル圏」
class Category cat => Monoidal cat where
type Tensor cat a b -- 対象を「横に並べる」⊗
tensor :: cat a b -> cat c d -> cat (Tensor cat a c) (Tensor cat b d)
class Category cat => Monoidal cat の => が、「Monoidal は Category を継承している」という宣言だ。
Java や Python で言う extends や class Child(Parent) にあたる。
さらに「双対」を足せばコンパクト閉圏、と、同じ調子で積み上げていける。
学部生:
本当だ。class Category cat => Monoidal cat ── これは「Monoidal は Category を継承する」と、そのまま読めますね。今日の家系図が、コードになっている。
講師:
そういうことだ。圏論の家系図と、型クラスの継承関係が、きれいに対応している。これは偶然ではない。Haskell の型クラスという仕組み自体が、もともと圏論や代数の構造から、強い影響を受けて設計されているからだ。
Idris なら、依存型のおかげで、「合成が結合的である」といった圏の"法則"そのものまで、型として書いて、コンパイラに検証させることもできる。
君が関数型プログラミングを学びはじめれば ── 今日の対話で出会った圏たちと、コードの中で、もう一度再会することになる。そのときは、きっと旧友に会うような気持ちになるはずだよ。
学部生:
先生、その tensor の型の行
── tensor :: cat a b -> cat c d -> cat (Tensor cat a c) (Tensor cat b d)
── は、どう読めばいいのでしょう。記号が多くて、まだ目が滑ってしまいます。
講師:
一つずつ、ゆっくり読み解いていこう。
関数型の型は、慣れると、文章のように読めるようになる。
まず、:: は「〜という型を持つ」と読む。
だから tensor :: … は「tensor という操作は、こういう型だ」という宣言だ。
次に、-> は「〜を受け取って、〜を返す」という、入力と出力の矢印だ。
-> が複数あるときは、いちばん右が最終的な戻り値で、それより左は、順に受け取る引数だと思えばいい。
その目で、もう一度見てみよう。
tensor は、-> で区切られた3つの部分でできている。
tensor :: cat a b -- ① 1つめの引数
-> cat c d -- ② 2つめの引数
-> cat (Tensor cat a c) (Tensor cat b d) -- ③ 戻り値
cat a b は、さっき言ったとおり「対象 a から対象 b への射(部品)」だ。
配線図で言えば、入力 a・出力 b を持つ、一つの部品だね。
だから、こう読める。
-
① 1つめの引数
cat a b── 「a から b への部品」を1つ受け取る。 -
② 2つめの引数
cat c d── 「c から d への部品」を、もう1つ受け取る。 -
③ 戻り値
cat (Tensor cat a c) (Tensor cat b d)── その2つを横に並べた(⊗ した)、一回り大きな部品を返す。
戻り値の中の Tensor cat a c が、「a と c を横に並べた、合わさった入力」、Tensor cat b d が「b と d を横に並べた、合わさった出力」だ。
学部生:
なるほど。
「$a → b$ の部品と、$c → d$ の部品を受け取って、それらを横に並べた『 $(a と c) → (b と d)$ の部品』を返す」
── そう読めばいいんですね。
講師:
完璧だ。
まさに、それが「横に並べる(テンソル積 ⊗)」を、型として書いたものだ。
絵で思い出してほしい。
部品を2つ、上下に並べて置く
── あの操作だね。
入力どうし・出力どうしが、それぞれ束ねられて、ひとつの大きな部品になる。
さっき家系図で見た「モノイダル圏=横に並べられる圏」が、この一行の型に、そっくり収まっているわけだ。
学部生:
Haskellのコードも、こうして教えて頂くと、怖くなりくなりますね!
講師:
それはよかった、何でも慣れだ。目が慣れてくれば、怖さも消えてなくなると思うよ。
さて。家系図の話に戻ろう。
実は、あの3つの圏には、もう一つ興味深い関係がある。
ハイパーグラフ圏は、自動的にコンパクト閉圏でもある。
──ここは少し補足しよう。
思い出してほしい。コンパクト閉圏の"特技"は、さっき見た 「ワイヤーを U 字に折り返す(カップ・キャップ)」 ことだったね?
一方、ハイパーグラフ圏の"特技"は、「線を自由に分岐させたり、合流させたりできる」 ことだ。
ここがポイントだ。
「分岐・合流が自由にできる」なら、その操作を使って、「折り返し(カップ・キャップ)」も作り出せてしまう。
たとえば、1本の線を分岐させて、片方をくるっと回して戻す
── そうすれば、U 字の折り返しが、おのずと出来上がる。
学部生:
なるほど。より自由なハイパーグラフ圏の道具を使えば、コンパクト閉圏の折り返しは、わざわざ別に用意しなくても、自然に作れてしまうということですね。
講師:
そのとおり。
だから、わざわざ「これはコンパクト閉圏です」と宣言しなくても、ハイパーグラフ圏でありさえすれば、コンパクト閉圏の性質は、おまけのようについてくる。
──3つの圏は、こうして、きれいに重なり合っているんだ。
そして、いちばん大事なことを言う。
これらの圏は ── モノイダル圏もコンパクト閉圏も ── もともとは純粋数学者が、抽象代数や量子の都合で考え出したものだ。
物流や最適化のために作られたわけではない。
なのに、いざ「部品からネットワークを組み立てる」という現代の課題に直面したとき、すでに完璧な道具として、そこに用意されていた。
これが、数学の不思議で、面白いところだよ。
学部生:
誰かが別の目的のために用意していた道具が、何十年もの時を経て、思いがけない分野にぴたりとはまる ── そこには、確かに知の醍醐味がありますね。
講師:
そのとおり。
学部生:
ところで、さきほど、Spivak(スピヴァック)の名前が出てきましたね?
この方は、たしか…… 圏論データベース で登場する名前だった気がします。
講師:
よく知っているね。そのとおりだ。
David Spivak は、データベースのスキーマを「圏」、その中身(インスタンス)を「集合への関手」として捉える「関手的データモデル(functorial data model)」を提唱した、圏論的データベース理論の中心人物だ。
データの統合や移行を、構造を保つ変換として扱う ── という発想だね。
そして、ここが面白い。
その Spivak が深く関わって整備した圏論的な計算基盤
── Julia の Catlab や AlgebraicJulia
が、まさに、今日の主役であるAlgebraicOptimization.jl の土台になっている。
学部生:
データベースの人が作った土台の上に、最適化の研究が乗っている、ということですか。
講師:
そういうことだ。
データベースも、最適化も、回路も ── 「構造を保って、部品から組み立てる」 という同じ精神で書ける。
だからこそ、同じ人物、同じ基盤が、まったく違う応用分野に顔を出す。
さっき君が言った「別の目的の道具が、思いがけない分野にはまる」── その実例が、いま目の前にあるわけだ。
さて。
圏の家系図も頭に入り、その圏たちを支える人物と基盤も見えてきた。
いよいよ、この 「ハイパーグラフ圏」を実際に用いた記念碑的な研究 を見にいこう。
登場する圏の家系図
土台の『圏』に、横に並べる(⊗)を足すとモノイダル圏、さらに双対を足すとコンパクト閉圏、自由なつなぎ替えを足すとハイパーグラフ圏。
みな親子・兄弟の関係。
学部生:
それで先生、この装飾コスパンが、最初に華々しく用いられたのは、どのような研究なのですか。
講師:
記念碑的なのは、**John Baez と Brendan Fong の「A Compositional Framework for Passive Linear Networks」(受動線形回路の合成的枠組み、2018年)**だ。
これは何をした論文かというと ──
電気回路を「入力と出力の端子を持つ開いた部品」として圏で表し、内部の配線をすべて忘れて、外から見た振る舞い(電圧と電流の関係)だけを取り出す「ブラックボックス関手(black-box functor)」を定式化した。
学部生:
ブラックボックス関手 ── 中身を隠して、外から見た入出力の関係だけを残す、と。
講師:
そのとおり。エンジニアには馴染み深い発想だろう。モジュールの内部実装を隠し、インターフェースだけを見る ── あれの、数学版だ。
回路を部品から組み立て、各部品を「外から見た振る舞い」に変換し、その変換が合成と整合する(部品をつないでから外を見ても、外を見てから合成しても同じ)
── これを圏論的にきちんと示したのが、この論文だ。
ORや最適化を「部品から組み立てる」後続研究の、発想の源流のひとつになっている。
学部生:
回路の話が、なぜ OR につながるのですか。
講師:
ここが大事なところだ。
「端子を持つ部品をつなぎ、外から見た振る舞いを合成する」という枠組みが、回路にとどまらず、ネットワーク・力学系・そして最適化問題にも、そのまま当てはまるからだ。
実際、Baezが率いる「ネットワーク理論」の研究の流れの中で、この枠組みは、OR の古典そのものにも当てはめられている。
たとえば、全点対間の最短経路を求める Floyd–Warshall 法(競技プログラミングでもおなじみの定番アルゴリズムだ)を一般化した「代数的経路問題(algebraic path problem)」を、入力と出力の境界を持つ"開いたネットワーク"の合成として関手的に扱えることが示されている。
最短経路という ORの古典的な問題までもが、部品の組み立てとして見える、というわけだ。
回路や経路の話で「部品を組み立てる土台」が見えてきた。
だが今日の本丸は、その先だ。
最適化問題そのものを部品から組み立て、解くアルゴリズムまで導く ── 次の幕が、この記事の山場になる。
第5幕 ── 道具立て② オペラッドで、最適化問題を階層的に組み立てる
講師:
さて、ここからが今日の対話の中のクライマックスだ。
前回、お兄さんへの土産として挙げた論文 ──
Tyler Hanks, Matthew Klawonn, Evan Patterson, Matthew Hale, James Fairbanks「A Compositional Framework for First-Order Optimization」(一階最適化の合成的枠組み、2024, arXiv:2403.05711)
を、今日は、もう少し踏み込んで紹介しよう。
学部生:
前回、「お兄様に最も響くはず」とおっしゃっていた論文ですね。
講師:
そのとおり。
これは、最適化問題そのものを部品から組み立て、しかも、それを"解くアルゴリズム"までもを、合成の構造から自動的に導くという、野心的な仕事だ。
キーワードは3つある。
オペラッド(operad)、
オペラッド代数(operad algebra)、
代数射(algebra morphism)
だ。順に、ゆっくりいこう。
学部生:
オペラッド……はじめて聞きました。
講師:
恐れるには及ばない。直感としては、こうだ。
オペラッドとは、「部品を組み立てる"配線の文法"そのもの」 だと思ってくれ。
「この入出力を持つ部品を、このようにつないで、ひとつの大きな部品にしてよい」── そうした 組み立て方の規則(構文, syntax) を、抽象的に定めたものが、オペラッドだ。
学部生:
中身そのものではなく、「組み立て方の規則」だけを取り出したもの、ということですか。
講師:
まさに、そのとおり。プログラミングで言えば、「型と、合成のシグネチャ」だけを定めた抽象インターフェースのようなものだ。中身の実装は、まだ何も決めていない。
そして、その「組み立ての文法」に、実際の中身を割り当てるのが ──
オペラッド代数(operad algebra)
だ。
学部生:
インターフェースに対する、具体的な実装、という感じですか。
講師:
そのたとえは、なかなか的を射ている。
論文では、次のように対応づけている。
-
オペラッド = 構文(syntax):部品をどう組み立てるかのルール
-
オペラッド代数 = 意味(semantics):その組み立てに、実際の「最適化問題」を割り当てる
-
代数射(algebra morphism) = 構造を保つ意味の変換:ある意味づけから別の意味づけへ、組み立て構造を壊さずに移す写像
学部生:
構文、意味、そして意味と意味をつなぐ変換 ── まるで、コンパイラの教科書のようですね。
講師:
その感覚は正しい。実際、この三層の構造は、プログラミング言語理論の「構文・意味・意味変換」と、思想において地続きだ。
前回、LICS(計算機科学における論理学の最高峰の会議)の話をしたのを覚えているね。
この種の発想は、まさに、あの世界の住人なんだ。
学部生:
では、その三層の構造を使って、何ができるのですか。
講師:
ここからが見どころだ。論文は、次のことを示した。
(1)ある種の最適化問題たちは、オペラッド代数をなす。
つまり、「最適化問題」を、先ほどの文法(オペラッド)に従って部品から階層的に組み立てられる、ということだ。小さな最適化問題をつなぎ、大きな最適化問題を作り上げられる。
学部生:
最適化問題が、レゴブロックのようになる、と。
講師:
そのとおり。そして、ここが白眉だ ──
(2)勾配降下法(gradient descent)や Uzawa のアルゴリズムといった「解法」が、"代数射"になる。
学部生:
解法が、代数射……ですか。
講師:
かみくだいて説明しよう。
「最適化問題の世界」から「力学系(dynamical systems)の世界」への、構造を保つ変換として、勾配降下法が定式化できる、ということだ。
勾配降下法とは、要するに**「少しずつ坂を下り、最適解へ近づいていく時間発展」**のことだろう。あれは、一種の力学系(時間とともに状態が移り変わるシステム)だ。
論文は、「最適化問題を勾配降下法という時間発展に変換する操作」が、部品の組み立て構造を壊さないこと ── つまり代数射であることを証明した。
学部生:
組み立ての構造を壊さない、とは、どういうことですか。
講師:
次のようなことだ。
-
一本目の道:小さな問題を組み立てて大きな問題を作り、それから勾配降下法を適用する
-
二本目の道:小さな問題それぞれに勾配降下法を適用し、それを組み立てる
この二つの道が、ちゃんと一致する。
だから、「全体を一度に解く」かわりに「部品ごとに解いて、組み立てる」ことが、数学的に正当化される。
学部生:
「どちらの順番で行っても同じ結果になる」── これは、いかにも圏論らしい言い回しですね。
講師:
鋭いね。それは、まさに圏論の十八番(おはこ)で、可換図式(commutative diagram) と呼ばれるものだ。
可換図式とは ──「ある出発点から、ある到達点へ至る道が複数あり、どの道を通っても結果が同じになる」という状況を、矢印の図で表したものだ。「可換(commute)」とは「順番を入れ替えても同じ」という意味だ。
いまの話だと、出発点は「小さな部品たち」、到達点は「解けた全体システム」。そこへ、
- 上の道:組み立ててから解く
- 下の道:解いてから組み立てる
という2本の道がある。
この2本が同じ到達点に着く ── つまり図式が可換であることが、論文の証明の核心だ。
学部生:
「可換図式」も、言葉だけ見ると身構えてしまいますが、中身は「どちら回りでも同じ」ということなのですね。
講師:
そのとおり。そして、これが有用である理由は、はっきりしている。「下の道(部品ごとに解いてから組み立てる)を通ってよい」という保証になるからだ。
規模の大きな全体を一度に解くのは、骨が折れる。
だが、図式が可換であれば、小さな部品を別々に(並列に、分散して)解き、あとで合成しても、答えは同じ になる。
これは、第3幕で君が述べた「関東は関東で、関西は関西で解いて、あとでつなぐ」という方法に、数学が正しさの太鼓判を押してくれた状態だ。
学部生:
あ、これは、前回とまったく同じ形ですね。
前回の合成的ゲーム理論で ── 「各プラグの Nash 均衡を、独立に計算して、合成すると全体の均衡になる」と。
あの 「部品ごとに解いて合成する」 と、瓜二つです。
講師:
よく気づいた。まさに、同じ構造なのだ。
前回は、「均衡を部品ごとに計算して合成」した、
今回は、「最適化を部品ごとに解いて合成」する。
主語がゲームから最適化に変わっただけで、"部品ごとに解いて、合成する"という背骨 、完全に共通している。
そしてどちらも、その正しさの根っこには、いまの可換図式がある。
これが、応用圏論という地形の上で「ゲーム理論も最適化も同じ言葉で語られる」ということの、具体的な中身だ。
学部生:
具体的な OR の問題で、このことが効果を発揮した実例はあるのですか?
講師:
ちゃんとある。
最小費用流問題(minimum cost network flow) がその一例だ。
学部生:
最小費用流問題。
あっ、それ、第3幕でやった「倉庫 A・B から店舗 C・D へ、最小コストで運ぶ」あの問題ですね?
講師:
そう、まさに、あれだ。
第3幕で「これが大規模になると一枚岩では行き詰まる、しかし本当は地域ごとの部品構造がある」と話したよね。
論文が成し遂げたのは、その直感を、圏論によってきちんと実現することだ。
順を追って見ていこう。
-
Step 1:
フローネットワークを、部品から組み立てる。
第3幕の「関東の部品・関西の部品・幹線でつなぐ」を、第4幕の装飾コスパン/ハイパーグラフ圏で正式にやる。
-
Step 2:
「組み立てたネットワーク」を「最小費用流問題」に変換する操作が、代数射(構造を保つ変換)になることを示す。つまり、部品で組み立てた構造が、最適化問題になっても保たれる。
- Step 3:その上に、解法(勾配法)の代数射を合成する。すると、ネットワークの階層構造を尊重した分散解法が、自動的に出てくる。
学部生:
最後の「分散解法が自動的に導かれる」が、まだ腑に落ちません。
それと、論文に出てくる 「双対」 や 「分解」 とは、何でしょうか。
講師:
肝心なところだ。順に、かみくだいて説明しよう。
まず「分解(decomposition)」。
これは単純で、「大きな問題を、小さな部分問題に分けて解く」 ことだ。
第3幕の「関東は関東、関西は関西で解いて、あとでつなぐ」── あれが、分解にあたる。
次に「双対(dual)」。
これは ORの山場のひとつだが、直感だけ掴めれば十分だ。
最適化問題には、表と裏がある。
いま解きたい「コストを最小にする」という問題(これを主問題, primal という)に対して、**それと表裏一体の、もうひとつの問題(双対問題, dual)**を必ず作ることができる。
学部生:
表と裏 ── どのような関係なのですか。
講師:
次のようなイメージだ。
主問題が、「コストをできるだけ小さくしたい(上から押し下げる)」だとすると、双対問題は、「これ以上は下げられないという下限を、できるだけ高く見積もりたい(下から押し上げる)」となる。
この二つがちょうど出会うところが、最適解だ。
山を上る人と下る人が、同じ頂上で出会うようなもの、と思えばいい。
学部生:
なるほど。同じ最適解を、反対側から攻めるのが双対、というわけですね。
講師:
その理解で十分だ。そして、なぜ双対が有用かというと ── 双対の側から見ると、部品どうしの「つなぎ目」の扱いが、分解と相性のよいものになるからだ。
幹線でつながった地域のフローを考えてみてほしい。地域内は独立に解きたいが、「幹線でやりとりする量」だけは、地域どうしで辻褄を合わせなければならない。双対は、この**「つなぎ目の辻褄合わせ」を、値段(ペナルティ)のやりとりへと変換**してくれる。
学部生:
つなぎ目に"値段"をつけ、各地域は、その値段を見ながら独立に解く、ということですか。
講師:
まさに、そのとおりだ。各地域が「いまの幹線の値段であれば、自分はこれだけ流す」と独立に最適化し、その結果を持ち寄って幹線の値段をわずかに調整し、再び各地域が解き直す ── これを繰り返すと、全体の最適解へと収束する。これが「双対分解(dual decomposition)」だ。
そして「階層的(hierarchical)」は、その分解が入れ子になっていること。地域の下にさらに小地域があり……と、組み立ての階層に沿って、解法も階層的に分かれる。
学部生:
「階層的双対分解(hierarchical dual decomposition)」── さっきは呪文に見えましたが、いまは分解できます。階層的(入れ子の構造に沿って)・双対(裏側の問題を使って)・分解(部品ごとに分けて解く)、ですね。
講師:
見事だ。専門用語も、このように分解してしまえば、恐れるに足りない。
そして、ここが論文のいちばんの新しさだ。ふつうは、この分散アルゴリズムを人間が手で設計する。問題ごとに「どう分けるか」「どう辻褄を合わせるか」を職人芸で組む。
ところが、この枠組みでは ── 「問題をどう部品から組み立てたか」という構造を渡すだけで、それを解く階層的双対分解アルゴリズムが、構造に沿って自動的に生成される。
学部生:
組み立て方を書けば、解き方がついてくる ── 手で分散アルゴリズムを設計しなくとも、ですか。
講師:
そういうことだ。第5幕の冒頭で「解法が代数射になる」と述べたのを覚えているね。「組み立てる」と「解く」が、代数射によってつながっているからこそ、組み立ての構造から解法が降りてくるのだ。
しかも論文は、Julia パッケージ AlgebraicOptimization.jl として実装も公開していて、階層構造を持つフローネットワークでは、この自動生成された階層的双対分解が、素朴な集中型解法や、通常の(階層を使わない)分散解法より速いことを、実験で示している。
学部生:
理論だけでなく、動く実装と、速度の実証まで備わっている。第3幕の小さな A・B・C・D が、ここまでつながるとは思いませんでした。
講師:
そのとおり。ここは前回の open-games-hs と同じで、研究の最前線が、オープンソースで動かせる形で公開されている。scipy や OR-Tools を触る感覚で、いずれ試せる日が来るかもしれない。OR に携わる人にとっては、とりわけ触れてみる価値があるだろう。
学部生:
それは、プログラムのコードとして書くと、どのようなものになるのですか。普段は Python しか書かないので、なかなかイメージが湧かなくて。
講師:
良い質問だ。ただ、その前に、ひとつ言っておきたいことがある。
この AlgebraicOptimization.jl は、Python ではなく Julia(ジュリア)という言語で書かれている。
学部生:
あ、やはり Python ではないのですね。なぜでしょう。
講師:
偶然ではなく、理由がある。この種の「数式や構造そのものを、プログラムで組み立てて操作する」研究実装は、Julia で書かれることが多いのだ。Julia が持つ「多重ディスパッチ(multiple dispatch)」という仕組みが、圏論的な抽象化と、たいへん相性がよいからだ。
学部生:
多重ディスパッチ……また、知らない言葉が出てきました。
講師:
これは、Python エンジニアであれば、対比によってすぐに分かる。かみくだいて説明しよう。
君が普段 Python で書くオブジェクト指向だと、メソッドは**「一つのオブジェクト(self)に属する」**よね。a.add(b) と書いたら、「a の型」だけを見て、どの add を呼ぶかが決まる。**主役は一つ(a)**だ。
学部生:
はい。self が主役で、引数は脇役、という感覚です。
講師:
多重ディスパッチは、そこが違う。「どの関数を呼ぶか」を、self 一つではなく、渡されたすべての引数の型の組み合わせで決める。add(a, b) と書いたら、「a の型 と b の型」の両方を見て、最適な add が選ばれる。主役が複数いるんだ。
学部生:
なるほど。self だけでなく、すべての引数の型で決まる、と。しかし、それが圏論と、どう関係するのですか。
講師:
圏論で扱うのは、いつも「もの(対象)と、もの(対象)をつなぐ操作」だったね。前回のプラグの合成も、今日の部品の合成も、「二つ以上のものを、どう組み合わせるか」が主役だった。
「一つの主役(self)に属するメソッド」よりも、「複数のものの組み合わせで決まる操作」のほうが、合成・テンソル積・関手といった圏論の操作に、自然に対応する。だからこそ、AlgebraicJulia(この種のパッケージ群)は Julia を選んでいるのだ。
学部生:
「組み合わせ方こそが主役」という圏論の発想に、言語の仕組みが寄り添っている ── 腑に落ちました。
講師:
そういうことだ。では、コードのイメージをお見せしよう。実際の AlgebraicOptimization.jl の書き方に沿った、簡略版だ。細部(行列の数値など)は省き、骨格だけを残してある。雰囲気をつかんでほしい。
using AlgebraicOptimization
using Catlab
# 1. 小さな最適化問題(部品)を定義する
# PrimalObjective が「目的関数」と「変数の次元」を包む。
# (たとえば 地域A・地域B・幹線 の、それぞれのコスト関数)
f = PrimalObjective(FinSet(5), x -> ...) # 地域A の問題
g = PrimalObjective(FinSet(3), x -> ...) # 地域B の問題
h = PrimalObjective(FinSet(4), x -> ...) # 幹線の問題
# 2. 各部品を「開いた問題」にする。
# どの変数を“外とつなぐ端子”として開放するかを指定する。
p1 = Open{PrimalObjective}(..., f, ...)
p2 = Open{PrimalObjective}(..., g, ...)
p3 = Open{PrimalObjective}(..., h, ...)
# 3. @relation_diagram で「部品のつなぎ方(配線図)」を書く。
# u, w が共有する境界(端子)、x, y, z が各部品の内部。
d = @relation_diagram (x, y, z) begin
f(u, x)
g(u, w, y)
h(u, w, z)
end
# 4. oapply で、配線図 d に従って部品 [p1,p2,p3] を合成する。
composite_prob = oapply(d, [p1, p2, p3])
# 5. 合成された大きな問題を、分散勾配降下法で解く。
# 引数は「問題・初期値・ステップ幅・反復回数」。
sol = solve(composite_prob, initial_guess, 0.1, 100)
学部生:
あ。@relation_diagram で「配線図(構造)」を書き、oapply で「部品」をそこへ流し込むのですね。第4幕で扱った「装飾コスパンで部品をつなぐ」「オペラッド代数で意味を割り当てる」が、そのままコードになっている。
講師:
まさにそれだ。この oapply という関数こそ、第5幕で説明した**「オペラッド代数=構文(配線図)に意味(実際の問題)を割り当てる操作」の、実装そのもの**だ。
そして composite_prob の中には「どう組み立てられたか」という構造が残っている。だから最後に solve を呼ぶと、その構造に沿って自動的に分散して解いてくれる── これが「組み立て方を書けば、解き方がついてくる」の正体だ。
学部生:
理論の言葉(オペラッド・代数射)と、コードの関数(@relation_diagram・oapply)が、一対一でつながった感じがします。
講師:
その「つながった感覚」こそ、圏論で物事を組み立てる醍醐味だ。なお、いまお見せしたのは雰囲気をつかむための簡略版なので、実際に動かす際には、公式のドキュメントとサンプルを参照してほしい。
第6幕 ── 道具立て③:co-design ── 「設計」を不動点として解く
学部生:
ここまでで、「フロー最適化」が部品化できることは分かりました。ほかの OR や工学の問題でも、同じ発想が効くのですか。
講師:
効くのだ。毛色の異なる、しかし美しい例を、ひとつ紹介しよう。
設計最適化(co-design) だ。
代表的なのは、Andrea Censi の一連の仕事だ。
とりわけ取り組みやすいのは、以下の論文だ。
- Andrea Censi, A Mathematical Theory of Co-Design(co-design の数学的理論, 2015, arXiv:1512.08055)
そしてもう1つ。不確実性を扱った以下の論文がある。
- Andrea Censi, Uncertainty in Monotone Co-Design Problems(単調 co-design 問題における不確実性, 2017, arXiv:1609.03103)
学部生:
co-design ……「共同設計」のことですか。
講師:
ここでは、「相互に依存し合う部品を、まとめて設計する」 といった意味だ。ロボットを例にとろう。
ロボットを作るには、モーター、バッテリー、車体、センサ……と、数多くの部品を選ぶ。
ところが、部品の選択は、互いに依存し合う。
- 強いモーターを積めば、速く走れる(機能が上がる)が、電力を食う(資源を要求する)
- 電力を増やすには、大きなバッテリーが要る(別の資源を要求する)
- 大きなバッテリーは重く、それを動かすにはまた強いモーターが要る……
学部生:
あ、ぐるぐると回りますね。
要求が、循環しています。
講師:
そこが、co-design の難しさであり、面白さでもある。
Censi の枠組みは、各部品を、「機能(functionality)・資源(resources)・その間の実現可能性の関係」
を持つ**「設計問題(design problem)」**として定式化する。
そして、設計問題どうしを ── まさに、今日ずっと論じてきたように ── 部品としてつなぎ、大きな co-design 問題を組み立てる。
学部生:
ここでも、「部品から組み立てる」という発想が現れるのですね。
講師:
一貫して、そうなのだ。そして、ここで、前回との美しい再会が待っている。
co-design 問題を解く ── すなわち「ある機能を実現する、最小の資源の組み合わせ(パレートフロント)」を求める ── という操作は、Censi の理論では、
「最小不動点(least fixed point)」として特徴づけられ、Kleene のアルゴリズムで計算できる。
学部生:
不動点……! 前回の Nash 均衡と、同じ言葉ですね。
講師:
そのとおり。前回、Nash 均衡を**「最善反応を計算しても戦略が変わらない点=不動点」**として捉えたね。
今回の co-design では、**「最適な設計=資源要求の循環がつり合う点=最小不動点」**として現れる。
ゲームの均衡も、設計の最適解も、"自分自身に戻ってくる点(不動点)"として、統一的に捉えられる。先ほどの循環する要求 ── モーターとバッテリーが互いを要求し合う、あの循環 ── が、つり合う点こそが不動点なのだ。
学部生:
分野はまったく異なるのに、同じ「不動点」という骨格が、幾度も顔を出すのですね。
講師:
それこそが、圏論の効きどころだ。表面上はばらばらに見える問題が、同じ数学的構造を共有していることが、見えてくる。前回から一貫して通底しているテーマだ。
学部生:
この co-design は、実際の応用があるのですか?
ロボットの教科書の中だけの話、ということはありませんよね。
講師:
産業界で実際に応用されているよ。
**Gioele Zardini の博士論文「Co-Design of Complex Systems: From Autonomy to Future Mobility Systems」(複雑システムの co-design:自律性から未来のモビリティシステムへ, ETH Zürich, 2023)**が代表的だ。
この論文は ETH の優秀博士論文賞(Silver Medal)を受けている。
Zardini は、Censi の co-design 理論を、自動運転車やモビリティ・システムの設計へと具体的に展開した。
たとえば、自動運転車のハードウェア選択から制御、さらには都市のモビリティ網(自動運転タクシー・公共交通・マイクロモビリティをどう組み合わせるか)の設計までを、co-design の枠組みで扱っている。
実在の都市を題材にしたケーススタディもある。
学部生:
都市の交通設計にまで及ぶのですね。それは、たいへんな規模です。
講師:
そのとおり。「部品から組み立て、不動点として最適解を求める」という同じ思想が、ロボット一台から都市全体に至るまで、規模を変えて適用できる。合成的なアプローチの強みが、よく表れた例だと思う。
第7幕 ── 予告:同じ発想は、機械学習にも現れる
学部生:
ここまでで、「OR や最適化を部品から組み立てる」という話は、だいぶ腑に落ちました。
ところで、前回、少しだけ触れられた「Backprop as Functor」も、今日の話とつながるのですか?
講師:
結論から言えば、深くつながる。
ただ、それは今日の主役ではないので、ここでは"予告"だけにとどめておこう。
ひとつ、大事な見方を伝えておくと、
機械学習の「学習」は、実は最適化の一種である。
こういう主張が成立するんだ。
ニューラルネットの訓練とは、要するに**「損失関数を最小化する」という最適化**にほかならない。
そして、その最適化を駆動しているのが、君もよく知る**誤差逆伝播(backpropagation)**で計算される勾配だ。
前向きに予測を計算し、後ろ向きに勾配を返す ── 第5幕で見た「坂を下る最適化(勾配降下法)」と、根っこは同じなんだ。
学部生:
言われてみれば……ニューラルネットの学習も「勾配で坂を下る」ものでした。
第5幕の「最適化を勾配降下法に変換する」話と、同じ匂いがします。
講師:
まさに、そこだ。Brendan Fong, David Spivak, Rémy Tuyéras「Backprop as Functor」(LICS 2019)という論文が、この勾配にもとづく学習そのものを、関手(合成と整合する変換)として定式化している。
- Hanksら:最適化問題を部品から組み立て、勾配降下法を構造を保つ変換として導く
- Fongら:学習器(ニューラルネット) を部品から組み立て、誤差逆伝播 を構造を保つ変換として導く
驚くほど、同じ形をしているだろう?
**「部品から組み立てる」「勾配」「構造を保つ変換」**── 今日、OR で見た背骨が、そっくりそのまま、機械学習にも現れるのだ。
学部生:
では、それも、今日のように詳しく……。
講師:
いや、ここで止めておこう。
それは、それだけで一本の記事になるほどの大きさだからだ。
誤差逆伝播・自動微分・レンズ・オプティック
── 前回の最後に触れた「双方向の部品」とも、深く絡み合う。
OR の話に混ぜてしまっては、今日の主題である「OR を部品から組み立てる」が、ぼやけてしまう。
ここは、対話(記事)を3つに分けて取り扱うことにしよう。
-
前回:Compositional Game Theory(ゲームを部品から組み立てる)
-
今回:Compositional Optimization(最適化・OR を部品から組み立てる)
-
次回:Compositional Learning(学習を部品から組み立てる)── Backprop as Functor を主役に、稿を改めて本腰を入れて取り組む。
学部生:
$ゲーム → 最適化 → 学習$
── きれいに続いていくのですね。次回も楽しみにしています。
講師:
そうなんだ。
今日のところは、「同じ"部品から組み立てる"発想が、機械学習にも待っている」という地図だけを、頭の隅に置いておいてほしい。
それが、次回への伏線となる。
第8幕 ── まとめ:応用圏論という地形図
学部生:
今日も、ずいぶん遠くまで来た気がします。
最後に、ここまでたどってきた道のりを振り返って、全体を俯瞰した地図を整理していただけますか。
講師:
そうしよう。
今日の道具立てと、それが指し示す全体像を、もう一度並べてみよう。
-
装飾コスパン/ハイパーグラフ圏(Fong, Baez–Fong):ネットワーク状の部品を、入出力の境界でつなぐ土台。回路から最短経路(Floyd–Warshall の一般化)まで。
-
オペラッド/代数射(Hanks ら):最適化問題を階層的に組み立て、勾配降下法などの解法を「構造を保つ変換」として導く。最小費用流で分散解法を自動生成し、実装(
AlgebraicOptimization.jl)と速度実証まである。
-
co-design と不動点(Censi, Zardini):設計最適化を部品の合成として捉え、最適解を「最小不動点」として求める。ロボットから都市のモビリティまで。
- (次回取り上げます)Backprop as Functor(Fong–Spivak–Tuyéras):学習=最適化を関手として定式化。OR と機械学習が「最適化」で交差する ── これは次回の主役だ。
学部生:
こうして並べてみると、いずれも「部品から組み立てる」「構造を保つ変換」「不動点」という、共通の言葉で語られているのですね。
講師:
それこそが、今日、最も持ち帰ってほしいことだ。
それと、前回の対話(記事)の最後に、こう言ったのを覚えているかな?
「大きなものを、小さな部品から、配線図のように組み立てる」── 応用圏論という大きな地形の上では、ゲーム理論も、最適化も、機械学習も、同じ言葉で語られはじめている。
今日は、その「最適化」の部分を、実際の論文と実装で、具体的にたどってきた。
前期の予告編は、こうして、この記事の本編になったわけだ。
学部生:
ですが先生、最後に、正直なところもお聞かせください。
これは、もう実務で盛んに使われているのですか?
講師:
正直なところ、「OR × 圏論」は、まだ非常に若い領域だ。
いまこの瞬間、世界の物流や生産計画を動かしているのは、圧倒的に伝統的なORと、その成熟したソルバだ。
今日紹介した圏論的な枠組みが、明日にもあなたの会社の配送計画を置き換える、という段階にはない。
ただし ── 動く実装は、すでに存在する。
AlgebraicOptimization.jl のように、論文とともにコードが公開され、特定の構造を持つ問題では、速度の優位性まで実証されている。もはや「研究室の中だけの空論」ではない。
学部生:
理論と実装は存在し、応用の入り口に研究者が立っている ── 前回の合成的ゲーム理論と、同じ"地図"ですね。
講師:
まさに、そのとおりだ。
「すでに広く使われているのは伝統的なORであり、圏論的なORは、その"作り方"を変えようとする新しい挑戦である」
── そういう地図として受け取ってほしい。
そして、これから10年から29年をかけて、この地図がどこまで描かれていくか
── それを、Python を書きながら見届けられる時代に、君は生きている。
学部生:
前回の「研究の最前線に立ち会える」という話は、今日も同じなのですね。
講師:
同じだ。
ゲームも、最適化も、学習も、設計も ── 「部品から組み立てる」という一つの思想が、分野の壁を越えて広がっていく。
その地形を、これからも一緒にたどっていこう。
OR の本丸 ── 線形計画や組合せ最適化の中身そのもの ── は、まだ手をつけていない大きなテーマだ。
それは、また稿を改めて論じよう。
学部生:
はい。次回も、楽しみにしています。
Appendix:数学的補足
以下は、本文で「骨格と装飾」「オペラッド代数」「不動点」などとかみくだいた事柄の、より厳密な定義です。
いずれも読み飛ばして構いません。
専門書へ進むときの足がかりとして添えさせていただきます。
A-1. 装飾コスパンとハイパーグラフ圏の、より厳密な定義
本稿では「開いたシステム」「骨格と装飾」とかみくだきましたが、厳密には次のように定式化されます(Fong, "Decorated Cospans", 2015)。
圏 $C$ が有限余極限(finite colimits)を持つとし、$(D, \otimes)$ を対称モノイダル圏、$F : (C, +) \to (D, \otimes)$ を緩(lax)対称モノイダル関手とします。このとき $F$-装飾コスパン(decorated cospan) とは、次の対です。
- 圏 $C$ におけるコスパン
X \xrightarrow{\ i\ } N \xleftarrow{\ o\ } Y
($X, Y$ が入出力の境界、$N$ が本体の「骨格」)
- 圏 $D$ の射
s : I \to F(N)
(本体 $N$ に付与される「装飾=中身」。$I$ は $D$ の単位対象)
合成は、骨格側はコスパンの押し出し(pushout)で、装飾側は $F$ の緩モノイダル構造を使って貼り合わせます。こうして得られる圏は対称モノイダル圏になり、さらに各対象が特別フロベニウス代数(special Frobenius algebra)の構造を持つ
── すなわち**ハイパーグラフ圏(hypergraph category)**になります(Fong の定理)。
本文で、「$1$ 本の線が任意個の入出力を結べる」と述べたワイヤーの分岐・合流は、このフロベニウス代数の(余)乗法に対応します。
なお、すべてのハイパーグラフ圏が装飾コスパンで構成できるわけではなく、より強力な「装飾コレレーション(decorated corelations)」が必要になる場合があります(Fong の学位論文, 2016)。
A-2. 最適化のオペラッド代数と、解法の代数射
本文で「最適化問題がオペラッド代数をなす」「解法が代数射になる」と述べた部分の、より厳密な背景です(Hanks, Klawonn, Patterson, Hale, Fairbanks, 2024)。
論文は、無向配線図(undirected wiring diagrams; UWD) のなすオペラッドを構文として用います。その上で、配線図に「意味」を割り当てる UWD-代数(UWD-algebra) を二種類考えます。
-
$\mathrm{Opt}$:各配線図に「そのインターフェースを持つ最適化問題」を割り当てる代数
-
$\mathrm{Dynam}$(およびその変種 $\mathrm{Dynam}_D$):各配線図に「開いた力学系(坂を下る時間発展)」を割り当てる代数
このとき、勾配降下法などの解法は、最適化問題の代数から力学系の代数への 代数射(algebra morphism)
g : \mathrm{Opt} \Rightarrow \mathrm{Dynam}_D
として定式化されます。代数射とは、オペラッドの合成構造と可換な自然変換のことです。
これが「構造を保つ」とは、次の二つの道が一致する、ということに対応します。
- 道その一:部品の最適化問題を配線図に従って合成(
oapply)してから、解法 $g$ を適用する
- 道その二:各部品に解法 $g$ を適用してから、得られた力学系を合成する
この二つが一致する(合成と $g$ が交換する)ことが、本文の「先に組み立てても、先に解いても同じ」という可換図式の厳密な意味です。
論文はさらに、フローネットワークの代数から最小費用流問題の代数への射に、双対側の勾配上昇の代数射を合成することで、階層的双対分解アルゴリズムが導かれることを示し、これを Catlab.jl・AlgebraicDynamics.jl・ForwardDiff.jl の上に AlgebraicOptimization.jl として実装しています。
A-3. co-design 問題と最小不動点
Censi の単調 co-design の枠組みは、次のように定式化されます(Censi, 2015 / 2017)。
機能空間 $F$ と資源空間 $R$ を、完備半順序(complete partial order; CPO) $\langle F, \preceq_F \rangle$, $\langle R, \preceq_R \rangle$ とします。設計問題(design problem; DP) は、タプル $\langle F, R, h \rangle$ で、$h : F \to A R$ が単調かつスコット連続な写像です。
ここで $A R$ は $R$ の反鎖(antichain)の集合 ── すなわち「互いに比較不能な極小資源の集まり」で、これがいわゆるパレートフロントを表します。
別の見方として(Fong–Spivak『Seven Sketches』第4章)、フィージビリティ関係は $\mathrm{Bool}$ 値のプロフンクタ
\Phi : F^{\mathrm{op}} \times R \to \mathrm{Bool}
として定式化できます。設計問題どうしの相互接続(直列・並列・帰還)は、このプロフンクタの合成として表され、co-design 問題のなす圏はコンパクト閉圏の構造を持ちます。
システムがループ(帰還)を含むとき、各部品の要求写像の合成から、単調写像 $H : F_{\text{all}} \to A R_{\text{all}}$ が定まります。
Kleene の不動点定理(CPO 上の連続写像は最小不動点を持ち、$\bot, H(\bot), H^2(\bot), \dots$ の上限として得られる)により、$H$ の**最小不動点(least fixed point)**が存在し、それが「与えられた機能を満たす最小資源のアンチェイン」── パレート最適な設計解 ── に一致します。本文で「資源要求の循環がつり合う点」と述べたのは、この最小不動点のことです。
Censi はこれを Kleene のアルゴリズム(反復による収束)で計算できることを示しています。
前回の Nash 均衡(最善反応写像の不動点)と、今回の co-design(要求写像の最小不動点)が、ともに「単調写像の不動点」として現れる ── これが、本文で「同じ"不動点"という骨格」と呼んだものの正体です。
参考文献・出典
本記事で触れた理論・論文・実装は、いずれも実在します。主要なものを挙げます(書誌の細部は、各 arXiv/出版社ページで確認することをおすすめします)。
応用圏論の入口
- Brendan Fong & David I. Spivak, An Invitation to Applied Category Theory: Seven Sketches in Compositionality, Cambridge University Press, 2019.(arXiv:1803.05316)
装飾コスパン/ハイパーグラフ圏/開いたシステム
-
Brendan Fong, "Decorated Cospans," Theory and Applications of Categories 30(33), 2015, pp. 1096–1120.(arXiv:1502.00872)
-
Brendan Fong, The Algebra of Open and Interconnected Systems, DPhil thesis, University of Oxford, 2016.(arXiv:1609.05382)
-
John C. Baez & Brendan Fong, "A Compositional Framework for Passive Linear Networks," Theory and Applications of Categories 33(38), 2018, pp. 1158–1222.(arXiv:1504.05625)
最適化問題そのものの合成
- Tyler Hanks, Matthew Klawonn, Evan Patterson, Matthew Hale, James Fairbanks, "A Compositional Framework for First-Order Optimization," 2024.(arXiv:2403.05711)/実装:Julia パッケージ
AlgebraicOptimization.jl
設計最適化(co-design)
-
Andrea Censi, "A Mathematical Theory of Co-Design," 2015.(arXiv:1512.08055)
-
Andrea Censi, "Uncertainty in Monotone Co-Design Problems," IEEE Robotics and Automation Letters 2(3), 2017, pp. 1556–1563.(arXiv:1609.03103)
-
Gioele Zardini, Co-Design of Complex Systems: From Autonomy to Future Mobility Systems, PhD thesis, ETH Zürich, 2023.
最適化 × 学習
- Brendan Fong, David I. Spivak, Rémy Tuyéras, "Backprop as Functor: A Compositional Perspective on Supervised Learning," LICS 2019.(arXiv:1711.10455)
前回の記事
- 本記事執筆者「圏論はゲーム理論を書き換える(Compositional Game Theory 入門)」(前編)
本記事の対話・人物・大学はフィクションです。理論・論文・実装は実在しますが、解釈や噛みくだいた説明には、初学者向けに単純化した部分があります。厳密な内容は原典をご参照ください。






















































