\section{はじめに}
\label{sec:introduction}質問応答は，自然言語処理における重要な問題の一つであり，古くから研究が続けられている．特に近年では,SQuAD\shortcite{rajpurkar_squad:_2016,rajpurkar_know_2018}，MSMARCO\shortcite{bajaj_ms_2016}，RACE\shortcite{lai_race:_2017}といった読解型質問応答の大規模なデータセットが多数提案され，それと同時に，深層ニューラルネットワークを用いた質問応答の手法が数多く提案されている．また，これらのデータセットは，質問応答の研究だけではなく，近年盛んに研究がなされているBERT\shortcite{devlin_bert:_2019}をはじめとする大規模言語モデルの言語理解能力を測るベンチマークとしても利用されている．これらのデータセットが対象とする読解型質問応答のタスクでは，質問文と関連文書の両方が与えられ，システムは関連文書から正解の可能性が高い文字列を抜き出すことによって質問に解答する．すなわち，システムは解答時に知識源となる関連文書をその場で参照することが許されるので，質問に答えるためには文書の「読み方」を学習できれば良く，質問で問われる事実知識そのものをモデリングする必要はない．そのため，読解型質問応答の問題設定は，人間にとっての「持ち込み可能(open-book)試験」に喩えられる．一方，システムが文書を「どう読むか」を問う読解型質問応答とは対照的に，与えられる質問について「何を知っているか」を直接問う\textbf{「クローズドブック質問応答(closed-bookQA)」}と呼ばれるタスクが近年注目されている\shortcite{roberts_how_2020}．クローズドブック質問応答では，現実の「持ち込み不可(closed-book)試験」と同様，解答時に質問文以外の情報を参照することは認められない．したがって，システム（解答者）は事前に出題範囲を十分に学習し，記憶しておくことが要求される．すなわち，クローズドブック質問応答は，あらかじめ重要な情報を知識として記憶し，与えられる質問に対して自らが保持する知識を用いて答えるという，人間の知識を用いた知的活動により近い問題設定となっている．最近では，大規模な言語モデルが事実知識をどれだけ保持しているかをクローズドブック質問応答によって評価する研究がいくつか行われている．既存の研究では，モデルの訓練可能なパラメータの数を多くしたり\shortcite{raffel_exploring_2019}，モデルの構造や訓練の目的関数を工夫する\shortcite{ling_learning_2020,fevry_entities_2020}というモデル指向の方法によって，クローズドブック質問応答の性能が向上することが報告されている．特に最先端の研究では，数十億〜数百億の訓練可能なパラメータを持つ超巨大なモデルによる性能が報告されている\shortcite{roberts_how_2020}．これらの研究は，言語モデルが持つことのできる表現力や汎化能力を追究するという面で意義深い反面，モデルの訓練には大規模な計算機資源と多大なエネルギーを必要とするため，誰でも既存研究を再現でき改善を加えられるという状況からは逸脱しつつあることが懸念される\shortcite{strubell_energy_2019}．一方，モデル指向の方法とは対照的に，訓練データを工夫してモデルが持つ知識のカバー率を上げることでクローズドブック質問応答を実現するというデータ指向のアプローチも考えられる．クローズドブック質問応答の実例としてクイズを考えてみると，例えば「ジョージ・ルーカス」が答えとなるクイズ問題は，監督した作品，本人の生い立ち，家族についてなど，複数の異なる角度からの知識が問われることが予想される．しかし，モデルが予習に用いる訓練データには，考えられる多様なクイズ問題の一部しか含まれていない．そのため，訓練データに登場しない問題がテスト時に出題された際には，訓練データのみで訓練されたモデルにとっては多くの場合，解答不可能であると考えられる．このことは，正解が訓練データ中に1回もしくは数回しか出現しない，いわゆるfew-shotの事例では特に問題となる．このような問題に対して，データ指向のアプローチは，より多様な事実知識をより効率的にモデルに教えるために役立てられると考えられる．さらに，モデルの大型化に頼らずにクローズドブック質問応答を実現できれば，関連文書の検索・走査を伴う読解型質問応答システムよりも高速に利用者の質問に解答できるシステムが低コストで実現できる可能性がある．しかしながら，深層ニューラルネットワークを活用したクローズドブック質問応答の研究は歴史が浅く，データ指向のアプローチの有効性については十分に研究がされていない．本稿では，クローズドブック質問応答におけるデータ指向アプローチの有効性を実験的に調査する．具体的には，Wikipediaを知識源とした拡張データを作成し，遠距離教師あり学習によって，元の訓練データには記述されていない事実知識をモデルに教えるために利用する．モデルには事前訓練済み言語モデルのBERT\shortcite{devlin_bert:_2019}を用い，元の訓練データおよび拡張データに対してモデルをファインチューンさせる．実験では，クイズを題材にした質問応答のデータセットであるQuizbowl\shortcite{rodriguez_quizbowl:_2019}とTriviaQA\shortcite{joshi_triviaqa:_2017}を用いて，モデルのクローズドブック質問応答の性能を調査した．モデルが出力した解答の分析から，拡張データを用いて訓練されたモデルが，元の訓練データには記述されていない事実知識を問う問題に対しても正しく解答できたことがわかり，モデルが拡張データから新たな知識を学習し解答に活用できていることを示唆する結果が得られた．テストデータを用いた評価実験では，Quizbowlでは従来の最高性能を更新し，TriviaQAでは既存の強力な系列生成モデル\shortcite{roberts_how_2020}に匹敵する性能をおよそ20分の1のパラメータ数で実現した．以下では，2節でクローズドブック質問応答の関連研究について概観し，3節でタスクの定義およびデータセットについて説明する．4節で本研究の提案手法について述べ，5節で実験設定および実験結果を示す．6節でまとめと今後の展望について述べる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2
\section{関連研究}
\label{sec:related_work}質問応答システムの研究は，古くはコンピュータの黎明期である1960年代に遡る．初期の研究は主に自然言語理解を目的としたものであったが\shortcite{green_baseball_1961,winograd_terry_procedures_1971}，1990年代からは，情報アクセス技術としての質問応答の研究が行われるようになった．特に，分野が限定されない文書集合に対する質問応答，いわゆるオープンドメイン質問応答の研究は，1999年に開かれた情報検索技術の評価型ワークショプTREC-8でのQAトラックをきっかけに広く取り組まれるようになった\shortcite{voorhees_trec-8_1999}．オープンドメイン質問応答は，質問文の解析，情報検索，解答候補の抽出，解答候補の統合という複数のモジュールによるパイプライン処理で行われることが一般的である．初期のシステムでは，各モジュールの処理に人手による規則や素性の設計を伴う手法が主流であった\shortcite{simmons_answering_1965}．2011年にアメリカのクイズ番組Jeopardy!で人間のクイズ王と対戦し勝利を収めたIBMWatson\cite{ferrucci_introduction_2012}は，大量のコーパスと大規模な計算資源を活用したパイプライン処理に基づく質問応答システムであり，そのプロジェクトの成功は人工知能研究の進展を社会に大きく印象付けた．一方，2010年代から，与えられる文書を読解して質問に答える読解型質問応答の研究が，深層ニューラルネットワーク技術の進展およびSQuAD\shortcite{rajpurkar_squad:_2016}に代表される数多くのデータセットの登場により後押しされ，多くの研究者に取り組まれるようになった．それ以降，オープンドメイン質問応答の研究においても，解答候補の抽出・統合のモジュールを読解型質問応答のモデルに置き換えることでより高い解答性能の実現を目指す研究が進められている\shortcite{chen_reading_2017,clark_simple_2018,wang_r3_2018,seo_real-time_2019}．さらに近年，深層ニューラルネットワークを用いた自然言語処理技術のさらなる発展に伴い，文書の検索や読解を必要とせずモデルに知識そのものを保持させることで質問応答を実現する，クローズドブック質問応答と呼ばれるタスクの研究がいくつか行われている．その一つに，大規模なコーパスで訓練された言語モデルがどれだけ事実知識を保持し想起できるかを評価する一連の研究がある．\shortciteA{radford_language_2019}は，大量のウェブ文書を用いて訓練されたGPT-2と呼ばれる汎用言語モデルを提案し，言語モデルのテキスト生成による質問応答の能力をNaturalQuestionsデータセット\shortcite{kwiatkowski_natural_2019}の上で評価した．その結果，質問に対してモデルが文章読解なしに正しく解答できた質問は全体の4.1\%にとどまることを報告している．\shortciteA{raffel_exploring_2019}は，GPT-2よりもさらに多くの訓練可能なパラメータを持つ汎用系列変換モデルT5を提案し，\shortciteA{roberts_how_2020}はT5の質問応答能力を，本来は読解型質問応答のデータセットであるTriviaQA\shortcite{joshi_triviaqa:_2017}の質問をテキスト生成により解かせることで評価した．その結果，数十億〜数百億個の訓練可能なパラメータを持つモデルが，複数の強力な読解型質問応答のモデルを上回る解答性能を示した．別の系統の研究では，エンティティの分散表現の学習に焦点を当て，学習された分散表現の評価にクローズドブック質問応答を利用している．\shortciteA{ling_learning_2020}と\shortciteA{fevry_entities_2020}は，Wikipedia記事のハイパーリンクを活用し，エンティティの分散表現を学習する方法をそれぞれ提案した．彼らの研究では，TriviaQAをエンティティをクラスとした分類問題として解くことにより，学習されたエンティティの分散表現の有用性を評価している．以上の既存研究に対して本研究は，モデルの構造の工夫や大型化に頼ることなく，訓練に用いるデータを工夫することよって，より効率的にクローズドブック質問応答のモデルを訓練することを追究するものである．言語モデルが保持する知識の評価を目的とした既存研究としては，入力文のマスクされた部分を予測させることでモデルが持つ知識の評価を行う研究がある．\shortciteA{petroni_language_2019}と\shortciteA{davison_commonsense_2019}による研究では，知識ベースを利用して，関係知識に対応する部分がマスクされた穴埋め問題の文を作成し，穴埋め言語モデルであるBERTにマスク部分を予測させることによって，モデルが保持する知識を評価した．これに対して本研究では，関係知識ではなく，エンティティについて任意のテキストで記述される知識を質問応答の形式で評価するという点で異なっている．質問応答のタスクにデータ拡張を適用させた既存研究として，\shortciteA{rodriguez_quizbowl:_2019}は，Quizbowl\shortcite{boyd-graber_besting_2012}というクローズドブック質問応答タスクにおいて，Wikipediaから作成した拡張データをモデルの訓練に利用することを提案した．彼らはGRU\shortcite{cho_learning_2014}をモデルに用いた実験により，データ拡張がモデルの解答性能の向上に寄与することを示した．他方，\shortciteA{yang_data_2019}は，読解型質問応答におけるデータ拡張の有効性について調査している．BERTを読解モデルに利用した彼らの実験では，拡張データと元の訓練データを用いた段階的なモデルのファインチューニングが，モデルの読解性能の向上に有効であることを報告している．本研究ではこれらの既存研究を踏まえ，\shortcite{rodriguez_quizbowl:_2019}と同様のクローズドブック質問応答における，訓練済み言語モデルおよびデータ拡張の有効性を調査し，データ拡張によってどのような問題を解答できるようになったかについて，より詳しい分析を与える．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3
\section{クローズドブック質問応答}
\label{sec:task_and_dataset}%3.1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{タスク定義}\label{sec:task_formalization}本研究では，データ指向のアプローチをとる既存研究\shortcite{rodriguez_quizbowl:_2019}に倣い，クローズドブック質問応答をエンティティをクラスとした分類問題として解く．すなわち，システムは，与えられる質問文$q$に対して，予め決定されたエンティティの集合$V_a=\{a_1,\cdots,a_{|V_a|}\}$の要素であるようなエンティティ$a$を正解として予測する．したがって，本解法はクラス数が$|V_a|$のマルチクラス分類問題となる．%3.2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{データセット}\label{sec:datasets}本研究では，ドメインを限定しない多様な事実知識についてモデルの解答性能を評価するために，クイズの問題を活用した質問応答のデータセットであるQuizbowlとTriviaQAを実験に用いる．各データセットの統計量を表\ref{tab:dataset_stats}に示す．それぞれのデータセットについて，訓練データに1回以上正解として出現するエンティティの集合を正解エンティティの集合$V_a$として定める．すなわち，Quizbowlでは25,969クラス，TriviaQAでは28,689クラスの多クラス分類問題となる\footnote{本研究の提案手法では，訓練データに一度も出現しない，すなわちzero-shotの正解エンティティについては，最初から解けないものとして取り扱う．}．以下の節では，2種類のデータセットの特徴について述べる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表1\begin{table}[b]\input{01table01.tex}\caption{データセットの統計量}\label{tab:dataset_stats}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表2\begin{table}[b]\input{01table02.tex}\caption{Quizbowlの問題例}\label{tab:example_quizbowl}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3.2.1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsubsection{Quizbowl}\label{sec:quizbowl}Quizbowlは，主に英語圏で実際に行われているクイズの大会であり，自然言語処理における質問応答のタスクとしても研究されている\shortcite{boyd-graber_besting_2012,iyyer_neural_2014,rodriguez_quizbowl:_2019}．表\ref{tab:example_quizbowl}に，Quizbowlで出題されるクイズ問題の例を示す．Quizbowlで出題される問題は「早押しクイズ」であり，解答者は正解が分かった時点でブザーを押して解答する．そのため，質問の文章は，正解のエンティティについてより詳しく知っている解答者が有利となるよう，より難しい（知名度の低い，抽象的な）ヒントが先に，より易しい（よく知られている，具体的な）ヒントが後に現れるように，複数の文を配列させることで作られている．本研究では，\shortciteA{rodriguez_quizbowl:_2019}によって提案された\textsc{qanta}2018データセットを用いる\footnote{\url{https://sites.google.com/view/qanta/resources}}．\textsc{qanta}2018は，過去のQuizbowlの大会で使用されたおよそ12万問のクイズ問題からなるデータセットである．すべてのクイズ問題には，正解のエンティティがWikipediaの記事タイトルとして付与されている．そのため，\textsc{qanta}2018のクイズ問題は，Wikipediaの記事タイトルをクラスとした分類問題として解くことができるようになっている．%3.2.2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsubsection{TriviaQA}\label{sec:triviaqa}TriviaQA\shortcite{joshi_triviaqa:_2017}は，ウェブ上のクイズ問題を収集して作られた質問応答のデータセットである．表3に，TriviaQAの質問と正解の例を示す．TriviaQAは元々読解タスク向けに作られたデータセットであり，データセットに含まれる各事例は，質問文，正解，そして読解対象の文書からなる．同様の読解タスクのデータセットとしてSQuAD\shortcite{rajpurkar_squad:_2016,rajpurkar_know_2018}があるが，SQuADはWikipediaの文章に対して質問を人手で作成・付与することで作られているため，例えば``Whatindividualistheschoolnamedafter?''のような，それ単独では意味が定まらないような質問が一部含まれている．これに対してTriviaQAは，既存のクイズ問題に対してウェブ文書やWikipedia記事を付与するという方法で作られており，質問の内容が読解対象の文書の内容に依存してしない．したがって，TriviaQAは，読解対象の文書を無視することでクローズドブック質問応答のデータセットとしても用いることができ，実際にクローズドブック質問応答の既存研究でもそのように用いられている\shortcite{roberts_how_2020,ling_learning_2020,fevry_entities_2020}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表3\begin{table}[b]\input{01table03.tex}\caption{TriviaQAの問題例}\label{tab:example_triviaqa}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%本研究では，TriviaQAの公式ウェブサイト\footnote{\url{https://nlp.cs.washington.edu/triviaqa}}で公開されているデータのうち，{\sfunfiltered-train}のデータをモデルの訓練に，{\sf\smallwikipedia-dev}と{\sf\smallwikipedia-test}のそれぞれをモデルの開発およびテスト用のデータとして用いる．TriviaQAの訓練および開発データには，質問文，正解の文字列，読解文書の他に，Wikipediaの記事タイトルで表された正解エンティティの情報もメタデータとして付与されている．本研究では，分類問題として解くクローズドブック質問応答の設定に適合させるため，訓練データのうち正解エンティティの情報が付与されている事例のみをモデルの訓練に用い，読解向けの正解の文字列ではなく正解エンティティの情報をモデルへの教師信号として用いる．%3.2.3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsubsection{2つのデータセットに共通する特徴}\label{sec:few-shotness}QuizbowlとTriviaQAのデータセットに共通する特徴の一つに，訓練データの量に対して正解エンティティの異なり数$|V_a|$が大きく，その出現頻度の分布が大きく偏っていることが挙げられる．図\ref{fig:train_freq}に，それぞれの訓練データセットにおける正解エンティティの出現頻度を示す．どちらのデータセットでも，一部の正解エンティティは訓練データに多く出現する一方で，ほとんどの正解エンティティは訓練データに1回もしくは数回しか出現しない，いわゆるfew-shotの事例となっている．本研究では，このようなfew-shotの正解エンティティに対してもモデルが多様な知識を持てるように，データ拡張を行う（\ref{sec:data_augmentation}節）．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%図1\begin{figure}[t]\begin{center}\includegraphics{28-1ia1f1.pdf}\end{center}%%%%\subcaption{Quizbowl}%%%%\label{fig:qb_train_freq}%%%%\subcaption{TriviaQA}%%%%%\label{fig:tq_train_freq}\caption{訓練データにおけるエンティティの出現頻度}\label{fig:train_freq}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4
\section{提案手法}
\label{sec:methodology}%4.1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{モデル}\label{sec:model}本研究では，クローズドブック質問応答のモデルとして，大規模コーパスで事前訓練された汎用言語モデルであるBERT\shortcite{devlin_bert:_2019}を多クラス分類問題向けに拡張したものを用いる\footnote{\url{https://github.com/google-research/bert}で配布されているBERT-base(cased)のモデルを用いた．}．具体的には，質問文$q$の入力に対してBERTが出力する，文頭の特殊トークン\texttt{[CLS]}に対応するベクトル$\mathbf{q}\in\mathbb{R}^d$を多クラス分類層に入力しsoftmax関数を適用することで，エンティティ$a\inV_a$が質問$q$の正解である確率分布$P(a|q)$を計算する．\[P(a|q)=\frac{\exp(\mathbf{q}^\top\mathbf{w}_a)}{\sum_{a'\inV_a}\exp(\mathbf{q}^\top\mathbf{w}_{a'})}\]ここで，$\mathbf{w}_a\in\mathbb{R}^d$は，エンティティ$a\inV_a$に関連付けられた，訓練可能な重みベクトルである．なお，本研究ではBERTの他にも，RoBERTa\shortcite{liu_roberta:_2019}とXLNet\shortcite{yang_xlnet_2019}をモデルに用いた実験も行っている．これらの実験結果については付録\ref{appendix:different_model_results}に示す．%4.2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{データ拡張}\label{sec:data_augmentation}エンティティについてのより多様な事実知識をモデルに保持させるために，Wikipediaを知識源としたデータ拡張を行う．本研究では，\shortciteA{rodriguez_quizbowl:_2019}が提案したデータ拡張手法を基本に，拡張データを作成する．QuizbowlとTriviaQAのそれぞれについて，拡張データを以下の手順により作成した：\begin{enumerate}\item正解エンティティの集合$V_a$の要素である各エンティティ$a$について，$a$を記事名（主題）とするWikipedia記事$D^{(a)}$を取得する．\item各エンティティの記事$D^{(a)}$について，記事本文全文を文分割して$\{s_i^{(a)}\}_{i=1}^{N_a}$を得る．ここで，$N_a$は記事$D^{(a)}$の本文の文数である．\item各エンティティの記事$D^{(a)}$について得られた文-エンティティペア$\{(s_i^{(a)},a)\}_{i=1}^{N_a}$を拡張データの事例とする．\end{enumerate}\noindentなお，Wikipedia記事からの拡張データ作成にあたっては，\shortcite{rodriguez_quizbowl:_2019}では各記事の最初の段落だけから文を取り出していたのに対し，本研究では記事全文から文を取り出している．これにより，訓練したモデルの解答性能が向上することを事前実験により確認している．拡張データの作成には，英語版Wikipediaの2018年4月18日付けのダンプファイルを使用した\footnote{当該ダンプファイルは，\textsc{qanta}2018のデータセットとともに公式サイト(\url{https://sites.google.com/view/qanta/resources})で配布されている．}．Wikipediaダンプファイルからの記事本文の抽出には{\sfWikiExtractor}\footnote{\url{https://github.com/attardi/wikiextractor}}を，本文の文分割には{\sfBlingFireTokenizer}\footnote{\url{https://github.com/microsoft/BlingFire}}を使用した．記事から得られた文のうち，文長が20文字よりも短い記事は，ノイズとなる可能性が高いため拡張データから除外した．また，文中における正解エンティティの直接的な言及は，解答のあからさまなヒントとなりうるため，マスクする処理を行った．具体的には，各文-エンティティペア$(s,a)$について，文$s$に含まれる，正解エンティティ$a$と単語単位で部分一致する全ての文字列を，その文字列をサブワード分割した際と同じ長さの\texttt{[MASK]}トークン列に置換した．ここで完全一致ではなく部分一致としたのは，文中の言及が正解エンティティの略称（人名であれば姓名のいずれかなど）であっても置換できるようにするためである\footnote{例えば，\texttt{Justin\_Bieber}（サブワードでは``JustinB\#\#ie\#\#ber''）というエンティティに対しては，本文中の``Justin''が``\texttt{[MASK]}''に，``Bieber''が``\texttt{[MASK][MASK][MASK]}''にそれぞれ置換される．}．なお，部分一致の検索は大文字と小文字を区別せずに行った．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表4\begin{table}[t]\input{01table04.tex}\caption{Wikipediaから作成した拡張データの例}\label{tab:example_augmented_data}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%作成した拡張データの統計量を表\ref{tab:dataset_stats}に，事例を表\ref{tab:example_augmented_data}にそれぞれ示す．一般に，Wikipediaの記事には，エンティティについての多様な側面からの情報が記述されているが，表\ref{tab:example_augmented_data}の(c)の例のように，それ単独では主題のエンティティを特定することが難しい文も一定の割合で存在する．このような文は，1文だけからなる訓練事例としてはノイズになると考えられるため，フィルタリングにより取り除くことでデータセットの品質を向上させられる可能性がある\footnote{フィルタリングの方法としては，文に含まれる単語のTF-IDFや固有表現の個数などを特徴量としたヒューリスティクスに基づく手法や，強化学習により汎化性能向上への貢献度の計算とフィルタリングを同時に行う手法などが考えられる．}．あるいは，正解エンティティが同じである複数の文を組み合わせることで，より正解エンティティを特定しやすい訓練事例を作ることも考えられる．このように，本研究のデータセットの作成方法には，品質向上のための改良の余地が残されているが，本稿では今後の研究課題とする．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
\section{実験}
\label{sec:experiments}クローズドブック質問応答におけるデータ拡張の有効性，ならびにデータ拡張によりモデルが未知の質問に答えられるかどうかを検証するために，実験を行った．%5.1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{実験設定}\label{sec:experimental_setting}\shortciteA{rodriguez_quizbowl:_2019}の研究では，Wikipediaから作成した拡張データを元の訓練データと混ぜ合わせることによって，データ拡張を行っていた．一方，BERTをはじめとする言語モデルの訓練には，タスク非依存のコーパスを用いた事前訓練とタスク固有の訓練データを用いたファインチューニングからなる2段階の訓練方法が広く用いられている．本研究では，\shortcite{rodriguez_quizbowl:_2019}と同様のデータ拡張方法に加えて，拡張データと元の訓練データを用いた2段階のデータ拡張についても実験を行う．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表5\begin{table}[b]\input{01table05.tex}\caption{モデルのハイパーパラメータの一覧}\label{tab:hyperparam}\vspace{-1\Cvs}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\ref{sec:datasets}節で述べたQuizbowlとTriviaQAのそれぞれのデータセットについて，\ref{sec:model}節で述べたモデルと\ref{sec:data_augmentation}節で述べた手法で作成した拡張データを用い，以下の5つの設定で実験を行った．\begin{itemize}\item\textbf{Quiz:}モデルをクイズの訓練データのみで訓練する．\item\textbf{Wiki:}モデルをWikipediaから作成した拡張データのみで訓練する．\item\textbf{Quiz$+$Wiki:}モデルを，クイズの訓練データとWikipediaから作成した拡張データを混合したデータを用いて訓練する．これは，既存研究\shortcite{rodriguez_quizbowl:_2019}と同様のデータ拡張手法である．\item\textbf{Quiz$\rightarrow$Wiki:}モデルをクイズの訓練データで訓練した後に，Wikipediaから作成した拡張データで追加訓練する．\item\textbf{Wiki$\rightarrow$Quiz:}モデルをWikipediaから作成した拡張データで訓練した後に，クイズの訓練データで追加訓練する．\end{itemize}\noindent各実験設定で，訓練時のエポック数は10，ミニバッチサイズは128とした\footnote{Quizbowlのデータセットを用いた実験では，既存研究\shortcite{rodriguez_quizbowl:_2019}に倣い，モデルの訓練時のみ質問を文分割し，得られた文-正解ペアを1事例とした．}．ただし，TriviaQAのQuizの設定のみ，訓練データの量が少ないことによるモデルの過小適合を避けるため，訓練時のエポック数を30とした．モデルの訓練には，モデルが予測する正解の確率分布$P(a|q)$と正解ラベルの間の交差エントロピー損失の最小化を目的関数とした．最適化のアルゴリズムにはAdamW\shortcite{loshchilov_decoupled_2019}を用い，訓練の冒頭20\%における学習率のwarmupおよび以降の学習率のlineardecayを適用した．その他のハイパーパラメータの一覧を表\ref{tab:hyperparam}に示す．実験には，{\sfPyTorch}\shortcite{paszke_pytorch_2019}\footnote{\url{https://pytorch.org/}},{\sfAllenNLP}\shortcite{gardner_allennlp_2018}\footnote{\url{https://allennlp.org/}},{\sfTransformers}\shortcite{wolf_transformers_2020}\footnote{\url{https://github.com/huggingface/transformers/}}を使用した．モデルの訓練および評価には，メモリ容量16GBのNVIDIAV100GPU1枚を使用した．1つのモデルの訓練には，データセットと実験設定によって異なるが，最大で36時間の時間を要した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表6\begin{table}[b]\input{01table06.tex}\hangcaption{QuizbowlとTriviaQAの訓練・開発データに対する正解率（$\dag$は訓練時のエポック数を30とした場合の結果であることを示す）}\label{tab:result_quizbowl_triviaqa_dev}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5.2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{実験結果}\label{sec:results}%5.2.1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsubsection{データ拡張による解答性能の向上}\label{sec:results_quantative}表\ref{tab:result_quizbowl_triviaqa_dev}に，QuizbowlとTriviaQAの訓練データおよび開発データに対するモデルの解答性能を示す．まず，Quizの実験設定の結果について見ると，訓練データ上での正解率がほぼ100\%に到達した．このことから，モデルは各データセットの訓練データを丸暗記し，全く同じ内容の質問が入力された時には正しく解答できることがわかる．次に，データ拡張を行う実験設定同士で比較すると，Wiki$\rightarrow$Quizの実験設定が，Quiz$+$WikiおよびQuiz$\rightarrow$Wikiと比較して最も高い正解率を示した．これら3つの実験設定では，モデルは同じ訓練データの事例を同じ回数だけ与えられるにも関わらず，解答性能に差が生じているということから，モデルの事前訓練の後にタスク特有のデータセットでファインチューニングを行うという，BERTをはじめとする言語モデルの訓練に広く用いられている方法が，クローズドブック質問応答のタスクにおいても有効であることが示唆される．これとは対照的に，Quiz$\rightarrow$Wikiの実験設定では正解率が著しく低下し，データ拡張を行わないQuizの実験設定よりも悪い結果となった．Quiz$\rightarrow$Wikiでは訓練データ上での正解率も大きく低下していることから，モデルの破滅的忘却(catastrophicforgetting)\shortcite{mccloskey_catastrophic_1989,french_catastrophic_1999}が発生していると考えられる．図\ref{fig:freq_acc}に，QuizbowlおよびTriviaQAの開発データにおける，QuizおよびWiki$\rightarrow$Quiz設定で訓練されたモデルのfew-shotの正解エンティティに対する解答性能を示す．どちらのデータセットにおいても，Wiki$\rightarrow$Quizのデータ拡張の設定によってfew-shotの正解エンティティに対して特に大きな性能向上が見られた．few-shotの正解エンティティは，元のクイズの訓練データに含まれる限られた情報のみでは解答することが難しいと考えられるため，これらエンティティでの解答性能が向上したという結果は，データ拡張によりモデルが新しい知識を学習したことで，初見の質問に対しても正しく答えられるようになったことを支持している．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%図2\begin{figure}[b]\begin{center}\includegraphics{28-1ia1f2.pdf}\end{center}%%%%\subcaption{Quizbowl}%%%%\label{fig:qb_freq_acc}%%%%\subcaption{TriviaQA}%%%%\label{fig:tq_freq_acc}\caption{開発データに含まれるfew-shotの正解エンティティに対する正解率}\label{fig:freq_acc}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表7\begin{table}[b]\input{01table07.tex}\caption{データ拡張によって正答するようになったTriviaQA開発データの問題例}\label{tab:positive_sample}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5.2.2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsubsection{データ拡張がモデルの解答に及ぼす影響の分析}\label{sec:results_qualitative}表\ref{tab:positive_sample}に，Quizの設定で訓練されたモデルは誤答したがWiki$\rightarrow$Quizの設定で訓練されたモデルは正答できた，TriviaQAの開発データの質問の例を示す．表\ref{tab:positive_sample}の質問に正しく解答するためには，モデルは「GeorgeLucasがStarWarsを監督した」という事実知識を保持していなければならない．しかし，TriviaQAの訓練データには，GeorgeLucasが監督した別の映画に関する質問は含まれているが，StarWarsに関する質問は含まれていない．そのため，Quizの設定で訓練されたモデルにとっては，開発データの問題は未知の知識を問う問題となり，正答できなかったと考えられる．他方，Wikipediaから作成した拡張データには，GeorgeLucasがStarWarsを監督した事実について述べられた文が複数存在する．Wiki$\rightarrow$Quizの設定で訓練されたモデルは，これらの拡張データの事例から新たな知識を学習し，質問に答えることができるようになったと考えられる\footnote{同様の，データ拡張によって正答できるようになった例を付録\ref{appendix:additional_examples}に示す．}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表8\begin{table}[b]\input{01table08.tex}\caption{データ拡張によって誤答するようになったTriviaQA開発データの問題例}\label{tab:negative_sample}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%それとは逆に，Quizの設定で訓練されたモデルは正答できていたにもかかわらず，Wiki$\rightarrow$Quizの設定で訓練されたモデルは誤答した質問も存在する．表\ref{tab:negative_sample}に例を示す．この質問は，解答に必要な知識が拡張データにのみ存在していたにもかかわらず，データ拡張なしのモデルは正答し，逆にデータ拡張ありのモデルは誤答するようになってしまった．詳しく調べると，TriviaQAの訓練データには``Inwhichsea''で始まる質問が9問あり，そのうちの4問は正解が\texttt{Caribbean}の質問で，残りの5問はそれぞれ異なるエンティティが正解の質問であった．すなわち，Quizの設定で訓練されたモデルは，訓練データに見られる出題内容の偏りを学習してしまい，表層的な手がかりだけで正答できていたと考えられる．その一方で，\texttt{Caribbean}の拡張データには，真に解答の手掛かりとなる知識を含む文が1つしか含まれておらず，Wiki$\rightarrow$Quizの設定で訓練されたモデルは，正解エンティティを弁別するのに十分な知識を学習できなかったと推測される．データ拡張がモデルの解答に与える影響についてより詳しく調査するため，TriviaQAの開発データの事例を(a)QuizとWiki$\rightarrow$Quizのどちらの設定でも正答できた事例，(b)Quizでは誤答したがWiki$\rightarrow$Quizでは正答できた事例，(c)Quizでは正答できたがWiki$\rightarrow$Quizでは誤答した事例，(d)QuizとWiki$\rightarrow$Quizのどちらの設定でも誤答した事例の4つのグループに分割し，分析を行った．それぞれのグループに対してランダムサンプルした20例について，質問の解答に必要な知識がクイズの訓練データまたはWikipediaの拡張データのどちらに記述されていたかで事例を分類し，その割合を求めた．ここで「質問の解答に必要な知識」とは，解答を一つに特定するために必要な事実知識とし，その形式は定めないものとした\footnote{例えば，``WhocomposedtheoperaTurandot?''という質問の解答には，\texttt{(Turandot,composer,GiacomoPuccini)}のような3つ組で表される関係知識が必要となる．一方，``Whatnameisgiventoasubstancethatacceleratesachemicalreactionwithoutitselfbeingaffected?''という質問では，正解エンティティの定義や説明といった非定形の知識が解答に必要となる．}．分析は，著者自身がクイズの訓練データおよびWikipediaの拡張データを比較することにより行った．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%図3\begin{figure}[b]\begin{center}\includegraphics{28-1ia1f3.pdf}\end{center}\hangcaption{TriviaQAの開発データにおける，質問の解答に必要な知識の所在の割合．QuizはTriviaQAの訓練データ内に知識が存在する事例，WikiはWikipediaの拡張データ内に知識が存在する事例，Bothは両方のデータに知識が存在する事例，Noneはどちらのデータにも知識が存在しなかった事例をそれぞれ示す．}\label{fig:grouped_results}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%図\ref{fig:grouped_results}に分析の結果を示す．図\ref{fig:grouped_results}(a)より，データ拡張の有無にかかわらず正解できた事例の90\%は，クイズの訓練データに解答に必要な知識が記述されていたことがわかる．一方，図\ref{fig:grouped_results}(b)より，データ拡張により正解できるようになった事例の55\%は，Wikipediaの拡張データにのみ必要な知識が記述されていた．すなわち，モデルが拡張データから新しい知識を獲得して質問に正答できるようになった事例が，データ拡張で新たに解けるようになった質問のおよそ半数を占めていたことがわかる．また，図\ref{fig:grouped_results}(c)および(d)は，提案手法では正答できなかった質問の多くは必要な知識が拡張データに記述されていなかったものであることを示している．このような事例には，解答に必要な情報が複数の文にまたがって記述されていたり別の記事に記述されているような例\footnote{例えば，``Inwhichcountrywasthe2006FIFAWorldCupheld?''という質問の解答に必要な情報は，正解である\texttt{Germany}のWikipedia記事でなく，FIFAワールドカップに関する別の記事に記述されている．}，あるいはWikipediaの記事内容を正しく取得できなかった例\footnote{正解エンティティとして，Wikipediaの曖昧性解消ページが付与されていた例も存在する．}も含まれる．このような例は，本研究のデータ拡張手法，すなわちWikipediaの文-記事タイトルペアを擬似的にクイズの質問-正解ペアとみなす方法の限界を示すものであり，より洗練されたデータ拡張手法によって解決できる可能性がある．%5.2.3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsubsection{既存手法の解答性能との比較}\label{sec:results_test}最後に，QuizbowlとTriviaQAのテストデータ上での提案手法の解答性能を示し，既存手法と比較する．ここでは，既存手法との比較を容易にするために，解答性能の評価指標としてタスクおよびデータセット固有のもの，すなわち，Quizbowlでは正解率(Accuracy)，TriviaQAでは解答文字列の完全一致率(ExactMatch,EM)を評価指標として用いる．TriviaQAについては，テストデータは非公開であるため，公式サイトのリーダーボード\footnote{\url{https://competitions.codalab.org/competitions/17208}}上で解答性能を評価した．また，本来は読解タスクであるTriviaQAの正解文字列と，モデルが予測するWikipedia記事タイトルのミスマッチを抑制するため，提案手法のモデルの出力に対して文字列整形の後処理を適用した\footnote{具体的には，記事名のアンダースコアを空白に置換し，記事名末尾のカッコで括られた文字列の除去を行った．例えば，\texttt{Symphony\_No.\_6\_(Beethoven)}という記事名は``SymphonyNo.6''に置換される．}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表9\begin{table}[b]\input{01table09.tex}\caption{Quizbowlのテストデータに対する解答性能}\label{tab:result_quizbowl_test}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表10\begin{table}[b]\input{01table10.tex}\caption{TriviaQAのテストデータに対する解答性能}\label{tab:result_triviaqa_test}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表\ref{tab:result_quizbowl_test}と表\ref{tab:result_triviaqa_test}に，QuizbowlとTriviaQAのテストデータに対するモデルの解答性能をそれぞれ示す．データ拡張を利用した本研究の提案手法により，Quizbowlでは，GloVe\shortcite{pennington_glove:_2014}とGRU\shortcite{cho_learning_2014}を用いた既存手法の解答性能を5.5ポイント上回る性能を達成した．また，TriviaQAでは，汎用テキスト生成モデルのT5-3B\shortcite{roberts_how_2020}に匹敵する解答性能を，T5-3Bの20分の1以下のモデルパラメータ数で実現した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%6
\section{おわりに}
\label{sec:conclusion}本稿では，クローズドブック質問応答のタスクにおける，データ指向のアプローチの有効性について検証した．エンティティについてのより多様な知識をモデルに与えるために，Wikipediaを知識源とした拡張データを作成し，モデルの訓練に利用した．実験により，データ拡張を行い訓練したモデルは，元の訓練データに現れない知識を要する質問に対しても正しく答えられるようになり，データ拡張の有効性を確認した．本研究で提案したデータ指向のアプローチは，既存のモデル指向のアプローチと直交するものであり，最近提案されたEntitiesasExperts\shortcite{fevry_entities_2020}のような，より洗練されたモデルの利用と組み合わせることも可能である．本研究の今後の課題として，より洗練されたデータ拡張手法の提案，および，モデルが扱うことのできるエンティティをより多くすることが挙げられる．前者については，\ref{sec:data_augmentation}節で述べたように，拡張データからノイズとなる文をフィルタリングすることや，複数の文を組み合わせることでノイズを低減すること，後者については，正解エンティティの集合$|V_a|$を，例えばWikipediaに記事があるエンティティ全件に拡張することなどが考えられる．特に後者は，本研究では初めから解けない事例として扱っていたzero-shotの事例を解答可能とするためには必須であるが，元の訓練データに出現しないエンティティに対する解答の汎化性能をどのように実現するか，拡張データの利用方法と合わせて検討する必要がある．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\acknowledgment本研究はの一部は，JSPS科研費JP19J13238,JP19H04162の助成を受けたものです．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\bibliographystyle{jnlpbbl_1.6}\bibliography{01refs}\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\appendix%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表11\begin{table}[b]\input{01table11.tex}\caption{RoBERTaおよびXLNetをモデルに用いた場合の正解率}\label{tab:appendix_results}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%A
\section{異なる言語モデルを用いた場合の性能}
\label{appendix:different_model_results}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表12\begin{table}[p]\input{01table12.tex}\caption{データ拡張によって正答するようになったTriviaQA開発データの問題の別例}\label{tab:appendix:pred_sample}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%本研究では，BERT以外の言語モデルを用いた場合についても，\ref{sec:experimental_setting}と同様の設定で実験を行った．表\ref{tab:appendix_results}に，モデルにRoBERTa-base\shortcite{liu_roberta:_2019}\footnote{\url{https://github.com/pytorch/fairseq/tree/master/examples/roberta}}およびXLNet-basecased\shortcite{yang_xlnet_2019}\footnote{\url{https://github.com/zihangdai/xlnet}}を用いた場合の，QuizbowlとTriviaQAの訓練・開発データ上の正解率を示す．モデルを変更した場合でも，Quizの質問は丸暗記できること，Wiki$\rightarrow$Quizの段階的なデータ拡張が有効であること，別のデータ拡張の設定では性能低下を引き起こすことといった，\ref{sec:results_quantative}節で述べた現象が同様にみられることを確認できた．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%B
\section{モデルの予測の別例}
\label{appendix:additional_examples}表\ref{tab:appendix:pred_sample}に，Quizの設定で訓練されたモデルは誤答したがWiki$\rightarrow$Quizの設定で訓練されたモデルは正答できた，TriviaQAの開発データの質問の追加の例を示す．表\ref{tab:appendix:pred_sample}の最後の例は，開発データの質問と同じ正解を持つ質問が訓練データ中に17件存在していたが，そのどれもが開発データの質問と内容が共通していない質問であった例である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{biography}\bioauthor{鈴木正敏}{%2018年東北大学大学院情報科学研究科博士前期課程修了．同年より東北大学大学院情報科学研究科博士後期課程に在籍中．2019年より日本学術振興会特別研究員(DC2)．同年より理化学研究所革新知能統合研究センター言語情報アクセス技術チーム研修生．}\bioauthor{松田耕史}{%2012年東京工業大学大学院総合理工学研究科修了．修士（工学）．2018年より理化学研究所革新知能統合研究センターテクニカルスタッフ．東北大学大学院情報科学研究科博士後期課程に在籍中．}\bioauthor{大内啓樹}{%奈良先端科学技術大学院情報科学研究科にて，2015年博士前期課程修了．2018年博士後期課程修了．2018年より理化学研究所革新知能統合研究センター特別研究員．}\bioauthor{鈴木潤}{%2001年から2018年まで日本電信電話株式会社コミュニケーション科学基礎研究所研究員（主任研究員／特別研究員）．2005年奈良先端科学技術大学院情報科学研究科博士後期課程修了．現在，東北大学データ駆動科学・AI教育研究センター教授．}\bioauthor{乾健太郎}{%東北大学大学院情報科学研究科教授．1995年東京工業大学大学院情報理工学研究科博士課程修了．同大学助手，九州工業大学助教授，奈良先端科学技術大学院大学助教授を経て，2010年より現職．2016年より理化学研究所AIPセンター自然言語理解チームリーダー兼任．}\end{biography}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\biodate\end{document}