\section{はじめに}
\label{sec:intro}近年，深層学習に基づく言語モデルは左右の文脈から単語の穴埋めをしたり\cite{devlin-etal-2019-bert}，テキストからテキストを生成したり\cite{Raffel2020t5}，次に続く単語を予測したり\cite{BrownGPT3NEURIPS2020_1457c0d6}して訓練することで，多くの自然言語処理タスクにおいて高性能を出せるような汎用的な表現を得ることができる．また，このようなモデルを元にファインチューニングを行うことで，数量推論のような複雑な処理が必要だと思われる問題においてもある程度高い性能を出せることが知られている\cite{geva-etal-2020-injecting}．数量推論の例を以下に示す．\begin{quote}Q.ジョンは5本ペンを持っていて、そのうち3本をマリーにあげた。ジョンは今ペンを何本持っている？A.2本\end{quote}このような問題に答えるためには，モデル内で「5」や「3」といった数や「あげる」という行為の意味を理解し，$5-3=2$という処理を行う必要がある．「数」は実社会の至る所に存在しているため数を用いて推論することは世界理解や経済的な知的活動のためにも必要不可欠であり，このようなモデルは実用的にも有用である\cite{thawani-etal-2021-representing,chen-etal-2019-numeracy}．では，そもそも言語モデルはどの程度数値計算ができるのだろうか．先ほどの例を以下のように単純化すると，純粋な数値計算能力を問う問題となる．\begin{quote}Q.$5-3=?$A.2\end{quote}複数の先行研究では線形代数や初等数学のような数値計算のタスクを通じて言語モデルが持つ潜在的な能力を測っており\cite{saxton2018analysing,Francois:2021}，現在のモデルによって解ける問題や解けない問題の性質が分かりつつある．言語モデルの数学的な能力を調査することは数量推論時に必要な数値計算能力を調査できるという意味で実用上役立つだけでなく，ニューラルネットワークの記号処理能力を理解するという科学的な興味にも繋がる．一方で，モデルがこのような問題を解く際，その内部で何が行われているかについての研究はほとんど行われていない．しかし，モデルの能力をよりよく理解するためには，入出力の結果だけでなくその内部での処理を分析することも非常に重要だと考えられる．内部処理を明らかにすることはモデルの解釈可能性を向上させ，実用的にはエンジニアやユーザが数量推論モデルをより信頼できるようにすることができる．また，科学的視点からは，ニューラルネットワークの記号処理能力を入出力を分析するだけでは判断できない部分まで詳細に理解することが可能になる．例えば，モデルはヒューリスティックではなく本当に数学的能力を獲得できているのか，すなわち汎化できているのかという議論\cite{Razeghi-etal-2022,patel-etal-2021-nlp}に対して新しい角度から証拠を提示することができる．モデル内部での処理を分析するため，本研究では数式とその\textbf{途中結果}に着目する．我々人間が$54-((258+314)-(143-96))$のような数式を解く時，まず$258+314=572,143-96=47$を計算して，次は$572-47=525$を計算して，というような\textbf{途中結果}を介した複数ステップに及ぶ推論を行っている．途中結果は任意の長さの数式を徐々に簡単化し，最終的な答えを出すための非常に重要な要素である．では，モデルはこのような途中結果を介した推論を行っているのだろうか？これを検証するためには，(a)モデル内部に途中結果が保存されていること(b)保存されているだけでなく，途中結果がモデルに使用されていることを示せば良いと考えられる．これを調べるため，本研究では数式が解けるモデル（これをニューラル数式ソルバーと呼ぶ）中の内部表現と数式の途中結果の相関関係，そして因果関係を分析する手法を提案する．本手法の概要を図~\ref{fig:overview}に示す．まず四則演算を学習したTransformer\cite{NIPS2017_3f5ee243}の内部状態から主成分分析を用いて途中結果と相関の高い，すなわち途中結果を符号化しているような方向を抽出したのち，その部分のアクティベーションを連続的に操作してモデルの予測結果が意図したように変化するかを観察する\footnote{先行研究にならい，本研究における``アクティベーション''は隠れ層のベクトルの要素の値だと定義する．}．これによって，途中結果を符号化している部分がモデルの推論に与える因果的な影響を調査する．その結果，途中結果を符号化しているような方向の中には実際にモデルの推論時にも途中結果としてはたらくものがあることを発見し，モデルが途中結果を介した推論を行っている因果的な証拠を示した．また，相関が高くてもモデルの推論には使用されていない方向も確認されたため，モデルの内部を分析する際に因果的な関係を調査することの重要性を示唆する結果となった．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.1\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f1.pdf}\end{center}\hangcaption{途中結果の追跡(Tracing)と操作(Manipulation)の概要．Tracing（上部）ではPCAを用いて，数式中の途中結果と相関が高いモデル内の方向を追跡する．Manipulation（下部）では，Tracingで追跡された方向に沿ってアクティベーションの操作が行われたモデル（操作済みモデル）のモデル予測の変化を観察する．}\label{fig:overview}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%本論文の貢献は，言語モデルが数学的な問題を途中結果を保存，使用しながら解いていることを明らかにした点である．また，数学的な問題を解く際のモデルの内部処理を詳細に分析できる手法を提案した，ということ自体も貢献である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{関連研究}
\label{sec:realted_work}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\paragraph{言語モデルと数値}言語モデルの数学的能力を調査することは科学的にも実用的にも興味深い研究課題である．科学的な立場から見れば，数学的な問題を通してニューラルネットワークの数値計算や記号処理に対する能力を調査，あるいは向上させることに繋がる．また実用的にも数を用いて推論することは常識を理解するために重要であり，特に科学論文や財務文書をモデル化する際などに有用である\cite{thawani-etal-2021-representing}．そのような背景から，言語モデルの数学的能力を調査，あるいは向上させる研究は一定数存在する．そのためのデータセットとして，Hosseiniら\cite{hosseini-etal-2014-learning}は足し算と引き算が必要となる文章題のデータセットを作成した．また，Duaら\cite{dua-etal-2019-drop}はより複雑な文書読解や常識が必要となるような数量推論のベンチーマークDROPを作成した．最近ではMishraら\cite{Mishra2022Lila}によって多様な数学的能力を統一的に評価できるベンチマークLiLAが提案された．同様に，数学的な問題を言語モデルに解かせる手法も複数提案されている．このようなタスクに対し，言語モデルの元々の学習目的を利用し，``$2+3=[MASK]$''から穴埋めを行うようなマスク言語モデルベースの手法\cite{piekos-etal-2021-measuring}や，``$2+3=$''から``$5$''を生成させるような手法\cite{geva-etal-2020-injecting}によって数量推論タスクの性能が向上することが示されている．また，GPT-3\cite{BrownGPT3NEURIPS2020_1457c0d6}のような大規模自己回帰型言語モデルは追加学習をしなくても，簡単な演算はできることが観察されている．さらに，数値計算に特化させたTransformerは初等数学や線形代数といったより複雑な記号推論の問題をある程度解けることも示されている\cite{saxton2018analysing,Francois:2021}．彼らの知見に基づき本研究では，モデルに解ける問題として四則演算を取り上げる．多くの先行研究ではどのような数学的問題が解けるかという点に注目しているが，モデルの振る舞いについて注目している研究も存在する．Razeghiら\cite{Razeghi-etal-2022}はGPT-3の数量推論における精度が事前学習時に含まれる項の頻度と相関があることを示した．また，Patelら\cite{patel-etal-2021-nlp}は数量推論モデルのアテンションを定量的に観察し，モデルが浅いヒューリスティックに依存している可能性を示唆した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\paragraph{モデル内部の分析}モデルの内部表現にどのような情報が符号化されているかについては，近年高い関心が集まっている．このような研究の多くはプロービングの文脈で行われているが\cite{jawahar-etal-2019-bert,raganato-tiedemann-2018-analysis,hewitt-manning-2019-structural}，Shibataら\cite{shibata-etal-2020-lstm}は本研究と似た手法で実験を行っている．彼らは形式言語で訓練した言語モデルを分析して，形式言語の深さと高い相関を持つアクティベーションの存在を示した．Liuら\cite{liu2022towards}らは汎化したモデルの内部はタスクの構造を反映している表現となっていることを理論的に示し，単純な足し算や剰余演算のトイデータセット上で実験的にも示した．一方で，例えプロービング等の手法である情報がモデル内部で符号化されていると示せても，その情報がモデルの推論時に使われていること，すなわち因果関係までは示せない\cite{lovering2021predicting}．因果関係を示すには，モデルの内部表現に対して因果的介入を行う必要がある．内部表現に対する介入としては単語ベクトルの上位主成分を削除する\cite{mu2018allbutthetop}，分類器を用いて特定の方向を繰り返し削除する\cite{ravfogel-etal-2020-null}などがある．Elzarら\cite{elazar-etal-2021-amnesic}はINLP\cite{ravfogel-etal-2020-null}という手法を用いてプロービングによって抽出できる言語的特徴は必ずしもモデルの推論には使われていないことを明らかにし，内部表現への因果的介入を行う重要性を示した．本研究ではモデルの隠れ層を分析対象として，途中結果の情報を符号化している部分を抽出し，アクティベーションを\textbf{連続的に}変化させることで抽出された情報がモデルの推論に使用されているかについて粒度の細かい因果的介入を行う．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{手法}
\label{sec:method}本節では図~\ref{fig:overview}に示した本研究の提案手法について記述する．まず，$+$と$-$，そして()を含む様々な複雑度の四則演算のデータを自動的に生成し，図~\ref{fig:pre_training}に示すようにTransformerを訓練する\footnote{本研究ではできる限り単純な設定かつ途中結果の保存が求められるようなデータとして，加減算のみからなる数式を学習・分析対象とする．}．次に，下記に示す2つの方法でモデルの内部状態と数式の途中結果の関係を調査する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.2\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f2.pdf}\end{center}\hangcaption{数式によるモデルの学習のイメージ．数式はトークン化され，数式の答えを回帰する（実際の出力は0から1の間に正規化される）．}\label{fig:pre_training}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{途中結果の追跡(Tracing)}数式（入力）を変化させると，出力と同時に隠れ層の表現も変化する．では，この表現は数式中の途中結果とどのような関係があるのだろうか．\ref{sec:intro}節で述べたように，人間は途中結果を介した推論を行うことで複雑な数式も解くことができる．すなわち，途中結果とは数式を解く上で非常に重要な要素だと考えることができる．ここで汎化したモデルの表現空間はタスクの特徴を捉えたような構造になる\cite{liu2022towards}ことを考慮すると，モデルが四則演算に対して汎化し，数学的能力を獲得しているのであれば数式中の途中結果は表現空間になんらかの形で符号化されているはずである．本研究では一番単純な符号化の形として，表現空間中の特定の方向と途中結果の関係を調べる．まず，モデルの各層に対してその表現空間中で支配的な方向を見つける．モデルの$l$層目,$j$番目のトークンにおける表現$h^{l}_{j}$を全て横に結合した表現$H^l=h^{l}_{1}\oplush^{l}_{2}\oplus\cdots\oplush^{l}_{n}$に対して主成分分析(PCA)を行うことで，主成分$p^{l}_{k},k\in[1,...,K]$を得ることができる．$n$は入力列の長さを表す\footnote{本研究では$K=10$とした．}．データセット中のあるインスタンス$i$に対してこのPCAモデルを適用すると，各主成分の重み$p^{l}_{i,k}$を得ることができる．次に，数式中の途中結果$R^{j}_{i}$と各主成分$p^{l}_{k}$の重みの相関$\mathbf{corr}(R^{j}_i,p^{l}_{i,k})$を測る．これを各層における全ての途中結果と主成分の直積に対して行うことで，ある途中結果と最も相関の高い主成分である\textbf{最大相関方向}$\hat{p}^l_k(R^{j}):=\mathbf{argmax}_k(\mathbf{corr}(R^{j}_i,p^{l}_{i,k}))$を得る．仮に最大相関方向の相関が十分高ければ，対応する途中結果を符号化していると考えることができる．例えば，図~\ref{fig:overview}のイメージは$a-(b-c)$という数式における途中結果$a$や$b-c$の値がある層のある主成分に符号化されていることを表す．この手法ではある位置で局所的な符号化がなされているかを見ることはできないが，本研究ではまず表現のどこかで途中結果が符号化されているかどうかを確かめることを主眼に置くため，全てのトークンにおける表現$H^l$を使用する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{途中結果の操作(Manipulation)}本節では，Tracingによって得られた最大相関方向がモデルの推論に使用されているのかを検証するため，モデルに対して因果的介入を行う．具体的には図~\ref{fig:overview}下部に示すように，主成分に沿ってモデルのアクティベーションを操作し，それによるモデルの予測結果の変化を観察する．定式化して表すと，$l$層目の表現$H^l$に対して次の式に基づいて主成分$p^l_k$の重みを$r$倍することで，操作後の表現$H^{l^\prime}$を得る．\begin{align}H^{l^\prime}\leftarrowH^l+(r-1)\left({p^{l}_k}^{\top}H^l\right)p^l_k\end{align}直観的には$r$を変化させることで主成分$p^l_k$に沿ってアクティベーション$H^l$が移動し，それに伴ってモデルの予測結果も変化する．もし最大相関方向$\hat{p}^l_{k}(R^j)$が因果的にも途中結果$R^j$を符号化しているのであれば，${p}^l_{k}$の重みを動かすことは数式の途中結果$R^j$を動かすことに対応していると考えられる\footnote{例えば，$a-(b-c)$という数式において$a$の値と非常に相関が高い最大相関方向$p^l_k$が追跡されたとする．ここで，$43-(50-20)$という入力に対して$p^l_k$の操作を行って推論結果が$13$から$19$に変わったとすると，これはモデル中の$a=43$の表現が$49$に変わっためだと仮定することができる．}．すなわち，$R^j_i=f(p^{l}_{i,k})$となるような関数$f$を定義できる．この時，逆関数を取ることで途中結果から主成分の重みを予測する関数$f_p=f^{-1}$を定義することができる．「$\hat{p}^l_{k}(R^j)$が因果的にも途中結果$R^j$を符号化している」という仮説を検証するためには，この$f_p$が正しいかを確かめれば良い．すなわち，実際に入力項を変更した際の最大相関方向$\hat{p}^l_{k}(R^j)$の重みを$p^l_{i,k}=f_a(R^j_i)$のように表せる実測関数$f_a$と$f_p$を比較して確かめる．具体的な操作は\ref{subsec:manipulation_result}節にて説明する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{実験設定}
\label{sec:experiment_setting}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\paragraph{データセット}足し算と引き算，括弧を含む四則演算のデータをテンプレートから自動生成する．数式はAlgorithm~\ref{alg:generate}で表される木構造を模した関数\textit{GENERATE}を再帰的に呼び出すことで生成される．各数式の計算木の深さは最大で5である．学習データと検証データのサイズはそれぞれ19万と1万であり，数式の各項$x$の大きさは$0<x<1000$な整数である．生成された数式データの例を表~\ref{tab:generated_formula}に示す．全データにおける数式の種類は87797種類である．また，内部状態の解析のために，項を$100\lex<1000$と3桁に揃えた5000個の数式を用意した．\ref{subsec:tracing_result},\ref{subsec:manipulation_result}節で使用したデータセットの例を表~\ref{tab:analysis_example}に示す．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%algo.1\begin{algorithm}[b]\caption{数式の生成}\label{alg:generate}\begin{algorithmic}[1]\Function{generate}{$depth$}\Stateleaf\_p$\gets$0.4\StateMaxDepth$\gets$5\If{random()$\leq$leaf\_p\text{or}depth$\geq$MaxDepth}\State$N\gets$random(0,1000)\State\ReturnLeaf(N,1)\EndIf\Statechildren$\gets$[generate(depth+1),generate(depth+1)]\Stateoperator$\gets$random.choice(['+','-'])\State\ReturnNode(operator,children,depth+1)\EndFunction\end{algorithmic}\end{algorithm}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%table1\begin{table}[b]\input{02table01.tex}%\caption{訓練に使用した四則演算データセットの例}\label{tab:generated_formula}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%table2\begin{table}[b]\input{02table02.tex}%\caption{分析用に数式の形，桁数を揃えた四則演算データセットの例}\label{tab:analysis_example}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\paragraph{モデル}本研究ではTransformerモデルとしてPoorMan'sBERT\cite{sajjad2021effect}を使用する．これはBERT\cite{devlin-etal-2019-bert}の6層分を使用したモデルで，[CLS]トークンから線形回帰を行う．このモデルは通常のTransformerよりも層数が少ないため，性能を落とさずに学習時間を短縮することができる．本研究では，答えが数という連続値になる数式を解く最も単純な設定として回帰を採用した．BERTを用いた数量推論で有効であることが示されている先行研究\cite{geva-etal-2020-injecting}に従い，入力中の数字は1桁ごとにトークン化する．例えば，``$123$''という数字は$1,\#\#2,\#\#3$にトークン化される．出力はニューラルネットワークで回帰問題を解く際の一般的な設定にならい，各数式の答え$x_{i}$を正規化した数を用いる．すなわち，教師データとしては実際の答え$x_{i}$ではなく以下の式で正規化された数$x_{i}^{\prime}$が使用される．\begin{align}x_{i}^{\prime}=\frac{x_{i}-\min_i(x_{i})}{\max_i(x_{i})-\min_i(x_{i})}\end{align}また，学習にはミニバッチ学習を採用し，[PAD]トークンを用いて系列長を同一に揃える．モデルの詳しい学習設定は表~\ref{tab:hyper_parameter}に示す．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%table3\begin{table}[t]\input{02table03.tex}%\caption{ハイパーパラメータの一覧}\label{tab:hyper_parameter}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\paragraph{モデルの学習}前述のモデルを上述のデータセットで訓練し，検証セットで回帰を行った結果を図~\ref{fig:regression_result}に示す．図~\ref{fig:regression_result}から，このモデルは高い回帰性能を発揮していることがわかる．つまり，異なるパターンの数式を並列に学習させても正しい答えを出力することができている．次節では，ここで学習したモデルに対して途中結果の追跡，操作を行う．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.3\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f3.pdf}\end{center}\hangcaption{数式で学習したモデルによる回帰結果（モデル予測値は正規化された出力を戻している）．モデルは高い精度で数式を解くことができる．}\label{fig:regression_result}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.4\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f4.pdf}\end{center}\caption{主成分$p^{2}_{3}$の重みと$a-(b-c)$における途中結果$b-c$の値の関係．非常に高い相関が見られる．}\label{fig:pca_example}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{結果}
\label{sec:results}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{途中結果の追跡(Tracing)}\label{subsec:tracing_result}今回は，途中結果を介した複数ステップの推論が必要だと思われる数式の中でできるだけ簡単な$a-(b-c)$,$(a-b)-(c-d)$の2種類を分析の対象とする．本実験において，Tracingを行うトークン数は訓練時と同じく$n=100$とする．まず，$a-(b-c)$という数式での結果を示す．例として$p^{2}_{i,3}$と$b-c$の値の関係を図~\ref{fig:pca_example}に示す．図~\ref{fig:pca_example}から，途中結果の値と非常に高い相関を持つ成分が存在することがわかる．各途中結果と上位10主成分の重みの関係を測定した結果を図~\ref{fig:pca_heatmap}に示す．図~\ref{fig:pca_heatmap}から，中間層において数式中の途中結果と相関が高い最大相関方向が複数存在することがわかる．例えば，1層目の第3主成分の重みと$b$の値の相関係数は0.91，2層目の第3主成分の重みと$b-c$の値の相関係数は0.97である．ここから，数式の途中結果はモデル内部の表現空間における特定の方向に線形的，局所的に符号化されていると考えることができる．一方で図~\ref{fig:pca_heatmap}からは$p^4_1$が最終結果とほぼ1の相関を持っていることがわかり，4層目の時点で数値計算処理が終了していると推察できる．Tracingによって，このような層ごとの役割の違いも推察することができる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.5\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f5.pdf}\end{center}\hangcaption{$a-(b-c)$における層ごとの各主成分重みと数式の途中結果の相関関係のヒートマップ．各セルは第$k$主成分の重み（列）とある途中結果（行）との相関係数の絶対値を表す．}\label{fig:pca_heatmap}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%続いて，$(a-b)-(c-d)$という形の数式で同じ実験を行った結果を図~\ref{fig:pca_heatmap2}に示す．図~\ref{fig:pca_heatmap2}から，この数式においてもその相関が高い最大相関方向が存在することがわかる．例えば，1層目の第4主成分は$b$の値と0.97，2層目の第3主成分は$c-d$の値と0.94の相関が見られる．これらの結果から，複数の形の数式においてモデルの内部表現はその数式の特徴，すなわち途中結果を捉えたような構造になっていることがわかった．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.6\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f6.pdf}\end{center}\hangcaption{$(a-b)-(c-d)$における層ごとの各主成分重みと数式の途中結果の相関関係のヒートマップ．各セルは第$k$主成分の重み（列）とある途中結果（行）との相関係数の絶対値を表す．}\label{fig:pca_heatmap2}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{途中結果の操作(Manipulation)}\label{subsec:manipulation_result}まず，数式$617-(555-602)$とその途中結果$b-c=-47$を例に取り，Manipulationを行う．\ref{subsec:tracing_result}節から，数式$a-(b-c)$において，最大相関方向$\hat{p}^{2}_{3}(b-c)$は0.97という高い相関を持つ．ここで，$p^2_{3}$に沿ってモデルのアクティベーションを操作すると，%%%%モデルの予測結果は図~\ref{fig:manipulate_result_change}に示されるように，モデルの予測結果は図~\ref{fig:manipulation}(1)に示されるように，元の予測結果(664)から約$-1000$～$2000$まで変化することがわかる\footnote{わかりやすさのため，これ以降モデルの予測結果は正規化を戻した値を表記する．}．本研究では，Manipulation後の主成分の重みが5000個の同形データにおける重み$p^l_{i,k}$に対し，$min(p^l_{i,k})\times1.5$から$max(p^l_{i,k})\times1.5$の範囲を超えないように変化量$r$を調整した．この時，予測結果の変化をモデル内の途中結果$b-c$の表現を変えたものによるものだと仮定すると，%%%%図~\ref{fig:manipulate_result_change}の右軸を得ることができ，図~\ref{fig:manipulation}(1)の右軸を得ることができ，軸を反転することで$p^{2}_{i,3}=f_p(b-c)$となるような関数$f_p$が得られる．この予測関数$f_p$を，実際に$b-c$の値を変化させた時の重みを$p^{2}_{i,3}=f_a(b-c)$と表せるような実測関数$f_a$と比較した結果を%%%%図~\ref{fig:compare_predict_and_actual_component}に示す．図~\ref{fig:manipulation}(2)に示す．%%%%図~\ref{fig:compare_predict_and_actual_component}から，図~\ref{fig:manipulation}(2)から，予測関数$f_p$と実測関数$f_a$の傾向は概して一致しており，特に元データの周りでは一致度が高いことがわかる．これは，$\hat{p}^{2}_{3}(b-c)$が$b$の値を一定の範囲では因果的にも符号化している証拠だと考えることができる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.7\begin{figure}[b]\begin{center}\includegraphics{30-4ia2f7.pdf}\end{center}%%%%\label{fig:manipulate_result_change}%%%%\label{fig:compare_predict_and_actual_component}\caption{$\hatp^{2}_{3}(b-c)$に対するManipulationの結果．影の部分はデータセット中に現れない重みの範囲を表す．}\label{fig:manipulation}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.8\begin{figure}[b]\begin{center}\includegraphics{30-4ia2f8.pdf}\end{center}%%%%\label{fig:manipulate_result_change2}%%%%\label{fig:compare_predict_and_actual_component2}\caption{$\hatp^{4}_{2}(b)$に対するManipulationの結果．影の部分はデータセット中に現れない重みの範囲を表す．}\label{fig:manipulation_p4_2}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%一方で，相関は高いが実測関数と一致しないような成分も存在する．例えば，$\hat{p}^{4}_{2}(b)$は$b$と0.86の高い相関を持つが，この方向に対して同じインスタンスでManipulationを行った結果は図~\ref{fig:manipulation_p4_2}のようになる．図~\ref{fig:manipulation_p4_2}からは，$\hat{p}^{4}_{2}(b)$がモデル内で線形かつ局所的に$b$の値として使用されているわけではないことが読み取れる．定量評価として，同じ実験を異なる値を持つ$a-(b-c)$の1000インスタンスで行った時の$|f_p(b-c)-f_a(b-c)|$の中央値を図~\ref{fig:manipulation_quantity}に示す．平均値でなく中央値を採用したのは，誤差が大きい少数のインスタンスに全体としての結果が引っ張られないようにするためである．$f_a,f_p$についてはどちらも最小二乗法による4次近似で点間を補完している\footnote{$f_p$は多価関数になる可能性があるが，その際も同様の近似手法を用いている．}．図~\ref{fig:manipulation_quantity}から，$\hat{p}^{2}_{3}(b-c)$と比べると$\hat{p}^{4}_{2}(b)$は誤差が非常に大きいことがわかる\footnote{$\hat{p}^{2}_{3}(b-c)$の誤差は最大で10程度だが，$\hat{p}^{4}_{2}(b)$では1000以上にもなることが見て取れる．}．ここから，特に元データの近辺では$\hat{p}^{2}_{3}(b-c)$が$b-c$の値を因果的に符号化していること，$\hat{p}^{4}_{2}(b)$は$b$の値と相関は高いがモデルの推論に$b$として使われているわけではないことが定量的にも観察される．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.9\begin{figure}[b]\begin{center}\includegraphics{30-4ia2f9.pdf}\end{center}%%%%\label{fig:manipulation_quantity_l2k3}%%%%\label{fig:manipulation_quantity_l4k2}\hangcaption{1000個の$a-(b-c)$のデータに対して重みの操作を行った際の誤差$|f_p(b-c)-f_a(b-c)|$の中央値．横軸は操作前のインスタンスにおける$b-c$の値からどれほど離れた値で誤差の測定を行ったかを表す．}\label{fig:manipulation_quantity}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.10\begin{figure}[b]\begin{center}\includegraphics{30-4ia2f10.pdf}\end{center}%%%%\label{fig:manipulate_result_changel2k3c-d}%%%%\label{fig:compare_predict_and_actual_componentl2k3c-d}\hangcaption{数式$(a-b)-(c-d)$について，$\hatp^{2}_{3}(c-d)$に対するManipulationの結果．影の部分はデータセット中に現れない重みの範囲を表す．}\label{fig:manipulation_quality4args}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$(a-b)-(c-d)$の数式においても同じくManipulationを行う．$(524-539)-(609-793)$という数式を元データとして，$\hat{p}^{2}_{3}(c-d)$に対してManipulationを行った結果を図~\ref{fig:manipulation_quality4args}に示す．%%%%図~\ref{fig:compare_predict_and_actual_componentl2k3c-d}から，図~\ref{fig:manipulation_quality4args}(2)から，$c-d$が$-250$から$600$の範囲では$f_a(c-d)$と予測関数$f_p(c-d)$は一致度が高く，$p^2_3$が$c-d$の値を因果的に符号化していることがわかる．同じ形を持つ1000個の数式データでManipulationを行った際の誤差中央値を図~\ref{fig:manipulation_quantity_l2k3_c-d}に示す．図~\ref{fig:manipulation_quantity_l2k3_c-d}から複数の数式で定量的に見ても，元データの周りでは特に誤差が少なく，$p^2_3$が$c-d$の値を因果的に符号化していることがわかる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.11\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f11.pdf}\end{center}\hangcaption{1000個の数式$(a-b)-(c-d)$に対して重みの操作を行った際の誤差$|f_p(c-d)-f_a(c-d)|$の中央値．}\label{fig:manipulation_quantity_l2k3_c-d}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{議論}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{エラー分析}Manipulationを行った際の予測関数$f_p$と実測関数$f_a$の誤差にはインスタンスごとにバラつきがある．では誤差が大きいインスタンス（元データ）にはどのような性質があるのだろうか．\ref{subsec:manipulation_result}節の結果と同様に$(a-b)-(c-d)$という数式の$\hatp^{2}_{3}(c-d)$に対してManipulationを行った際，誤差平均値が最も大きかった2インスタンスの結果を図~\ref{fig:manipulation_failure}に示す．図~\ref{fig:manipulation_failure}に示した例における共通点は，どちらも$c-d$の値が0に近いことである．1000インスタンスにおける元データの$c-d$の値とManipulation結果の誤差平均値の関係を図~\ref{fig:intermed_value-error}に示す．図~\ref{fig:intermed_value-error}から途中結果$c-d$の値が0に近いほど誤差が大きい傾向にあることがわかるが，この結果は学習データの分布に起因するものだと推察することができる．モデルの学習において項は0から1000までの整数からランダムで選ばれる．この時，ランダムな2項の引き算$a-b$の値の分布は図~\ref{fig:rand_sub_distribution}のようになる．図~\ref{fig:intermed_value-error}，\ref{fig:rand_sub_distribution}はどちらも0付近で値が大きくなり，類似した形となっていることが見てとれる．ここから，図~\ref{fig:manipulation_failure}に示したような例でManipulationが失敗するのは$c-d$が0付近となるようなインスタンスが学習データ中に多く存在するため，その周りでの内部表現は過学習されたものとなっているためではないかと考えることができる．これは，ニューラル数式ソルバーの性能が学習データ中の頻度に依存するという先行研究\cite{Razeghi-etal-2022}の結果とも関連する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.12\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f12.pdf}\end{center}%%%%\label{fig:compare_predict_and_actual_component312}%%%%\label{fig:compare_predict_and_actual_component116}\caption{Manipulationを行った際，誤差$|f_p(c-d)-f_a(c-d)|$が大きくなる例．}\label{fig:manipulation_failure}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.13\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f13.pdf}\end{center}\caption{$(a-b)-(c-d)$における$c-d$の値とManipulation誤差の関係．}\label{fig:intermed_value-error}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fig.14\begin{figure}[t]\begin{center}\includegraphics{30-4ia2f14.pdf}\end{center}\caption{ランダムな2項の引き算$a-b$の値の分布．}\label{fig:rand_sub_distribution}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{本研究の限界}本研究で用いた手法や設定には複数の制限や限界がある．本研究で用いたデータセットは足し算と引き算，かっこのみから構成されており，この狭いスコープで観察されたことがどこまで一般化できるかについては疑問が残る．より複雑度を上げるためにはかけ算や割り算，剰余などの演算子を導入することが考えられるが，特にかけ算を導入した場合は回帰の設定で訓練を行っていることもあり，答えの分布が疎になってしまうことに留意するべきである．また，本研究では直接数式の答えの大きさを予測する回帰の設定で行っているが，\ref{sec:realted_work}節で述べた数量推論の研究の多くは生成やマスク穴埋めによって答えを出す，シンボルからシンボルへの設定で行われている．この点においても，本研究の結果を一般的な数量推論モデルに適用する際のギャップがあると考えられる．一方で，内部状態さえ取得できれば手法を適用することは可能なため，GenBERT\cite{geva-etal-2020-injecting}のような本研究で使用したデータセットと近い数式でも訓練しているモデルに対して途中結果の追跡や操作を試みることが手段として考えられる．さらに，本研究の手法は前提としてモデルの内部状態を取得できることが必要である．そのため，GPT-3のような入力と出力しか知ることができず，内部状態が公開されていないようなモデルに対してはそもそも途中結果の追跡や操作を行うことができない．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{おわりに}
\label{sec:conclusion}本研究では言語モデルが数値計算を行う時に内部で行っている処理を明らかにするため，数式中の途中結果に着目し追跡と操作を行った．その結果，「数値計算ができるモデル」の内部では途中結果の情報が存在し，かつその情報はモデルの推論時にも使われていることを解明した．本研究の手法はアクティベーションを連続的に変化させることでモデルに対して詳細な因果推論を行うこと自体も貢献である．今後の方向性としては，本研究の知見を他のデータセット，あるいは他の設定でのモデルに適用して同様に数値計算能力を調査し，TracingとManipulationの分析道具としての有用性を示すといったことが考えられる．また，さらに複雑な数式を分析対象とし，符号化される時とされない時の違いを調査するといったことも考えらえる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\acknowledgment本研究はJSTCRESTJPMJCR20D2，JSPS科研費21K17814の助成を受けたものです．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\bibliographystyle{jnlpbbl_1.7}\bibliography{02refs}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{biography}\bioauthor{松本悠太}{%2021年東北大学工学部電気情報物理工学科卒業．2023年同大学院修士課程修了．同年，株式会社リクルートに機械学習エンジニアとして入社．}\bioauthor[:]{BenjaminHeinzerling}{%BenjaminHeinzerlingisapostdoctoralresearcheratRIKENAIPandTohokuUniversityinSendai,Japan.Hisresearchinterestsincludetheanalysisofworldknowledgeinlanguagemodels,linkingtextsandknowledgebases,andmultilingualsubwordmethods.HeholdsaPhDdegreeinComputationalLinguisticsfromHeidelbergUniversity,Germany.}\bioauthor{吉川将司}{%2020年奈良先端科学技術大学院大学先端科学技術研究科情報科学領域博士課程修了．同年，東北大学助教．}\bioauthor{乾健太郎}{%東北大学大学院情報科学研究科教授．1995年東京工業大学大学院情報理工学研究科博士課程修了．同大学助手，九州工業大学助教授，奈良先端科学技術大学院大学助教授を経て，2010年より現職．2016年より理化学研究所AIPセンター自然言語理解チームリーダー兼任．}\end{biography}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\biodate\end{document}