📐

モデリングとはモデル化である

2021/09/06に公開

モデリングとはどういうものかを改めて認識してみます。

「モデル」と「モデル化」

そもそもモデルとは何か、ということに関して様々な説明がありうるが、例えば大学生向けのあるテキストでは「モデルとは、対象とするシステムを簡略化して、その本質を表したもの」「システムを理解するために用いられる」などと解説されている。
リンク: https://ja.wikipedia.org/wiki/数理モデル#モデルとは

対象の理解したい本質を表したものが「モデル」のようです。つまり「モデル化」とは、(現実世界の)対象の理解したい本質を抽出し表現する作業のことだと言えそうです。

ここで、対象の理解したい本質と言われているもののイメージを掴むために、一度システム開発から離れたモデル化を見てみます。

モデル化:グラフ(離散数学)

Alice, Bob, Carol は一緒に遊ぶことの多い 3人組です。
Bob と David は面識はありませんが、それぞれ Carol と友達です。
Elen は Alice, David とそれぞれ 2人きりで遊ぶ仲です。

この友達関係を図で表すと下になります。

これは、無向グラフとして表現されたものです。無向グラフは G=\langle V, E \rangle で表現されます。

  • V: 頂点の集合
    • 上の図の場合、V=\{ Alice, Bob, Carol, David, Elen \}
  • E: 辺の集合
    • 上の図の場合、E=\{ (Alice, Bob), (Alice, Carol), (Alice, Elen), (Bob, Carol), (Carol, David), (David, Elen) \}

これがモデル化です。友達関係に注目して、無向グラフ G=\langle V, E \rangle を用いたモデルを作成しています。

モデル化:ゲーム

懲役1年で服役中の A と B は協力してある完全犯罪を成功させていたが、別々の部屋で尋問を受けている。
そこでは、それぞれ次のような提案を与えられる。
・相手が自白せずに君だけが自白をすれば、君を即釈放する
・もし逆のことが起これば相手は即釈放だが、君は懲役 10年となる
・互いに自白した場合、それぞれ懲役 5年となる
互いに自白しなければ確実にバレることはないのだが、どのような結果になるか。

これは「囚人のジレンマ」としてよく知られるもので、下のようにまとめられます。

A の選択\B の選択 黙秘する 自白する
黙秘する A:懲役 1 年, B: 懲役 1 年 A:懲役 10 年, B: 懲役 0 年
自白する A:懲役 0 年, B: 懲役 10 年 A:懲役 5 年, B: 懲役 5 年

ゲーム理論の戦略形ゲームではこれを「利得表」と呼んだりします。これはゲーム G=\langle N, A, u \rangle で表現されます。

  • N: プレイヤの集合
    • 上の表の場合、N=\{A, B\}
  • A: 行動の選択肢の集合
    • 上の表の場合、A=\{ 黙秘する, \; 自白する \}
  • u: 利得関数
    • 上の表の場合、u(a_A, a_B)=\begin{cases} (-1, -1) \;\; (a_A=黙秘する, a_B=黙秘する\;の場合)\\ (-10, 0) \;\; (a_A=黙秘する, a_B=自白する\;の場合)\\ (0, -10) \;\; (a_A=自白する, a_B=黙秘する\;の場合)\\ (-5, -5) \;\; (a_A=自白する, a_B=自白する\;の場合) \end{cases}
    • ただし、a_A, a_B \in A はそれぞれ A, B の選択した行動を表している。
    • また、右辺の括弧内の左側がA, 右側がBの利得であり、懲役年数をマイナスの嬉しさとして表現している。

つまり、戦略形ゲーム G=\langle N, A, u \rangle としてモデル化することで、「行動の選択肢」「行動を選択した結果」に注目した理解をすることができます。

改めて「モデル化」とは

上の例から、モデル化というのはある決まった G=\langle \cdot \rangle の形式に落とし込むことであると認識できます[1]。システム開発においては、この決まった形として使われるのがデータモデルやドメインモデル、概念モデルなどになります。

ただし、数式として表現する必要は特にありません[2]。上の例でも、図や表を記述した時点でモデルとして十分作用しており、数式による定義まで必須ではなさそうです。特にシステム開発においては、モデル図を書くことで表現することが多いと思います。

ただ、G=\langle \cdot \rangle のように数式で一意に記述しようとすればできること、そこにはモデルが注目する本質がはっきりと表現されていることを認識しておくことは大事だと思います。

脚注
  1. G という英単語を使用していますが、上の例は "Graph" と "Game" の頭文字がたまたま "G" で一致していて都合がよかったのでこれを使っています。 ↩︎

  2. システム開発におけるいろんなモデルの確立された数式表現を知らないので、ご存知でしたら教えてほしいです🙇 ↩︎

Discussion