\documentclass[japanese]{jnlp_3.5}
\usepackage{jnlpbbl_2.2}
\usepackage[dvipdfmx]{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{url}
\usepackage{hangcaption_jnlp}
\usepackage{array}
%%%%\usepackage{udline}
%%%%\setulminsep{1.2ex}{0.2ex}
%%%%\let\underline=\ul
\allowdisplaybreaks


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% author's definition
%%%%\usepackage{tikz}
%%%%\usetikzlibrary{automata}
%%%%\usetikzlibrary{arrows}
%%%%\usetikzlibrary{arrows.meta}
%%%%\usetikzlibrary{positioning}
%%%%\usetikzlibrary{intersections, calc}
%%%%\usetikzlibrary{decorations}
%%%%\usetikzlibrary{decorations.markings}
%%%%\usetikzlibrary{decorations.pathreplacing,angles,quotes}
%%%%\usetikzlibrary{fit}
%%%%\usetikzlibrary{math}
%%%%\usetikzlibrary{shapes}
%%%%\usepackage{pgfplots}
%%%%\pgfplotsset{compat=1.17}
%%%%\usepackage{bchart}
%%%%\usepackage{xcolor}
\usepackage{multirow}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\Volume{29}
\Number{2}
\Month{June}
\Year{2022}
%%%%\Issuetitle{「　　　　」特集号}

\received{2021}{10}{30}
\revised{2022}{2}{8}
%%%%\rerevised{2006}{5}{6}
\accepted{2022}{3}{19}

\setcounter{page}{542}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\jsubject{一般論文}
\jtitle{多様な規則を活用した文法誤り訂正のデータ拡張に関する分析}
\jauthor{古山　翔太\affiref{Author_1}\affiref{Author_2} \and 高村　大也\affiref{Author_2} \and 岡崎　直観\affiref{Author_1}\affiref{Author_2}}
\jabstract{%
ニューラル文法誤り訂正では，データ拡張によって学習データの不足を補う手法が活発に研究されている．本研究では，既存のデータ拡張手法が，より良いデータ拡張を行い性能向上を目指す上で重要な要素として，(1)~誤りの多様性が訂正性能に寄与すること，(2)~特定の種類の誤り生成がその種類の誤り訂正性能に寄与すること，(3)~データ拡張に用いるコーパスの大きさが訂正性能に寄与することの3点が仮定されている．本研究では，これらの仮定の妥当性を検証するため，多様な文法カテゴリでの誤り生成規則を組み合わせる手法を提案し，生成する誤りの種類を変えて誤り訂正モデルを学習することで，比較検証を行う．結果として，仮定(1) (2)は正しいが，一方で，仮定(3)においては，コーパスの規模ではなく，パラメータの更新回数と誤りの生成回数が影響することが明らかになった．さらに，提案手法は，学習者コーパスを用いない教師なし設定でも高い性能のモデルを学習でき，学習者コーパスを用いた場合でも，既存の手法と同程度に高性能なモデルを学習できることが明らかになった．折り返し翻訳・逆翻訳によるデータ拡張手法との比較を通じて，また，ルールによる誤り生成とこれらの手法を用いたモデルでは，訂正において得意な誤り種類が異なることが判明した．
}
\jkeywords{文法誤り訂正, データ拡張}

\etitle{Analysis of Data Augmentation for Grammatical \\ Error Correction Based on Various Rules}
\eauthor{Shota Koyama\affiref{Author_1}\affiref{Author_2} \and Hiroya Takamura\affiref{Author_1}\affiref{Author_2} \and Naoaki Okazaki\affiref{Author_1}\affiref{Author_2}}
\eabstract{%
Inadequate training data renders neural grammatical error correction less effective. Recently, researchers have proposed data augmentation methods to address this problem. The methods are proposed based on the following three assumptions: (1) error diversity in generated data contributes to performance improvement; (2) error generation for a certain error type affects the correction performance of same-type errors; (3) a larger corpus used in error generation results in better performances. In this study, we design multiple error generation rules for various grammatical categories and propose a method to combine those error generation rules to validate the abovementioned assumptions by varying the error types in the generated data. Results show that assumptions (1) and (2) are valid, whereas assumption (3) is associated with the number of training steps and the number of generated errors. Furthermore, our proposed method can train a high-performance model even in unsupervised settings and more effectively correct writing errors as compared with the model based on round-trip translations. Finally, it is found that the error types corrected by the models based on round-trip and back translations differ from those corrected by our method.
}
\ekeywords{Grammatical Error Correction, Data Augmentation}

\headauthor{古山，高村，岡崎}
\headtitle{多様な規則を活用した文法誤り訂正のデータ拡張に関する分析}

\affilabel{Author_1}{東京工業大学}{Tokyo Institute of Technology}
\affilabel{Author_2}{産業技術総合研究所}{National Institute of Advanced Industrial Science and Technology}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\maketitle


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{はじめに}
\label{sec:intro}

文法誤り訂正は，文書中の様々な種類の誤りを自動的に訂正する自然言語処理の研究課題であり，言語学習者の作文支援への応用が期待されている．
機械翻訳のモデルを用いて，誤りを含む文から正しい文への翻訳を行う手法が効果的であり，
特に，近年ではニューラル機械翻訳で用いられる手法を応用する研究が活発になされている．

機械翻訳の手法を用いるためには，\citeA{mizumoto-etal-2011-mining}のLang-8コーパスなどの大規模な学習データが必要となる．
しかし，\citeA{junczys-dowmunt-etal-2018-approaching}で指摘されているように，
高品質なニューラル機械翻訳モデルを学習するためには，依然，学習データの量は不十分である．
この問題に対処するため，データ拡張によって大規模な学習データを人工的に生成し，そのデータを用いて事前学習を行ったモデルに対し，
文法誤り訂正のデータセットで再学習（ファインチューニング）を行う手法に注目が集まっている \cite{lichtarge-etal-2019-corpora,zhao-etal-2019-improving,grundkiewicz-etal-2019-neural,kiyono-etal-2019-empirical}．

文法誤り訂正のデータ拡張では，単言語コーパスの誤りのない文に誤りを生成し，人工データを作成する．
最も平易なデータ拡張手法は，ランダムな置き換え・挿入・削除の編集操作によって，誤りを生成するものである \cite{zhao-etal-2019-improving}．
このランダムな編集操作は，効果的な事前学習が行えるものの，実際の文書中に出現する誤りを再現するものとはなっていない．
そのため，これを改善するための様々な手法が考案されている．
例えば，編集操作を行う際に，前置詞や冠詞などの特定の文法カテゴリや，綴り・約物などの表記に対して，誤りを生成するルールを活用することで，人工データの質を改善する手法が提案されている \cite{choe-etal-2019-neural,takahashi-etal-2020-grammatical,flachs-etal-2019-noisy,grundkiewicz-etal-2019-neural}．
また，機械翻訳モデルを活用して折り返し翻訳を行う手法や \cite{lichtarge-etal-2019-corpora}，
逆翻訳を応用した誤り生成 \cite{kiyono-etal-2019-empirical,wan-etal-2020-improving}などが提案されている．

さらに，データ拡張を行う際に，何が性能向上に寄与するかという点に関して，活発に研究が行われている．
本研究では，その中の，特に以下に示す3つの要素に着目し，その妥当性を検証する．
本論文では，これらをデータ拡張に重要とされる3つの仮定と呼ぶ．
\begin{itemize}
 \setlength{\itemindent}{3em}
 \item[仮定(1)] 生成される誤りの種類の多様さが，訂正性能に寄与する．
 \item[仮定(2)] 特定の種類の誤りが生成されることが，その種類の誤り訂正性能に寄与する．
 \item[仮定(3)] データ拡張に用いるデータの規模が，訂正性能に寄与する．
\end{itemize}
以下に，文法誤り訂正のデータ拡張の研究において，これらの仮定の妥当性を検証する背景と，その意義・貢献について説明する．

仮定(1) 「生成される誤りの種類の多様さが，訂正性能に寄与する」について説明する．
生成される誤りの多様さが重要であるということがデータ拡張を行う際に重要であることは，以前から着目されており，
誤り生成モデルに対して，ノイズを加える手法や，複数の候補を用いることで性能の向上が確認されている \cite{ge-etal-2018-fluency,xie-etal-2018-noising}．
さらに，誤り種類を分類した誤りタグを用いて，誤り種類ごとに誤り生成を行うことで，高い性能向上が確認されている \cite{wan-etal-2020-improving,stahlberg-kumar-2021-synthetic}．
一方で，これらの手法では，誤り種類の多様さを変化させた検証を行っていない．
そのため，人工データ中の誤り種類が多様であることが，訂正性能に及ぼす影響を評価できていない．
仮定(1)を検証することで，既存の研究で仮定されている，誤り種類に着目し，人工データの誤りの多様さの重要性を再検証し，
データ拡張手法を考案する上で考慮すべき性質が何かを明らかにする．

仮定(2) 「特定の種類の誤りが生成されることが，その種類の誤り訂正性能に寄与する」について説明する．
誤り種類ごとに性能を評価している既存研究は存在しているが \cite{takahashi-etal-2020-grammatical}，
生成される誤り種類を変えた評価は行われていない．
仮定(2)を検証することで，特定の誤り種類が確実に生成されていることの重要性を再検証する．さらに，
様々な種類の誤りに対してデータ拡張を行った場合に，誤り種類ごとに適切に誤りが生成されていることが，重要であることを明らかにする．

仮定(3) 「データ拡張に用いるデータの規模が，訂正性能に寄与する」について説明する．
データ拡張は，数千万文程度の，大規模なコーパスに対して行われる．
データの規模を大きくすると，訂正性能が向上することは既存の報告で確認されている \cite{kiyono-etal-2019-empirical,wan-etal-2020-improving}．
しかし，単にデータ拡張に用いるデータを大きくするだけでは，
事前学習を行ったステップ数や，
同じ単言語文から複数の異なる誤り文を生成した場合の影響の有無など，データの規模以外の要因の影響が評価できない．
仮定(3)を検証することで，既存の研究で仮定されている，大規模データを用いたデータ拡張の有効性を再検証し，
大規模データを用いる際に，実験設定を決定するための根拠を提供できる．

本研究では，これらの仮定の妥当性を検証するため，様々な文法カテゴリにおける誤りを生成するルールを作成し，それらを組み合わせることで誤り生成を行う．
ルールを活用することで，折り返し翻訳や逆翻訳などのモデルベースの誤り生成手法と比較して，生成される誤りの種類を確実に制御することができる．
この手法を用いることで，仮定(1)と仮定(2)に対して，それぞれ次のように検証を行うことができる．
\begin{itemize}
 \item 誤り生成に用いるルールの種類を変えることで，
  データ中の誤り種類を制御することができる．
  そのため，誤り種類の多様さが訂正性能に与える影響を評価することができる．
 \item 誤り生成に用いるルールの種類を変えることで，
  どの種類の誤りが事前学習・再学習を行った後の訂正性能に影響を与えるか評価することができる．
\end{itemize}
さらに，仮定(3)に対しては，事前学習におけるパラメータの更新回数を固定しながら，データ拡張に用いる単言語コーパスの規模を評価し，検証を行うことができる．

加えて，以下の3つの実験を行い，提案手法単体の評価を行う．
\begin{itemize}
 \item 人手で作成されたデータを用いず，ルールを用いて生成されたデータのみを用いて学習を行い，その性能を評価し，学習者データを用いない教師なし設定の手法としての有効性を確認する．
 \item 折り返し翻訳と逆翻訳によるデータ拡張と，既存のベンチマーク上で比較を行い，ルールによる誤り生成の利点と欠点について分析を行い，その利点と限界について明らかにする．
 \item ルールによる誤り生成を大規模に行い，学習に用いることで，既存のベンチマーク上で大規模学習データを用いた他の最先端手法と比較を行い，本手法の利点や限界について明らかにする．
\end{itemize}

本研究の主な貢献は以下の6つである．
\begin{itemize}
 \item 編集操作による単純な誤り生成規則を文法カテゴリごとに多数作成し，組み合わせる手法を考案した．
 \item 人工データ中の誤り種類の多様さが性能向上に寄与することを，誤りカテゴリごとでの比較で検証した．
 \item 特定の種類の誤りが生成されていることが，その種類の誤り訂正性能の向上に寄与することを示した．
 \item データ拡張によって性能向上を得るためには，単言語コーパスの規模ではなく，十分なパラメータ更新回数と誤り生成回数が必要であることを示した．
 \item 提案手法が教師なし設定で，既存の手法と比較して高い性能を示すことを確認した．
 \item 折り返し翻訳や逆翻訳でのデータ拡張と，提案手法との比較により，ルールによる誤り生成の性質について分析を行った．
\end{itemize}

本稿ではまず，
\ref{sec:rw}節で文法誤り訂正のデータ拡張に関する関連研究を紹介する．
\ref{sec:eg}節では，本研究で用いるデータ拡張手法について説明する．
\ref{sec:settings}節では，実験に用いるデータやモデルについて説明する．
\ref{sec:expt}節にて，3つの仮定について検証する実験を行い，議論する．
\ref{sec:comp}節にて，提案手法と既存の手法との比較を行う．
\ref{sec:owari}節にて，本稿のまとめを記す．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{関連研究}
\label{sec:rw}

ニューラル機械翻訳の手法を文法誤り訂正に応用するための学習データとして，
学習者コーパスと呼ばれる，言語学習者の作文に対して注釈を付したデータが広く用いられている．
しかし，学習者コーパスの規模は，高性能なニューラル機械翻訳モデルの学習には，依然，不十分であることが指摘されている \cite{junczys-dowmunt-etal-2018-approaching}．
学習者コーパスを人手で増やすことは容易ではないため，データ拡張によってデータ不足の問題を補おうという研究が活発に行われている．
\citeA{lichtarge-etal-2019-corpora}は，折り返し翻訳とWikipediaの編集履歴を活用して学習データを作成し，
ニューラル機械翻訳モデルに対して大規模データで事前学習を行ったのちに，学習者コーパスで再学習を行うという手法が効果的であることを確かめた．

データ拡張手法として，最も単純なものは，トークンレベルでの編集操作による誤り生成である．
文法誤り検出・訂正の分野では，ニューラル手法が使われるようになる以前から，編集操作による誤り生成が取り組まれている．
ニューラル以前の手法では，特定の品詞に限定した誤り生成が行われていることが多い．
\citeA{izumi-etal-2003-automatic}は，最初に誤り生成が行われた研究であり，置き換え・削除の操作によって冠詞誤りを生成した．
\citeA{brockett-etal-2006-correcting}は，不可算名詞の数に関する誤りを正規表現を用いて生成し，
文法誤り訂正を機械翻訳の問題として捉え，初めて統計的機械翻訳の手法を応用した．
\citeA{lee-seneff-2008-correcting}は，誤り検出への応用のため，動詞を5変化形の間で変化させることで誤りを生成した．
\citeA{rozovskaya-roth-2010-generating,rozovskaya-roth-2010-training}は，学習者コーパスでの誤り傾向を反映し，前置詞誤り・冠詞誤りを生成した．
\citeA{cahill-etal-2013-robust}は，Wikipediaの編集履歴から前置詞誤りを抽出し，その分布に従って誤り生成を行った．

編集操作による誤り生成は，ニューラル手法が用いられるようになっても，活発に研究されている．
\citeA{grundkiewicz-etal-2019-neural}は，スペルチェッカの出力から各単語の誤り候補集合を作成し，それに基づいて単語を置き換えて誤り生成を行った．
この手法は，BEA-2019 Shared Task \cite{bryant-etal-2019-bea}の3部門中2部門で1位の成績を収めた．
\citeA{choe-etal-2019-neural}は，単にランダムな単語の置換を行うだけでなく，
学習者コーパス中の誤りパターンや，前置詞の置き換えや名詞・動詞の語形変化などのルールを用いて誤り生成を行った．
この手法は，同タスク同部門で2位の成績を収めた．
\citeA{flachs-etal-2019-noisy}は，文中のコンマを削除することで，約物の誤りを生成し，ニューラル手法での有効性を検証した．
\citeA{xu-etal-2019-erroneous}は，品詞解析の結果に基づき接辞に関する誤り（arrive$\to$arrivalなど）を生成した．

逆翻訳は，誤りを生成するモデルを用いて，文法的に正しい文から誤り文を生成するデータ拡張手法である \cite{rei-etal-2017-artificial}．
\citeA{xie-etal-2018-noising}は，単に逆翻訳を行うのではなく，逆翻訳のビーム探索においてノイズを加えることで多様な誤り文を生成する手法を提案した．
さらに，\citeA{kiyono-etal-2019-empirical}は，\citeauthor{xie-etal-2018-noising}の手法を大規模データで試し，その有効性を示した．
\citeA{wan-etal-2020-improving}は，誤り生成モデルを用いてデータ拡張を行う際に，隠れ状態にノイズを加える手法を提案した．
\citeA{stahlberg-kumar-2021-synthetic}は，スパン単位の翻訳モデル \cite{stahlberg-kumar-2020-seq2edits}を用い，逆翻訳を行った．
この手法では，誤り種類をモデルに与え，生成する誤り種類の制御を行うことで，多様な誤り文を得ている．

折り返し翻訳は，機械翻訳によって，文法的に正しい文を異なる言語に翻訳し，再び元の言語へ再翻訳する手法である．
\citeA{lichtarge-etal-2019-corpora}は，折り返し翻訳により得られたデータで事前学習を行い，折り返し翻訳の文法誤り訂正での有効性を確かめた．
\citeA{lichtarge-etal-2020-data}は，perplexityに基づくカリキュラム学習を行い，折り返し翻訳により得られるデータの性質を調査した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{手法}
\label{sec:eg}

本節では，まず，
\ref{subsec:cat}節で，本研究で用いる5つの誤りカテゴリについて説明する．
誤りカテゴリは，誤り生成の効果を検証する実験で用いられる．
次に，\ref{subsec:modules}節で誤り生成行うモジュールについて説明し，
続いて，\ref{subsec:generation}節でそのモジュールを組み合わせて誤り生成を行う方法について説明する．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{誤りカテゴリ}
\label{subsec:cat}

本研究では，英文中の誤りを機能語，語形変化，語彙選択，語順，表記の5カテゴリに分類する．
これらの誤りカテゴリを用いることで，人工データ中の誤りの種類を変える効果を容易に比較することが可能になる．

誤りは，トークン単位のものと構文単位のものに分類できる．
語順誤りは，構文単位の誤りに属し，語や句の位置に関する誤りを指す．
例えば，``I \textit{my flight missed} ($\to$missed my flight).''の\textit{missed}の位置の誤りは語順誤りである．

トークン単位の誤りは，語彙に関するものと表記に関するものに分類できる．
表記誤りは，文字による言語の表記方法の規則に関する誤りである．
具体的には，句読法，複合語，正書法，縮約，大小文字などに関する誤りである．
なお，本研究では，綴り誤りも表記誤りの一部としている．
例えば，``I went \textit{tu} ($\to$to) Tokyo\textit{,} ($\to$.)''の\textit{tu}や\textit{,}は表記誤りである．

語彙に関する誤りは，機能語誤りと内容語誤りに分類できる．
機能語誤りは，前置詞や代名詞などの文法的関係を示す語に関する誤用である．
例えば，``I missed mine flight.''の\textit{mine}は機能語誤りである．
内容語誤りは，誤り生成の方法が異なっていることから，さらに，語形変化誤りと語彙選択誤りに分類できる．
語形変化誤りは，形容詞・名詞・動詞の語形に関する誤りである．
例えば，``I \textit{goed} ($\to$ went) to Tokyo.''の\textit{goed}は語形変化誤りである．
語彙選択誤りは，文脈上適切な内容語の選択に関する誤りである．
例えば，``I \textit{lost} ($\to$ missed) my flight.''の\textit{lost}は語彙選択誤りである．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{誤り生成モジュール}
\label{subsec:modules}

人工的な誤り生成をルールで行う場合，品詞などの文法カテゴリや，個別の単語ごとにルールを定める必要がある．
本研究では，文法カテゴリや単語ごとに誤り生成を行う単位を誤り生成モジュールと呼ぶ．
誤り生成モジュールは，188種類作成した．
表\ref{tab:egm}に，誤りカテゴリごとのモジュール数の内訳を記した．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 1
\begin{table}[b]
\input{11table01.tex}
\caption{誤り生成モジュールの内訳}
\label{tab:egm}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

誤り生成モジュールの入力文は予め，SpaCy v2.3\footnote{\url{https://spacy.io/}}を用いてトークン化されている．
また，各単語はSpaCyによって，品詞タグ，係り受けタグ，見出し語，固有表現のIOBタグが付される．
各誤りモジュールは，誤り生成の際に，これらの情報を利用する．

言語的な知識をほとんど伴わない単純な規則として，
ランダムに単語または文字をマスクトークンに置き換える，マスクトークン予測の規則と，
頻度の高い機能語と記号をそれぞれ削除する削除の規則の2つを用意した．
これらを基礎モジュールと呼ぶ．

機能語誤りを生成するモジュールは，
前置詞・接続詞・代名詞・限定詞・疑問詞を対象とし，
置き換える単語の候補など，規則を各単語ごとに定める必要があるため，
各単語ごとに作成される．
そのため，このカテゴリのモジュール数は，他と比べ多くなっている．
これらのモジュールは，各モジュールの持つ条件にしたがって，
削除・置き換え・挿入の編集操作を行うことで，誤り生成を実現する．
例えば，前置詞\textit{than}に関する規則では，$0.2$の確率で\textit{than}を削除し，
それぞれ，$0.4, 0.2, 0.1, 0.1$の確率で，\textit{to}, \textit{from}, \textit{over}, \textit{beyond}に置き換える．
トークンを挿入するモジュールもあり，
例えば，冠詞と指示代名詞を挿入するモジュールでは，
文頭，あるいはある単語間の位置において，左の単語が存在しないか，
あるいは左の単語のPenn Treebank品詞タグが，
\texttt{VB}, \texttt{VBD}, \texttt{VBG}, \texttt{VBN}, \texttt{VBP}, \texttt{VBZ}, \texttt{IN}のいずれかであり，
かつ右の単語のPenn Treebank品詞タグが，
\texttt{NN}, \texttt{NNS}, \texttt{JJ}, \texttt{JJN}, \texttt{JJS}のいずれかである場合に，
\textit{a}, \textit{an}, \textit{the}, \textit{this}, \textit{that}, \textit{these}, \textit{those}を，
それぞれ，
$0.3, 0.3, 0.3, 0.025, 0.025, 0.025, 0.025$の確率でサンプルし挿入する．
置き換え規則の候補となる単語の集合は，辞書から意味の近い単語を収集し作成した．
また，意味が元のものと大きく変わる候補については，サンプルする確率を低くし，調整した．

語形変化誤りを生成するモジュールは，形容詞・名詞・動詞の変化に対して，辞書を利用して異なる語形への置き換えを行う．
語形変化の辞書としては，\texttt{lemminflect}\footnote{\url{https://github.com/bjascob/LemmInflect}}を用いた．
さらに，受動態を導く\textit{be}や不定詞の\textit{to}を削除するモジュールも用意した．

語彙選択誤りを生成するモジュールは，接尾辞を置き換えるものと，類義語に置き換えるものを作成した．
接尾辞誤りのモジュールは，接尾辞の辞書を用意し，それを置き換えた語が辞書中にあれば置き換える操作を行う．
類義語誤りのモジュールは，WordNet \cite{miller1995wordnet}のシソーラスを用い，置き換えを行う．

語順誤りのカテゴリは，その性質に基づき，さらに2つのサブカテゴリに分けることができる．
1つは，語や句が文中で動くことによる誤りである．
もう1つは，句の中で語の並びが変わることによる誤りである．
語順誤りを生成するモジュールのうち，前者の誤りに対するものは，
モジュールごとに正規分布を設定し，語句の移動距離をサンプルする．
語については，副詞と疑問詞の位置を，句については，前置詞句の位置を移動するモジュールを用意した．
また，すべての語に対して小さな位置の移動を行うモジュールも用意した．
後者のものに対しては，句を検出し，その並びを変えることにより誤りを生成する．
形容詞の連接を並び替えるモジュールと，
名詞句\textbf{A}, \textbf{B}に対して``\textbf{A} of \textbf{B}''を``\textbf{B} of \textbf{A}''にするモジュールを用意した．

表記の誤りを生成するモジュールは，誤りの種類ごとに異なる方法で誤り生成を行っている．
句読法の誤りでは，約物の削除・置き換え・挿入の操作を行う．
大小文字の誤りでは，語頭の大小文字を入れ替える．
この操作は，固有表現ではスパン単位で行う．
これは，例えば，`Long Island'の誤り事例として，`long Island'よりも訂正の難度が高い，`long island'の事例を多く生成するためである．
正書法の誤りでは，ランダムに単語間の空白文字を削除，または単語中に空白文字を挿入する．
また，単語中に空白文字を挿入する際は，分割される単語が辞書中に含まれているようにする．
これは，例えば，`football'は，`foo tball'よりも`foot ball'と分割されてほしいためである．
綴り誤りでは，単語に対し，文字の削除・挿入・置き換え・隣り合う字の入れ替えの操作を行う．
操作の回数は幾何分布からサンプルされる．
挿入・置き換えされる文字は，対象となる箇所の前2文字$x_{n-2}, x_{n-1}$と，後ろ2文字$x_{n+1}, x_{n+2}$から，間の文字$x$を予測する確率分布$p(x|x_{n-2},x_{n-1},x_{n+1},x_{n+2})$からサンプルされる．
この分布は，順方向ニューラルネットワークを学習し，推論することで得る．

すべてのモジュールに対する詳しい説明は，付録に記した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{誤り生成の仕組み}
\label{subsec:generation}

本研究では，誤り生成モジュールを組み合わせる手法を考案した．
\pagebreak
図\ref{fig:aeg}は，提案手法の概要を示している．
この手法では，文法的な文を入力として，複数の誤り生成モジュールを順番に適用していき，最終的な誤り文を得ている．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 1
\begin{figure}[t]
\begin{center}
\includegraphics{29-2ia11f1.pdf}
\end{center}
\caption{誤り生成手法の概要}
\label{fig:aeg}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

モジュールを適用する順序は，
後に来るモジュールが，先に来るモジュールが生成した誤りを完全に書き換えないように定める．
例えば，前置詞誤りを生成するモジュールは，綴り誤りを生成するモジュールより先に来る．
これは，
前置詞誤り生成モジュールは，誤り生成の過程で元の語を参照して誤り候補を決めるため，
綴り誤りを先に生成すると，
\mbox{``on $\overset{\text{綴り}}{\rightsquigarrow}$ onn $\overset{\text{前置詞}}{\rightsquigarrow}$ for''}
のようになり，綴り誤りが前置詞誤りによって打ち消されてしまうが，
前置詞誤りを先に生成すれば，
\mbox{``on $\overset{\text{前置詞}}{\rightsquigarrow}$ for $\overset{\text{綴り}}{\rightsquigarrow}$ far''}
とより訂正が困難な誤りが生成できるためである．
より詳細な適用順序は，付録に示した．

各誤り生成モジュールは，モジュールの持つ条件を満たす語や区間に対して適用される．
各モジュールは，各入力文ごとに，誤り生成を行う確率（誤り生成確率）を変化させる．
これは，各誤り文が多様な誤り傾向を持つようにするための工夫である．
提案手法では，誤り生成確率の分布にベータ分布を用い，モジュールごとに分布のパラメータを変えることで，各文法カテゴリの誤りの割合を調整している．
各モジュールが持つベータ分布のパラメータは，人手で定めた．その具体的な値は，付録に示した．
各モジュールは，入力文に対し，まず誤り生成確率をサンプルする．
次に，各単語や区間に対して，モジュールの適用の条件を満たすかを検査する．
適用可能であれば，一様分布から値をサンプルし，その値が誤り生成確率を下回っていれば，誤り生成を行う．

例として，図\ref{fig:aeg}の誤り生成について説明する．
文法的な文``I went to Tokyo.''が入力される．
まず，1番目のモジュールとして，前置詞\textit{to}の誤りを生成するモジュールが入力文に適用される．
入力文に対して，誤り生成確率$0.2$がサンプルされる．
文中の`to'は，このモジュールが適用可能であるため，この単語に対して一様分布から値$0.1$がサンプルされる．
この値が誤り生成確率より小さいため，この`to'に対して誤り生成が行われる．
`to'は，`for'や`in'などへの置き換えか，削除からランダムに選択される．
図の場合は，削除が行われている．
次に，2番目のモジュールとして，代名詞\textit{I}の誤りを生成するモジュールが適用される．
誤り生成確率$0.05$がサンプルされる．
文中の`I'は，このモジュールが適用可能で，一様分布から$0.9$がサンプルされる．
この値は誤り生成確率より大きく，誤り生成は行われない．
この操作を，すべての誤り生成モジュールで繰り返し，最終的な誤り文を得る．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{実験設定}
\label{sec:settings}

本節では，\ref{sec:expt}節と\ref{sec:comp}節の実験に用いるデータセット，モデル，
さらに，事前学習・再学習を行う際の設定について説明する．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{データセット}

データ拡張には，WMT 2020 news task\footnote{\url{http://www.statmt.org/wmt20/translation-task.html}}の単言語コーパスのうち，
News Crawl 2015--2020, Europarl v10, News Commentary v16を用いた．
単言語コーパスは，fastTextの言語判別器\footnote{\url{https://fasttext.cc/docs/en/language-identification.html}}を用い，英語以外の文を取り除き，163,616,582文から成っている．
`16M文'など，単言語コーパスの一部を用いる場合は，これらからサンプルした文を用いている．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 2
\begin{table}[b]
\input{11table02.tex}
\caption{訓練データセットの概要}
\label{tab:train_dataset}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

学習者コーパスは，BEA-2019 Shared Task\footnote{\url{https://www.cl.cam.ac.uk/research/nl/bea2019st/}} \cite{bryant-etal-2019-bea}の訓練データセットを用いる．
このデータセットは，4つのコーパスから成っている．
それぞれ，FCEコーパス \cite{yannakoudakis-etal-2011-new}，
NUCLE \cite{dahlmeier-etal-2013-building}，
Lang-8コーパス \cite{mizumoto-etal-2011-mining,tajiri-etal-2012-tense}，
Write \& Improve \cite{bryant-etal-2019-bea,Granger1998TheCL}である．
それぞれの規模を表\ref{tab:train_dataset}に示す．
Lang-8コーパスでは，誤り文と修正文が同一な文対は，単に訂正が行われていない事例もあるという事情から，予め取り除いた．
また，Lang-8コーパス以外のコーパスは，比較的規模が小さいが品質は高いという事情から，学習時に標本数を3倍にした．
これらの操作を行ったことで，1エポックで学習されるデータは，のべ857,787文対となる\footnote{これらの学習者コーパスに関する設定は，学習者コーパスのみを用いて学習を行う予備実験において最も性能が高くなるものを選択した．}．

評価には4種類のデータセットを用いた．
それぞれ，BEA-2019 Shared Taskの検証/評価データ，
CoNLL-2013 Shared Task \cite{ng-etal-2013-conll}の評価データ（CoNLL14評価データの検証データとして用いる），
CoNLL-2014 Shared Task \cite{ng-etal-2014-conll}の評価データ，
FCEコーパスの検証/評価データ，
JFLEGコーパス \cite{napoles-etal-2017-jfleg}の検証/評価データである．
BEA-19，FCEデータセットの評価にはERRANT \cite{bryant-etal-2017-automatic}，
CoNLL-13/14にはMaxMatch \cite{dahlmeier-ng-2012-better}，
JFLEGにはGLEU \cite{napoles-etal-2015-ground}を用いた．
それぞれの評価尺度，規模を表\ref{tab:eval_dataset}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 3
\begin{table}[t]
\input{11table03.tex}
\caption{評価データセットの概要}
\label{tab:eval_dataset}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

すべてのデータに対して，分解可能文字（\`{a}など）や約物の正規化の前処理を行った．
また，語彙サイズ16,000のBPE-dropout \cite{provilkov-etal-2020-bpe}を各エポックで適用した．
BPE-dropoutのdropout確率は，学習データの誤り文側で0.1，その他（学習データの修正文側，評価データの誤り文・修正文）で0である．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{モデル}

文法誤り訂正のモデルは，
\texttt{fairseq} v0.10.2\footnote{\url{https://github.com/pytorch/fairseq}}で実装されている
Transformer Big モデル \cite{NIPS2017_3f5ee243}を用いた．
Transformer Big モデルは，
16-head の self-attention 層があり，隠れベクトルの次元は 1,024 である．
Feed-forward 層の次元は 4,096 であり，活性化関数には GeLU 関数 \cite{hendrycks2016gelu}を用いた．
さらに，エンコーダの入力，デコーダの入力と出力の単語分散表現のパラメータを共有した \cite{press-wolf-2017-using}．
収束の良さの観点から，post-norm設定ではなくpre-norm設定を用いた．
推論時には，幅 12 のビーム探索を行い，罰則 0.6 の長さ正規化を行った．
実験の際には，シード値を変えて 5 モデルを学習し，各スコアの平均と，アンサンブル生成を行ったときのスコアを報告する．
これらの設定は，既存の研究とパラメータ数やモデル構造の条件を一致させた上で，それ以外の点については，学習者コーパスのみを用いて予備実験を行い，
最も性能が良くなるものを採用した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{事前学習・再学習}

事前学習では，\ref{sec:eg}節の手法で生成したデータを用い，再学習では，学習者データを用いる．
誤り生成は，事前学習のエポック毎に行っている．
このため，事前学習時の訓練データの誤り文側は，エポック毎に異なっている．
再学習は，学習者コーパスを用い，30エポック行う．
事前学習のエポック数は実験設定によって異なるため，その都度明記する．
事前学習を行わず，学習者データのみで訓練する場合，40エポック学習する．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{訓練設定}

損失関数は，$\alpha=0.1$のラベル平滑化を適用した交差エントロピー損失を用い，
最適化には，$(\beta_1, \beta_2)=(0.9, 0.999)$，L2正則化係数が$0.001$のAdamWアルゴリズム \cite{DBLP:conf/iclr/LoshchilovH19}を用いた．
学習率は，事前学習＋再学習の実験では$0.001$，学習者コーパスのみの実験では$0.0015$とし，
最初の8,000ステップの間，線形にwarm-upを行った後に，逆2乗減衰を行った．
訓練事例の最大長は400トークンとした．
Transformerモデルのdropout確率は，注意機構と順伝播層で$0.2$，その他で$0.3$とした．
勾配クリッピングは，事前学習＋再学習の実験では$0.3$，学習者データのみの実験で$1.0$とした．
1ミニバッチの最大トークン数は4,000とし，
事前学習＋再学習の実験では，128ミニバッチ，学習者データのみの実験では，8ミニバッチの勾配を累積する．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{データ拡張における3つの仮定の検証}
\label{sec:expt}

本節では，\ref{sec:intro}節で述べた3つの仮定に関して，それぞれ検証を行う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{(1) 誤り種類の多様さの効果}
\label{subsec:div}

仮定(1)「生成される誤りの種類の多様さが，訂正性能に寄与する」について調査するため，
事前学習に用いるデータの誤り生成に用いる規則のカテゴリを変える実験を行った．
全モジュールを用いたもの，モジュール数0のもの，基礎モジュールのみのもの，基礎モジュール + 1カテゴリ，全モジュール $-$ 1カテゴリで実験を行った．
誤り生成は1,600万文に対して行い，事前学習は10エポック行った．
表\ref{tab:abl}に結果を示した．

誤り生成を行わずに事前学習を行った場合，すなわち，入力から出力へコピーを行うよう学習した場合，
性能は学習者コーパスのみで訓練した場合よりも悪くなっている．
なお，誤り生成を行わない設定では，勾配の発散を防ぐため，勾配クリッピングの値を$0.1$としている．
この結果は，事前学習を行うためには，単言語コーパスに対して何かしらのデータ拡張を行う必要があることを示している．
すべてのモジュールを用いた場合，学習者コーパスのみを用いた結果に対し，
BEA-19, CoNLL-14, FCE, JFLEGの4つの評価データセットにおいて，それぞれアンサンブル生成を行った場合で，
5.86, 5.46, 2.33, 2.54ポイントの大幅な性能向上が確認できた．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 4
\begin{table}[t]
\input{11table04.tex}
\caption{誤り種類の多様さの効果（5モデルの平均 / アンサンブル）．}
\label{tab:abl}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

基礎モジュールのみを用いた場合でも，4.04, 2.88, 1.79, 0.85ポイントと性能向上が見られる．
このことは，トークンの削除とマスクトークン予測という単純な操作が，データ拡張手法として高い有効性があることを示している．
一方で，全モジュールから基礎モジュールのみを取り除いてデータ拡張を行った場合，
全モジュールを用いた場合と性能差が小さいことが確認できる．
このため，基礎モジュールの寄与は，多様な誤り生成を行った場合に打ち消されると言える．

次に，基礎モジュールを加えた上で，さらに1カテゴリのモジュールと4カテゴリ・5カテゴリのモジュールを加えた場合で比較を行い，
生成される誤りの多様さが及ぼす影響について評価を行う．
基礎モジュールに対して，1カテゴリのモジュールを追加することで，
基礎モジュールのみを用いてデータ拡張を行う場合と比較して，全体的に性能の向上が確認できる．
特に，表記誤りが性能向上に大きく影響していることが確認できる．
基礎モジュールと4カテゴリのモジュールを用いる場合，
すなわち，全モジュールから1カテゴリのモジュールを取り除いた場合では，
全モジュールを用いた時と同程度の性能向上が見られる．
表記誤りのモジュールを取り除いた場合，他のカテゴリと比べて性能低下が大きい．
このことから，表記誤りは，他のカテゴリと比べて性能への影響が大きいことが示唆される．
学習者コーパス中の表記誤りの割合は，機能語や内容語の誤りの割合と比較して特段に多いというわけではない \cite{white-rozovskaya-2020-comparative}．
そのため，表記誤りの訂正性能への影響は，このカテゴリ特有の性質によるものと考えられる．
また，全モジュールから語順に関するモジュールを除いた場合の性能が他と比べて高くなっている．
\ref{subsec:rttbt}節における折り返し翻訳や逆翻訳との提案手法の比較でも述べる通り，
本研究で設計したルールによる誤り生成では，語順誤りの訂正性能が低く，良い語順誤りが生成できていない可能性があり，
このことが全体の性能低下の要因となっている可能性がある．

必ずしもすべてのモジュールを用いたときが最も性能が高いというわけではないが，
データ拡張による誤りデータ中の誤り種類が増えることが，一般に文法誤り訂正モデルの訂正性能を向上させること，
すなわち，仮定(1)の妥当さを確認することができた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{(2) 訂正される誤り種類への影響}
\label{subsec:type}

仮定(2)「特定の種類の誤りが生成されることが，その種類の誤り訂正性能に寄与する」について調査するため，
\ref{subsec:div}節でのモデルの出力に対し，ERRANT評価器による誤り種類別自動評価を行った．
ERRANT誤り種類は，BEA-19評価データに出現するものから，
機能語に関するもので出現頻度が高い3種，\texttt{DET}, \texttt{PREP}, \texttt{PRON}，
内容語に関するもので出現頻度が高い3種，\texttt{NOUN:NUM}, \texttt{VERB}, \texttt{VERB:TENSE}，
表記に関するもので出現頻度が高い3種，\texttt{ORTH}, \texttt{PUNCT}, \texttt{SPELL}，
語順誤りの\texttt{WO}の計10種を対象とした．
各誤り種類の名称と，対象とする文法カテゴリ，誤りの例を表\ref{tab:error_types}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 5
\begin{table}[b]
\input{11table05.tex}
\caption{10種の誤り種類の一覧（例はERRANTの元論文 \protect\cite{bryant-etal-2017-automatic}のものである．）}
\label{tab:error_types}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 2
\begin{figure}[p]
\begin{center}
\includegraphics{29-2ia11f2.pdf}
\end{center}
\caption{BEA-19評価データでの，事前学習のみを行ったモデルの誤り種類別性能（5モデルの平均）．}
\label{fig:heat1}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

図\ref{fig:heat1}は，事前学習のみを行ったモデルでの誤り種類別評価である．
数値は$F_{0.5}$値であり，5モデルの平均の結果を示している．
学習者コーパスによる再学習を行っていないため，誤り生成で出現しない種類の誤りは訂正されないと考えられる．
図\ref{fig:heat1}の「誤りなし」の場合では，ほとんどすべての誤り種類で，訂正ができていない．
\texttt{SPELL}で誤り訂正が行えているのは，サブワードを用いている効果と考えられる．
「基礎のみ」の場合では，「誤りなし」と異なり，全体的にある程度の誤り訂正が行えるようになっている．
さらに，機能語の誤り生成を追加した場合では，\texttt{DET}, \texttt{PREP}, \texttt{PRON}の機能語に関する誤り種類で特に性能が向上していることが確認できる．
なお，\texttt{WO}の値が$\text{F}_{0.5}=10$となっているが，これは，``It is combination of a physical power.'' $\to$ ``It is a combination of physical power.''などの訂正事例を
ERRANTが誤って分類しているからと考えられ，語順誤りが訂正できていることを意味しない．
語形変化の誤り生成・語彙選択の誤り生成を追加した場合では，\texttt{NOUN:NUM}, \texttt{VERB:TENSE}の性能向上が大きい．
一方，\texttt{VERB}の訂正性能は変化していない．
語順の誤り生成を追加した場合では，\texttt{WO}のみで性能向上が確認される．
表記誤り生成を追加した場合では，特に\texttt{ORTH}, \texttt{PUNCT}, \texttt{SPELL}の表記誤りで性能向上が確認できる．
また，\texttt{PRON}, \texttt{VERB}でも大きな性能向上が確認でき，\texttt{PREP}, \texttt{NOUN:NUM}においてもその影響を見ることができる．
これは綴り誤りの生成が，間接的に別の種類の誤りを生成したためだと考えられる．
以上のことから，事前学習のみを行ったモデルでは，多くの誤り種類で，仮定(2)が適当であることが確認された．

図\ref{fig:heat2}は，さらに再学習を行ったモデルでの誤り種類別評価である．
「事前学習なし」は，学習者コーパスのみを用いて学習を行った結果である．
「事前学習なし」と「基礎のみ」の場合を比較すると，ほとんどすべての誤り種類で事前学習によって大幅な性能向上が見られていることが分かる．
さらに，データ拡張を行う誤りカテゴリ別に見ると，
「基礎 + 機能語」で\texttt{DET}, \texttt{PREP}, \texttt{PRON}，
「基礎 + 語順」で\texttt{WO}，
「基礎 + 表記」で\texttt{ORTH}, \texttt{PUNCT}, \texttt{SPELL}の値が，
「基礎のみ」や基礎カテゴリに他の1カテゴリを加えた場合と比べて高くなっている．
このことから，これらの誤り種類では，再学習後も仮定(2)が適当であることが分かる．
一方で，「基礎 + 語形変化」「基礎 + 語彙選択」が内容語の誤り訂正に与える効果を明確に確認することはできなかった．
このことから，誤り生成を行うカテゴリが，
学習者コーパスでの再学習後にも訂正性能に影響を与えるかは，
誤りカテゴリごとに異なってくる可能性が示唆される．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 3
\begin{figure}[p]
\begin{center}
\scalebox{0.968}{\includegraphics{29-2ia11f3.pdf}}
\end{center}
\caption{BEA-19評価データでの，再学習まで行ったモデルの誤り種類別性能（5モデルの平均）．}
\label{fig:heat2}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{(3) データの規模の影響}
\label{subsec:size}

仮定(3)「データ拡張に用いるデータの規模が，訂正性能に寄与する」について調査する．
一般に，学習に用いるデータサイズが大きくなれば，性能も向上すると考えられる．
\citeA{kiyono-etal-2019-empirical,wan-etal-2020-improving}は，誤りを生成するモデルを用いたデータ拡張を行い，学習データの増加が性能の向上につながることを示した．
図\ref{fig:size}の青点線は，事前学習のエポック数を10で固定し，提案手法での誤り生成に用いる単言語コーパスのサイズを変えた結果である．
先行研究と同様に，データサイズが性能の向上に寄与するという結果になっている．

しかし，この結果からは，性能向上の主な要因が，
データ拡張に用いる単言語コーパスの規模が大きくなったことなのか，あるいは，
パラメータの更新回数が増えたことなのかがわからない．
どちらが性能向上に重要かを確認するため，単言語コーパスの規模を変えた時，
事前学習全体でのステップ数が同じになるように学習エポックを変えて実験を行った．
具体的には，単言語コーパスの文数と学習エポックの積が1億6,000万となるようにした．
図\ref{fig:size}の赤実線が，その結果である．
単言語コーパスの文数が100万文であっても，ステップ数を揃えれば，性能の低下は非常に小さいことが確認できる．
このことから，単言語コーパスの規模ではなく，ステップ数，言い換えれば，モデルパラメータの更新回数が
性能向上の主な要因であることが分かる．
このことは，仮定(3)が適当なものではないことを意味する．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 4
\begin{figure}[b]
\begin{center}
\includegraphics{29-2ia11f4.pdf}
\end{center}
\hangcaption{単言語コーパスの規模・訓練エポックを変える効果．スコアは5モデルの平均であり，番号はエポック数を表す．}
\label{fig:size}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 5
\begin{figure}[b]
\begin{center}
\includegraphics{29-2ia11f5.pdf}
\end{center}
\caption{毎エポック誤り生成を行う効果．スコアは5モデルの平均であり，番号はエポック数を表す．}
\label{fig:src}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

本研究では，データ拡張はエポック毎に行っている．
そのため，\ref{subsec:size}節の結果は，
十分なステップ数で学習を行ったためだけでなく，
十分な回数の誤り生成を行ったことも影響している可能性がある．
この効果を検証するため，毎エポックでデータ拡張を行う設定と，
1度だけデータ拡張を行い，そのデータを繰り返し用いる設定の比較を行う．
図\ref{fig:src}の赤実線が毎エポックデータ拡張を行った結果であり，
青点線が1度だけ行った結果である．
\ref{subsec:size}節の結果に基づき，学習ステップ数は固定とした．
毎エポックでデータ拡張を行う場合は，より性能が高いだけでなく，
利用する単言語コーパスの規模に性能が大きく影響されないことが確認できる．
一方で，1度だけ行う設定では，単言語コーパスの規模が400万文より少なくなると性能が急に低下し始める．
これは，1度だけデータ拡張を行う場合では，事前学習で学習される誤り文の種類が，単言語コーパスの規模で決まってしまうためだと考えられる．
このことから，誤りデータを毎エポックで生成することは，
より多様な誤り文でモデルを学習でき，単言語コーパスの規模によらない性能向上をもたらすことが分かる．
このことも，先程と同様に，仮定(3)が適当なものではないことを意味している．
一方で，400万文より多い単言語コーパスを用いる場合は，計算リソースの節約のため，1回だけの誤り生成を行うだけでも十分と言うこともできる．
そのため，計算リソースの制約がある場合，利用可能な単言語コーパスの規模によって，誤り生成を1回だけ行うか，毎エポック行うかのどちらが良いか，検討すべきである．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{他手法との比較}
\label{sec:comp}

本節では，本手法と他手法に対する既存のベンチマーク上での比較を行い，本手法の有効性や限界について検証を行う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{学習者データを用いない手法・最先端手法との比較}

本研究で用いた手法と，最先端の手法を比較するため，
より大規模なデータを用い，性能向上のための工夫を追加した実験を行った．
性能向上のための工夫としては，ドメインを限定した追加再学習，マスク言語モデルによるリランキングを行った．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{ドメインを限定した追加再学習}
\citeA{choe-etal-2019-neural}では，さらなる性能向上のため，
拡張データによる事前学習，学習者データによる再学習を行った後に，
再学習に用いるデータセットのうち，テストデータとドメインが近いもののみを用いて追加の再学習を行っている．
本研究では，BEA-2019, FCEコーパスのテストセットに対して，それぞれW\&I train, FCE trainをドメインが近い訓練データとして用いる．
事前学習を行ったモデルに対し，すべての学習者コーパスで5エポックの再学習を行い，ドメインが近い訓練データでの追加再学習は30エポック行う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{マスク言語モデルによるリランキング}
\citeA{chollampatt-etal-2019-cross}では，モデルがビーム探索により生成したn-best候補に対し，
BERT \cite{devlin-etal-2019-bert}が計算する疑似尤度を用いてリランキングを行っている．
疑似尤度の計算方法は，\citeA{salazar-etal-2020-masked}の方法に従い，RoBERTa largeモデル \cite{DBLP:journals/corr/abs-1907-11692}を用いた．

表\ref{tab:result1}に，事前学習のみを行った場合の結果を示す．
事前学習のみを行った場合は，学習者コーパスを用いない教師なし設定とみなすことができる．
さらに，既存の学習者コーパスを用いない教師なし設定の手法より高い性能を示していることが分かる．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 6
\begin{table}[t]
\input{11table06.tex}
\caption{事前学習のみを行った場合の結果．既存研究は学習者コーパスを用いないものである．}
\label{tab:result1}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

表\ref{tab:result2}に，再学習・追加の再学習まで行った場合の結果を示す．
再学習，追加の再学習を行った場合では，
データ拡張に用いている手法・単言語コーパスが既存報告ごとに異なっているため単純な比較はできないが，
既存の最先端手法と同程度の性能を示していることが確認できる．
また，ドメインを限定した追加の再学習やマスク言語モデルによるリランキングが性能の向上に効果的であることも確認できる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{折り返し翻訳・逆翻訳との比較}
\label{subsec:rttbt}

\citeA{lichtarge-etal-2019-corpora}は，折り返し翻訳により得られたデータによる事前学習が文法誤り訂正に効果的であることを示した．
また，\citeA{xie-etal-2018-noising}は，文法誤り訂正の逆翻訳において効果的にノイズを加える方法を示し，
\citeA{kiyono-etal-2019-empirical}は，逆翻訳を大規模なデータで実施し，その有効性を示した．
本節では，提案手法を折り返し翻訳，逆翻訳と比較し，ルールによる誤り生成の利点と欠点について分析する．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 7
\begin{table}[t]
\input{11table07.tex}
\hangcaption{再学習・追加の再学習まで行った場合の提案手法での結果．既存研究は，学習者コーパスを用いたものである．なお，下線はvalidデータで最も性能が高かった値に付している．}
\label{tab:result2}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 8
\begin{table}[t]
\input{11table08.tex}
\caption{折り返し翻訳モデルの BLEU スコア （SacreBLEU \protect\cite{post-2018-call}を用いた）}
\label{tab:bleu}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

折り返し翻訳については，まず，ドイツ語・フィンランド語・フランス語・ラトビア語の機械翻訳モデルをWMTのニュースタスクのデータセットを用いて学習する．
翻訳モデルには，Transformerモデルのbase設定を用いた．
その結果を表\ref{tab:bleu}に示す．
4言語で，1,600万文に対して折り返し翻訳を行い，事前学習のデータとして用い，学習者データで再学習を行った．
さらに，学習データ中の事例が多様になるように，各エポックで4言語でのデータから文ごとにランダムに学習事例をサンプルする実験も行った．
逆翻訳については，ランダムノイズを加える\citeA{xie-etal-2018-noising}の手法を用い，
\citeA{koyama-etal-2021-comparison}で用いられている設定を採用し，Transformerモデルのbase設定の逆翻訳モデルを学習し，
$\beta_{\rm random} = 8$を用いた．

結果を表\ref{tab:comparison}に示した．
提案手法を用いた結果は，折り返し翻訳によるすべての設定よりも高い性能を示していることが確認できる．
一方で，逆翻訳を用いた手法と比較した場合，すべての評価データで性能が劣る結果となった．
提案手法には，ルールによって学習データの誤り種類をコントロールできるという利点があるものの，単に誤り訂正の性能を改善したいのであれば，
逆翻訳による手法は有力な選択肢と言える．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 9
\begin{table}[t]
\input{11table09.tex}
\caption{提案手法・折り返し翻訳・逆翻訳の比較（5モデルの平均 / アンサンブル）}
\label{tab:comparison}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

そこで，各手法間のデータ拡張の効率について議論する．
本研究では，産総研の AI 橋渡しクラウド (ABCI)を利用しており，そこでの費用で比較を行う．
折り返し翻訳・逆翻訳によるデータ拡張ではGPUを用いた翻訳に 毎時0.3ポイントの費用を消費する\texttt{rt\_G.small}ノードを用い，
毎時20万文程度の生成が可能である．
そのため，1,600万文のデータ拡張を行うためには，折り返し翻訳で，約96ポイント（約9,600円），逆翻訳で約24ポイント（約4,800円）が必要となる．
なお，逆翻訳では，誤り生成モデルを学習するため，さらに約3ポイント消費するため，実際には合計約27ポイント（約5,400円）が必要となる．
これに対して，提案手法では，毎時0.6ポイントの費用を消費する\texttt{rt\_C.large}ノードを用いる．
毎時150万文でSpaCyによるタグ付け，毎時1,000万文で誤り生成を行うとすると，
1,600万文・10エポックのデータ拡張を行うためには，約16ポイント（約3,200円）が必要となる．
以上のことから，提案手法は，よりデータ拡張の効率が良い手法であると言える．

\ref{subsec:type}節と同様に，再学習後のモデルで誤り種類別評価も行った．
結果を図\ref{fig:heat3}に示す．
提案手法による結果は，折り返し翻訳のものと比較して，ほとんどの誤り種類で良い結果となっている．
特に，\texttt{ORTH}, \texttt{PUNCT}, \texttt{SPELL}などの表記の誤りや，\texttt{NOUN:NUM}で高い性能を示している．
一方で，\texttt{PREP}, \texttt{WO}では，折り返し翻訳を用いた方が良い結果を示している．
これは，前置詞誤りや語順誤りが，誤りの訂正に広い文脈や深い構文の情報が必要となる種類の誤りであり，
ルールによる単語単位の手法では十分な誤り生成が行えていない可能性を示唆している．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 6
\begin{figure}[p]
\begin{center}
\scalebox{0.968}{\includegraphics{29-2ia11f6.pdf}}
\end{center}
\caption{BEA-19評価データでの，折り返し翻訳と提案手法との誤り種類別性能比較（5モデルの平均）．}
\label{fig:heat3}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

逆翻訳のものと比較した場合，ほとんどの誤り種類で，逆翻訳の方が良い結果となっている．
特に，\texttt{DET}，\texttt{PREP}，\texttt{PRON}などの機能語の誤りに関しては，一貫して逆翻訳が良い結果となっている．
また，\texttt{WO}の語順誤りにおいても，高い性能を示している．
このような誤り種類では，提案手法でのルールによる誤り生成が，十分に行われていない可能性がある．
これは，折り返し翻訳での結果と同様に，文脈などの情報を捉えられていないことが原因だと考えられる．
一方で，\texttt{ORTH}，\texttt{PUNCT}などの表記の誤りでは，ルールによる誤り生成が依然有効であることが分かる．
このような種類の誤りでは，学習者コーパスの分布から誤りの分布を逆翻訳で適切に再現できていない可能性がある．

以上のように，
表記の誤りの中には，ルールによる誤り生成が効率的かつ効果的に生成できる場合がある一方で，
機能語や語順の誤りなどでは，ルールによる手法は劣る結果となっている．
このことから，ルールによる誤り生成・折り返し翻訳・逆翻訳によるデータ拡張の間には，
得意な誤り種類に違いがあることが分かる．
今後，これらの手法を適切に組み合わせ，より良い誤り生成手法を探求していきたいと考えている．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{おわりに}
\label{sec:owari}

本研究では，文法カテゴリごとに誤り生成を行うモジュールを設計し，
その組み合わせによって誤りの種類が制御可能な，文法誤り訂正のためのデータ拡張手法を考案した．
そして，データ拡張における3つの仮定について検証を行った．
データ拡張で用いるモジュールの誤りカテゴリを変え，文法誤り訂正のモデルに事前学習を行い比較を行うことで，
仮定(1)「生成される誤りの種類の多様さが，訂正性能に寄与する」については，
データ拡張によって生成されるデータ中の誤りの多様さが，性能の向上に寄与することを確認した．
また，仮定(2)「特定の種類の誤りが生成されることが，その種類の誤り訂正性能に寄与する」については，
事前学習のみを行った場合は，多くの誤り種類で妥当であり，
再学習を行った場合でも，機能語・語順・表記の誤り種類において妥当であることが明らかになった．
仮定(3)「データ拡張に用いるデータの規模が，訂正性能に寄与する」については，
十分なステップ数に渡ってモデルのパラメータを更新することと，
十分な回数誤り生成を行うことが，訂正性能の向上に寄与する一方で，
データ拡張に用いる単言語コーパスの規模は訂正性能の向上に大きな影響を持たないことが判明した．
提案手法を用いてより大規模なデータを作成し学習し，性能向上の工夫を行えば，既存の最先端手法と同程度に高性能なモデルを学習できることを確認した．
また，事前学習のみを行ったモデルは，既存の学習者コーパスを用いない教師なし設定より高い性能を示した．
ルールによる誤り生成の性質を調査するため，折り返し翻訳・逆翻訳でのデータ拡張との比較を行った．
その結果，手法ごとに得意な誤り種類に差があることがわかった．
また，ルールによる誤り生成は，効率的に実行できることがわかった．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\acknowledgment

本論文の査読にあたり，ご意見・ご指摘をくださった査読者の方々へ感謝いたします．

本論文の内容の一部は，言語処理学会第27回年次大会 \cite{nlp2021-koyama}およびThe 35th Pacific Asia Conference on Language, Information and Computation (PACLIC 35) \cite{koyama-etal-2021-various}で発表したものである．
本研究成果は，「産総研・東工大 実社会ビッグデータ活用 オープンイノベーションラボラトリ」により得られたものである．
また，産総研のAI橋渡しクラウド(ABCI)を利用した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliographystyle{jnlpbbl_1.6}
\bibliography{11refs}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{11appendix.tex}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{biography}

\bioauthor{古山　翔太}{%
2020年東京工業大学情報理工学院情報工学系卒業．
2022年同情報理工学院情報工学系知能情報コース修士課程修了．
同年，博士後期課程に進学．修士（工学）．
}

\bioauthor{高村　大也}{%
2003年奈良先端科学技術大学院大学情報科学研究科博士課程修了．博士（工学）．
2003年から2009年まで東京工業大学精密工学研究所助教．
2010年から2016年まで同准教授．
2017年から2021年まで同教授．
2017年より産業技術総合研究所人工知能研究センター研究チーム長．
}

\bioauthor{岡崎　直観}{%
2007年東京大学大学院情報理工学系研究科博士課程修了．
東京大学大学院情報理工学系研究科・特任研究員，東北大学大学院情報科学研究科准教授を経て，2017年8月より東京工業大学情報理工学院教授．
言語処理学会，人工知能学会，情報処理学会，ACL各会員．
}

\end{biography}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\biodate



\end{document}

