VCGメカニズムでなぜ正直申告が引き出されるかの説明(その2)

前回の記事その1では、単に「単純な決定ルール」を採用すると、基本的には各人にとって、「各選択肢が選ばれたときの自身の嬉しさを並べたベクトル」と「自身が正直申告したときに『単純な決定ルール』が最大化する」ベクトルが必ずしも一致しないため、正直申告が保証されないことを見ました。

この記事では、「単純な決定ルール」について数値例を出してイメージを掴んだ上で、お金の仕組みをどうデザインするかについてVCGメカニズムに繋がっていくような例(と比較として役立つ例)を見ていきます。そして、最後に重要だと思われる点を1つだけ確認します。

「単純な決定ルール」のイメージ

クラスの構成人数をここでは3人にしておきます。それぞれの個人は評価ベクトルを持っているわけですが、実際に申告するのは(100,100,200)でも(100,0,30)でも(0,200,111)でもなんでも良いです。各個人は同時に何かしらのベクトルを申告します。そして仮に1さんは(50,40,110)2さんは(10,300,500)3さんは(0,0,100)を申告したとしたら、社会としてはcを選ぶことになります(cが和を最大にしていることに注意)。

同じように、1さんは(10,40,0)2さんは(0,200,10)3さんは(10000,50,40)を申告したとしたら、社会としてはaを選ぶことになります*1。このような(和の比較による)決定のアルゴリズムのことを「単純な決定ルール」と呼んでいます。

なぜ、わざわざ「単純な決定ルール」について数値例まで出したかというと、「給食のメニューを決めるために投票をしましょう。皆さん一番好ましいものを1つ選んで教えてください」のような状況が典型的であると思うのでそちらにイメージが引っ張られると、各人が申告するのが(10,20,0)などのベクトルであることが忘れがちになってしまうと思ったからです。各個人が申告するのはベクトルです。そして「単純な決定ルール」は、その中で和が最大になる選択肢を選びます。



上手くいかない「お金の仕組み」

前回みたのは上のような「単純な決定ルール」では正直申告を引き出せることが保証されていないことでした。ここからなんとかして、お金の仕組みを上手くデザインすることで「単純な決定ルール」を採用しても各人が正直申告することを保証したいです。

これは上手くいかない例ですが、「お金の仕組み」として*2、「単純な決定ルールがaを選ぶ場合には全員に10円あげることにする。それ以外の場合には特に何もしない」というものを考えてみます*3

この場合も例えば1さんに注目すると(1さんの評価ベクトルは(100,200,300)であるとする)、1さんが最大化して欲しいベクトルは(100+10,200,300)となる。1さんは単純な決定ルールによってaが選ばれたら100+10だけ嬉しくて、bが選ばれたら200だけ嬉しくて、cが選ばれたら300だけ嬉しいので、1さんが「単純な決定ルールは実際には申告された評価ベクトルから作った和のベクトルを最大化するような選択肢を選ぶわけだけど自分としてはこのベクトルを最大化するような決定をしてほしいなぁ」と思うベクトルは、(100,200,300)ではなくて(100+10,200,300)となりました。しかしだからといって、最初から1さんの評価額が(100+10,200,300)である場合と特に何も変わらず1さんが他人の申告に関係なく(100,200,300)と正直申告をするとは言えなさそうです。

より正確にいえば、他人の申告に関係なく、「自分が最大化されて欲しいと思うベクトル(自分が「単純な決定ルールがこのベクトルを最大化するように決定してくれた良いのにな」と思うベクトル)と、「正直申告した場合に単純な決定ルールが最大化するベクトルが一致する」とはいえないわけです。

次も上手くいない例ですが、「お金の仕組み」として「単純な決定ルールがaを選ぶ場合には2さんが申告したaの評価額を全員にあげて、単純な決定ルールがbを選ぶ場合には2さんが申告したbの評価額を全員にあげて、単純な決定ルールがcを選ぶ場合には2さんが申告したcの評価額を全員にあげる」という仕組みを考える。これが上手くいかない理由は置いておきますが(例えば2さんがすべて0という申告をすることを考えれば分かりやすいと思う)こういう例を考えることもできます。*4

ここまでで2つのお金の仕組みについて見ました。どちらも正直申告を引き出すことを保証しませんが、これらの例を見ると、色々な「お金の仕組み」を考えられそうだなという気がしてきます。

重要だと思われる確認

上では「単純な決定ルール」と「お金の仕組み」についてイメージを膨らませました。実はいま見た2つの「お金の仕組み」に注目するとVCGメカニズムが正直申告を引き出すことをカチッと理解するためのポイントが見えてくる気がします。ただし、何か重要な「気づき」をここで得るというよりは、以下のことを確認しておくとその後の理解がカッチリいく気がするので確認しておくかんじです。

まずそもそも何も「お金の仕組み」がない場合には(orどんな申告に対しても全員に0円をあげるようなお金の仕組みを考える場合には)、1さんの評価ベクトルが(100,200,300)だとすると、他の人がどういう申告をしてきたとしても1さんにとって「各選択肢が選ばれたときの自身の嬉しさを並べた」ベクトルは(100,200,300)です。

また、上の例における最初の「お金の仕組み」を考えた場合にも、他の人がどういう申告をしてきたとしても1さんにとって「各選択肢が選ばれたときの自身の嬉しさを並べた」ベクトルは(110,200,300)で変わりません。

しかし、上の例における2番目の「お金の仕組み」を考えると、他人の申告によって(より正確には2さんの申告によって)「各選択肢が単純な決定ルールによって選ばれたときの自身の嬉しさを並べた」ベクトルは変わってきます。2さんが(b_2',b_2'',b_2''')を申告している場合には「各選択肢が単純な決定ルールによって選ばれたときの自身の嬉しさを並べた」ベクトルは(100+b_2',\ 200+b_2'',\ 300+b_2''')となります。

なお2さんについてはこの「お金の仕組み」においては他人の申告が決まったところで、「各選択肢が単純な決定ルールによって選ばれたときの自身の嬉しさを並べた」ベクトルが何になるかすら決まりません(なぜなら自身が何を申告するかによってしまうからです)。

この整理で網羅的になっているわけではないですが、2番目の「お金の仕組み」における1さんについての上の議論は今後重要になってきます(それを拡張するのがVCGメカニズムにおける「お金の仕組み」になるので)。

続く

*1:なお、本当は同着の場合についても考えておく必要があるが直感を掴むという目的からはあまりいらない気がするので言及していない。

*2:ちなみに、ここでいう「お金の仕組み」とは「こういう申告が行われたら、1さんには何円あげて、2さんには何円あげて、、、、nさんには何円あげよう」のようにそれぞれの申告について誰に何円あげるか(場合によっては払わせるか)を定めるものです。

*3:よりお金の仕組みの定義に沿っていえば、単純な決定ルールがaを選ぶような申告があった場合には全員に10円をあげ、それ以外の申告の場合には何もしないようなお金の仕組みを考えるということ。

*4:もちろん申告に関係なく全員に100000円あげるなどのお金の仕組みを考えることもできますし、3さんが(10,10,10)を申告した場合にのみ単純な決定ルールが何を選ぶかに関係なく全員に10あげて他は何もしないお金の仕組みなども意味は不明ですが考えることもできます。