\section{はじめに}
機械学習モデルは，モデルの構造やその最適化手法に加え，実際に学習する事例集合によって性能と挙動が特徴づけられる．それを踏まえ，ある訓練事例が学習後のモデルに与える影響の解析は，これまで広く研究がなされてきた\cite{cook1977detection,koh17understanding,zhang2018trust,hara19dataclean}．事例ごとの影響を正しく把握することで，学習後のモデルの挙動や予測を解釈することに役に立つほか，事例の貢献度を考慮したデータフィルタリングなどの応用にもつながる．特に，自然言語処理などの分野で幅広く使われているディープニューラルネットワークモデルについては，性能の向上が著しい\cite{devlin2019bert}．その一方で，学習後のモデルの挙動や特性を理解することが極めて困難であるブラックボックス性が応用上の課題となっており，データに紐付けて説明を行うアプローチはその解決手段の一つとして有望視されている\cite{koh17understanding,plumb2018example,ouchi2020instance}．この事例ごとの影響値の最も素朴な計算方法は，あるモデルをデータセット全体で訓練し，その後同様の訓練手続きを一事例だけ除いたデータセットの上でも実施することである．このような操作(leave-one-outretraining)で作成した2つのモデルの予測の差を比較することは，除外対象の一事例の影響値を計測することに概ね相当する．しかし，この方法は解析したい事例ごとにモデルを再訓練して保存する必要があり，データセット全体への解析や解釈などを行う際には，非常に長い計算時間とモデルの保存容量を要する．例えば，予測に最も寄与した事例をユーザーに提示することでモデルの解釈性を高めたい場合を考える．このとき，訓練事例数$|D|$に依存した回数の訓練と個数のモデルの保存が予め必要となる．さらに，実際に推論する際にも，事例ごとの$|D|$回分の推論のたびに新たにモデルを読み込む必要があり，BERT\cite{devlin2019bert}のような巨大なモデルの場合，読み込みにも無視できない時間がかかる．この単純なleave-one-outの再訓練を行う他に，影響値を近似的に推定する手法がこれまで提案されてきたが\cite{koh17understanding,hara19dataclean}，計算量の課題や適用可能なモデルの制約などが依然として存在するため，実用性を大きく損なっている．ニューラルネットワークを用いた実験も行われているが，典型的にモデルサイズが非常に小さく\cite{koh17understanding,hara19dataclean}，また，より大きいモデルに適用を試みた実験でも上述の計算量の課題が報告されている\cite{han2020explaining}．そこで，本論文では，訓練事例の影響の計算を巨大なニューラルネットワークモデルにおいても実用的にするため，新たな推定手法\emph{turn-overdropout}を提案する．turn-overdropoutはその名の通りdropout\cite{srivastava14dropout,hinton12dropout}を活用した手法であり，dropoutを事例ごとに決定的なサブネットワークのみを訓練する手法として新たに定式化したものである．訓練終了後には，各事例について，影響を受けていないサブネットワークと受けているサブネットワークの両方で予測が行えるため，その差分から事例ごとの影響を近似的に推定することができる．この推定では，ニューラルネットワークの前向き計算による予測を2回実行するだけであり，\cite{hara19dataclean}と\cite{koh17understanding}の手法に比べて大幅に高速である．また，訓練に関しても，通常通りに一つのデータセット上で訓練を一度行ったモデルを用意するだけで，そこに含まれる全事例に関して推定を行うことができ，再訓練も複数のモデルの保存も必要がない．本論文では，先行研究に対する計算量における優位性を議論するとともに，文書分類タスクと画像物体認識のタスクにおいて推定の有効性を示す実験を行った．提案手法を文書分類と画像物体認識におけるBERT\cite{devlin2019bert}およびVGGNet\cite{simonyan15vgg}に適用し訓練事例への紐付けを行うことで，解釈性の高い形でモデルの予測を解析できることを示した．また，サブネットワークの学習曲線の解析やデータフィルタリングの実験を通して，提案手法が事例間の関係性を適切に捉えていることを定量的に示した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{訓練事例の影響値}
\label{sec:influence_formulation}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{問題設定}まずはじめに，本論文で扱う問題設定と定式化に関して説明する．本論文では，\cite{hara19dataclean}の定義にならい，ある訓練事例を学習に用いた際の，また一方のある事例（典型的にはテストデータセット内の事例）の予測に関する影響値(\emph{influence})について議論する．$z:=(x,y)$をある訓練事例とし，その内の入力を$x\inX$および（正解）出力を$y\inY$とする．また，$D:=\{z_i\}_{i=1}^N$で$N$個の事例集合からなるデータセットを表す．データセット$D$を訓練事例集合として，SGDなどの最適化手法を適用することで，関数$f_D\colonX\toY$を学習する．特に本論文では学習されたパラメータを持つニューラルネットワーク$f_D$について議論する．$L(f,z)$を損失関数とすると，学習の目的は$\hat{f}_D:=\mathrm{argmin}_{f}\mathbb{E}_{z_i\inD}L(f,z_i)$\footnote{なお，典型的には，訓練データセット$D$上で損失関数の最小化を達成するモデルは，その他の未知の事例に対して汎化した性能が出ないため，訓練に用いられないデータセット$D_{\mathrm{dev}}$について$\mathbb{E}_{z_{\mathrm{dev}}\inD_{\mathrm{dev}}}L(f,z_{\mathrm{dev}})$となる最適化を目指すことが多い．}を得ることである．本論文の実験では，特に分類問題の正解ラベルと予測の差に関するクロスエントロピーを損失関数として用いるが，提案手法は一般的な他の損失関数に関しても適用可能である．影響値(\textit{influence})$I(z_{\mathrm{target}},z_i;D)$は，事例$z_{\mathrm{target}}$に関する予測について，訓練事例$z_i$を学習したことの定量的な利得を表す．$f_{D\setminus\{z_i\}}$をデータセット$D$から事例$z_i$を抜いて訓練した場合のモデルとすると\begin{equation}I(z_{\mathrm{target}},z_i;D)=L(f_{D\setminus\{z_i\}},z_{\mathrm{target}})-L(f_{D},z_{\mathrm{target}})\label{eq:influence}.\end{equation}と影響値は表される．直観的には，影響値が正に大きくなるほど，訓練事例$z_{i}$は事例$z_{\mathrm{target}}$の予測に関する損失の減少に大きく貢献していることになる．典型的には，この推定時の参照事例$z_{\mathrm{target}}$は，テストや開発用のデータセットに含まれている事例である．特に，あるテスト事例に対する誤り予測ラベルでの損失に関して，訓練事例ごとに式(\ref{eq:influence})の値を計算し比較することで，その誤りに寄与した訓練事例たちを特定することができ，モデルの解析に有用であるとして研究されてきた\cite{koh17understanding}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{関連手法}式(\ref{eq:influence})の影響値を素朴に計算するためには，事例ごとに新たにモデルの訓練が必要になり，その計算量は非常に大きい．その代替として，これまで幾つかの推定手法が提案されてきた．まず，Koh・Liang\cite{koh17understanding}の推定手法は影響関数(influencefunction)に基づいて提案されたものである．定式化としては強凸な関数のみに適用可能であり，また，解析対象のモデルについても，大域的最適解として損失の最小化が済んだパラメータを仮定している\footnote{%厳密には，Koh・Liang\cite{koh17understanding}が扱っている値は，我々やHaraら\cite{hara19dataclean}が扱う式(\ref{eq:influence})の値とは似て非なるものである．単純に述べると，Koh・Liang\cite{koh17understanding}の定式化では強凸な関数の最適なパラメータに関してのみ$f_{D\setminus\{z_i\}}$と$f_{D}$の差を議論している．一方で，我々とHaraら\cite{hara19dataclean}の定式化では，そのような条件や制約はなく，より広い問題として扱っている．本論文では，Haraら\cite{hara19dataclean}に従い，式(\ref{eq:influence})の定義は$f_D$及び$f_{D\setminus\{z_i\}}$について，同じ初期値から事例$z_i$を除いて同じ最適化手続きを行う限り，モデルの制約を付けない．例えば，確率的勾配降下法(SGD)においては，ミニバッチの順序及び構成についても$z_i$を除き，完全に一致した最適化を行う設定で議論するが，その更新回数などにも制約はない．}．ニューラルネットワークを始めとする多くのモデルはその条件を満たさないが，\cite{koh17understanding}や\cite{han2020explaining}などは，手法に一部修正を施すことで簡易的にニューラルネットワークに適用した場合においても実験的には有用な推定が行えることを議論している．その一方で，実験対象のモデルサイズは非常に小さい\cite{koh17understanding}．モデルサイズが大きい場合の検証はこれまで少ない他，その計算量の大きさについても実用上の観点から依然として大きな課題になっている\cite{han2020explaining}．次に，Haraら\cite{hara19dataclean}は上記のような制約のない推定手法を新たに提案した．しかし，その手法は訓練過程の多くのモデルスナップショットを保存するための大きな保存容量を必要とするほか，推定時にはモデルの更新回数に依存したスナップショットの読み出しと重い計算処理を行う．そのため，同様に，大きなモデルに対して適用することは計算量と保存容量の観点から現状困難である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{関連手法との計算量の比較}\label{sec:comparison_of_comp}これらの既存手法に比べて，本論文での提案手法（\ref{sec:proposed}節で後述）は非常に効率的である．計算量の理論的な比較のため，訓練の時間計算量(Training)，モデルの保存に要するディスク保存容量(Storage)，影響値推定時の時間計算量(Estimation)を表~\ref{tab:computation_order_table}にまとめた．影響値推定の時間計算量は，あるテスト事例1つの予測に関して訓練データセット$D$内の各事例の影響値を推定する状況での計算量を記述した．例えば，あるテスト事例の予測に関して各訓練事例の寄与を解析したいケースはこの状況に相当する．表~\ref{tab:computation_order_table}から明らかなように，提案手法はどの項目においても最も効率的な水準であり，いずれの既存手法よりも総合的に効率的であると言える．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%table1\begin{table}[t]\input{11table01.tex}\hangcaption{%提案手法，\protect\cite{hara19dataclean}，\protect\cite{koh17understanding}ごとに必要な計算量と保存容量の比較．あるテスト事例1つの予測に関して，訓練データセット$D$の全事例の影響値を計算した場合について示した．$|\theta|$はモデルのパラメータ数,$F$は前向き計算あるいは後ろ向き計算の計算量,$F'$は二階微分の後ろ向き計算の計算量,$T$は訓練中の更新回数,$B$は訓練中のミニバッチ内の事例数．\protect\cite{koh17understanding}の$b$は近似計算時のミニバッチ内の事例数,$rt$はハイパーパラメータの一種であり，典型的には$rt\approx|D|$である．詳細は本文を参照．}\label{tab:computation_order_table}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%まず，モデルの訓練にかかる時間については，データごとに新たにモデルを用意する必要があるRe-trainでは大幅にコストがかかる．その他の手法Hara+，Koh+，本提案手法については，訓練にかかる時間は基本的に同じである．次に，保存容量については，除外対象のデータごとに個別のモデルを保存しておく必要があるRe-trainや，訓練中のモデルのスナップショットを頻繁に保存する必要があるHara+ではコストが大きい．そして，推定においては，Re-train及び本提案手法では，ニューラルネットワークの2度の前向き計算（推論）\footnote{また，本提案手法は，\cite{koh17understanding}の手法及び\cite{hara19dataclean}の手法とは異なり，勾配の情報を用いずに，ニューラルネットワークの前向き計算自体を行って推定を行う特徴がある．そのため，微分可能でない（損失）関数についても適用が可能であり，また，損失関数のようなスカラー値の出力以外にも，途中の隠れ層ベクトル等に関する影響値も効率的に推定しすることが可能である．また，前向き計算自体を行うため，式(1)のような（「差」に着目した）影響値のみならず，途中の隠れ層の個々の解析も可能である．これらのケースにおける検証は本論文では含めず，今後の課題とする．}を行うだけで済むのに比べ，Hara+，Koh+では大きな計算量がかかってしまう．さらに，Re-train，Hara+，Koh+では推論時の計算の一部あるいは全部を，1つの対象データごとに別々のミニバッチ（すなわちバッチサイズが1）で計算する必要がある．一方で，提案手法では異なる訓練事例に関する推定を同じミニバッチで一括処理することが可能であり，GPUでの計算の効率性を大きく上げられる利点がある\footnote{%例えば，BERT-baseの前向き計算をバッチサイズ32で計算する場合は，バッチサイズ1で計算する場合に比べて，同じ時間あたりに約5倍の量の事例を処理することができた．計算には，含意関係認識のMulti-GenreNLIdataset\cite{williams2018mnli}のデータセットを使用した．}．実験的には，BERT-baseを用いた含意関係認識タスクで，あるテスト事例1つの予測に関して10,000個の訓練事例の影響値を求めた場合，Koh・Liang\cite{koh17understanding}の手法が約10分かかった\cite{han2020explaining}一方で，提案手法では同条件の10,000訓練事例から1テスト事例への影響値推定に35秒しかかからなかった\footnote{%Hanら\cite{han2020explaining}は，Koh・Liang\cite{koh17understanding}の手法をBERT-baseモデルに適用し，含意関係認識のMulti-GenreNLIdataset\cite{williams2018mnli}において，10,000個の訓練事例からある1事例への影響値の推定を行う場合，NVIDIAGeForceRTX2080TiGPU一つを用いて10分かかったと報告している．我々も同様に，同データセットと同じGPUの製品を用いて実験を行ったところ，提案手法のturn-overdropoutでは，35秒で1事例への推定を終えることができた．なお，どちらの実装も同じライブラリ\cite{hugging2019transformer}から派生したもので，実装による速度の差異は軽微であると考えられる．}．よって，このケースでは，提案手法では先行研究の\cite{koh17understanding}の手法に比べて約17倍高速に処理を終えることができた．このように提案手法の優位性はその非常に高速に処理を終えることができる点であり，訓練事例の影響の推定を実応用に向けて進展させることができたと考えられる．なお，大量の事例に対して同様に推定を行いたい場合では，複数GPUを用いて並列計算を行うことで高速化を行うことができるが，それは表1に示した4つの手法全てで適用可能であり，速度の比自体に大きな変化はない．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{提案手法}
\label{sec:proposed}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Dropout}Dropout\cite{hinton12dropout,srivastava14dropout}は，ニューラルネットワークの訓練において頻繁に使われる正則化手法である．訓練中には，ある層の隠れ状態ベクトルについてその次元数$d$と同じサイズの$d$次元のマスクベクトル$\boldsymbol{m}$をサンプリングし，隠れ状態の値に要素積をとる．マスクベクトル$\boldsymbol{m}\in\{0,\frac{1}{p}\}^d$の各要素$m_j$は，確率$p$のベルヌーイ分布から独立にサンプリングされて係数$\frac{1}{p}$によって定数倍された値である($m_j:=\frac{m'_j}{p},\,m'_j\sim\textrm{Bernoulli}(p)$)．$p$は要素が非ゼロとなる確率を表すハイパーパラメータであるが，本論文では0.5とする．すなわち，約半数の要素がゼロとなる設定を考える．dropoutでは，学習後の推論時にはマスクを使わないモデルで素朴に計算を行う．典型的なdropoutは上記のように隠れ状態に対する要素積として実施されるが，より一般化すると，マスクベクトルによるdropoutはモデルのパラメータへ適用されているものとして解釈できる．例えば，あるパラメータ行列$W$をかける前の隠れ状態にマスクベクトル$\boldsymbol{m}$で要素積をとった場合，隠れ状態内の各次元に対応する$W$の行に一括で積をとっていることに相当する．特に，あるマスクベクトルの要素が$0$であるとき，対応する$W$内のパラメータに$0$がかかるため，モデルの計算においてそのパラメータは全く寄与しなくなる．言い換えると，このようにdropoutをニューラルネットワークの各層で行う場合，あたかもマスクベクトル$\boldsymbol{m}$に応じて枝刈りされたサブネットワーク$f^{\boldsymbol{m}}$を用いた演算を行っているように見なせる．訓練時には，各更新ごとに異なるマスクベクトルが使われるため，様々なサブネットワークがランダムに選ばれ学習していくことになる．これまでの研究\cite{hinton12dropout,srivastava14dropout,bachman2014,baldi2014,bulo16dropoutdistillation}でも，上記のようにdropoutが多数のサブネットワークの訓練をし，推論時の全体ネットワークはそれらのアンサンブルとして演算されていると言われている．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.1\begin{figure}[b]\begin{center}\includegraphics{28-2ia11f1.pdf}\end{center}\hangcaption{%提案手法の概略図．Dropoutは各訓練事例$z$ごとにサブネットワークを生成することができる．そして，その残ったパラメータのみ（赤；上部）を更新する．反対に，反転したサブネットワーク（青；下部）はその事例$z$の影響を受けないままになる．提案手法ではこの二つのサブネットワークの差を推定に用いる．}\label{fig:dropout_fig_more}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{提案手法：Turn-overDropout}上で述べた典型的なdropoutでは，マスクベクトルは訓練中の更新ごとに独立にランダムサンプリングされる．一方，本提案手法では，各訓練事例$z$ごとに異なる\emph{事例固有マスク}$\boldsymbol{m}(z)$を決定的に使い続けるものとする．より正確には，事例固有のマスクは同様にベルヌーイ分布からサンプリングされたランダムな値をとるが，それを事例ごとに固定させ，ある事例を用いた訓練時には必ず決定的に同じ値を使い続けるものとする．そのため，図~\ref{fig:dropout_fig_more}の上部に示すように，ある事例$z$で訓練を行う際には同じ$\boldsymbol{m}(z)$が使われるため，その前向き計算及び後ろ向き計算も常に固有のサブネットワーク$f^{\boldsymbol{m}(z)}$（赤）によってのみ行われることになる．言い換えると，サブネットワーク$f^{\boldsymbol{m}(z)}$のパラメータが更新される一方で，そのマスクを反転，すなわちゼロ・非ゼロ要素の位置を逆転させたようなマスク（以下，\emph{反転マスク}）$\widetilde{\boldsymbol{m}}(z)=\frac{1}{p}-\boldsymbol{m}(z)$（図~\ref{fig:dropout_fig_more}の中央参照）を使った相対するサブネットワーク$f^{\widetilde{\boldsymbol{m}}(z)}$のパラメータは一切$z$の影響を受けて更新されることがないと言える．したがって，このようなサブネットワーク$f^{\widetilde{\boldsymbol{m}}(z)}$は，本来のモデルのネットワーク$f$に比べて表現力が弱まっているものの，まさしく「ある事例$z$を\emph{使わずに}訓練したモデル」となっている．そして，サブネットワーク$f^{\boldsymbol{m}(z)}$は同等の表現力を持つ「ある事例$z$も\emph{使って}訓練したモデル」である．本論文では，この2つのサブネットワークを類推的に式~(\ref{eq:influence})の$f_{D}$と$f_{D\setminus\{z_i\}}$の近似として活用し，その出力を推定に使うことを提案する．すなわち，影響値$I(z_{\mathrm{target}},z_i;D)=L(f_{D\setminus\{z_i\}},z_{\mathrm{target}})-L(f_{D},z_{\mathrm{target}})$を次のように推定する．\begin{equation}\hat{I}(z_{\mathrm{target}},z_i;D):=L(f_{D}^{\widetilde{\boldsymbol{m}}(z_i)},z_{\mathrm{target}})-L(f_{D}^{\boldsymbol{m}(z_i)},z_{\mathrm{target}}),\end{equation}これは$z_{\mathrm{target}}$の予測に関して，$f_{D}^{\widetilde{\boldsymbol{m}}(z_i)}$の代わりに$f_{D}^{\boldsymbol{m}(z_i)}$を使った場合の利得（損失の減少）を表す．本提案手法を，以後\emph{turn-overdropout}と呼ぶ．turn-overdropoutの利点は影響値の推定のために必要なコストが非常に小さいことであり，以下のようにまとめられる．\begin{itemize}\setlength{\itemsep}{2pt}\setlength{\parskip}{0pt}\setlength{\itemindent}{0pt}\item\textbf{計算時間が少ない}:提案手法は，ある事例ペアの影響値推定に関して，モデルの前向き計算を2回行うだけで実行可能である．また，一つのミニバッチ内で別の訓練事例に関する処理をまとめて行うことができる\footnote{dropoutは，ニューラルネットワークの各層の出力結果である隠れ層ベクトルに対して，dropoutのマスクベクトルを要素積で掛け合わせることで実現できるため，ミニバッチ内の各事例について各マスクベクトルをミニバッチとして用意・保持し，そのままバッチ演算を行うことが可能である（付録\ref{sec:appendix_implementation_by_pytorch}参照）．なお，本論文のdropoutとは違い，パラメータ行列自体に行列形式のdropoutマスクをかけるdropconnect\cite{wan13dropconnect}を用いたい場合は，異なるマスクを用いたバッチ演算を行うことができない．}．\item\textbf{モデルの保存容量が少ない}:訓練時に提案手法を組み込んでおくことで，1度の訓練でデータセット中の全事例に関して推定が行える．更新ごとのスナップショットや再訓練は不要である．\item\textbf{実装が簡易}:提案手法の仕組みは極めてシンプルであり，実装の修正が最小限で済む．実装の例を付録\ref{sec:appendix_implementation_by_pytorch}に示した．\end{itemize}本提案手法では，サブネットワークへの1訓練事例の影響を推定し，それを全体のネットワークへと転用して推定している．\cite{hinton12dropout,srivastava14dropout,bachman2014,baldi2014,bulo16dropoutdistillation}が論じたように，ニューラルネットワークの全体のネットワークは各サブネットワークのアンサンブルに相当している．全体のネットワークの性質はパラメータ集合に分散的に学習されているため，そのパラメータの部分集合を用いる各サブネットワークもその全体のネットワークと非常に近い挙動を示す．例えば，一例として，学習後の全体のネットワークを枝刈り\cite{blalock2020pruning}した場合も同様の精度を達成する．また，全体のネットワークの出力（分類層の直前）とdropoutによるサブネットワークを比べたり，サブネットワーク同士の出力を比べてたりしてみても，経験的にはそれらの出力は非常に近い値になる\footnote{%例えば，\ref{sec:experiments}~節の実験で扱った，CIFAR-10\cite{krizhevsky09cifar10}の訓練データセットで学習したVGGNet\cite{simonyan15vgg}において，テストデータセットの画像それぞれについて，全体のネットワークの出力とdropoutによるサブネットワークの出力を比較すると，そのコサイン類似度は平均で0.9897となった．また，異なるサブネットワーク同士でのコサイン類似度も0.9804となった．}．本提案手法では，上記の「異なるサブネットワーク間の挙動は平均的には同じである」及び「サブネットワークと全体ネットワークの挙動は平均的には同じである」というニューラルネットワークの特性を利用している．これは，典型的に性能を保持したまま枝刈りが行えるような，冗長なパラメータを持つネットワークではしばしば成り立つと考えられる．一方で，もし十分なパラメータを持たない小さなモデルや低次元空間で計算を行うような場合では，サブネットワークごとの挙動に違いが生まれやすくなり，提案手法の有効性も下がりやすい．本論文では，そのような小さいネットワークのモデルは扱わず，提案手法の高速という利点が特に役に立つBERTなどの巨大なネットワークでのみ実験を行った．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{効率的な事例固有のマスクの実装}\label{sec:mask_construction}愚直には，事例固有のマスクを用いるということは，データセット内の事例数に比例して新たにパラメータを用意する必要があり，メモリ空間やディスク容量増加の原因になりうる．しかし，このコストは本節で提案する\emph{揮発性マスク生成}によって$O(|D|)$から$O(1)$へと劇的に減らすことができる．まず注目すべき点として，提案手法のturn-overdropoutでは，マスクはランダムなベクトルであればよく，かつ訓練中に更新されることはない．また，一般的なランダム配列生成の実装ではシード値とサイズを与えることで決定的な挙動をし，常に固定のベクトルを生成することができる．例えば，事例ごとのインデックス番号をシード値として与えることで，常にその事例に応じたベクトルを生成することができる．したがって，マスクのベクトルそのものは保存しておく必要がなく，それらベクトルを生成する手続き（生成アルゴリズムとシード値）さえ保持しておいて必要な際に生成を行えばマスクのパラメータが得られることになる．保存や保持のための容量や空間計算量を減らす代わりに，ランダム値の再生成の時間計算量がかかることになるが，一般にランダム値の生成は非常に高速なためほとんど無視することができる\footnote{%本論文の実験では，揮発性マスク生成法によって，事例固有のマスクを利用する場合に保持する必要があるパラメータ数を減らし，容量とメモリの問題を回避できた．しかし，さらに膨大なデータを使う場合などの特有のケースでは，問題の回避のために実装にさらなる工夫が必要となる場合がある．そのようなケースの説明とさらなる解決方法については付録~\ref{sec:hash_composition_appendix}に詳述した．}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{実験}
\label{sec:experiments}本論文の貢献は，式(1)の値を推定するための高速な手法を提案することである．\pagebreakこれにより，先行研究の\cite{koh17understanding}や\cite{hara19dataclean}の手法では膨大な計算コストがかかってしまう，モデルの予測結果ごとの解析を短時間で実行できる．提案手法の計算量についての優位性は，\ref{sec:comparison_of_comp}節で議論した．本節では，提案手法turn-overdropoutを幾つかの分類タスクで学習するニューラルネットワークモデルに適用し，速度面以外のその有効性を示す．まず，\ref{sec:learning_curves}~節では，turn-overdropoutの適用時に，サブネットワークがどのような振る舞いをしているのかをその学習過程を観察することで検証する．そして，\ref{sec:experiment_interpretation}~節では，実際にモデルが誤り予測をした場合についてその原因となった訓練事例を解析し，解釈性の高い予測根拠\cite{jacovi2020faithful}を提示できていることを示す．\ref{sec:experiment_datacleasing}~節では，推定された値が予測に紐付いており信頼性のあることを確認するために，影響値を用いたデータフィルタリングの実験を行い，``悪い''影響をもたらしていると推定された訓練事例を除外した場合にモデルの汎化性能が向上することを示す．最後に，\ref{sec:experiment_side_effect}~節では，dropoutやスパースなネットワークでの訓練がときとしてモデルの性能を悪化させうる問題について議論する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{データセットとモデル}\label{sec:dataset_and_model}まず1つ目のデータセットとして，二値極性分類タスクのStanfordSentimentTreeBank(SST-2)\cite{socher2013sst}を用いた．SST-2では，映画のレビューテキストについてそのテキストが``positive''なのか``negative''なのかの二値ラベルが付与されている．元の訓練データセットからランダム抽出した5,000事例を訓練データセットとして使い，開発データセットとしては元の872事例をそのまま用いた．モデルは，事前訓練済みのBERT\cite{hugging2019transformer}に基づく分類器を，adaptermodules\cite{hugging2019transformer}によって構築した．これはBERTのネットワークの各ブロックについて，新たに枝分かれネットワークを挿入し，元のネットワーク出力に対する残差として和を取るような構造を持つ．元々のBERTのネットワークは事前訓練後のパラメータを固定し，新たに追加される枝分かれネットワークと分類層のみをSST-2でfine-tuningする．また，turn-overdropoutも同様にfine-tuningが行われる箇所のみに適用する．2つ目に，さらに複雑なタスクとして，Yahoo!\AnswersDataset\cite{zhang2015yahoo}をデータセットとして用いた．これは，投稿者の質問のトピックが10種類の分類のうちどれに属するかを予測するタスクであり，単語だけでは判別できないような抽象度の高いトピックへ分類する必要がある．訓練事例数やモデル等の設定は上のSST-2と同様にした．3つ目のデータセットとして，自然言語処理だけでなく画像認識への応用として，犬・飛行機などからなる10クラスの画像分類タスクであるCIFAR-10\cite{krizhevsky09cifar10}の50,000事例の訓練データセットと10,000事例の開発データセットを用いた．畳み込みニューラルネットワークからなるVGGNet19\cite{simonyan15vgg}による分類器を訓練した．turn-overdropoutは，11層目以降に適用した．BERTとVGGNet19の両分類器は共に分類の正解ラベルと予測の差に関するクロスエントロピーの最小化で最適化した．より詳細な設定は付録~\ref{sec:experiment_setting_appendix}に示した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{学習曲線}\label{sec:learning_curves}turn-overdropoutでは，事例固有マスクを適切に切り替えて生まれるサブネットワークが各事例を見ていないサブネットワークとして使えることを前提に置いている．本節では，そのような特性がturn-overdropoutによって本当に獲得されているのかを直接的に検証するために，サブネットワークごとの損失の値について学習曲線を観察する．具体的には，各訓練事例を見ていない反転マスク$\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})$のサブネットワーク$f_{D}^{\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})}$が，その対応する訓練事例$z_{\mathrm{train}}$について過剰適合(overfitting)しないことを確認する．BERTをSST-2で訓練した際の損失関数の変化を図~\ref{fig:sst2_loss_curves}に示した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.2\begin{figure}[b]\begin{center}\includegraphics{28-2ia11f2.pdf}\end{center}\caption{BERTをSST-2で訓練した場合の損失関数の学習曲線．}\label{fig:sst2_loss_curves}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%まずはじめに，2つの点線が示すのはテストデータセットで計算された損失であり，下に行けば行くほど性能は改善しているとみなせる．2つの点線はどちらも訓練が進むにつれて，一定の値まで下がっていった後に概ね停滞し，最後にはわずかに上昇していく．赤い点線が示すのは，各訓練事例の固有マスク$\boldsymbol{m}(z_{\mathrm{train}})$のサブネットワーク$f_{D}^{\boldsymbol{m}(z_{\mathrm{train}})}$を用いた場合の平均で，青い点線はその反転マスク$\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})$のサブネットワーク$f_{D}^{\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})}$を用いた場合の平均である．訓練に使っていないテストデータセットにおける性能は一般に汎化性能を表すことから，事例固有マスクによるサブネットワーク$f_{D}^{\boldsymbol{m}(z_{\mathrm{train}})}$とその反転マスクによるサブネットワーク$f_{D}^{\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})}$の間では未知のデータに対しては大きな性能差はないことが言える．次に，2つの実線が表す訓練データセット上での損失に注目する．赤い実線が示すのは，事例固有マスク$\boldsymbol{m}(z_{\mathrm{train}})$のサブネットワーク$f_{D}^{\boldsymbol{m}(z_{\mathrm{train}})}$で計算した訓練データセット上での損失$L(f_{D}^{\boldsymbol{m}(z_{\mathrm{train}})},z_{\mathrm{train}})$である．すなわち，事例固有のマスクで訓練していく中で計算されて最小化される損失そのものである．この値は下降し続け，通常の訓練でよく見られる最適化の傾向をたどっている．そして，青い実線が示すのは，反転マスク$\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})$のサブネットワーク$f_{D}^{\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})}$を用いて計算した訓練データセット上での損失$L(f_{D}^{\widetilde{\boldsymbol{m}}(z_{\mathrm{train}})},z_{\mathrm{train}})$である．注目すべき特徴として，青い実線では，今述べた赤い実線とは異なり，点線によるテストデータセットでの損失に近い値を取り続けている．すなわち，反転マスクに基づくサブネットワークは，訓練データセット上に過剰適合することなく，対応する訓練データを見なかったかのように振る舞っていることを示唆している．これにより，本実験では，turn-overdropoutが各訓練事例に過剰適合しないサブネットワークを生み出せていることを確認できた．また，この観察は，開発用データセットを別途用意したり交差検定を行わずとも訓練データセットのみから汎化性能を計測することができる応用の可能性も示唆しており，turn-overdropoutのさらなる活用先として今後の研究領域となりうると考えられる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{訓練事例への紐付けによる誤り予測の解釈}\label{sec:experiment_interpretation}ニューラルネットワークによる予測モデルは，挙動の仕組みが人間にとって理解し難いブラックボックス性を持ち，それが信頼性や使い勝手を害しているとしばしば批判されている\cite{ribeiro16trust}．その課題に関しても，訓練事例の影響値の推定を用いれば，ある予測に関して大きな影響を及ぼした訓練事例を特定できることを\cite{koh17understanding}が示した．ある誤り予測に際して影響力のあった訓練事例を探し出すことができれば，それは予測を誤った原因を解釈するのに役に立つ．本節の実験では，本提案手法が，十分に解釈性(plausibility)\cite{jacovi2020faithful}の高い「モデルの誤った予測に最も貢献した訓練事例」を提示できることを示す．モデルを訓練し終えた後に，開発用データセットの全事例について予測を行い，その中から誤った分類を与えていた事例だけを集めた．そして，それらの誤分類事例について，誤ったラベルの損失を低くする方向に最も大きい影響値を持つ訓練事例，すなわち，誤った分類に最も貢献してしまったような事例を特定した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.3\begin{figure}[b]\begin{center}\includegraphics{28-2ia11f3.pdf}\end{center}\hangcaption{%BERTをSST-2で訓練した場合における，テストセットの中で誤った予測がなされたテキストと，その誤ったラベルを持つ訓練事例の中で最も影響値が大きかったテキスト．誤って予測されたラベルを赤，正しいラベルを黒で示した．}\label{fig:sst2_interpretation}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%まず，図~\ref{fig:sst2_interpretation}に，BERTをSST-2で訓練した場合の結果を1つ示した．上に示したテキストは本来``positive''と予測されるべきところ，誤って``negative''と予測した．最も影響を及ぼしたのは，その下に示した事例である．両者の共通点として，一般的な単語単位よりさらに細かくsubword\cite{shuster12wordpiece}として分解されたようなトークンを多く含んでいることが目を引く．特に固有表現(steven，soderbergh，solaris)やその他の低頻度の単語(excruciatingly)は細かく多くのsubwordに分割されやすく，このケースではそのような多くに散逸したsubwordの処理に失敗し，同様に多く%のsubwordを含んでいた訓練事例からの影響で誤ったラベルを予測してしまったと推察できる．さらに複雑なタスクとして，Yahoo!\AnswersDataset\cite{zhang2015yahoo}を用いて同様の実験を行った．図~\ref{fig:yahoo_interpretation}にYahoo!\AnswersDatasetでの結果を示した．誤分類された入力テキストは，``ch\#\#rist''というフレーズを含み，それは影響値の高い訓練事例にも含まれている．このタスクでのトピック分類は``Society\&Culture''や``Business\&Finance''などであり抽象度は高い．そのため，本来であれば``ch\#\#rist''のフレーズだけからはトピックを分類できないような低次の特徴であるが，その箇所に引っ張られて，フレーズを共有している訓練事例の影響から誤って``Business\&Finance''と予測してしまっていると考えられる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.4\begin{figure}[b]\begin{center}\includegraphics{28-2ia11f4.pdf}\end{center}\hangcaption{%BERTをYahoo!\AnswersDatasetで訓練した場合における，テストセットの中で誤った予測がなされたテキストと，その誤ったラベルを持つ訓練事例の中で最も影響値が大きかったテキスト．誤って予測されたラベルを赤，正しいラベルを黒で示した．}\label{fig:yahoo_interpretation}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%次に，VGGNetをCIFAR-10で訓練した場合の結果について，図~\ref{fig:cifar10_interpretation}に示した．画像ではテキストよりもさらに直感的に解釈できる結果となった．例えば，左端の2列では，上の``bird''の画像をモデルは``airplane''として誤って予測した．その誤り予測に最も影響した訓練事例は，対応列の下側に示してある．どちらについても鳥の向きや羽の広げ方が飛行機の状態に類似しており，ほとんどシルエットしか見えないテスト事例については，誤って予測してしまうことにも納得が行く結果となった．右側の残る3事例ペアについても``bird''$\rightarrow$``dog''，``dog''$\rightarrow$``deer''，``deer''$\rightarrow$``bird''のような誤り予測について，誤り原因と考えられる学習特徴（形やレイアウトや色など）が推察できるような訓練事例を見つける事ができている．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.5\begin{figure}[t]\begin{center}\includegraphics{28-2ia11f5.pdf}\end{center}\hangcaption{VGGNetをCIFAR-10で訓練した場合における，テストセットの中で誤った予測がなされた画像（上の行）と，その誤ったラベルを持つ訓練事例の中で最も影響値が大きかった画像（下の行）．誤って予測されたラベルを赤，正しいラベルを黒で示した．}\label{fig:cifar10_interpretation}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{データフィルタリング}\label{sec:experiment_datacleasing}影響値（式(\ref{eq:influence})）は，前節の代表的な応用の他に，データフィルタリングにも応用できることがこれまで示されている\cite{koh17understanding,hara19dataclean}．本節では，提案手法による影響値の計算結果の妥当性・信頼性(faithfulness)\cite{jacovi2020faithful}を，データフィルタリングの実験を通して検証する\footnote{本節の実験は，提案手法による影響値の妥当性に関する一つの検証実験であり，データフィルタリングのタスクにおいて提案手法が（影響値推定以外も含めた）他の手法に比べて有用であると主張するためのものではないが，参考のためにデータフィルタリングに必要となる計算量について，先行研究の\cite{koh17understanding}の手法との比較を付録~\ref{sec:datafiltering_time}に記載した．}．開発用データセット全事例に対する平均損失に関して，訓練事例ごとに式(\ref{eq:influence})の値を計算し比較することで，どの訓練事例が汎化を妨げてしまうのか予想することができる．前節の誤り予測の解釈で論じたように，訓練データセットの中では，他の事例への予測に害をなす事例も存在する．例えば，ある訓練事例がテスト時の様々な未知事例に対して平均的に誤分類を誘発するとき，その訓練事例は汎化性能を損なう事例だといえる．本実験では，そのような訓練事例を特定し除外（フィルタリング）したのちに，モデルをフィルタリング後のデータセットで訓練し直すことで，汎化性能を向上させることができることを示す．一方で，「汎化性能を損なう事例」がそもそも訓練データセットに含まれていなければフィルタリングで性能が上がることはない．今回は，訓練データセットの中に「汎化性能を損なう事例」が十分含まれていることが担保されているような応用上のケースとして，訓練時とテスト時でデータのドメインが変わるドメインシフトの設定で実験を行う．訓練データセットとして映画レビューであるSST-2を用いて，一方で最終的な性能評価のテストデータとしては電化製品レビューであるMulti-DomainSentimentDataset\cite{blitzer-etal-2007-biographies}のelectronicsサブセット(Elec)を用いた．Elecデータセットは200事例を開発用データ，1,800事例をテスト用データとしてランダムに分割した．なお，性能を最大化したい場合には最後の訓練時に開発用データも混ぜて訓練するなどが考えられるが，今回はデータフィルタリングの効果のみを検証するために，Elecのデータセットは訓練データセットには一切含めずに性能を比較した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%table2\begin{table}[b]\input{11table02.tex}\hangcaption{データフィルタリングによる性能の変化．Lossはクロスエントロピーの値．4回の実験の平均と標準偏差を示した．}\label{tab:data_cleansing_table}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%まず初めにSST-2データセットでBERTをturn-overdropoutを用いたfine-tuningで訓練し，その後に各訓練事例からElecの開発用データに対する平均的な影響値を計算した．そして，その平均影響値が最も悪い（負に大きい）訓練事例を上位1\%取り除いたような，フィルタリング済みの訓練データセットを抽出し，再度BERTをturn-overdropoutなしで訓練した．そして，Elecのテストデータで性能を計測し，結果を表~\ref{tab:data_cleansing_table}に示した(1\%Filtering)．比較対象として，ランダムに同量の1\%だけデータを取り除いた場合(1\%RandomFiltering)とデータを取り除かずに訓練した場合(NoFiltering)の性能も並べて示した．turn-overdropoutはデータフィルタリングの段階でのみ用いており，表で比較されている数値はすべてturn-overdropoutなしで訓練されたBERTのものである．実験は異なるシード値によって4回行い，それらの結果の平均と標準偏差を載せた．結果，分類精度についてもロスの値についても，データフィルタリングを行った場合に性能が向上することが確認できた．単にランダムにデータを取り除いた場合にはやはり性能が向上することはなく，turn-overdropoutの推定量に基づくフィルタリングのみが効果的であった．この結果により，影響値の推定のターゲットを一事例でなく事例集合に設定して平均的な影響値を見ることで，対象ドメインでの汎化性能への影響を考慮し，データフィルタリングを行えることを示した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Dropoutの適用箇所}\label{sec:experiment_side_effect}提案手法turn-overdropoutは対象となるモデルにdropoutを導入し，訓練後に効率的に訓練事例の影響値を推定できるようにする手法である．dropout自体は様々なニューラルネットワークで用いられており汎化性能の向上にも役立つことが多いが，過剰に適用した場合には，スパースなネットワークの訓練と同様にモデル性能が悪化してしまうことも考えられる\footnote{%$p=0.5$のdropout自体は様々なニューラルネットワークで用いられており，汎化性能の向上にも役立っている．しかし，全結合層や限られた層のみに適用されている場合も多く，BERTやCNNの全ての層に$p=0.5$で適用した場合の影響については未知数である．また，本提案手法で新たに導入された，事例ごとに紐付いた静的なマスクを使った場合についても，性能への影響もこれまで明らかにはなっていない．}．そのような訓練の不安定性については未だ明らかになっていない点も多い\cite{evci2020gradient}．本節では，どのようにdropoutを適用すれば「性能劣化の防止」と「訓練事例の影響値の推定」を両立できるかを最後に議論する．まず，SST-2でBERTをadaptermodule付きで訓練する場合の，性能低下（テストデータにおける分類精度(accuracy)の低下）の可能性について論じる．実験では，事例数が5,000の小さなデータセットで訓練した場合において，ベースラインの性能が90.0\%だったのに対してturn-overdropoutを用いた場合に88.3\%へとわずかに精度が低下した．事例数がもう少し多い20,000事例での実験では，それぞれ90.5\%と90.2\%の精度となり，ほぼ性能劣化が見られなくなった．したがって，効率的なturn-overdropoutが特に有用であるような大規模なデータセットを扱う場合においては性能の劣化が十分に小さくなり，実用性も十分保てる可能性を示唆している．一方で，adaptermoduleを用いずに，元のBERTをそのまま使って全層でturn-overdropoutを用いた場合には，訓練が不安定になり性能も劣化した．これはturn-overdropout特有の新たな問題ではなく，通常の動的なdropoutを$p=0.5$で用いた場合にも同様である．これは事前訓練の段階で扱っているdropoutの非ゼロ要素率$p=0.9$よりもかなり小さな$p=0.5$を使うことで情報の伝播を大きく妨げてしまい，BERTが安定した計算を行えていない可能性がある．adapterなしのfine-tuningでこのような小さい$p$を使えるようにする解決策としては，事前訓練の段階から小さい$p$を予め使っておくことが考えられる．また，事前訓練直後のモデルのパラメータを固定しておき，fine-tuningではそのパラメータからの差分値のみを別途学習し，その差分値パラメータにのみdropoutをかけるようにすると，情報の伝播を大きく途切れさせることなくturn-overdropoutを適用できる可能性がある．これはdropoutの亜種であるmixout\cite{lee2020mixout}にturn-overdropoutを応用したケースとしてみなせる．画像分類のCIFAR-10データセットでCNNベースのVGGNetを全層へのturn-overdropoutで訓練した場合にも，訓練の不安定性や性能劣化が観測されたが，全層に適用する代わりに一部の層のみに適用した場合には訓練が安定するようになった．そこで我々は，各画像固有の影響を強く受ける層にのみ適用することで，訓練の安定性を上げながら推定を行えるようにすることを考えた．\cite{asano2020a}は，CNNの序盤の層は画像群の統計値について限られた情報のみを保持しており，その低次の統計量についてはたった一枚の画像からですら学習可能であることを示している．この知見に基づき，序盤の層は各画像ごとに固有の情報を多く学習することは少ないと仮定し，後半の層（11層以降）のみにturn-overdropoutを適用した．その結果，分類精度は86.2\%となり，ベースラインの92.0\%よりやや悪い程度の訓練を行えるようになった．ここにさらに，正則化としてのランダムなdropoutも合わせて適用することで，91.3\%まで性能が回復し，ベースラインに匹敵する性能を出すことができた．BERTとVGGNetに基づくこれらの検証により，いくつかのケースでは，dropoutを適用しつつ性能を保持するために適用方法を修正・探索する必要性やその対策方法の例が明らかになった．dropoutやスパースなネットワークにおける学習の不安定性\cite{evci2020gradient}については，現状明らかになっていない点も多く，提案手法の枠内に閉じない今後の重要な研究課題である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{結論}
本論文では，旧来の手法が直接的に適用しづらいようなパラメータ数と計算量が膨大なニューラルネットワークを用いる場合についても，非常に小さい実用的な計算コストで訓練事例の影響値を推定する方法を提案した．提案手法では，訓練時にdropoutが従来用いている確率的なマスクベクトルの代わりに訓練事例ごとに紐付いたマスクを決定的に用いる．これにより，訓練後のネットワークは，各事例の影響を受けていないパラメータだけからなるサブネットワークを個別に併せ持つことができ，そのサブネットワークの出力を比較することで影響値を推定できる．また，事例とサブネットワークの紐付け情報を保存しなくてはいけないコストについても，マスクのランダムベクトルそのものでなくそれを生成するためのランダムシードのみを保存することで，劇的に保存容量や空間計算量を抑えられる．実験では，実際に各サブネットワークは過適合していないことを検証し，さらに提案手法が誤り予測の事例ベースの解釈に活用できることを，データフィルタリングによる定量評価も用いて示した．今後のさらなる研究課題としては，提案手法のみならずスパースなネットワークを訓練した際に見られる性能低下現象の解析が考えられる．また，さらなる応用の模索としても，\ref{sec:learning_curves}~節で示唆された汎化性能を訓練データセットのみから計測できる性質に基づいた交差検定の代替としての活用法や，オンラインに高速に影響値を推定できる点を生かして各事例の学習自体を改善する方向性も有望だと考えられる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\acknowledgment本研究の一部は，\pagebreakJST，CREST，JPMJCR20D2(JPMJCR20D2)の助成を受けたものである．また，本研究の一部は，JSPS科研費JP19H04162，人工知能研究振興財団研究助成事業30AI036-8の助成を受けたものである．また，本研究の一部は，JST，ACT-X，JPMJAX200Sの支援を受けたものである．本論文の一部は，FirstWorkshoponSimpleandEfficientNaturalLanguageProcessingで発表したものである\cite{kobayashi2020efficient}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\bibliographystyle{jnlpbbl_1.6}\bibliography{11refs}%%%%\clearpage%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\appendix
\section{実験設定}
\label{sec:experiment_setting_appendix}本節では，\ref{sec:experiments}~節で行った実験についてより詳細に設定を記述する．本論文では，BERTとして参照した場合にはすべて，現在最も広く使われているTransformersライブラリ\cite{hugging2019transformer}に含まれる\textit{bert-base-cased}の事前訓練済みモデルを用いた．タスクごとのfine-tuningのハイパーパラメータは，予備実験を行い，開発用データセットにおける精度を元にして調整した．その他の設定はTransformerslibrary\cite{hugging2019transformer}のデフォルトに則った．最終的に使用した及び探索したハイパーパラメータの範囲（[]）は次の通りである．学習率=5e-5[2e-5,5e-5],バッチサイズ=32,訓練データセット周回数=3[3,6,10]．turn-overdropoutを使う場合には周回数を10とした．3や6の周回数でも同様の精度が出る場合はあったものの，これまでの研究\cite{zhang2020revisiting,mosbach2020stability}で報告されている通り，長めの10とした場合が最も安定した．訓練事例数は文書分類のいずれの実験でも5,000個としたが，図~\ref{fig:sst2_loss_curves}で学習曲線を示す際には，視認しやすくするために，事例数を25,000個へと増やした設定で訓練を行った．Multi-DomainSentimentDataset\cite{blitzer-etal-2007-biographies}は\url{http://www.cs.jhu.edu/~mdredze/datasets/sentiment/}のデータを用いた．そこから`electronics'に含まれるデータのみを抽出し，Stanza\cite{qi2020stanza}を用いてトークンを分割し，既に分割済みであるSST-2とフォーマットを揃えた．Yahoo!\AnswersDataset\cite{zhang2015yahoo}は\url{https://github.com/LC-John/Yahoo-Answers-Topic-Classification-Dataset}のデータを用いた．VGGNet19はmomentumSGD(momentum=0.9，weightdecay=5e-4)を用いて最適化を行った．学習率は，0.1から始め，150周後の時点と225周後の時点でそれぞれ0.1倍にした．データ拡張からは左右反転を除いた．実装は，\url{https://github.com/kuangliu/pytorch-cifar}に基づいた．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{事例固有マスクを用いたDropoutの実装例}
\label{sec:appendix_implementation_by_pytorch}事例固有マスクを用いたdropoutを，Pythonによる深層学習フレームワークPyTorch\cite{adam2019pytorch}によって実装する場合の例を示す．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%list.1\begin{center}\noindent\includegraphics{28-2ia11l1.pdf}\par\vspace{4pt}\smallListing1{\hspace{1em}}PyTorchにおける事例固有マスクを用いたdropout実装の例.\end{center}%%%%\begin{lstlisting}[language=Python,caption=PyTorchにおける事例固有マスクを用いたdropout実装の例.]%%%%\end{lstlisting}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{ハッシュに基づくマスクの合成}
\label{sec:hash_composition_appendix}揮発性マスク生成（\ref{sec:mask_construction}~節）は，モデルの保存容量と推論時のメモリ使用量（空間計算量）を最小にして問題を解決するために役立つ方法である．一方で，実装によっては，その方法を用いたとしても一時的なメモリ使用量の増加が無視できない量になってしまう可能性がある．まず大枠として，ネットワークの前向き計算の中では，ある層においてマスク生成が行われ，処理を行い，その層の処理を終えたらマスクは揮発し，メモリ使用量はゼロになる．あるミニバッチ内の各インスタンスに対するマスク生成は，典型的な効率の良い実装において，次のような数段階の操作に分けて実行される．まず，始めにランダムシードによってデータセット内の全事例についてマスクを生成する．これは，一般的なランダムベクトルの生成においては，一括で生成する方がより効率がいいためである（例えばfor-loopによってミニバッチ内の各事例ごとに生成命令を呼ぶ場合，所要時間は大幅に伸びる）．そして，その一括で生成した巨大なランダムマスクの中から，ミニバッチ内の事例に関する箇所だけをインデキシングなどによって抜き出して，所望のランダムマスクをミニバッチ化したものを得る．このとき，最初の一括生成の段階において一時的に総事例数に依存した大きなメモリ使用量を必要とする．本論文の実験では，その一時的なメモリ使用量でメモリがあふれることはなかったが，モデルサイズやデータサイズに応じて問題が生じる可能性がある．そのような場合の解決策として，\emph{ハッシュに基づくマスクの合成}を活用する方法をここで提案する．端的には，$K\,(\ll|D|)$個のランダムマスクから$k\,(<K)$個選んで組み合わせて作ったようなマスクを各事例ごとに用いるという枠組みである．まず始めに$K$個の$d$次元バイナリベクトルをランダムに$\textrm{Bernoulli}(1-p^{1/k})$からサンプリングして用意し，\emph{codebook}とする．また，ある事例を受け取り，$k$個のインデックス（$1$〜$K$）を出力するようなハッシュ関数を用意する．これらによって，ある事例ごとにcodebookから$k$個のランダムベクトルを決定的に選択できるようになる．そして，それら$k$個のランダムベクトルについて，要素ごとに総乗（あるいはバイナリに関する論理和）を取る．このとき，その結果生成されるバイナリベクトルの各要素が1である確率は$p$であるため，ここにdropoutのスケーリング値である$\frac{1}{p}$をかけることで，結果的に当初欲しかったランダムベクトルと同様の分布に従っているランダムベクトルを構成的にかつ決定的に生成することができる．このアルゴリズムが一時的に要する最大の空間計算量は，サイズ$K\timesd$のcodebookに加えて，ミニバッチ（サイズ$b$）内の各事例について$k$個のベクトルを保持したときのものになり，$O(Kd+kbd)$まで抑えられることになる．実際の実装上は，$kb$個のベクトルは複製されず，codebookへの参照のみで済むことも多く，その場合はさらにcodebookのみのコストである$O(Kd)$まで抑えられる．このcodebookについても揮発性マスク生成の方法を適用することがもちろん可能である．それにより，データサイズは増えた場合においても，事例固有マスクを使うことによる計算量は十分に小さく抑えることができる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{データフィルタリングにかかる計算量}
\label{sec:datafiltering_time}本論文の焦点はデータフィルタリングへの応用性ではないが，先行研究の\cite{koh17understanding}と提案手法それぞれでデータフィルタリングを行う場合の理論計算量と実時間の概算についても参考のために記載する．今回のそれぞれの実験で求めたい値は，(a)テストデータセット内の各事例への予測結果を解釈・解析する場合（式(1)の問題設定）と(b)開発用データセット内の平均損失を用いるデータフィルタリングを行う場合とでは，異なっている．(a)と(b)の各問題設定で，ある訓練事例$z_i\inD$に対して求めたい値は，具体的には次のとおりである（以下，単純化のために開発用データについても$\mathrm{dev}$ではなく$\mathrm{test}$と表記する）．\begin{alphalign}\text{（各$z_{\mathrm{target}}\inD_{\mathrm{test}}$について）}\qquadL(f_{D\setminus\{z_i\}},z_{\mathrm{target}})-L(f_{D},z_{\mathrm{target}})\\%集合記法にして揃える？\frac{1}{|D_{\mathrm{test}}|}\sum_{z_{\mathrm{target}}\inD_{\mathrm{test}}}L(f_{D\setminus\{z_i\}},z_{\mathrm{target}})-L(f_{D},z_{\mathrm{target}})\end{alphalign}(b)の値は(a)の方法から間接的に推定でき，各開発用事例$z_{\mathrm{target}}\inD_{\mathrm{test}}$について(a)を求めたのちに平均を取ることで(b)を求められる．そのため，提案手法では，どちらの場合についても計算量は$O(F|D||D_{\mathrm{test}}|)$となる．一方で，\cite{koh17understanding}の手法では，式(1,a)の各項の値を求めてから差を得るのではなく，損失の勾配情報を用いて直接その差を推定する．その処理は，損失に対するパラメータ勾配を計算する処理Aと，その勾配それぞれを用いて訓練事例全てに対して計算する処理Bに分けられる．したがって，(a)の影響値推定の場合では，損失に対するパラメータ勾配計算のAがテスト事例の数だけ必要になり，処理Bも同様の回数行われる．一方で，(b)のデータフィルタリングでは，開発用データセット全体に対する平均損失に対するパラメータ勾配を1つ求めて，処理Bを一度だけ行えば済むため，開発用データのサイズに対して効率的である．具体的には，計算量オーダーについては，(a)では$O(F|D||D_{\mathrm{test}}|+(F{+}F')|D_{\mathrm{test}}|\underbrace{rt}_{\approx|D|}b)$であり，(b)では$O(F(|D|{+}|D_{\mathrm{test}}|)+(F{+}F')\underbrace{rt}_{\approx|D|}b)$となる．なお，キャッシュを活用することにより(a)の場合でも高速化を行える可能性はあるが，パラメータ勾配のデータサイズが非常に大きいため，ハードウェアや実装の都合上実現は困難だと考えられる．なお，訓練事例ごとにそれのみを抜いて訓練したモデルを用意する方法(Re-train)では，フィルタリングのための推定に$O(F|D||D_{\mathrm{test}}|)$，訓練に$O(\mathrm{epoch数}\timesF|D|^2)$の計算量が必要となる．計算時間の概算としては，例えば，含意関係認識のMulti-GenreNLIdataset\cite{williams2018mnli}のデータセットにおいて開発用事例200個と訓練事例10,000個を使う場合，\cite{koh17understanding}の手法では約12分で終わる\footnote{推定の精度と速度のトレードオフを調整するハイパーパラメータが存在し，それにより速度が大きく変わるため一概には言えないが，今回は\cite{han2020explaining}の実装のデフォルト値を用いた場合について試算した．}一方で，提案手法で上記のナイーブな計算を行う場合には約110分程度かかると考えられる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{訓練事例自身への影響値}
\label{sec:experiment_self_train}訓練による影響値の解析について簡単な実験を行った結果を示す．教師あり学習において，ある事例で訓練した場合にはその事例の入力からは出力を予測できるようになることが期待される．この実験では，ある訓練事例のその事例自身への影響値（自己影響値）を計測し，上で述べた期待に一致することを確認した．BERTをSST-2で訓練した際の，訓練事例5,000個について自己影響値を計測し，図~\ref{fig:histogram_sst2}にヒストグラムとして示した．ほぼ全ての事例について自己影響値が正になっていることから，ある事例での訓練がその事例に対して正の影響を及ぼしているという期待に沿った計算が行えていることがわかる．また，CIFAR-10で訓練したVGGNetでも同様の傾向を示した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.6\begin{figure}[t]\begin{center}\includegraphics{28-2ia11f6.pdf}\end{center}\caption{BERTをSST-2で訓練した場合の，訓練データセットに対する自己影響値のヒストグラム}\label{fig:histogram_sst2}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{biography}\bioauthor{小林颯介}{%2016年東北大学大学院情報科学研究科博士前期課程終了．同年，株式会社PreferredNetworksに入社．2018年東北大学同研究科博士後期課程入学．現在在学中．}\bioauthor{横井祥}{%2020年東北大学大学院情報科学研究科博士課程修了．同年より東北大学大学院情報科学研究科助教．理化学研究所AIPセンター数理統計学チーム客員研究員兼任．}\bioauthor{鈴木潤}{%2001年から2018年まで日本電信電話株式会社コミュニケーション科学基礎研究所研究員（主任研究員／特別研究員）．2005年奈良先端科学技術大学院情報科学研究科博士後期課程修了．現在，東北大学データ駆動科学・AI教育研究センター教授．}\bioauthor{乾健太郎}{%1995年東京工業大学大学院情報理工学研究科博士課程修了．2010年より東北大学大学院情報科学研究科教授．2016年より理化学研究所AIPセンター自然言語理解チームリーダー兼任．}\end{biography}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\biodate\clearpage\clearpage\clearpage\end{document}