早押しクイズAIを構成する4つのコンポーネント
さてAI側のシステムはどうなっているか。コンポーネントは4つ。質問にある単語から解答を予測するニューラルネットワーク「Neural Quiz Solver」、解答の型を予測するニューラルネットワーク「Neural Type Predictor」、特有の言い回しや専門用語に反応する検索モデル「Information Retrieval Models」、これらの3つのモデルの出力を特徴としたGBRTモデル「Answer Scorer」がある。「Answer Scorer」は質問とエンティティ(回答候補)のペアにスコアをつけ、しきい値を超えたら回答する。
Neural Quiz Solver
質問文にあるテキストから解答となるWikipediaのエンティティを予測するニューラルネットワーク。質問文を構成する単語の関係性など分析して、解答にあたるWikipediaのエンティティを選ぶ。質問文からWikipediaのエンティティになるものが登場すると、そのエンティティも入力とする。
ここではWikipediaにある単語とエンティティを同一のベクトル空間に置いて、分散表現を学習している。Wikipediaのエンティティ同士の関連性と、Wikipediaのページで他のエンティティにリンクされている部分とその周辺の単語の関連性の両方を学習している。
学習のためのデータは、コンペティション主催者から配布された約10万件分の質問と回答のペアをベースにしている。モデルの実装はPyTorch。早押しクイズで使うため、学習時には質問文をランダムな位置で区切ることで、質問文の途中でも解答を予測できるようにした。
Neural Type Predictor
これはNeural Quiz Solverの正確性を強化するものと考えていいだろう。Neural Quiz Solverでは解答の型を間違えてしまうという問題があった。例えば曲名が質問されているのに作曲家を解答としてはじき出してしまうなど、ずれた解答をしてしまうことがある。そこで解答すべき型を予測するためのニューラルネットワークを別立てとした。
何を解答すべきかは質問文に「this song(この曲)」「this country(この国)」などヒントが入っているため、人間には自然に分かるが、AIだと解答候補のベクトル同士が近いと間違えてしまうようだ。
型の分類は8個の親カテゴリ、112個の子カテゴリから構成される。この分類はワシントン大学の研究者が開発したエンティティ型の分類を用いた。
学習にはNeural Quiz Solverと同様のデータを用い、PyTorchで実装。なお、最初の文のみ与えたときの正答率は93~95%、全文を与えたときは97~98%。最初の文だけで解答すべき「型」はほぼ分かる。
Information Retrieval Models
こちらはニューラルネットワークモデルではなく検索モデル。質問文をクエリとして、解答について述べているドキュメントのスコアを計算する仕組みになっている。クイズでは質問文にある特徴的な単語やフレーズが強いヒントとなる場合があるため、検索モデルも併用することにした。
Answer Scorer
上記3つのコンポーネントから導かれた解答候補をもとに、ここで回答するかを判断する。質問と解答候補のペアで(正答の確率で)スコアリングを行い、0.6以上となれば回答、人間なら早押しボタンを押すことになる。なお、質問文に含まれる単語が解答候補として出力されることがあるので、質問文に含まれる文字列はここで省くようにしている。
今回の早押しクイズAIで用いられた「Neural Quiz Solver」のベースとなった技術(単語とWikipediaエンティティを同一のベクトル空間にマップする分散表現:Wikipedia2Vec)の実装は、Githubで公開されている。また7月にSpringerから出版予定の「First NIPS '17 Competition」で詳細が記されることになっている。
また、「PyData.Tokyo」によると、2018年10月に日本のPyDataコミュニティとして初のカンファレンス開催を予定しているとのこと。これまでのミートアップよりも規模を拡大し、データ分析にまつわるさまざまな情報が集まるイベントとなりそうだ。
