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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% author's definition
%%%%\usepackage[dvipdfmx,nosetpagesize]{graphicx}
%%%%\usepackage{amsmath}
%%%%\usepackage{url}
%%%%\renewcommand\UrlFont{\rmfamily}
\makeatletter
\newcommand{\figcaption}[1]{\def\@captype{figure}\caption{#1}}
\newcommand{\tblcaption}[1]{\def\@captype{table}\caption{#1}}
\makeatother
%%%%\setlength\floatsep{4pt}
%%%%\setlength\textfloatsep{4pt}
%%%%\setlength\intextsep{4pt}
%%%%\setlength\abovecaptionskip{4pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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


\setcounter{page}{710}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\jsubject{学会記事}
\jtitle{解説: Learning with Contrastive Examples for\\ Data-to-text Generation}
\jauthor{上原　由衣\affiref{aist} \and 石垣　達也\affiref{aist}}
\etitle{ Commentary on ``Learning with Contrastive Examples for Data-to-Text Generation''}
\eauthor{Yui Uehara\affiref{aist} \and Tatsuya Ishigaki\affiref{aist}} 

\headauthor{上原，石垣}
\headtitle{Learning with Contrastive Examples for Data-to-text Generation}

\affilabel{aist}{産業技術総合研究所人工知能研究センター}{Artificial Intelligence Research Center (AIRC), National Institute of Advanced Industrial Science and Technology (AIST)}


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


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{はじめに}

本稿では，COLING2020で発表した論文``Learning with Contrastive Examples for Data-to-Text Generation'' \cite{uehara-ishigaki:2020:coling:learning}について，背景や採択までの道のりについて解説する．
本研究で扱うData-to-textとは，数値等の非テキストデータを入力としてテキストを生成するタスクである．
具体的には図\ref{fig:example}に示すように日経平均株価，円ドルレートなど10項目の市況時系列データを入力として，市況を表すコメントを生成する設定を扱う．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 1 and table 1
\begin{figure}[b]
\vspace{-0.5\Cvs}
\noindent\begin{minipage}{308pt}
\includegraphics{28-2ia27f1.pdf}
\caption{市況テキスト生成タスクにおける課題例}
\label{fig:example}
\end{minipage}
\begin{minipage}{108pt}
\begin{tabular}{l|l}
\hline
重要語 & \multicolumn{1}{c}{負例リスト} \\ \hline
続伸 & 続落,  反発, 反落\\
続落  & 続伸, 反発, 反落\\
反発 & 続伸, 続落, 反落\\
反落 & 続伸, 続落, 反発\\
上げ幅 & 下げ幅\\
下げ幅 & 上げ幅\\
高 & 安\\
安 & 高\\
\hline
\end{tabular}
\tblcaption{重要語とその負例}
\label{tab:posneg-dict}
\end{minipage}
\vspace{-0.5\Cvs}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

本研究ではData-to-textの中心的課題である正確性の問題に着目する．
ニューラルネットワークによる言語生成モデルは自然な文章を生成できる利点がある一方，しばしば入力と一貫しない語を選択するエラーが機械翻訳等の分野において指摘されており\cite{arthur-etal-2016-incorporating}，これがData-to-textでも大きな問題となり得るということである．
例えば，図~\ref{fig:example}に示す状況で，10月5日の寄り付き（始値）について述べたいとする．
このとき，一営業日前である10月2日の終値は17,725円で取引時間中に下げがあったものの持ち直している．
この終値は二営業日前10月1日の終値17,722円を，わずかに上回っている．
生成対象時刻である10月5日の寄り付き（始値）では17,921円と，さらに値を上げたため，「{\it 日経平均　続伸で始まる、...}」が正解であるが，システムが誤って「{\it 日経平均　反発で始まる、...}」などと生成してしまうケースがある．
このようなことが起こる背景として，「{\it 日経平均　続伸で始まる}」と「{\it 日経平均　反発で始まる}」はどちらも単独では言語として自然な文であるにもかかわらず，入力データとの整合性という観点において，初めて不適切と判断し得るという事情がある．

要約など他の言語生成タスクにおいては，コピー機構などにより入力データを直接参照する仕組みを取り入れ，入出力の整合性の問題について解決が図られてきた \cite{see-etal-2017-get}．
Data-to-textの既存手法 \cite{murakami2017,aoki2018}においても，入力データ中の数値を出力にコピーする機構が導入されており，入力データと出力文の整合性の向上を目指している．
しかしながら，このようなコピーによる手法は，「続伸」を「続落」に間違えるというエラーの改善にはつながらない．
このように，入力を直接参照することでは問題を解決できないエラーに対処する，有効な汎用的手法はないかという疑問が，本研究の始まりである．
つまり，一見同じような構造を持つタスクであっても，入出力の違いや着目するエラーによって，既存手法が適用できなくなることがあり，研究のアイデアにつながるきっかけとなる．

さて，本研究のアイデアは我々の研究チームにおける，大きく分けて二つの先行研究の成果の融合によって生まれた．
一つ目は，Data-to-text関連の複数の研究である．
チームでは，株式市況コメントの自動生成の問題に以前から取り組んでおり，Murakamiらが基盤となる手法を開発したのち \cite{murakami2017}，対象データの拡張 \cite{aoki2018}，トピック制御 \cite{aoki-etal-2019-controlling}等の関連手法，発展手法につながってきた．
また，スポーツ試合サマリー生成など，他のデータを扱う問題にも取り組み，理解を深めてきた \cite{iso2019learning}．
二つ目は，言語モデル評価の研究であり，NojiとTakamuraは負例を用いた損失関数を通じたモデル評価の研究を進めてきた\cite{noji:2020:arxive:analysis}．
その中で，負例を用いた損失関数が言語モデルの文法正確性の向上に役立つこと，また類似の負例を用いた損失関数が文書生成モデル（具体的には同じ単語の繰り返しの抑制）のために用いられている先行研究事例があることが紹介された．
これら二つの流れを受けて，負例を用いた損失関数を，Data-to-textにおける正確性の問題の改善につなげてはどうかというアイデアが，チームの日々の議論の中から生まれてきた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{提案手法概要}

提案手法では，従来のData-to-textモデルの枠組みを基本的に変えずに，負例を用いた損失関数を追加するという，単純かつ汎用的な手法によって正確性の改善を図る．
今回は市況レポート生成が対象タスクであり，金融分野の専門的観点から重要語とその負例をとくに高頻度のものに限って表\ref{tab:posneg-dict}のように定義した．
ここから，正解文に加え負例も学習時に活用する損失関数を用い，出力文が正解に近く負例とは遠くなるよう学習する仕組みを採用した．
3つの異なる負例を用いる損失関数と，負例を用いない交差エントロピーによる損失関数を比較した．
以後，3つの負例を用いる損失関数について概説する．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{損失関数1. Unlikelihood Loss }
1つ目の損失関数は負例に与える尤度を低くするよう以下のように定義する: 
\begin{gather}
      \sum_{x_{i} \in \bf{x}}-\log{p(x_{i}|x_{1:i-1})}+
      \sum_{x^{\ast}_{i} \in con(x_{i})} g(x_{i}^{\ast}),
      \label{eq:unlike-loss}
      \\
      g(x_{i}^{\ast}) = -\alpha\log(1-p(x_{i}^{\ast}|x_{1:i-1})).
      \label{eq:unlike-penalty}
\end{gather}
ここで$x_{i}$は文$\bf{x}$の$i$番目のトークンであり，$con(x_{i})$は$x_{i}$が重要語であった場合にその負例となる表~\ref{tab:posneg-dict}に従うトークンの集合である．
Unlikelihood lossは元々，言語生成モデルが同じ語を繰り返し生成してしまう傾向に対する対策として提案された \cite{welleck2020}．
元の研究では，既に生成した語を負例とみなしペナルティを与えるものであった．
本研究ではこれを表~\ref{tab:posneg-dict}に定義する負例に対するペナルティに変更する．
Unlikelihood lossでは負例となるトークンの生成確率からなるペナルティ項~(\ref{eq:unlike-penalty})を式~(\ref{eq:unlike-loss})のように付加して，全体の損失とする．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{損失関数2. Sentence-level Margin Loss}
2つ目は，元々言語モデルの文法能力解析のために提案されたSentence-lavel margin loss \cite{noji:2020:arxive:analysis}である: 
\begin{equation}
      \max (0, \delta - (\log{p(\bf{x})} - \log{p(\bf{x}^{\ast})})).
      \label{eq:sentence-loss}
\end{equation}
ここでは，正例による文と負例による文の各々の文単位の尤度の差分からなる式~(\ref{eq:sentence-loss})のMargin lossを損失関数として学習する．
この損失関数は，Unlikelihood lossのように付加項として与えられるペナルティではないため，交差エントロピー損失による学習とSentence-level margin lossによる学習をミニバッチ単位で交互に行う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{損失関数3. Token-level Margin Loss}
3つ目は，同じくNojiとTakamuraによって提案された損失関数であるが，Sentence-level margin lossとは異なり，トークン単位で正例となるトークンの生成確率と負例によるそれとの差分からなるMargin lossをUnlikelihoodと同様，ペナルティ項として付加する: 
\begin{eqnarray}
      g(x_{i}^{\ast}) = \max(0, \delta-(\log p(x_{i}|x_{1:i-1})
      -\log p(x_{i}^{\ast}|x_{1:i-1}))).
    \label{seq:token-loss}
\end{eqnarray}
Token-level margin lossはSentence-level margin lossの言語モデル評価という視点と，Unlikelihood lossのトークン単位の教師情報という，前出の二つの損失関数の長所を組み合わせたものである．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{論文投稿，採択に向けての工夫}

採択論文では負例を活用する損失関数によって，ベースラインよりもより正確な文が生成されることをいくつかの指標や分析を用いて示した．
採択に向け，より読者の役に立つ論文に仕上げるという点においては，定量的な評価指標で既存手法を上回るだけでなく，モデルの挙動に関する詳細な分析が重要である．

まず，定量的な評価においては，適切な評価指標の設計が重要であるが，これは単純ではない．
既存研究や我々のこれまでの事例分析においては，BLEUと専門家による人手採点の両方で生成文を評価してきた．
今回の設定では，生成文中の値動きを表す重要語は，ほとんどの出力文に1語のみ含まれ，重要語に関するエラーがBLEUには大きくは影響しないことが予想された．
これまでの分析においても，BLEUが向上しても人手評価が向上しなかったり，実際の目視確認において致命的なエラーが目立つという問題に直面しており，今回はBLEUの向上にはこだわらない方針が取られた．
一方で，BLEUを代替する決定的な評価指標があるわけではない．
そこで，本研究ではBLEUに加えさらに4つの評価指標を用い多角的に生成文の正確性を評価する方針を採用した．
具体的には，重要語のみに着目した適合率，再現率，重要語を出力すべき事例に異なる重要語を出力する割合であるエラー率など，重要語が正しく生成されているか否かを直接的に捉える 3 つの評価指標を用いた．
さらに，学習された言語モデルが正例に対しより高い確率値を出力した割合を正解率として用い，言語モデルが正例と疑似負例を正しく区別しているかの評価も行った．
このように，複数の指標を用いてモデルの性能を評価してみると，ある特定の損失関数を用いたモデルは特にエラー率が大きく向上することが分かったりと，細かな挙動が分析できて興味深い．

モデルの挙動に関する分析については，疑似負例の作成のために用いる辞書によって，エラー率の向上がどのように変化するか調査した．
疑似負例の作成時には「{\it 続伸}」のような最終的に値上がるような値動きを表す語を「{\it 続落}」のような最終的に値下がる語に，置き換えるといった，明らかに値動きが異なる語への置換がまず考えられる．
その他に，「{\it 続伸}」を「{\it 反発}」に置き換えるような，最終的には値上がるが，その途中の値動きは異なるような語に置き換える手法も考えられる．
明らかに異なる値動きに置き換える辞書，最終的な値動きは同じ語による辞書，その両方を格納した辞書を比較すると，最終的な値動きは同じ語による辞書がエラー率の向上により寄与することがわかった．
つまり，モデルにとって「{\it 続伸}」と「{\it 続落}」のような明らかに相反する値動きについては区別し，正しく出力するのは比較的容易であるが，「{\it 続伸}」と「{\it 反発}」のように最終的な値下がりや値上がりだけでなく，途中の値動きも考慮する必要のある語については正しく区別し出力するのが難しいといえる．

疑似負例を用いるというシンプルで直感的なアイデアではあるが，損失関数や辞書を変更し，挙動を分析することで，今後このような枠組みを拡張したい研究者や現実の問題に応用したい開発者の方に有益な知見を提供できると考えた．
こういった分析の方針は1--2週間に一度行われるミーティングにおいて，実際に事例を分析して，議論しアイデアが出される．
我々のチームには，言語生成に関心のあるメンバーが産総研内外から集っている．
各々が異なる専門性を持つため，多様なアイデアが出やすく，良い研究を進めるための環境が整っている．
今回の研究アイデアに関して言えば，重要語のエラーに関する問題は少なくとも2018年のAokiらの成果 \cite{aoki2018}が発表された段階でチーム内では共有されており，解決策がすぐには思いつかない状態であった．
2020年のNojiとTakamura \cite{noji:2020:arxive:analysis}の負例を用い言語モデルの挙動を分析する研究が，かねてから共有されていた重要語に関するエラーの問題と結びつき，研究アイデアにつながった．
このように，チーム内で共有されていた問題意識と，異なる目的で提案された手法とが結びつく瞬間は，研究をしていて楽しいと思えるものである．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{今後の展望}

本研究で着目した単一文を生成するタスクに関しては，おおむね流暢な言語生成が可能になりつつある．
しかし，依然として解決すべき問題は存在する．
例えば「日経平均大引け反発150円高　コロナワクチンや米金利低下を材料視」という文の後半部分の自動生成は難しい．
現在のData-to-textモデルの枠組みでは構造化された数値データのみを入力として扱うが，人間の生成する見出しには「コロナワクチン」といった時事ニュースに関する語が含まれており，構造化が容易なデータのみを入力とする現在の枠組みでは解くのが難しい．
このように，単一文を出力する単純な設定であっても，常識知識を柔軟に組み合わせる人間の言語生成能力と比較すると，乖離があるように思える．

単一文ではなく，出力テキストが複数文となる設定は問題がさらに複雑になる．
例えば，映像から複数文からなるテキストを生成するといった問題設定においては，1) 大規模な非構造化データをどのように構造化しエンコードするか，2) 複数文が一貫性を持つようなテキスト生成をどのように行うか，など考慮すべき点が多い．
これは単一文を出力する設定よりもはるかに難しい．
さらに，長い出力するテキストを評価する指標についても確立されているわけではない．
このように，ここ数年で活発に研究されているData-to-text研究には，まだまだ解決すべき課題が多く存在する．
今後も引き続き，自然で正確な言語生成モデルの開発を行いたい．


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


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

\bioauthor{上原　由衣}{%
2008年京都大学総合人間学部卒業．
2019年北陸先端科学技術大学院大学博士前期課程修了．
2018年より産総研人工知能研究センターにて自然言語処理の研究に従事．
2019年より北陸先端科学技術大学院大学博士後期課程に在学し音楽情報科学の研究を行う．
}
\bioauthor{石垣　達也}{%
2014年東京工業大学総合理工学研究科博士前期課程修了．
同年，同大学博士後期課程（2018年9月から3ヶ月間は国立台湾大学にて研究）．
2019年，同大学科学技術創成研究院研究員．同年9月，博士（工学）．
2020年より産総研人工知能研究センターにて自然言語処理の研究に従事．
}

\end{biography}


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


\end{document}



