Polis勉強会
その後
公共のpol.isインスタンスは手軽に使えて便利なんだけど生データにアクセスできないので、自前でインスタンスを立てることによって生データで色々実験できるようになった
Polisはより良い熟議のための便利な道具
なのであちこちの応用で使われている
しかし「Polisを入れたら熟議になる」のような魔法の杖ではない
いろいろな応用を観察する中で、状況とのミスマッチや、変更したいところが具体的に見えてきた
道具を状況に合わせて調整するためには、道具が機能する仕組みを知る必要がある
そこで今回はPolisの内部を掘り下げる
色々な人と話して反応を見て思ったこと
Polisを投票によって意思決定するためのツールと誤解していることがある OpenAIによる定義
「民主的プロセス」とは、
(A)広く代表的な人々が意見を交換し、熟議を行い、 (C)最終的に結果を決定するプロセスを意味します。
投票による多数決は(B)(C)を満たしているけど(A)が怪しい
熟議をもっと支援する必要がある
デジタル技術によって新しい形のコミュニケーションができるようになった、だから熟議をデジタル技術によって支援するぞー、というのがデジタル民主主義の重要な側面 デジタル技術の前のコミュニケーションとは、例えば政治家が駅前で演説したり、政治家に意見を伝えるために陳情にいったり。
コミュニケーションの効率が悪かった。
Polisは「熟議をスケールさせる技術」
熟議がもっとスケールするようなコミュニケーションの形を設計している
従来のフォーマットではない、より熟議に適したコミュニケーションのメカニズムが模索されている
今年に入ってLLMの技術の進歩によって「LLMを組み合わせればもっと良い熟議のメカニズムが作れるのでは?」という状態になっている
先ほどのOpenAIによる「民主的プロセス」の定義もこれに書かれている
AnthropicはOpenAIよりコンテキスト幅の広いClaudeを作ってる組織
台湾やエストニアがデジタル投票に積極的なのは地政学的リスクによる
2014年〜、香港では「選挙の無意味化」とそれに反対するデモ(雨傘運動)が起きた 台湾も同様の「選挙の無意味化」が行われることを危惧している
軍事力によって「今の物理世界での選挙」が「悪いもの」に変えられてしまう可能性がある
この可能性に対抗するために「選挙」をオンライン世界に移動したい
かつてエストニアも同じことを考えて電子投票を始めた
エストニアは現在も「いつか再び国土が支配されるかもしれない」という危機感を強く抱いている。...
...たとえ国が侵略されて物理的に「領土」がなくなったとしても、国民の「データ」さえあれば国家は再生できる...エストニアは、国のあらゆるデータを国外の大使館にて保管する「データ大使館」という構想を進めており、2018年にはルクセンブルグに最初の拠点が開設される。 物理的に領土が占領されて政府が機能しなくなったとしても、インターネット上にソフトウェアとしての政府があれば、IDカードを持った国民がそこにアクセスすることで、エストニアという国として機能することができる。まさに、これが「Government as a Service」の思想である。そして、この思想こそが国が目指すべき国家安全保障の究極のゴールだと同国政府の前CIOも語っていた。 human.iconオンライン世界の方が防衛しやすい?
そうなれば破壊することは困難になる
台湾だけの規格を作るより国際的に標準化されたものを作った方が彼らの目的に適しているから
そういう背景がこれらの国のデジタル投票推進の背後にあるわけなのだけど、ぶっちゃけ今の日本には台湾が感じてるような脅威がないので、大部分の日本人がこの問題意識に共感できないのは当たり前 なので、西尾個人の意見としては「日本でPluralityを推し進める上ではデジタル投票の話をしても理解されにくいので『みんなの意見の分布が可視化されるのは有益だよね』という側面にウェイトを置いて説明した方がいい」と思っている つまり「Polis面白いからやってみよう」になる
未成年者に投票権がない不平等を正そう(ドメイン投票方式)とか、余命が長くても短くても同じ投票力なのは不平等では(余命投票制度)とかで「一人一票でない投票方式」を実装しようとすると「紙と箱の投票では実装困難だからデジタル投票の方がいいよね」という話になるけど、まあまだそれらの投票制度の議論が広まってない感があるよね human.icon「代表性」について、デジタル技術によって「代表者」が究極的には「個人」にまで小さくできる?
nishio.iconオフラインの代議制民主主義では高々数百人で全国民の代表をしなければならなかったので、少数派意見を代表することができなかった デジタル技術によって個人が意見を発信できるようになった
しかし現状のSNSなどでは逆にそれを束ねることができなくて情報洪水になっている、小さいだけでは理想状態ではない
なので良いバランスやクラスタリング(=代表)の仕組みが必要になっている
Polisの変えたい点
投票者が7人以上にならないと可視化されない
人数少ない時に可視化をしないことは、個々人の意見が見えにくくなるメリットがある
少人数の社内議論を可視化したいシチュエーションでは不便
一般ユーザの意見の投稿は「賛成」とみなされる
つまり「賛成の人と反対の人とどちらが多いんだろう?」という気持ちでの投稿ができない
でもTwitterなどで投票が作られるシチュエーションを見ていると「みんなどう思ってるのかな?」も多いよね
現状のPolisは自分が投稿した意見に他の人がどう投票したかを知る手段がわかりにくい
詳細レポートで個別意見の得票を見る
運良くクラスタの主要な意見に選ばれれば可視化でも見れる
個別意見の投票へのパーマリンクがあるといい
投票するとみんなの投票結果が見れる
投票済みの場合は最近の結果が見れる
このURLをシェアすると、他の人も投票できる
意見投稿者がSNSに投稿するインセンティブが生まれる
投票を更新できない
「選挙」「投票」のイメージで捉えていると、後から投票を変えてはいけないように思ってしまう
だが他の人のアウトプットを見て自分の意見を変えることこそ「熟議」
変わらないなら単なる統計調査に過ぎない
現状、自分が何にどう投票したのか振り返るビューがない
そこから投票内容を変更できるといい
多分これはPolisが「考えない人」の「感情」を集めることにフォーカスしているから
西尾がPolisをやったときに、参加してフィードバックを返してくる人には「考える人」が多い
僕も個人的には「1000人の考えない人の感情」より「10人の考える人の思考」を観察したい
民主的プロセスとしては「少数の人が考えて決めた」だと、参加できなかった人の納得感が得られない
今の設計では「考える人」の「知りたい気持ち」に応えることができない
「Yes/Noを答える前に、判断材料になる資料が示されたらいいのに」という意見がある
実際にそれをやると資料を読みたくない多数派が離脱するだろう
Polisは裾野を広くするアプローチ、広い範囲にリーチして、そこから興味を持って深く関わりたい気持ちになった人を掬い上げて集める仕組みが必要
コメントを見てリプライを書きたくなる
意見に対して直接意見をかけないことがPolisの意図的なデザイン
フレーミング(レスバトル)を避ける
ところが、しばしばユーザの「自分の考えを書きたい気持ち」が高まる
この状態は、言語化のインセンティブが高まってる
素直に書かせた方がデータが増えて有益では?
それを直接「元の意見を書いた人」にフィードバックすることに問題があるだけ
返信を書くこと自体が問題なのではない
リプライをLLMが受け止めて、有益なフィードバックに変換したらいいのでは
モデレーションの問題
西尾のPolis運用では大体いつも「モデレーションなし、ユーザの投稿は即座に他のユーザから可視になる」という設定にしている
"No comments shown without moderator approval"
この設定をオフにすれば人間のモデレーターが承認するまで表示されない(なおデフォルトはオフ)
このモデレーションには問題がある
人間の負担が大きい
モデレーション待ちの非表示期間による機会損失
モデレーターのバイアスが入るのではという懸念
実際、バイアスは入る
「トピックに関係ない意見である」という判断が個々人のトピックに対する意見によって影響を受けるから
西尾はKJ法のバックグラウンドがあるからこう考える
少なくとも一人が関係があると思って投稿したわけなのだから、早まって捨ててはいけない
→だったらどうせ捨てないのだからモデレーションしなくていいのでは
現実的には「感情的だったり、要点が不明確だったりする文書」がたくさん投稿されて、投票者がゲンナリする問題が起きる
LLMがなんとかして〜的な話になる
クラスタが二つになると面白くなくなりがち
賛否が分かれてるテーマについて投票をして、賛否の二つに分かれた可視化をされても「当たり前〜」となる
細かく見ると興味深いデータがあったりするが、大部分の人はそこに意識がいかない
二つに分かれてるなー
自分は多数派だ良かった
自分は少数派だ、このシステムは良くないものだ
より深く考えることを促す上では、クラスタを3個以上にした方が良いのかも?
human.icon「面白いこと」を目指すのか「問題解決」を目指すのか
nishio.iconそれは重要な視点。大勢の人の参加を促すためにはまず面白いことが重要かなと思う。
human.icon面白さのために統計結果を歪めると問題解決の妨げになるのでは
nishio.iconそれは確かにそう、歪めるのではなく、別のビューを追加するのが良さそう
過去の対話から投票結果を引き継ぎたい
一つのconversationを長く使うのはあまり体験が良くない
コメントが増えていく一方なので
定期的に仕切り直したい
しかし毎回ゼロリセットされるのもそれはそれで微妙
何を引き継ぐか?
合意に至ったコメントは引き継がなくていい
「わからない」が多かったコメントは、補足情報を提供したり、わかりやすく書き換えたりしてやり直したい
賛否が分かれてるものは再投票が可能なら再利用したい
ただし投票傾向がほぼ同じコメントはいくつもいらない
Polisの仕組み
論文:
ユーザと意見のそれぞれについて+1/0/-1/NaNが入った行列
まだ投票してないことはNaNで表現される
欠損値を意見ごとのユーザ平均で埋める
投票した人がみんな賛成している議題に関しては、投票してない人も賛成だとみなす
これで「-1〜+1」の値が入った行列ができる
基本的にはここから「高次元データの可視化」をやるだけ
多種多様な方法がある
Polisでもいろいろ試されている
平均値のケア
欠損値を平均値で埋める関係上、必然的に平均値付近にたくさんのサンプルが集まってしまう
これをこのままクラスタリングすると、平均値付近に「まだあまり投票してない人」のクラスタができて面白くない
そこで投票済み意見数を使って調整する
平均からのベクトルを、すべて投票してる人は1倍、半分しか投票してない人はsqrt(2)倍にする
これを少なくとも初期は使っていたが、その後「賛否の分かれている意見から先にユーザに見せること」によってこの調整の必要性が減ったと書いている
現状の実装で調整をしてるのかしてないのかはコードを読んでもよくわからなかった
クラスタ個数未定でのクラスタリング
これも昔から多様な方法がある
階層的クラスタリングが代表的
しかし、クラスタ個数は決めなくて良いが、閾値を決めなければいけない
シルエット係数とは
https://gyazo.com/7a18c06ed7f46ed755dcd3a1e344714d
K=2~5で試して一番スコアの良かったものを選ぶ
https://gyazo.com/f6e42bdef2612da442f54e526178edbahttps://gyazo.com/41dbf7cf1ac885827d28dc9bbbae9d20
Python実装の計算でそれっぽい結果は出せたけど、微妙に形が違うのはなぜなんだろう
クラスタを代表する意見
代表性尺度$ R_v(g, c)
https://gyazo.com/d7cca6a96e32a604aa79cd627c774aea
ベルヌーイ分布(英: Bernoulli distribution)とは、数学において、確率 p で 1 を、確率 q = 1 − p で 0 をとる、離散確率分布である。
つまり、あるグループgの中の人があるコメントcに投票vをするかどうかは確率pのベルヌーイ分布に従う、と考えてこのpをベイズ推定してる フィッシャーの正確確率検定 ... 2 x 2分割表(2つの集団が2カテゴリーに分類されたデータを扱う場合、自由度は1)の2変数の間に統計学的に有意な関連があるかどうかを検討するのに用いられる。... 標本の大きさが大きい場合には統計量の標本分布が近似的にカイ二乗分布に等しくなるのでカイ二乗検定が用いられる...フィッシャーは、このような数値の組み合わせが得られる確率p が次のような超幾何分布で表されることを示した
超幾何分布(ちょうきかぶんぷ、英: hypergeometric distribution)とは、成功状態をもつ母集団から非復元抽出したときに成功状態がいくつあるかという確率を与える離散確率分布の一種である。男女・合否などのように2種の排他的属性に分割できる有限母集団からの非復元抽出に適用される。
つまりコメントcへの投票が「vか」「それ以外か」の二種類の排他的特性があって、それが「グループgの人」「グループg以外の人」という二つの集団から収集されてる
「グループによって違いがあるか?」を知りたい
そこで「グループによって差がない」と仮定して、その場合に観測結果以上に過激な結果が得られる確率を求める
ここまでが正確検定の話
この確率になぜかRvgcを掛けてるんだけどなんでこれやるんだっけ?
論文には「推定効果量と効果に関連する統計的信頼度の両方を反映させる」と書いている
出来上がった値の数学的解釈がいまいちよくわからない
最終的にこの値でソートして小さい方から選ぶと、そのグループを特徴づけるようなコメントが選ばれている
https://gyazo.com/8a746a484dff28c8c0971b0b0207b3cb
小さい方がいいp値に、大きい方が良さそうなオッズ比を掛けてて謎
p値だけでいいのでは??
論文では「まず賛成コメントから有意なものを選び、ない場合は反対コメントから選ぶ」と書かれている
人間、否定形が理解しにくいので。
コメントごとのコンセンサスの度合いは$ \prod_g P_v(g,c)で計算する これはつまりグループの人数は無視して、各グループが賛成する確率を掛け合わせている
一つでも0なら0になる
多数派グループだけで決まらず、少数派も含めたすべてのグループからの賛成を集めなければならないってこと
nishio.icon似てる。
YesかNoかの二値ではなく「よりコンセンサスに近い」が表現できるようになったところが良いところ
これを可視化して「よりコンセンサスに近づけるためには、このグループの人を説得する必要がありますね」みたいなサジェストができるといいかも
human.icon少数派の専門家集団が反対しているケース、専門家を説得する?
nishio.icon多数決をすると少数派の専門家の意見は潰されるわけだけど、この方法だと説得のためのコミュニケーションが発生するので良さそう
専門家側はエビデンスなどを出してきて対抗する
「専門家が大衆を説得する」という方向を暗黙に仮定しがちだが、大衆が「難しくてよくわからないから耳を塞ぐ」ができてしまう、逆をやるのは面白いかも
LLMの支援は必要そう
現状のPolisは「説得のためのコミュニケーション」の場を伴ってないので、何か別の場が必要
というわけで若干不安は残るけど、投票の生データCSVから、Pythonを使って、Polisのバックエンドがやってる統計処理を再現することができた
改良案の再検討
投票者が7人以上にならないと可視化されない
見た目はさておき可視化(ダイジェストレポート)は2人目の投票段階からできる
なので準備した人が投票してからURLをシェアすればいい
もちろんこの場合1人目が何を投票したかわかるので、それで問題ないユースケース向け
社内で口頭で議論して収拾つかないから整理しよう的なシチュエーションだと特に秘匿したいことはないと思うのでこれでいいんじゃないかな
特に10人程度の少人数ケースではPCAによる次元削減ではない方法での要約が有用なケースがありそう
具体的にはcontroversialな意見についてLLMが「この意見は賛否が分かれていますが、それぞれの立場から掘り下げてみましょう」みたいなフィードバックをしたりとかね
一般ユーザの意見の投稿は「賛成」とみなされる
単なるUIの問題、DBに1を書き込むのをやめればいい
投票を更新できない
単なるUIの問題、DBを更新すればいいだけ
コメントを見てリプライを書きたくなる
参加者がケンカしうるシチュエーションで、このコメントをどう使うかは統計と無関係なレイヤーの工夫が必要だね
社内ユースなどでメンバー間に信頼がある場合だったらリプライできるようにしてもいいんじゃないかな
モデレーションの問題
これもLLMのレイヤーの話
メンバー間に信頼があるなら素通しで良いかも
クラスタが二つになると面白くなくなりがち
クラスタを3つ以上に強制することはできる
このシチュエーションでは「第一主成分軸」が「自明な対立軸」になる
なので、それを捨てて他の次元でクラスタリングしたら面白いかも?
対立があるときに、その対立軸上での押し引きではなく、別の軸を模索するとうまくいくことがある 過去の対話から投票結果を引き継ぎたい
できる
投票傾向がほぼ同じコメントはいくつもいらない
これは要するに投票分布の各主成分軸方向の分散が大きいコメントをピックアップすればいい
まとめ
統計レイヤーでいくつか解決できる目処が立った
残りのいくつかはUIレイヤー、いくつかはLLMのレイヤー
Polisの毎秒更新の可視化は見ていて面白い
毎秒更新であることに面白い以上の意味があるかは微妙
もっと別の可視化方法を模索しても良いかも?