全米クイズ王チームに圧勝した早押しクイズ最強AIの思考法・学習法

# はじめに：記事の方針
この記事は、人工知能技術や数学に馴染みのない方にも読んでいただけるよう、専門的な用語、プログラミングコード、数式などは一切用いず、一般的な日本語のみで書いています。また、それに関連して、正確には「機械学習」というべき箇所であっても、意図的に「AI」「人工知能」という言葉で説明をしています。

# ゲームプレイヤーAIの進展
最近、いろんな対戦ゲームで、**AIが人間のチャンピオンに勝った**、っていうニュースが聞かれますね。代表的なものですと、2016年には、Google DeepMindが研究開発した「**AlphaGo」**が、囲碁の世界的プレイヤー　イ・セドルに4勝1敗で勝ち越したというニュースが世界的に大きく報じられました。

ちなみに、AlphaGoのニュースは、上に書いたニュース以降あまり世間には報じられてませんが、その後もヤバイくらい事態が進展しています。

2017年、AlphaGoの強化版にあたる「AlphaGo Master」が登場し、囲碁の世界チャンピオン　柯潔に**3戦全勝**し、いよいよ人間には手のつけられないレベルに達しました。
同じく2017年、「AlphaGo Zero」が登場。AlphaGoとの最大の違いは、**過去の人間の対局データを一切使わずに学習したAI**であることです。つまり、AI同士が何百万回という対局をコンピュータの中で繰り返し、人間では絶対に発想できないような手を会得していったということです。事実、AlphaGo Zeroは、過去のAlphaGoのどのバージョンよりも強いAIに育ちました。
そして今年、2018年には、囲碁だけではなくあらゆるボードゲームに対する汎用性を持つ「AlphaZero」が、**チェス、将棋、囲碁のすべてで、これまでの最強AIプレイヤーを打ち倒せるレベルに達した**と発表されました。初代AlphaGoの強さも、わずか30時間の学習で超えてしまったということです。
テーブルゲーム以外、例えばオンラインFPSゲームでも、やはりGoogleの作ったAIプレイヤーで結成されたチームが、人間プレイヤーチームを完膚なきまでに叩き潰した、という報道もあったりします。また、別のFPSゲームで、人間の操作するキャラクターとAIが操作するキャラクター、それぞれの動きだけを見て、どちらが人間プレイヤーだと思うかというアンケートをとったところ、50%：50%に分かれるどころか、AIプレイヤーの方が多くの票を集めた、という逸話もあります。

# クイズプレイヤーAIの歴史
さて、ゲームの世界でのAIの躍進について紹介をしましたが、では、クイズの世界ではどうなのでしょうか。世間的に大きく報じられた代表例としては、2011年にIBMのAI「**ワトソン**」が、アメリカのクイズ番組「ジェパディ」で優勝し、賞金をもぎとった、というものがあります。「ジェパディ」は、他のプレイヤーと解答の早さを競う早押しクイズ形式ですから、単にWikipediaの情報を検索して答えを導き出せる、というだけでは勝てないわけですね。

というわけで、2011年にはすでに早押しクイズですらAIが人間に勝利するようになった……と言いたいところですが、この話には重要な点があります。それは、**「ジェパディ」のクイズ形式が、我々が日本で慣れ親しんでいる「早押しクイズ」とは異なる**ことです。

> クイズは司会者が問題文を全文読み上げてからの早押し形式で行われる。
>
> [ジェパディ! - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%A7%E3%83%91%E3%83%87%E3%82%A3!)

つまり、早押しの競走になった時点で、すでにAIは、問題文を全部インプットした状態になっているわけです。

おそらく皆様すでにお気づきの通り、日本で一般的に行われる早押しクイズは、問題文が読み上げられている途中でボタンを押し、その時点で問題文の読み上げは止まってしまう、という形式です。「知っている」ということだけでなく、「限られた情報だけで、いかに早い段階で正答を導き出せるか」というところが、非常に重要になってくるわけです。

というわけで、「早押しクイズを考慮する限り、まだまだAIは人間のクイズ王には遠く及ばない」というのが（少なくともクイズ好きの間では）通説になっていたわけですが、2017年、その通説を覆してしまう、とんでもない早押しクイズAIが登場してしまいました。

# 早押しクイズ最強AIの登場
「NIPS」という、人工知能に関する世界最高峰の国際学会があります。世界中の人工知能の研究者が、この学会に論文が採択されることを目指して、日々研究をしているわけでして、例えば競馬の世界で言えば凱旋門賞のような存在です。2017年、この「NIPS」の内部イベントのひとつとして、人間とAIが対戦するクイズ大会が開かれました。そこで、**日本人チームの開発した早押しクイズAIが、他のAIに勝つばかりか、全米の名だたる人間クイズ王6人で結成されたチームを、早押しクイズで圧倒**してしまったのです。

>　2017年12月、人工知能（AI）に関する世界最高峰の国際会議「NIPS 2017」（米カリフォルニア）で、山田さんらが開発した“早押しクイズAI”が、人間のクイズ王のチーム6人に勝利した。スコアは465対200、圧勝だった。
>
>　敗北したクイズ王の1人は「狐につままれたようだ」と漏らしたという。「終盤は人間が答えると歓声が上がっていた。人工知能のコンペなのに（笑）」（山田さん）
>
>[強すぎて「会場がシーンと……」 クイズ王を圧倒した“早押しAI”の衝撃 - ITmedia NEWS](https://www.itmedia.co.jp/news/articles/1802/28/news037.html)

そして、ここで行われた早押しクイズの形式は、我々が日本で慣れ親しんでいる早押しクイズとほぼ同じです。つまり、**ボタンを押したところで、問題文の読み上げは止まってしまう形式**です。なお、より早い時点でボタンを押して正解できた方が、獲得ポイントが高くなるルールです。というわけで、「ジェパディ」でAIが勝ってしまったときのような、人間側の言い分は、もはや通用しません。

実際に出題された例を見てみましょう（実際には英語で出題されていますが、日本語訳したものを掲載します）。

> この国では、2015年9月の新しい憲法で7つの無名の州が発足／

はい、AIはここでボタンを押し、正解しています。ヤバイですね。知識として把握しているのは、もちろんすごいのですが、まあそこはコンピュータですから、記憶の容量とその正確さについては、わからなくもないです。個人的に本当にヤバイと思うのは、

- この情報だけで、他に正答になりうる言葉の選択肢がもう無い、つまり「**答えるべき言葉が十分に限定された**」と判断していること
- **聞かれているのが「国の名前」であるということが判断できている**こと
- 問題文をインプットしながら、人間のプレイヤーと渡り合えるレベルのスピードで**リアルタイムに思考処理**ができていること

といったあたりです。ちなみに、問題文の全文と正解は、こうです。

> この国では、2015年9月の新しい憲法で7つの無名の州が発足した。
> また、2015年には、マグニチュード7.8の地震がおき、その後に抗議団体が南側の国境を封鎖した。
> 2008年に君主制を廃止を祝う3日間の休日が宣言され、共産党は重要な選挙に勝利した。
> 2001年に王族の一人が9人の彼の家族を殺害する事件が起きて、王室に対する世論は冷ややかになった。
> ここから10ポイント。首都がカトマンズにあるアジアの国はどこか。
>
> （正解：ネパール）

なお、このクイズ大会コンペで出題される問題の「正解」は、すべてWikipediaの記事タイトルとして存在しているものから出されるという制限がありましたが、問題文については必ずしもWikipediaの当該タイトルの記事中にある情報だけには限らなかったようです。また、人間のクイズ王は、読み上げられる問題文を聞いて解答しますが、AIの方は、読み上げられるのと同じスピードで、テキストデータとしてシステムに直接入力されていく方式だったようです。つまり、読み上げられた音声を認識してテキストに変換する仕組みまでは使う必要がないルールでした。

さて、この早押しクイズAI、どんな仕組みになっているのでしょうか。仕組み自体は、研究開発したチームが論文で公開していますし、各所で発表したスライド資料も公開されています。

[\[1803.08652\] Studio Ousia's Quiz Bowl Question Answering System](https://arxiv.org/abs/1803.08652)

[全米クイズ王チームに勝利した早押しクイズAIの仕組み](https://www.slideshare.net/ikuyamada/ai-94964045)

なのですが、上のリンクを開いていただくとわかる通り、人工知能方面の専門用語バリバリで書かれてしまっているので、前提知識なしではよくわからないと思います。そもそも英語という時点で読むハードルは高くなります。

そこで、以下では、この早押しクイズ最強AIの「思考法・学習法」を、クイズ好きな皆様に向けて、わたしなりにざっくり解説してみたいと思います。解説に数式や専門用語は一切使いません。ざっくり解説ですので、正確性を欠く書き方になりますことを、あらかじめご了承ください。

# 早押しクイズ最強AIの「思考法」
この最強AIは、大きくわけて4つの機能で構成されています。ひとつひとつ、ざっくり見ていきたいと思います。

## 機能（1）「Neural Quiz Solver」
この機能が、インプットされてきた問題文から正解を直接予測する、ベースになる部分です。具体的には、以下のような処理をしているようです。

1. インプットされてきた問題文を単語ごとに分析
1. 問題文中に、他のWikipedia記事のタイトルが出てきたら、その記事を分析した情報も利用
1. 1.と2.で分析された問題文情報と、すべての解答候補との、持っている情報の近さを評価
1. 情報が最も近いと評価された解答候補を、解答と決める

つまり、問題文中に出てきた単語と、その単語の具体的な中身の情報とを考えていって、知っている言葉の中で最も正解になりそうな言葉を解答する、という感じです。例えば、次のような問題があったとします（わたしがいま適当に作った問題です）。

> 代表作に『Dr. スランプ』や『ドラゴンボール』がある、日本の漫画家は誰でしょう？
>
> （正解：鳥山明）

この問題文がインプットされてきたとき、AIは、「代表作」「日本」「漫画家」というように単語ごとの情報を分析するだけでなく、「Dr. スランプ」「ドラゴンボール」という、他のWikipediaの記事の情報も同時に使って、問題文の情報を分析するわけです。そして、知っている膨大な言葉の中から、問題文の分析結果に最も近い言葉として「鳥山明」を解答に決める、という流れです。

実際には、中ではいろいろと複雑な処理をしているのですが、考え方としては、我々が普段早押しクイズをしていて問題文を聞きながら脳内でやっていることに、かなり近いのではないでしょうか。

そして、この機能（1）は、**事前に過去問データを使って学習をすることで、どんどん賢くなってゆく**、学習機能を備えています。この学習の仕組みにも、人間がクイズの訓練をするときに参考になりそうな話がありまして、こちらは後ほどご紹介します。

## 機能（2）「Neural Type Predictor」
前述の機能（1）だけで、もうクイズプレイヤーとしては十分そうな気がしてきます。事実、この機能（1）が、このAIの根幹であり、これ以降に紹介する機能は、この機能（1）の導き出す解答の精度をより高めるための補助的な仕組みといってよいと思います。

 さっき例にあげた問題文ですが、例えば、人間がこんなタイミングでボタンを押してしまったとします。

> 代表作に『Dr. スランプ』や『ドラゴンボール』／

このとき、**答えるべきモノの「型」は何でしょうか？**　「実在の人物」？　「作品の登場人物」？　それとも「作品の舞台」？

早押しクイズにある程度慣れた人であれば、問題文の最初で「代表作に」と言っているので、ここで答えるべきモノの型は「実在の人物」、それも「作家の名前」であると判断することができると思います。しかし、早押しクイズ初心者であれば、問題文に出てきた2つの作品に共通する登場人物である「アラレちゃん（則巻アラレ）」や、共通して登場する舞台である「ペンギン村」などを、解答として言ってしまうかもしれません。

このように、機能（1）で分析した問題文中の情報量だけでは、**「どんなタイプのものを解答すればよいか」の判断がおぼつかない**場合があります。曲名を聞いている問題文なのに作曲家を答えてしまったり、国名を聞いている問題文なのに都市名を答えてしまう、なんていうことは、我々が普段早押しクイズをやっているときにも、頻繁に発生する事態です。それを補うのが、この機能（2）の役割です。

ほとんどの問題文中には、その解答の型を予測できる情報が含まれています。さっきの問題文なら「代表作に」という部分がそれにあたりますし、「その一節に書かれた……」なんていう問題文があれば、解答の型はおそらく「書籍名」であろうと推測できると思います。機能（2）では、機能（1）とはまた別の仕組みを使って問題文を分析し、**解答の型を予測**します。具体的には、ワシントン大学の研究者が開発した「FIGER tag set」という、下のような型のリストの中で、解答がどれにあてはまる可能性が最も高いかを予測しているとことです。

![20181224145009.png](https://qiita-image-store.s3.amazonaws.com/0/149354/ad0607d9-e8bf-d018-fd73-c2361fda8ad9.png)

具体的な型予測の方法ですが、詳細は割愛しますが、テキストデータを分類するときによく使われる手法をそのまま使っているようです。例えば、掲示板やツイッターへの書き込みを分析して、その書き込みがポジティブな内容かネガティブな内容かを分類するということが、株価予測をするときなどによく行われますが、それと同じような方法です。ただし今回は、「ポジティブ」「ネガティブ」の2種類のどちらに当てはまるかを予測するではなく、上記の112種類の型のどれに当てはまるかを予測する、という形になっているだけです。

この機能（2）も、**過去問データを使った事前の学習で、型の予測精度を上げてゆく**ことができます。

## 機能（3）「Information Retrieval Models」
例えば、こんな問題文があったとします（これも、わたしがいま適当に作った問題です）。

> 「私はその人を常に先生と呼んでいた。」という書き出しで始まる、夏目漱石の代表作は何でしょう？
>
>  （正解：『こころ』）

早押しクイズによくある「書き出し問題」ですね。解答する型が「作品名」であることは機能（2）でわかるのですが、実は先程の機能（1）だけだと、このタイプの問題は、ちょっとうまくいかないんです。

この例題は、言うまでもなく、「私はその人を常に先生と呼んでいた。」という特徴的なフレーズに、解答を導き出すための最大のヒントがあります。我々が見るとこのフレーズが特徴的であることはパッと見でわかりますが、しかし、AIが単純にテキスト分析をしただけでは、「私はその人を常に先生と呼んでいた。」という文字通りの意味の、ただの普通の文章になってしまうわけです。

そこで、こういった**特徴的なフレーズや、専門的な用語・人名などを効率的に検索**し、解答に結びつけるのが、この機能（3）です。この機能は、情報検索の機能を備えているだけで、学習を積み重ねて賢くなってゆく、という要素はもっていないようです。

ここまで来ると、いよいよ弱点のないAIであることが見えてきますね。

## 機能（4）「Answer Scorer」
ここまでの機能たちを使って、AIはインプットされてくる問題文を都度分析し、解答する言葉の絞り込みをしてゆきます。そして、**最後にボタンを押す決断をする**のが、この機能（4）です。

具体的には、これまでの機能（1）（2）（3）で導き出された解答に対して、スコアを計算します。そして、**それが正解である確率が60%以上であると判断した瞬間に、ボタンを押して解答**する、という仕組みです。詳細はスコア計算方法については割愛しますが、この機能（4）も、過去問を使った事前の学習で、より正確なスコア計算ができるよう訓練できます。

なお、スコアの計算にあたっては、機能（1）（2）（3）からの出力に加えて、問題文中の情報をあらためて使っているようです。例えば、導き出された解答が、すでに問題文中に出現してしまっていないか？といったことを、この時点で最終確認をしています。念には念を入れてからボタンを押しにいっていますね。

# 早押しクイズ最強AIの「学習法」
ここまで、問題文から解答を導き出してボタンを押すまでに使われる、4つの機能について、ざっくりご紹介しました。そして、機能（3）以外の3つの機能は、事前に過去問を使って学習している、ということもお話しました。では、この早押しクイズ最強AIは、**どのようにして過去問から学習している**のでしょうか？　その学習法に、人間がクイズの訓練をするときに参考になりそうな点は、何かないものでしょうか？

## AIを学習させるときの一般論と、クイズ王AIの学習法の特徴
ここで簡単に、AIと呼ばれる仕組みが「学習」するときの基本的なしくみについて、ご紹介します。AIを学習させるときには、「入力するデータ」と「正解」のペアを事前に用意しておきます。次に、AIに「入力するデータ」を入力し、最終的にAIが出してきたAIなりの解答と、事前に準備した「正解」とを比較します。そして、そのAIの解答と「正解」との誤差を小さくしてゆけるように、AIの中身を更新して改善します。これをたくさん繰り返して、AIの出す解答と、本当の正解との誤差を小さくしてゆくというのが、AIの学習の基本的なパターンです。

今回の早押しクイズAIの場合は、過去問の「問題文」が「入力するデータ」に、「その問題の正解」がそのものずばり「正解」に該当します。最初は、問題文をAIに入力しても、AIが出してくる解答は、正解とは程遠いものになるでしょう。しかし、そのAIの解答と、本当の正解との差を小さくしてゆけるように、AIの中身を更新してゆくことで、どんどん賢いAIになってゆく、というわけです。これは、クイズに限らず、人間が問題集や入試過去問で勉強するときのやり方と、同じですよね。

さて、今回の早押しクイズ最強AIの学習法について、より詳細なところを読んでいったところ、様々な工夫が書かれていたのですが、その中でも、**人間がクイズの訓練をする方法に対する示唆を含んでいると個人的に思った**、次の2点を取り上げたいと思います。

## 学習法（1）意図的に問題文中にランダムに歯抜けを作る
このAIは、「50%の確率で、問題文の単語や他のWikipedia記事の情報をランダムに無視」しながら、過去問での事前の学習を行っていたようです。つまり、過去問で訓練をするときに、**意図的に問題文にランダムな歯抜けを作って、その状態の問題文から解答を導き出す**、ということをしていたわけです。

これは、AIが問題文と正解のセットを丸暗記してまうことを防ぐ、という意図があります。つまり、過去問をただ丸暗記してしまうと、本番で新たな未知の問題文が来たときに、柔軟な対応ができなくなってしまうので（専門的には、この現象を「過学習」といいます）、それを避けるために、こうした情報の意図的な欠落を作ったりします。こうした手法は、いわゆるディープラーニングも含め、様々なAI技術（機械学習）で使われています。

この学習法は、実は人間がクイズの訓練をするときにも、使えるのではないか？ という気がしたので、今回ここで取り上げました。紙の問題集では難しいかもしれませんが、デジタルデータの問題集であれば、例えばエクセルの関数で、ランダムに文字を欠落させて表示させる関数さえ書ければ、この訓練は可能です。

クイズは百人一首、などと揶揄されることもあったりしますが、ベタ問の丸暗記に飽きてしまったかたや、聞いたことのあるフレーズが来るとついつい押してしまって間違えてしまうという悩みがあるかたには、この「歯抜け学習法」は、もしかしたら効果があるかも？

## 学習法（2）問題文をランダムな位置でストップさせる
このAIが事前学習したときは、過去問の問題文を入力するときに、**毎回ランダムな位置で問題文をストップさせて、ストップさせた位置までの問題文のみを入力して学習**させていたそうです。これは、本番でも、どの位置まで問題文が来れば解答を決断できるかわからなわけですから、ある意味、当たり前の学習法ともいえるかもしれません。

この方法も、我々人間の訓練方法として応用できそうですよね。つまり、エクセルなどで問題文を表示させるときに、ランダムな位置までしか問題文を表示させない、というやり方です。紙の問題集であっても、手や別の紙などで問題文を適当に隠してやれば、同じようなことができると思います。

先ほどの歯抜け学習法と比べ、こちらは普段我々が対人戦の実践の中で自然と訓練していることかもしれません。ただ、ひとりで訓練するときには、なかなか意識できないことのような気もします。わたし自身、「もう少し聞ければわかったのに！」ということが極めて多い身なので、この学習法も、自分みたいな人間はちゃんと取り入れてやると強くなれるんだろうなあ、という気持ちになっています。

# 日本語クイズ王AIは登場するのか？
この記事はここまでになりますが、今回ご紹介したAIは、英語での早押しクイズでクイズ王に圧勝したというAIのお話でした。つまり、まだ日本語での早押しクイズ最強AIの存在は、少なくともわたしは見聞きしたことがありません。

いうまでもなく、英語と日本語では、言語の性質が全く異なります。たとえば、英語はきれいに単語が区切られてますが、日本語は単語の区切れが曖昧です。それに、前半のほうで実際に出題された問題の日本語訳を載せましたが、我々が日本で慣れ親しんでいる早押しクイズとは、問題文のつくりもだいぶ違いますよね。

しかし、冒頭で紹介したように、AIが人間のチャンピオンを圧倒するゲームは、急速に増え続けています。私見ですが、日本語クイズ王AIの登場は時間の問題だと思いますし、日本語クイズAI競技会も、そう遠くないうちに開催される気がします。来るべきときに備え、わたし自身、日本語クイズAIを少しずつ作っていきたいと思っています。

ここまで長文をお読みいただき、ありがとうございました。