モジュラーなセグメンテーション・パイプラインのための高階合成

著者: Asher Bond (asher.bond@distillative.ai)

要旨

Meta の Segment Anything Model (SAM) に代表されるセグメンテーション・システムは、構造的には 一連の段階 — 前処理、エンコード、プロンプト付与/注意、マスクのデコード、後処理 — の連なりである。 本稿は、これらの段階を高階関数(他の関数を引数に取る、あるいは返す関数)として組織し、 モジュラーで再構成可能なパイプラインを導く。その論拠は、合成に関する関数型プログラミングの標準的な 定式化 [1, 2, 3] と、セグメンテーション・モデルがプロンプトや文脈に応じて出力を条件づける機構としての 注意 [4] に置く。設計は一連の入力・処理・出力(IPO)の実例として提示する — 前処理コンビネータ、 パラメータ化されたセグメンテーション関数のファクトリ、並列マップ段、強化学習型チューニングのための 合成可能な報酬、そしてエージェントが編成するパイプラインである。これらの実例が規定するのは構造で ある。すなわち、合成がもたらすモジュラー性、再構成可能性、そして構成上保証される並列性であり、 いずれも特定のフレームワークや言語から独立して表現される。

1. 序論

画像セグメンテーションは、画像を物体やその部分に対応する領域へと分割する。SAM を典型例とする現代の プロンプタブルなセグメンタは、重いイメージ・エンコーダと、軽量でプロンプトに条件づけられたマスク・ デコーダを結合する。これにより、一度エンコードした画像を、プロンプトに応じて幾通りにもセグメント できる。このアーキテクチャは既に合成の精神を体現している。再利用可能なエンコード段が、 プロンプト固有のデコード操作の一群に供給を行うからである。

本稿は、この合成性を設計原理として明示する。固定された一本道のパイプラインではなく、各段を高階関数 — 他の関数によってパラメータ化された関数 — とすることで、パイプラインを書き直すことなく段を差し替え、 特殊化し、再結合できる。これは、より小さな関数を合成してプログラムを構築するという関数型プログラミング の常道 [1, 2, 3] を、セグメンテーションのワークフローに適用したものである。

2. 関連研究

注意とプロンプタブルなモデル。 注意機構 [4] は、現代のセグメンタにおけるプロンプト条件づき デコーダの基盤をなす。注意とは、デコーダが与えられたプロンプトに関連する画像領域へと焦点を合わせる 仕組みそのものである。本稿では SAM を、プロンプタブルで二段構成(エンコードののちデコード)の セグメンタの動機づけ事例として扱う。

関数合成。 高階関数を合成してシステムを構築することは、Backus による関数型のプログラム代数 [1]、 高階関数と遅延評価こそが関数型プログラムをモジュラーにするという Hughes の論 [2]、そして関数を 第一級の値として扱う Strachey の基礎的考察 [3] の主題である。ここでのパイプライン設計は、まさに この語彙の応用にほかならない。

アンサンブル/合意によるチューニング。 設計が複数の候補出力あるいは報酬信号を結合する箇所では、 関連する既刊の直観は、複数の推論経路を集約すれば信頼性が高まるというもの — 自己整合性デコーディング [5] に見られるとおりである。§3.4 の合成可能な報酬は、この直観を報酬信号へ適用する。

3. 入力・処理・出力形式による実例

以下の実例は、パイプラインの各段を入力 処理 出力として規定する。そのうえで高階の構造 — 他の関数を生み出す、あるいは消費する関数 — を明示する。

3.1 前処理コンビネータ(関数を包む関数)。

3.2 セグメンテーション関数のファクトリ(関数を返す関数)。

3.3 並列マップ段(コレクションに対する高階関数)。

3.4 合成可能な報酬(強化学習型チューニングのための)。

3.5 エージェントが編成するパイプライン(役割によって選ばれる関数)。

これら五つの根底にあるのは一つの操作 — 関数合成 — であり、それが異なる粒度で適用されている [1, 2, 3]。タスクを小さく単一目的の関数へ分解し、それらを再合成することこそが、パイプラインを モジュラーにする。ここには特定のフレームワークや言語に依存するものは何一つない。

4. 合成がもたらすもの

セグメンテーションのワークフローを、合成された高階関数として構造化すれば、三つのソフトウェア工学的 性質が直接に得られる。モジュラー性と再構成可能性: 各段は他の関数によってパラメータ化された 関数であるため、前処理、モデル、閾値、報酬信号を、パイプラインを書き直すことなくその場で差し替えられる (§3.1, §3.2, §3.4)。構成上の並列性: 各段はその入力に対する純粋関数であるため、バッチへのマップは 当たり前に並列である(§3.3)。これは純粋関数パイプラインの性質であり、後から調整して得るものではなく、 構造そのものによって保証される。データとしてのオーケストレーション: 段の選択はオーケストレータが 解決する記述子であるため、パイプラインの形状はコードではなく構成である(§3.5)。これらはいずれも、 本設計が適用する関数型プログラミングの常道から帰結する [2]。

根拠と適用範囲

本稿は一つの設計である。すなわち、プロンプタブルなセグメンタを、合成された高階関数へと分解し、各段を IPO 変換として規定する。ここで確立される性質 — モジュラー性、再構成可能性、構成上の並列性 — は、 純粋関数合成の構造的帰結であり [1, 2, 3]、§3.2 の受理/棄却閾値は、マスク判断に測定可能な構造を 与える信号検出の基準である。SAM は、本設計が一般化するエンコード・デコード形式の動機づけ事例である。 §3.4 の合成可能な報酬は、自己整合性による集約の直観 [5] を報酬信号へ適用する。本稿の貢献は、この 合成的アーキテクチャと、その構造的保証にある。

参考文献

  1. John Backus (1978). Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs. Communications of the ACM. [1977 ACM Turing Award Lecture]
  2. John Hughes (1989). Why Functional Programming Matters. The Computer Journal.
  3. Christopher Strachey (2000). Fundamental Concepts in Programming Languages. Higher-Order and Symbolic Computation. [Reprint of 1967 lecture notes]
  4. Ashish Vaswani et al. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems (NeurIPS). arXiv:1706.03762.
  5. Xuezhi Wang et al. (2023). Self-Consistency Improves Chain of Thought Reasoning in Language Models. International Conference on Learning Representations (ICLR). arXiv:2203.11171.