背景
- 「困難を分割する」という考え方は、ソフトウェア工学だけでなく、哲学・政治・数学・経済学など、分野を問わず繰り返し現れる
- この記事では、AIに、分野ごとの「分割」の実例を並べて、その共通点を整理してもらった
例
デカルトの方法序説: 困難は分割せよ
- デカルトが1637年の『方法序説』第2部で示した、4つの規則の2番目
- 検討する難問それぞれを、できるだけ多くの、適切な解決に必要なだけの小部分に分割すること、としている
- 複雑な問題を、扱いやすい構成要素に分けてから、1つずつ解いていくという、分析的なアプローチの原型にあたる
分割統治法(Divide and Conquer、計算理論)
- マージソート・クイックソートなどに代表される、アルゴリズム設計の基本技法
- 問題を、互いに独立したより小さなサブ問題に分割し、それぞれを再帰的に解き、最後に結果を統合する
- サブ問題同士が独立しているからこそ、個別に解いても、後で正しく結合できる
分割統治(Divide and Rule、政治・統治戦略)
- Divide et Imperaというラテン語の格言に由来する、統治者が権力を維持するための戦略
- 被支配者の間に分断(既存の対立の利用、あるいは新たな対立の演出)を作り、共通の敵として団結させないことで、反乱を防ぐ
- カエサルのガリア征服や、イギリスの植民地統治などが例として挙げられる
- 計算理論の分割統治法とは目的が正反対(効率的な解決ではなく、支配の固定化)だが、「全体を分割することで扱いやすくする」という同じメカニズムを利用している
探索と活用のトレードオフ(強化学習)
- 強化学習・バンディット問題における、未知の選択肢を試す「探索(Exploration)」と、既知の最良の選択肢を使う「活用(Exploitation)」の間のトレードオフ
- 代表的な解決策の多くは、両者を同時に満たす1つの行動を求めるのではなく、行動や時間軸を分離することで対処している
- ε-greedy: 確率εで探索(ランダムな行動)、確率1-εで活用(既知の最良の行動)と、行動そのものを確率的に2つのモードに分離する
- Explore-then-Commit: 時間軸を探索フェーズと活用フェーズに分離し、最初のNステップで探索した後、残りは活用に専念する
- ワールドモデルについて理解する為のサーベイで扱ったSystem Mも、探索と活用のモード切り替えという形でこのトレードオフを扱っている
ソフトウェアのパッケージ分割
- モジュール・パッケージを、互いに依存関係の少ない単位に分割する
- 依存関係が複雑に絡み合うと、1つの変更が全体に波及してしまい、個別に検証することができなくなる
- 分割された単位が独立していればいるほど、個別に開発・テスト・デプロイできる
要件の分割(REQ-ID)
- 自分がNTT系の会社で見たやり方で、REQ-1, REQ-2のように、要件を文単位でIDを振って徹底的に分割するやり方
- 1つの要件文を独立した単位として扱うことで、その意味や解釈や具体的な設計、さらに進捗や検証を要件ごとに個別に追える
- この粒度でやる場合は、もはや要件定義書がバイブルのごとく神格化される手法
- 仕様全体を1つの巨大な文章として扱うのではなく、分割された要件それぞれにフォーカスできる
因数分解(数学)
- 数や多項式を、それ以上分解できない独立した因子(素因数、既約多項式)に分解する
- 因子同士は掛け算で結合されるだけで、互いに独立している
- 大きな数・複雑な式を、より単純な構成要素の組み合わせとして理解できるようにする
分業制(Division of Labor、経済学)
- Adam Smith『国富論』(1776)の、ピン工場の例が有名
- ピンの製造工程を、針金を引く・切る・尖らせるといった、独立した工程に分割し、それぞれの工程に労働者を専門化させることで、1人で全工程を行うより生産性が大きく上がることを示した
- 工程を分割し、各工程を独立した単位として扱うことで、個別に最適化・専門化できる
層化抽出(統計学)
- 母集団が、複数の異質な部分集団(例えば、工場労働者・事務職・退職者のように性質が大きく異なる層)から構成されている場合、全体を1つの集団として単純にランダム抽出すると、層ごとの偏りが結果に乗ってしまい、推定がブレる
- 層化抽出(Stratified Sampling)は、母集団をあらかじめ比較的均質な層に分割し、層ごとに個別に抽出・分析する手法
- 層内の標準偏差が、全体の標準偏差より小さくなるようにすることで、推定の精度を上げる
- 多峰性(複数のピークを持つ)分布を1つの分布として扱って平均・分散を計算すると、どの峰にも対応しない、意味のない値になってしまうのも同じ問題。そもそも異質な集団を1つにまとめていることが原因なので、分析の手法を工夫するより、先に集団を分割する方が筋が良い
エッセンス
解決できない時は、まず分割を検討する
- 問題が解決できない・分析結果が安定しないときに、その原因を深く分析したり、新しい仮説を立てたりする前に、そもそも対象が複数の異質なものの集まりになっていないかを確認する
- 層化抽出の例のように、異質なものを1つの対象として扱っていることそのものが原因であることが多く、原因分析や仮説よりも、先に分割を検討する方が早く解決に近づく
共通する本質
- デカルトの方法論、分割統治法、要件分割、因数分解、分業制は、いずれも「困難・対象を、できるだけ独立した(他に依存しない)単位に分割し、それぞれに個別にフォーカスする」という同じ構造を持つ
- 政治的な分割統治だけは、この構造を効率化のためではなく、支配の固定化のために使っている点で異質だが、「分割することで全体を扱いやすくする」という点では同じメカニズムを利用している
まとめ
- 「困難を分割する」という考え方は、デカルトの方法論から、計算理論の分割統治法、政治的な分割統治、強化学習の探索と活用の分離、ソフトウェアのパッケージ・要件分割、数学の因数分解、経済学の分業制、統計学の層化抽出まで、分野を問わず繰り返し現れる
- 解決できない・分析が安定しないときは、原因分析や仮説よりも先に、対象が異質なものの集まりになっていないかを確認し、分割を検討する方がいい
- 共通する本質は、対象を独立した非依存の単位に分割し、それぞれに個別にフォーカスすること
- 政治的な分割統治だけは、同じメカニズムを支配の固定化という逆の目的に使っている点で対照的
参考文献