みなさん、こんにちは。
今日はエンジニアリングという広い視点で、意思決定の軸になる数理的意思決定基準や意思決定手法に関して学んでみました。
内容的にはプログラミングやコーディングほどに具体的ではない、人間的アルゴリズムとも言えるような話ではありますが、知的活動の途上であるということで温かい目で見守ってください。
その意思決定はどの意味で合理的なのか?
「合理的な意思決定が大切だ」というような主張は一見もっともらしく聞こえます。
このときの合理的であるという意味は、意思決定基準を合理的に選んでいるかということを指しているのでしょうか。それとも、合理的な意思決定基準を使っているということを指しているのでしょうか。また、合理的な意思決定をするというのは一つの選択肢として導くことができるでしょうか?
経験的にそんなことはないですね。だいたい、意思決定を最適化するには何を評価軸にするのか、つまり尺度があって目的が一つに定まってないと、適切なアルゴリズムを選択できないですね。意思決定には定量化しにくい要素もあります。
すると、合理的というのはどの意味で合理的なのか。意思決定をする人がどのように合理的であるということを評価しているかによって、その結果は如何様にもなりえてしまいます。
例えば、その意思決定者は楽観的なのか悲観的なのかということは意思決定のやり方に大きな影響を与えますが、意思決定者が何らかのポリシーを一貫して持っていて、それに従った意思決定基準を持っていたとしても、置かれている状況が変われば、意思決定基準がころっと変わる可能性はあります。
また、意思決定基準が明確になったとして、論理的な意思決定方法を定めたとしても、結果の生起確率が確実に分かるという状況は多くはないでしょう。ですから、意思決定とその結果を確実に予想することができない不確実な環境下で意思決定を行わなければならないということもあります。
「合理的な意思決定をする」と思っても案外定義しようとすると、案外どこに目的を定めてよいかというのは決めることが難しく、どの程度合理的なのかというのは主観的なところも大きいのではないだろうかと感じます。
数理的意思決定は実社会でどのように使うか?
合理的な意思決定基準を考える際に、意思決定基準をいくつかモデル化することができます。
数理的にモデルを構築することは複雑になりがちな意思決定を整理する際に活用できます。
工学では意思決定を科学的に導くための考え方として、「オペレーションズ・リサーチ」という分野があり、例えば、食品工場で生産量を決めるときや、金融工学に置いて一定のリスクとリターンの中で最適な金融商品の割合を決めるとき、渋滞を緩和する策を検討したりする際に問題を数理的に扱っています。
意思決定の方法については社会科学や工学などいろいろな分野からそれぞれに研究されていて、どれも同じようなことを言っているのだけれども、説明の仕方が違ったり、重きを置くところが違ったりするために研究者の間で交流があるとは言えません。
私もざっくりと調べて学んだだけなのですべてを知っているわけではないですが、「こういう意思決定に関係しそうな分野があるよ」ということでまずは意思決定に関する研究分野を紹介します。
ゲーム理論
ゲーム理論はテレビゲームの理論ではありません。このゲームという言葉は「戦略的状況」を示しています。
意思決定を考えたとき、自分一人で何かを決める問題と複数人との関わりの中で決める問題があることに気づきます。複数人が関わっているゲームでは自分のことが100%分かっていても相手の情報がわからなければ最適な意思決定をすることができません。
チェスや将棋、囲碁を考えたとき、これらはゲーム理論において「完全情報ゲーム」と呼ばれます。そしてこれは「完備情報ゲーム」であるとも言えます。これはすべての意思決定のポイントにおいて、これまで自分や相手がとった行動や状態に関する情報がお互いにその盤上で把握できるゲームだからです。
この種のゲームは人間がとてもうまくできたのですが、コンピュータの発展により、AIは人間よりもうまく最適な選択を選ぶことができるようになりました。例えば、Googleの開発したAlphaGoは最善解を選択する際に機械学習アルゴリズムを用いたことで、飛躍的に強くなりました。
一見難しそうなことをやっているようですが、完全情報ゲームの解き方はものすごくシンプルです。計算に必要なすべての情報は盤上に記録されているわけですから、後ろ向き帰納法を用いて、終点に近い意思決定ポイントから解いていくのです。ただ、人間が計算していくのはとてもむずかしいと思います。
一方で、同じゲームでも麻雀やポーカーは相手の手札が全員に明らかになっているわけではありません。顔色を見たり、ブラフをしたり、場に出た牌から推測することで自分にとって有利な意思決定になるような情報を収集していくことが求められます。
このようなゲームはルールや結果は全員分かっている完全情報ゲームではありますが、相手の利得を把握することができません。この場合は「不完備情報ゲーム」であるとも言えます。
有名な囚人のジレンマというゲーム構造はお互いにゲームの構造を知っているので、完備情報ゲームではありますが、相手の選択を知らないという点で不完全情報ゲームであるとも言えます。
世の中の現実的なゲーム的状況を考えると、チェスや将棋のようにフェアに相手のとった手とその利得に関する情報が公開されている状況は実はそこまで多くないでしょう。それよりは、麻雀やポーカーのように確率で左右されるという状況はすこしは現実的には多そうです。
具体的に経済をイメージしたときどう言えるでしょうか。例えば起業家が起業する国を選ぶ時、法律や警察などルールがしっかりと出来上がっている国においては、誰でもフェアに市場に参加することができます。
しかし、ルールが曖昧で独裁的だったり、悪いことをした時にしっかり処罰されないような国はどうでしょうか。そのゲームの構造が簡単に変わってしまうような国では、誰しもがフェアに市場に参加することはできないので、なかなか起業したいとも思わないでしょう。
数理計画法
線形計画法は一次式のもとで制約条件のもとで目的関数を最適化する方法です。経営工学の分野ではかなり広く使われているように感じますが、経済学においても条件付き最適化問題として頻繁に使われます。
他にもナップサック問題など一次式では表現できないものは「非線形計画法」と呼ばれており、コンピューターで近似的な計算を行うことで実務的に使えるレベルで最適化することもよく見られます。
数理計画法は工学的な印象がありますが、経済学においてはゲーム理論から派生してマッチング理論、マーケットデザインという分野があり近年非常に注目されています。
実社会においては保育園の入園希望者マッチングや、医学部の研修先マッチングなど、数理計画法で扱われるようなものとほとんど同じ数理的な手法を使って多くの人の満足度を高めながら決定する手法の研究が進んでいます。
シミュレーションの手法を使って予測を立てるという方法も一種の数理計画といえるかもしれません。
階層分析法
個人的に数理計画法とは違った面白さを感じるオペレーションズ・リサーチの分野です。
階層分析法(AHP)は複数の評価基準がある中で意思決定を行う方法です。評価基準と評価基準ごとのモノやサービス、選択肢の評価を点数付け、統合することで総合評価値を合理的に算出します。
階層分析法についてはあまり詳しくないのですが、経済学の社会選択理論におけるボルダ投票となんとなく近いものがあるなと思いました。すると気になることがあります。
評価基準どうしの重要性を決める際に例えば「価格」「品質」「体裁」の3つの評価基準があるとして「価格と品質」「価格と体裁」「品質と体裁」のような一対一の組み合わせもまた3つできます。
その時に、通常AHPではそれぞれの評価基準のどちらをどれくらい重要視するかを回答していきます。通常はその重要性を選ぶときは5区分にしたり、9区分にしたりするようです。
以下のケースでは、推移性を満たしておらず、選択肢同士の重要性がぐるぐると回っており、一体どの基準を重視しているのかわからなくなります。こういったことも稀に起こると思いますがどうするのでしょうね。
品質より価格を重視する
体裁より品質を重視する
価格より品質を重視する
おそらくAHPではその意味でも区分を増やして、評価基準の重要性の順位付けをはっきりさせることでよりはっきりとした結果を導いて、決められないではなくて決めきれるように工夫されているのだと思います。
このあたりは経済学と工学で歩み寄ったら面白そうだなと考えました。
##意思決定基準の代表例
意思決定基準というのは、一人で何かしらの意思決定をする際の判断基準だと言えます。
例えば、私はどちらかというとリスク回避的な思考が強い人間ですから、なるべく保守的な選択肢を取り続けることに幸せを感じています。一方で妻は日常の意思決定が極めてギャンブラー的であり、かなりポジティブに、自分の都合の良いように選択することで幸せを感じるようです。
このように人によって意思決定をする際の考え方が異なり、これを数理的意思決定においては意思決定基準といいます。
いろいろな基準が考えられており、どれも一理あるので、ぜひ皆様もなんらかの意思決定を行う際はこれらの意思決定基準を意識してみてください。
マキシマックス基準
最大利得を最大にするというのがマキシマックス。最良の状態を考え、そのうち最もよいものを選択します。
ここで、地元で愛される居酒屋の店長である伊坂さんが毎日アルバイトの店員を何人配置するかを考える意思決定をするとします。いつ緊急事態宣言が発令されてお客さんがぱったり来なくなるかはわからないものとします。
一番上の行は何人店員を配置するかということであり、その下の数字は1日の売上です。「通常」というのはコロナ以前の予想収益で、「コロナ渦」というのは緊急事態宣言下の予想収益であり、ここではこの数字を利得とします。
ゼロ | 1名 | 2名 | |
---|---|---|---|
通常 | -10 | 30 | 60 |
コロナ渦 | -10 | -30 | -60 |
この表では通常時の利得は常にコロナ渦のときの利得と同じか上回っています。
めちゃくちゃポジティブな店長伊坂さんはマキシマックス基準で意思決定を行いますので、コロナがまた再流行することなど考えずに、お客さんが来ることを常に期待して待っています。
「よし、いつでもお客さん来てくれよな!」
これまでの経験から店員が2名いるとオペレーションが最適化されることを学んでいたので、利得が最大になる2名稼働させた際の60という利得を得るために、2名アルバイトを配置する」という選択肢を選びます。
「これで皆は来てくれるし、最大利得を獲得することができるのだからOK!」
今日も伊坂さんは地元の人々が気持ちよく交流できる素敵な酒の場を提供するために意思決定をしたのでした。
マキシミン基準
最小利得を最大にするのがマキシミン。最悪の状態を考え、その中で最も良いものを選択します。
ゼロ | 1名 | 2名 | |
---|---|---|---|
通常 | -10 | 30 | 60 |
コロナ渦 | -10 | -30 | -60 |
伊坂さんは最悪の状態を想定した保守的な意思決定基準を持っています。
上記の表における選択肢のなかで最小利得を選ぶと、すべての選択肢でコロナ渦に最小利得となります。
その中で最大になるのは店員さんをゼロ稼働させた際の-10という利得なのでゼロ人を選択します。
「もちろん通常状態だったら2人を選ぶんだけどね…」とつぶやくのですが、やっぱりどちらに転ぶかはわからないので、やはりコロナ渦という最悪の状態を考えてもっともマシな選択肢であるゼロ人を選びます。
ハーヴィッツの基準
最大利得と最小利得を楽観係数で重み付けした合計値を検討します。
αが楽観・悲観の程度を示しています。α=1であるときマキシマックス基準と一致し、α=0のときマキシミン基準と一致します。よってαをどの大きさにするかによってどの選択肢が選ばれるかは変わってきます。
伊坂さんのαがいったいいくつなのか…、話を聞くと毎日ニュースを見ながら新型がどのくらい流行するか考えてみてはいるのですが、やはりよくわからなくなりますし、日によって刻々と状況が変化するので、なかなか決まらず毎日0から1を言ったり来たりしているようです。
ミニマックスリグレット基準
自然の状態ごとに見た最大利得と比較した機会損失を最小とする選択肢です。
アルゴリズムとしては、状態が予め分かっていれば選択しただろう最良案と、実際に選択した案との差〈機会損失〉を考え、代替案毎にそれが最大になるものを各々求めそれを最小にします。
例えば利得行列を以下の通りとしたとき、好況の時の最も良い選択肢は2名を選び60を得ること。そしてコロナ渦のとき最も良い選択肢はゼロを選び-10を得ることです。
ゼロ | 1名 | 2名 | |
---|---|---|---|
通常 | -10 | 30 | 60 |
コロナ渦 | -10 | -30 | -60 |
好況のときに2名、コロナ渦のときはゼロ名を選ぶ、これが「自然の状態ごとにみた最大利得」、すなわち「状態が予め分かっていれば選択しただろう最良案」です。
ここからリグレット(機会損失)を計算するには、自然の状態ごとに見た最大利得(通常状態もしくは、コロナ渦状態)から実際の利得を差し引くことで得られます。
ゼロ | 1名 | 2名 | |
---|---|---|---|
通常 | 60-(-10)=70 | 60-30=30 | 60-60=0 |
コロナ渦 | -10-(-10)=0 | -10-(-30)=20 | -10-(-60)=50 |
リグレットの最大値を取得するとゼロのとき70、1名のとき30、2名のとき50です。リグレットの最大値が最小になるような選択肢が1名を選択します。
ラプラスの基準
状態の生起確率を同じとして、選択肢の平均利得を取り最大値を取ります。
ゼロ | 1名 | 2名 | |
---|---|---|---|
通常 | -10 | 30 | 60 |
コロナ渦 | -10 | -30 | -60 |
平均 | -10 | 0 | 0 |
平均を計算すると、おやおや1名と2名ではどちらも0で同じ最大値となっていますね。
伊坂さんは、アルバイトを1名にするか、2名にするか決めきれませんでした(笑)
合理的に決め、合意して実行する
私はエンジニアリング的には最適化、合理化することに心地よさを感じます。
これまでの意思決定においても多くはミニマックスやミニマックスリグレットで選択してきました。
しかし、その意思決定は本当に良い結果を導くのかというと人生は一度きりなので再現実験をしたりランダム化比較試験をすることはできません。かなり強力な武器にはなりますが、こと社会においては数理的な合理的意思決定がそのまま使える場面ばかりではないような気もします。
ゲーム理論や社会選択理論で扱われるような、自分だけではない他者との意思決定においては、相手の判断基準に一貫性がなかったり、思いつきやランダム性に任せた意思決定をすることはよくあります。
ミクロ的には合理的に決められるような問題であっても、マクロ的には合理性だけではにっちもさっちもいかなくなるような問題にも直面します。
それでも、これからはあらゆる情報が少しずつ透明化され、データが整備されていくでしょう。複雑な問題をなるべくKISS(Keep it Simple Stupid)にして考えるためにも、データを小難しく弄るのではなく、数理的な意思決定方法が人の心にストンと落ちるような使い方を考えなければなりません。
ビジネスにデータを活用し、利益をもたらすことが目的であるならば、仮説が意思決定者の共感を掴み、そして分析の結果導き出した結論が周囲の人を動かし、何らかの意思決定に繋げなければ意味がありません。
意思決定においてシンプルに問題を整理できる数理モデルの強みを活かすことができれば、もっと世の中に気持ちの良い意思決定が増えていくのではないかと考えています。