競技クイズの実力をランク付けする仕組みについて

現在の競技クイズ界が抱える問題の1つとして、プレイヤーの実力がどのくらいかを判定できる有効な手段がない、というものがよく言われます。試合を行う上でプレイヤーの実力によるレギュレーションの設定がうまくできないため、しばしば初心者と上級者が戦うことになり、強い人だけが楽しむ形になりやすくなっています。

この状況を改善するためにQRIP(クリップ・クイズレーティングインプリメントプロジェクト)のような取り組みが行われていますが、今のところはまだあまり芳しい成果は出ていないようです。

今回は、QRIPのようなレーティングシステムも含めたプレイヤーの実力判定の仕組みを構築する上でどういったことを考えないといけないか、というのを整理してみたいと思います。

各種競技に見られる実力判定

運動スポーツやマインドスポーツ、あるいは各種コンクール・コンテストなど、競技の形を取って行われているものは世の中に多数あります。それらの中では多種多様な形で実力を判定しランク分けする仕組みが運用されているので、まずはそれらにどういったパターンがあるかをざっと挙げてみます。

(1) 年齢・競技歴

まず、年齢によって分けるというのはかなり多くの競技で行われています。競技クイズでも学生・社会人で分けることはよく行われますが、ジュニア・シニアなどと分ける例はスポーツ全般でよく見られます。もっと細かく何歳〜何歳という区分を分けているものもあります。

また、年齢の代わりにその競技を始めてからの年数を使うパターンもあります。これは特に新人選手の枠を決める場合や、社会人の初心者などを対象にした場合などで用いられるように思います。

基本的にはどの競技も長く携わっている人の方が実力は上がりやすいので、ある程度は実力を反映しますが、同じ年数でも人によって実力の上昇度合いは変わりますし、高齢による衰えもあるので万能ではありません。ただ、年齢は基本的にほぼ全ての人に適用できる条件なので簡便性は非常に高いです。競技歴については、途中ブランクがあった場合どう取るかが曖昧になりやすい、という問題もあります。

(2) 過去の大会の結果

これもよく用いられるもので、大会の公式のレギュレーションから、もっと卑近に会話の中とかでざっくり実力を示すのにもよく使われるものです。競走や競泳のタイムやゴルフ・ボウリングなどのスコアのように、そもそも結果が数値で表されるものはそれがそのまま使えます。また勝ち抜き制の大会では、「予選突破」「ベスト8」のようにどこまで勝ち進んだかで表すことができます。

複数の出場大会の結果をどう使って実力を表すかには複数のやり方が考えられます。過去最高を示すパターンや、直近のものを取る、あるいはタイム/スコアのような数値結果の場合はいくつかの結果の平均を取ったり範囲を取ったりすることもできます。

過去の大会の結果を使うということは、一度も大会に出ていない人は結果が付けられないということにもなります。これは次のレーティングの場合も同様です。

(3) レーティング

過去の大会の結果が数値で表されず、そのまま実力判定として使いづらい場合に、「レーティング」の形で数値に変換したものを使う場合があります。これはチェスのEloレーティングや各種コンピュータゲームなど様々な例が知られています。詳細は後述しますが、勝敗をレーティングの数値に変換するやり方には様々な手法が知られています。

(4) レベル認定制度

所定の組織・団体や個人の判定員によりレベルを認定する制度が作られているケースもよく見られます。よく知られているのは武道・芸道などに見られる段級位認定ですが、日本の伝統的なもの以外でも、テニスのNTRP(全米テニス協会評価プログラム)のようなものがあったり、あるいは検定試験のようなものもこの系統に入ると思います。

レベル認定の基準は明確なものから漠然としたものまで様々なものが見られます。大会の結果などから規定の条件を満たしたら昇級・昇段するもの、対戦とは別の試験を行ってそのスコアによって決まるもの、といった形の基準は客観的な判断が期待できますが、定性的な基準によって決まるものは判定員次第で結果が変わることもあり得ます。また、基準が公開されている場合には判定員によらず自己判断するケースもありますが、判定のブレがトラブルに繋がるケースもよく耳にする印象です。

(5) スクールレベル

教育の仕組みが整っていて、ある程度のデファクト・スタンダードになる区分けが存在する場合は、それを実力判定に代用するケースが考えられます。単に「スクール初級レベル」みたいな言い方をする場合もありますし、ピアノの「ブルクミュラーレベル」「ツェルニー30番レベル」のように固有の言い回しがある場合もあります。

レーティングシステム

レーティングシステムについては少し詳細に見ていこうと思います。競技におけるレーティングシステムとは何かといえば、「過去の試合結果をもとに各競技者に数値を割り当て、試合の参加者に割り当てられた数値から試合結果(に関する何らかの量)を推定できるようにしたもの」と言って良いでしょう。原始的なやり方では、過去の試合結果の得点や勝率といったものも、レーティングと考えることができます。

より洗練されたレーティングシステムの理論については、Amy N.LangvilleとCarl D.Meyerが著した『レイティング・ランキングの数理』という本に整理されているものが分かりやすいです。以下、この本に挙げられたいくつかのレーティングシステムを紹介します。

(3a) Masseyの手法

これはアメリカのカレッジフットボールのボウル・チャンピオンシップ・シリーズ(BCS)に適用する目的で、1997年にケネス・マッセイが考案した手法です。チーム$${i}$$、$${j}$$のレーティングをそれぞれ$${r_i}$$​、$${r_j}$$​としたとき、試合$${k}$$における両チームの得点差$${y_k}$$​を

$$
r_i - r_j = y_k
$$

のような形で求められるようにします。$${n}$$チームが$${m}$$試合を行った結果があるとき、その結果を並べると以下のような式になります:

$$
\mathbf{X}\mathbf{r} = \mathbf{y}
$$

ここで$${\mathbf{X}}$$は$${m}$$行$${n}$$列の行列で、各行はチーム$${i}$$がチーム$${j}$$に勝ったとき$${i}$$列めが1、$${j}$$列目が−1、その他が0になるようなものとなります。

これを$${\mathbf{r}}$$を未知数とした連立方程式として解くことで各チームのレーティングを算出します。実際の計算には両辺に$${\mathbf{X}^\mathsf{T}}$$を掛け、$${\mathbf{M}=\mathbf{X}^\mathsf{T}\mathbf{X}, \mathbf{p}=\mathbf{X}^\mathsf{T}\mathbf{y}}$$とおいた

$$
\mathbf{M}\mathbf{r}=\mathbf{p}
$$

という式を解く形を取ります。この連立方程式は線形従属になっていて一意の解を持たないため、各チームのレーティングの総和が0になるような条件を追加して算出します。

(3b) Colleyの手法

これは2001年にウェスリー・コリーによって提案された方法で、勝率

$$
\frac{w_i}{t_i}
$$

を改良したものです。$${w_i}$$はチーム$${i}$$が勝利した試合の数で、$${t_i}$$はチーム$${i}$$が参戦した試合の数です。Colleyによる改良では、レーティングを以下のように定めます:

$$
r_i = \frac{w_i+1}{t_i+2}
$$

この修正は、「同じ事象が$${n}$$回連続して起きたとき、$${n+1}$$回目も同じ事象が起きる確率は$${(n+1)/(n+2)}$$になる」というLaplaceの"継起の法則"を応用しています。この修正によって、シーズン開始時点でのレーティングが全て1/2になり、試合が進んだ後も各チームの平均的なレーティングが1/2となります。

このレーティングは、若干の近似的な仮定を置くことにより、

$$
\mathbf{C}\mathbf{r}=\mathbf{b}
$$

という形に整理することができます。ここで$${\mathbf{C}}$$と$${\mathbf{b}}$$は

$$
\begin{aligned}
\mathbf{C}_{ij} &=
\begin{cases}
t_i+2\quad i=j \\
-n_{ij}\quad i\ne j
\end{cases} \\
\mathbf{b} &= 1+\frac{w_i-l_i}{2}
\end{aligned}
$$

です。$${l_i}$$はチーム$${i}$$が敗北した試合の数を表します。係数行列$${\mathbf{C}}$$は実対称行列のため、コレスキー分解を用いて効率的に解を計算できます。

Colleyの手法に出てくる$${\mathbf{C}}$$は、Masseyの手法に出てくる$${\mathbf{M}}$$との間に$${\mathbf{C}=2\mathbf{I}+\mathbf{M}}$$という関係が成り立ちます。Masseyの手法は右辺のベクトルに得点差を用いており、Colleyの手法は右辺のベクトルに勝敗数を用いているという違いがありますが、左辺の係数行列はお互いに交換できて、Masseyの手法をColley化したものや、Colleyの手法をMassay化したものを考えることもできます。

(3c) Keenerの手法

これは1993年にジェームズ・P・キーナーによって提唱された手法で、チームの強さに一様に比例したレーティングの仕組みとして考案されたものです。

スコアや勝敗などの何らかの統計量$${a_{ij}}$$を用いて、チームの相対的な強さを$${s_{ij} = a_{ij}r_j}$$のような形で定義できたとします。この時、チームの絶対的な強さは

$$
\mathbf{s} = \mathbf{A}\mathbf{r}
$$

という式で表されることになります。なので、これに比例したレーティングを考えると、比例定数を$${\lambda}$$として、

$$
\mathbf{A}\mathbf{r} = \lambda\mathbf{r}
$$

という式で表すことができます。従って、レーティングの決定はこの行列$${\mathbf{A}}$$の固有値と固有ベクトルを求める問題と捉えることができます。

この手法は、ゲームの種類に応じて様々な統計量を用いて計算することができます。単に勝敗数やスコアをそのまま用いることもできますし、それらを補正して使うこともできます。例えばスコア$${S_{ij}}$$を用いる場合、同じ強さ同士での試合でも攻守の得意不得意によってスコアが上下することを考慮し、またLaplaceの継起の法則に基づいた補正を加えて

$$
a_{ij} = \frac{S_{ij}+1}{2+S_{ij}+S_{ji}+2}
$$

のようなものを考えることが提唱されています。他にも、アメリカンフットボールの試合ならラッシングヤード数やパッシングヤード数のような統計量を使う例も挙げられています。

(3d) Eloの手法

この手法はハンガリーのアルパド・イロによって考案されたレーティング手法で、1960年にアメリカチェス連盟によって、1970年に国際チェス連盟によって採用された手法です。

この手法では、チーム$${i}$$がチーム$${j}$$に対して獲得すると期待される得点数$${μ_{ij}}$$​が、ロジスティック関数

$$
L(x) = \frac{1}{1+10^{-x}}
$$

を用いて

$$
\mu_{ij} = L(d_{ij}/\xi),\quad d_{ij} = r_i-r_j
$$

となるようにレーティングを定めることを考えます。ここで$${\xi}$$は定数で、チェスの世界では$${\xi=400}$$が使われています。

実際のレーティングの計算は、古いレーティングの値と直近の試合の結果から

$$
r_i(\text{new}) = r_i(\text{old}) + K(S_{ij}-\mu_{ij})
$$

のような式でレーティングを更新していく、という形を取ります。$${K}$$は定数で、試合の種類によっていくつかの値から選ばれます。スコア$${S_{ij}}$$は、チェスの場合は

$$
S_{ij} =
\begin{cases}
1 &\text{$i$が$j$に勝った場合} \\
0 &\text{$i$が$j$に負けた場合} \\
1/2 &\text{$i$と$j$が引き分けた場合}
\end{cases}
$$

のように定められます。

EloのレーティングシステムにはグリコレーティングやTrueSkillなど様々な改良版も提唱されていて、コンピュータゲームなどで広く使われています。

(3e) Markovの手法

これはMarkov連鎖を元にしたレーティングの手法です。この手法では、試合の結果を「敗者が勝者に投票する」という風に見なして投票行列を考えます。投票の各行は和が1になるように正規化して、確率行列として扱えるようにします。全チームに勝利したチームがある場合は全ての成分を$${1/n}$$に置き換えたものを使います。この行列を$${\mathbf{S}}$$としたとき、固有値問題

$$
\mathbf{S}\mathbf{r}=\mathbf{r}
$$

を解くことでレーティングを算出します。この手法は、確率行列$${\mathbf{S}}$$にしたがったMarkovグラフ上のランダムウォークで各チームに滞在する時間の割合をレーティングとするものです。

この手法はGoogle検索結果の並び順に使われるPageRankのアルゴリズムに応用されています。PageRankの場合は、被リンクを試合の勝者として扱うような形に類比されます。

競技クイズの場合

ここまで見てきたような実力判定・ランク付けの仕組みを、競技クイズに適用することを考えていきます。

既存の仕組み

まず、既存の仕組みではどういうものが使われているかを整理してみます。アマチュアクイズ大会のレギュレーションでは、(1) 年齢・競技歴をベースにしたものがよく使われていると思います。学生/社会人に限定したり、"新人王"のような形で競技歴が浅い人に絞っているケースが見られます。また、abcのスターやSTUの鳥居マークのように、(2) 過去の大会の結果をもとにしたレギュレーションも目にすることがあります。

(3) レーティングの仕組みは、最初に挙げたQRIPのような取り組みでこれから整備されるのを待つ状態です。オンライン対戦のあるクイズゲームでは、それぞれ独自にレーティングの仕組みが見られます。特に競技クイズとの親和性の高い「みんはや」のレーティングは、ある程度競技クイズシーンでの実力の目安として代用されることもあるようです。ただし、特にS以上の高レート帯では早押しクイズの能力よりも収録問題群をいかに知っているかが影響する度合いが大きくなってくるため、代用される場は低〜中レート帯に限られるように思います。

競技クイズは現状では統括団体がうまく機能していないため、(4) レベル認定の仕組みはほとんどありません。検定試験では、株式会社キュービックが主催している「知識検定」が近しいです。ただこちらはまだ歴が浅くかつ年1回と少なめな頻度での開催なので、大会レギュレーションのような形ではあまり用いられていないようです。

(5) スクールレベルのようなものは、ほぼ皆無と言って良いと思います。競技クイズはあまり訓練・学習・教育方面が開拓されておらず、デファクト・スタンダードになる教育プロセスが存在していません。クイズルーム SODALITEのイベントで使われている「ビギナークラス」「スタンダードクラス」「ガチクラス」といった区分は、ある程度これに近い役割を果たしている可能性がありますが、広く一般に使われる形にはなっていないようです。

競技クイズのレーティングを考える困難さ

個人的には、現状の競技クイズの状況で、大会結果を用いた有効なレーティングシステムを考えるのはかなり困難度が高いと考えています。その大きな要因と思われるのは以下の2つです:

  • 形式が多種多様であること

  • 頻繁に開催するのが難しいこと

まず、競技クイズは現状統括団体が存在せず、ルールが定まっていません。問題の種類・内容も、その出題され方も、得失点や勝ち負けのルールも、大会によってバラバラです。「早押しクイズ」とか「abcフォーマット」のようにある程度広く使われている要素もありますが、それらに従っていない大会も多数あります。これについては、統一を目指すよりはむしろ、こういう部分には多様性があることが正義なのだとする論調が多いような印象があります。

形式が多種多様であるということは、レーティングシステムを考える上では致命的に問題になります。レーティングシステムは過去の試合結果をもとにして将来の試合結果を推定する仕組みと捉えることができますが、的確に将来の推定を行うためには過去の試合と将来の試合が同じ条件で行われる必要があるからです。過去の試合が早押しクイズで行われている時、それを元にレーティングを算出して推定をしても、試合の形式の方がボードクイズに変わってしまえば、当然推定の精度は下がります。

細かい推定をすることは諦めて、どの形式でも共通するような要素のみについてのレーティングを実現することを考えればもしかしたらうまくいく部分があるかもしれません。ですが、ここで2つめの壁が立ちはだかります。クイズの大会は問題を用意しないと開催できないため、頻繁に開催することが難しいです。キオクシア株式会社が開発しているクイズ自動生成のAI(クイズを自動生成するAIの開発について)やAI王の問題作成部門など、作問を補助・効率化・自動化する仕組みも作られつつありますが、まだ実用まではもう少しかかりそうなところです。

頻繁に開催できないということは、過去の試合から統計的な推論によって将来を推定するレーティングシステムにおいては「サンプル数が十分に得られない」という問題に繋がります。統計学では母分散が大きい状況では同じ許容誤差水準を達成するために必要な標本数が多くなることが知られていますが、その標本数を大きくするのが難しいとなると、とうぜん統計的推論の信頼度は低くなります。

困難を解決するための案

こうした困難について、簡単に全てを解決する方法を提示するのは難しいですが、役に立ちそうな案を2つほど挙げてみたいと思います。

(A) レーティングを複数のカテゴリーに分ける

まず1つは、レーティングを1つの数値ではなく複数に分けて算出する、という案です。例えば、早押しクイズの能力を「問題を解く能力」と「問題文の先を推測して早く押す能力」の2つのスキルの組み合わせとして考えることができたとしましょう。簡単のため、「問題を解く能力」をA能力、「問題文の先を推測して早く押す能力」をB能力と呼ぶことにします。大会によって、あるいは大会の各ステージによって、A能力を重視する形式もあればB能力を重視する形式もあります。例えばペーパーやボードクイズはA能力の割合が100%で、早押しボードのような形式ではAとBが半々ずつぐらいで寄与すると考えることができるでしょう。あるいは、同じ早押し形式でも、問題の難易度が低い場合には押し合いになるためB能力の寄与が高く、難易度が高い場合はA能力の寄与がより高めになる、とも言えるかもしれません。こうした形式ごとのA/Bの寄与率の違いを考慮して、大会結果からA能力の統計量とB能力の統計量をそれぞれ取ってくることで、A能力を元にしたレーティングとB能力を元にしたレーティングの2種類を考えます。

このとき、AレーティングとBレーティングを組み合わせたレギュレーションを取れば、大会ごとに重視する能力に応じて柔軟にレギュレーションを決めることができます。また、レーティング算出に使える大会結果のデータも、A能力の統計量とB能力の統計量をそれぞれ算出できるものであれば、必ずしも大会全体として形式が揃っていなくても使うことができるので、サンプル数を増やすのに役に立つでしょう。

実際には、例えばA能力をさらに「知識を持っているかどうか」と「思考やひらめき能力があるか」に分けるような細分を考えたり、「得失点のルールに応じた戦略を立てる能力」のような別の能力を考えたり、といった形で、どう複数カテゴリーに分けるのが良いかは議論の余地があると思います。また、A能力とB能力の両方がきいてくるような形式の場合、その勝敗や得点結果からA/Bそれぞれの統計量をどうやって抽出するか、方法を考える必要があります。

(B) レーティング算定用に形式を標準化した大会を別途開催する

2つめの案は、レーティングの算定に特化した大会を別途開催する、というものです。これは実質的には(4) レベル認定制度の亜種という風に捉える方が適切かもしれません。形式が多種多様であることが問題になるのであれば、形式が統一された場を用意すればよい、という発想です。

ここで開催するレーティング用大会は、問題文の構成や対戦ルールなどを統一して実施することになります。どういうものに統一するかがかなり難しいところです。例えば、早押しクイズで実施しているものが多いから早押しに統一するとか、複雑な形式でもシンプルなm○n×形式での強さと相関があるのでm○n×を採用するとか、広く有用なものにするためには各種大会の傾向・趨勢を分析して良い感じの按配を探す必要があります。何かしら標準化が達成できたとしても、実態と乖離していれば有用な物にはなりません。場合によっては、(A)のように複数のカテゴリーに分ける方式を取る方が良いかもしれません。

個人的には、問題文の標準化については現状以下のような条件が妥当なラインになってくるのではないかと考えています:

  • 解答は全て日本語版Wikipediaの見出し語とする

    • 『JAQKET:クイズを題材にした日本語QAデータセットの構築』に倣った正規化を行う

  • Wikipediaの過去1年間のpageviewの値を問題の難易度とする

    • 曽根 広哲, 山名 早人『ウィキペディア記事閲覧回数の特徴分析』や小林 周平, 田島 敬史『Wikipedia ページ閲覧回数に基づく知名度推定』など、Wikipediaの記事になっている事柄の知名度としてpageviewは有用と思われる

  • 問題文は「〜は何でしょう?」(SC型)もしくは「〜を何というでしょう?」(OV型)の構文パターンとする

    • 『競技クイズの問題文の統語構造に基づく分類』の調査ではSC型とOV型に分類されるものが9割を占めた

  • 問題文の長さは50〜60文字程度とする

    • 『競技クイズの問題文の文字数分布』の調査で得られた平均的な問題文長

  • 問題には日本十進分類(NDC)をベースにしたジャンルを割り振り、『ジャンル配分を考慮したクイズ問題の出題順アルゴリズム』の最後に提案したアルゴリズムで出題順を定める

    • 『ジャンル配分を考慮したクイズ問題の出題順アルゴリズム』

    • Suggest Toolで実装した複数階層のものを使うと良さそう

ここでは知識をベースとしたクイズを主に想定しています。これとは別に、思考力やひらめき能力をベースとしたものも考えられると良さそうですが、うまい標準化の方法を思いついていません。

対戦形式をどのような形で行うのが良いかは、まだあまりきちんとした調査研究を行っていないのでいくつか可能性が挙げられると思っています。(A)と同様の複数カテゴリーを簡便に行うなら、ペーパークイズと早押しクイズの2つでそれぞれレーティングを算出するのが良さそうに思います。pageviewで難易度を数値化できる前提を置けば、ペーパークイズでは難易度を徐々に上げていってどこまで正解できるかを見るのが有効な手段になりそうです。

早押しクイズを行う場合、知識要素の影響があまり出ないようにするため、ペーパークイズの結果をもとに十分低い難易度での出題をした方が良さそうに思います。また、対戦ルールが複雑だとそのルールに特化した戦略の要素が強くなるので、m○n×のようなシンプルなルールの方が良さそうです。

それから、早押しクイズは対戦で行う他に、問題ごとに標準的な確定ポイントを定めておいて、実際に押したポイントの相対的な位置関係に応じてスコアを付ける、という方法も採りうる気がしています。確定ポイントがある程度一意に定められることは、白砂大『早押しクイズに見る不確実性下の判断: クイズ大会の行動データに基づく事例研究』の補足資料の結果で示されています。

具体的にどういうやり方が良いかは、各種大会でのレギュレーションにどのくらい有効に用いることができるかと、十分な精度を出せるよう標本数を稼げるだけの頻繁な開催をどのくらい実現できるか、といった条件で決まってくると思います。実現するまでにはある程度仮説を立てて実証する、というのも必要になってくるでしょう。

終わりに

ここまで述べてきたように、競技クイズの現況を見て適切に実力をランク付けする仕組みを構築するのはかなり難しいだろうと私は思っています。ですが、競技クイズの裾野が大きく広がりつつある今、こうした仕組みの整備は特に重要度が高い仕事になると思います。QRIPにしろそれ以外で行うにしろ、こうした取り組みにとりかかる人々にとって、何かしらの参考になれば幸いです。

この記事が気に入ったらサポートをしてみませんか?