\documentclass[japanese,other]{jnlp_3.7}
\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{algorithm}
%%%%\usepackage{algpseudocode}
%%%%\usepackage{amsmath}
%%%%\usepackage{amssymb}
%%%%\usepackage{amsfonts}
%%%%\usepackage{bm}
%%%%\usepackage{bbm}
%%%%\usepackage{booktabs}
%%%%\usepackage{arydshln}
%%%%\usepackage{multirow}
%%%%% \usepackage[subrefformat=parens]{subcaption}
%%%%\usepackage{tabularx}
\usepackage{xspace}
%%%%\DeclareMathOperator*{\argmax}{argmax}
%%%%\DeclareMathOperator*{\argmin}{argmin}
\newcommand{\knn}{$k$NN}
\newcommand{\knnmt}{$k$NN-MT}
%%%%\newcommand{\pknn}{p_{k\mathrm{NN}}}
%%%%\newcommand{\pmt}{p_\mathrm{MT}}
\newcommand{\knearestneighbor}{$k$-nearest-neighbor\xspace}
%%%%\newcommand{\nnearestneighbor}{$n$-nearest-neighbor\xspace}
%%%%\newcolumntype{C}{>{\centering\arraybackslash}X}
%%%%\newcolumntype{R}{>{\raggedright\arraybackslash}X}
%%%%\newcolumntype{L}{>{\raggedleft\arraybackslash}X}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\Volume{30}
\Number{4}
\Month{December}
\Year{2023}
%%%%\Issuetitle{「　　　　」特集号}

\setcounter{page}{1245}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\jsubject{学会記事}
\jtitle{Subset Retrieval Nearest Neighbor Machine Translation}
\jauthor{出口　祥之\affiref{NAIST}\affiref{NICT}}
\etitle{Subset Retrieval Nearest Neighbor Machine Translation}
\eauthor{Hiroyuki Deguchi\affiref{NAIST}\affiref{NICT}} 

\headauthor{出口}
\headtitle{Subset Retrieval Nearest Neighbor Machine Translation}

\affilabel{NAIST}{奈良先端科学技術大学院大学}{Nara Institute of Science and Technology (NAIST)}
\affilabel{NICT}{情報通信研究機構}{National Institute of Information and Communications Technology (NICT)}



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


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
本稿では，ACL2023に採択された``Subset Retrieval Nearest Neighbor Machine Translation'' \cite{deguchi-etal-2023-subset}（原論文）について，原論文に書ききれなかったような，着想に至った経緯や研究過程，機械翻訳や近傍探索分野の現状などを交えながら解説する．
先行研究や提案法については概要のみを記すため，数式などの詳細は適宜原論文あるいはNLP2023で発表した「近傍文検索を用いたサブセットkNNニューラル機械翻訳」\footnote{
\url{https://www.anlp.jp/proceedings/annual_meeting/2023/pdf_dir/A2-3.pdf}
}を参照していただきたい．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{背景}

本稿を執筆している2023年9月現在，自動翻訳や文法誤り訂正，大規模言語モデル (LLM) によるチャットボットなど，さまざまな自然言語処理サービスが台頭している．
これらはほとんどが2017年に発表されたTransformer \cite{vaswani-etal-2017-attention}という構造のニューラルネットワークを基礎としたモデルにより実現されている．
Transformerはそれまでの機械翻訳手法の翻訳精度を大きく上回るだけでなく，自然言語処理のさまざまなタスク，さらには，画像処理など多岐にわたる分野の予測精度を向上させ，注目を浴び続けている．

しかし，その精度と引き換えにモデルの訓練にはコストがかかる．
ここで，例えば，時事に基づく質問応答のように知識の更新が頻繁に要求されるタスクを考えると，都度最新のデータを使って追加訓練する必要が生じる．
あるいは，元の訓練データに含まれていなかった新しいドメインに適応させるためには，対象のドメインデータで追加訓練する必要がある．
このような状況ではモデルを更新するたびに訓練コストがかさんでしまう．
さらに，「以前はこの文章がうまく翻訳できていたのにモデルの更新により精度が下がってしまった」といったような，「忘却」と呼ばれる現象もしばしば目にする．

これらの問題に対処するため，翻訳時に類似した翻訳例を参照しながら訳文を作るという用例ベース手法\footnote{
用例ベースの手法はさまざまな名前で呼ばれることがある．英語では ``Retrieval-based'', ``Example-based'', ``Instance-based'', ``\knearestneighbor (\knn)''というキーワードがこのトピックを指すことが多い．
}を取り入れた\knnmt \cite{khandelwal-2021-nearest}というモデルが提案された．
翻訳用例を検索し，モデルの予測と組み合わせて訳文を生成することで，更新はモデルの追加学習ではなくデータベースに翻訳用例を追加する操作だけで実現でき，また翻訳時に必要に応じて用例を使用するかどうか柔軟に切り替えられるため，忘却現象も回避できる．
さらに，副次的な効果として，訳文を生成するために参照した翻訳用例を提示することも可能であり，解釈性の向上も期待できる．

\knnmt は翻訳前に予めデータストアと呼ばれる用例データベースを構築し，翻訳時はデータストアから近傍事例を検索して出力確率を補正する．
データストアは，訓練済みのNMTモデルに対訳文を入力した際のデコーダ最終層の中間表現ベクトル（キー）と，そのときに出力されるべき正解の単語（値）のペアからなる．
キーベクトルは語彙ごとの埋め込みではなく，文脈情報を含んだ中間表現ベクトルであるため，データストアの大きさは対訳データの目的言語側の全単語数に比例する\footnote{
原論文で実施したWMT'19独英翻訳実験では，29.5M文対からなるWMT'19独英翻訳タスクの対訳コーパスを使用してデータストアを構築した．このとき，データストアの大きさ=目的言語側の単語数は862.6Mとなった．
}．
翻訳時は各時刻においてデータストアから近傍$k$個の単語を探索し，近傍事例のキーベクトルとの間のL2距離から\knn 予測確率に変換し，NMTの元の予測確率と線形補間することで出力確率を得る．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{課題の発見から原因の究明へ}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{課題の発見}
当初，私は指導教員の渡辺太郎先生との雑談から，\knnmt の柔軟性や翻訳精度を改善できないだろうか，という動機で研究を始めた．
しかし，研究を始めてまもなく，先に解決したい2つの課題に直面した．
1つ目は，実装がない\footnote{
現在は著者実装を含めていくつかの実装が公開されている．
}こと，
2つ目は，翻訳速度が通常のTransformerと比較して非常に遅くなることであった．

まずは使える実装がないと研究が始まらないので再現実装に取り組んだ．
論文の情報から実装を再現するのはなかなか骨の折れる作業ではあるが，学部・修士のときに所属していた研究室で当時の指導教員である二宮崇先生に「研究においては使う側ではなく作る・創る側になりなさい」と言われたことを思い出しながら作業を完遂した．
いざ実装を動かしてみると，精度評価以前に，いつまで経っても訳文生成が終わらなかった．
「\knnmt は通常のモデルと比較して翻訳速度が大幅に低下する」という欠点は元論文 \cite{khandelwal-2021-nearest}でも言及されているが，これは実用化が極めて難しいと感じるレベルであった\footnote{
原論文で取り組んだWMT'19独英翻訳実験では，\knnmt の翻訳速度は通常のTransformerモデルより325倍遅くなった．
例として1文を1秒で生成するモデルを考えると，\knnmt の導入により1文生成するのに5分25秒かかる計算になる．なお，検証データのサイズは2,000文である．
}．
そこで，まずは現実的な速度で翻訳できるようにしたいと思い始めた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{原因の究明}
\knnmt はなぜ遅いのか．
C言語の生みの親であるRob Pikeは次のような言葉を述べている: ``Measure. Don't tune for speed until you've measured''．
用例検索部分が遅い，というのはなんとなく推測できるが，実際に計測してみると，「単語単位で構築された巨大なデータストアに対して，出力文の単語数と同じ回数近傍探索している」ことが速度低下の本質であるということに気がついた\footnote{
例えば，1回の用例検索が3秒で終わっても，50単語からなる1文を生成するためには2分半かかる．
}．
このため，出力単語数と同じ回数分計算される1回あたりの検索コストをいかに抑えるかが速度改善の肝となる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{提案法と研究過程}

提案法は次の2つの手法により\knnmt の翻訳速度を改善する:
\begin{enumerate}
    \item 探索空間の削減: 入力文に類似した文の用例のみを検索対象とする（図\ref{fig:subset}）．
    \item 効率的な距離計算: (1) により絞り込んだサブセット中の各キーベクトルとクエリベクトルとの間の距離を，事前に計算した距離テーブルのルックアップにより求める．
\end{enumerate}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 1
\begin{figure}[b]
\begin{center}
\includegraphics{30-4ia22f1.pdf}
\end{center}
\caption{近傍文検索による探索空間の削減}
\label{fig:subset}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{故きを温ねて新しきを知る}
渡辺先生とのミーティングで「\knnmt は出力単語の類似度だけで計算しているから，入力側の類似度を使えると嬉しい．」という議論を交わし，このアイデアを深めることにした．
だんだんNMTの研究というより用例ベース翻訳 (EBMT) の研究になってきた気がした．
最先端の技術と昔の研究が時代を越えて繋がり，私がその橋渡しの役目を担うという点で，わくわくする感覚を味わったのは今でも強く覚えている．
この頃が本研究の過程で一番楽しかった時期かもしれない．
EBMTの研究をやるからには，ということで，その道の始まりにあたる長尾真先生のアナロジーに基づくEBMT \cite{nagao-1984-framework}をはじめ，古い文献を漁り，大学からすぐ近くの国立国会図書館で夢中になって読んだ．
1984年に提案された「原言語文側で類似した事例の対訳を参照する」というアイデアを現代のNMTに融合させる作業に勤しんだ（手法(1); 図\ref{fig:subset}; 原論文3.1節）．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{新たな課題の発見と他分野との出会い}
前述の探索空間の削減だけではまだ十分に実用的な翻訳速度を得られなかった．
ここで，ベクトル近傍探索分野において高速な探索法を研究されている松井勇佑先生という方が東京大学にいらっしゃるという話を耳にし，直接コンタクトをとり，近傍探索の基本から最先端の探索アルゴリズムまでの概観を教わった．
ところで，私の手法は「入力に応じて毎回動的に近傍探索の検索対象が変わる」という特徴がある．
実はこのような設定の探索問題は，近傍探索の分野においてあまり考えられてこなかった特殊なケースであり，ほとんどの探索アルゴリズムは全探索に最適化されているため，動的に変化するサブセットに対する探索に適用できない．
私の知る限りこの問題に正面から向き合った研究は唯一1件 \cite{matsui-etal-2018-reconfigurable}存在し，この論文にヒントを得ながら，サブセット探索に最適な探索アルゴリズム（手法(2); 原論文3.2節）を実装した．
これにより，ようやく100倍高速化という目標を達成し，実用的な速度（通常のTransformerの50\%程度の翻訳速度）で動作することを確認したため，原論文の執筆に移った．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{ACL2023: 採択から発表まで}

採択の通知が来るまでは，「精度競争の激しいこの時代に高精度化ではなく高速化に着目した論文ははたしてどれほど評価されるのだろうか」といった不安半分と，一方で「高精度化や解釈性の向上に寄与するようなモデルを実用的な速度で動くようにしたという貢献は評価していただけるのではないだろうか」という期待半分を抱えながら結果を待った．
ちょうどゴールデンウィークの始まりの夜中に通知メールが届き，緊張しながら文面を開くと，「accepted」の文字が目に飛び込んだ．
結果はすぐさま共著者全員に共有した．
特に，findingsではなくmainのプロシーディングス (Volume 1: Long Papers) に採択されたことは嬉しく，自分の研究の貢献が評価される喜びを味わった．

開催地のトロントは7月でもそこまで暑くなく，朝に会場裏の湖のほとりを散歩するのが心地よかった．
湖面を見ていると，実装から実験，論文投稿までの道のり，採択までの不安，発表準備などでここしばらく熱くなりすぎていた自分に気がつき，自然を感じられるくらいまで気持ちに余裕ができたことに安心感を覚えた．

ACLのチュートリアルは大規模言語モデルに検索機構を組み込むといった用例ベース手法に関連する``Retrieval-based Language Models and Applications''という発表を聴講した．
この発表は会場が満席になるくらい聴講者が多かったのが印象的だった．
私の研究と同じ方向性の用例ベース手法が注目を浴びているということから，改めて原論文の研究意義と用例ベース手法への期待を感じた．
本会議では，やはりChatGPT登場以降初のACLということもあり，LLMに関する発表が賑わっていた．
個人的には，「LLMがどこから翻訳を学習したのか？」という問いに対して訓練事例を詳細に調べ上げた研究\cite{briakou-etal-2023-searching}の発表が面白かった．
LLMによる機械翻訳の発展に期待しつつ，私の提案法のLLMへの応用は今後の課題だと感じた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{knn-seq: 高速・拡張可能な\knnmt フレームワーク}

原論文では\knnmt の高速化には成功したものの，まだ1つめの課題である「\knnmt のオープンな実装がない」という問題が残っている．
ACLに採択されるころには既に\knnmt の著者の実装を含めいくつかの実装が公開されてはいたが，研究室内で\knnmt に関する研究に取り組んでいた後輩から，「公開実装を使っているが事前処理がとにかく遅い」という話を耳にした．
そこで，研究室内でメンバーを募り，\knnmt フレームワーク ``knn-seq'' を開発することになった．
特に，効率的な実装を心がけ，翻訳速度だけでなく，事前処理であるデータストア構築も含め全てのフェーズで高速に動作するよう設計した．
特に，著者実装では3日以上かかっていた事前処理が数時間程度で完了するようになった．
オリジナルの\knnmt と提案モデルのSubset \knnmt を含んだknn-seqのソースコードはGitHubで公開している\footnote{
\url{https://github.com/naist-nlp/knn-seq}
}${}^,$\footnote{NLP若手の会第18回シンポジウム (YANS2023) 奨励賞受賞．}．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{おわりに}

本研究では，用例ベース翻訳の古い文献まで遡ったことや，機械翻訳分野の外にある近傍探索分野を学んだこと，すなわち，研究分野のルーツを辿って理解を深めつつ，同時に分野の外にも視野を広げたことが目標達成の要となった．
研究の途中で，共著者の松井先生から「近傍探索の研究分野から見ると，提案法は近傍探索の使い方が面白い」という感想をいただき，議論が進んだことがある．
「巨人の肩の上に立つ」という言葉があるが，ただ自分が先人の肩の上に立つだけではなく，さらにその次の研究に立ってもらうため自分の研究が土台になるという側面もあるのか，と感銘を受けた．
これからも時代や分野を越えて研究のバトンをつないでいけたらと思う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliographystyle{jnlpbbl_1.7}
\bibliography{22refs}


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

\bioauthor{出口　祥之}{%
2019年愛媛大学工学部情報工学科卒業．
2021年同大学院理工学研究科博士前期課程修了．
2021年より奈良先端科学技術大学院大学博士後期課程に在学．
同年より情報通信研究機構にて機械翻訳の研究に従事．
}

\end{biography}



\end{document}


