SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「PyData.Tokyo Meetup」イベントレポート

クイズ王たちを凌駕する早押しクイズAIはこう作る~PyData.Tokyo Meetup #18イベントレポート

早押しクイズ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コミュニティとして初のカンファレンス開催を予定しているとのこと。これまでのミートアップよりも規模を拡大し、データ分析にまつわるさまざまな情報が集まるイベントとなりそうだ。

関連リンク

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
「PyData.Tokyo Meetup」イベントレポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10865 2018/07/05 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー