End2Endな対話システムの評価指標
この記事は、Qiita 自然言語処理アドベントカレンダーの2日目です。
1日目は jojonki さんによるゼロから作った形態素解析器Taiyakiで学ぶ形態素解析でした。
この記事では、End2Endな対話システムの評価指標、特に応答文生成の自動評価指標に注目して、どのような指標があるのか、どのような点が問題と考えられているのかに注目して、現在の動向やどのような課題があると考えられているかについて記載しています。
自然言語処理分野、特にその応用分野へのDeep Learningへの適用は、特にSeq2SeqとAttention機構によって進んできたと言っても過言ではありません、
対話システムでも、機械翻訳や文書要約といったその他の自然言語処理の応用分野と同じく、End2Endなモデルで対話システムを構築しようという試みが多く行われています。
Deep Learning応用の比較的初期の頃からEnd2Endな対話システムの構築という問題は取り組まれており、手法としては、言語モデルベース、GANベース、VAEベースのもの、そしてそれらの様々な派生手法が提案されています。
一方で、End2Endな対話システムのための評価指標については、新たに提案されるものはそこまで多くはないものの、既存の自然言語処理分野で使用されていた評価指標も含めて、決定版と考えられているものがない状態です。
本記事では、現在主にどのような評価指標が使われているのかを概観した後、それらの指標がどのような問題点をもちどのような解決案が提示されているかの順で、記載していきます。
目次
対話システムの評価指標
対話システムの評価指標は、機械翻訳や文書要約といった、自然言語処理の他のテキスト出力型のタスクと同様な指標が使用されることが一般的です。
Facebookが公開している、対話システムの学習・評価環境であるParlAIでも、メトリクスとしてはBLEUおよびROUGEといった、伝統的なn-gramベースのリファレンステキストとのマッチング指標が使用されています。*1
一方で、End2Endな生成型の対話システムが一般化してきたタイミングで、対話システム独自の評価指標も用いられるようになり始めました。
1つは、Embeddingベースと呼称される評価指標の一群で、テキストを構成する単語そのものではなく、テキストをEmbedding表現に変換した状態で、生成文とリファレンス文を比較する指標です。
もう1つが、Distinct-Nと呼ばれる、システムが生成する文の多様性を評価するための指標です。
これらの指標は対話分野以外では使用されないこともあり(対話分野でも応答文生成以外では一般的でないため)、NLP系の各種ツール(NLTKやAllenNLP)には実装がなく、nlg-evalやneural-dialogue-metricsなど、対話システム向けのリポジトリにまとめられたものが公開されています。
手動評価指標としても、対話システムに独特な指標が使用されるようになってきています。
以降では、BLEUなどの伝統的な指標を含めて、どのような評価指標があるのかについて説明していきます。
自動評価
BLEU(Bilingual Evaluation Understudy)
BLEUは、名前が示す通り機械翻訳で使用され始めた評価指標です。
Modified n-gram precisionとBest match lengthを計算し、最終的な評価スコアを出力する、n-gramベースの単純なPrecisionを置き換える指標です。
センテンスベースのBLEUは下記の用に表されます。
は生成文に含まれるn-gramの数で、リファレンス文にも含まれるn-gramをn-gramにつき1つと数え上げた数で割った値です。
例えば、一般のUnigramのPrecisionでは、 I work on machine learningというreferenceがあった際、
ⅰ. He works on machine learningは60%、
ⅱ. He works on on machine machine learning learningは75%
がPrecisionとなりますが、ⅰの方がどう考えても良い文章です。
この問題を解決するため、BLEUではn-gramの出現回数を一回しかカウントしないことにより、同じ単語が複数回登場するだけの文の評価をあげないように工夫されています。*2
は重みパラメーターで、一様になるように と置かれる事が一般的です。*3
BPは短すぎる文にペナルティーを課す項で、は生成文の合計の長さ、は基準の長さ、一般的にはリファレンス文の平均長が使用されます。
ROUGE(Recall Oriented Understudy for Gisting Evaluation)
ROUGEは、BLEUとは異なり、n-gramベースのPrecisionだけでなくRecallにも注目する手法で、文書要約の分野で登場してきた指標です。
計算方法によっていくつかの種類が提案されています。
ROUGE-Nは、生成文中に現れるn-gramがリファレンス文中に出現する回数をもとに、RecallとPrecisionを計算する指標です。RecallとPrecisionを合わせて評価するため、F1まで計算しそこで比較することが一般的です。
ROUGE-Lは、LCS(Longest Common Subsequence) という関数を用いて、以下の式で表現される。
LCSは、与えられた二つの文で最も長い一致部分の長さを返す関数で、mがリファレンス文の長さ、nが生成文の長さ、は、調整用パラメーターで一般的には0.5が使用されます。
LCSを拡張したような、ROUGE-WやROUGE-Sも同じ論文の中で提案されていますが、一般的にROUGE-NやROUGE-Lがよく使用されます。
Embedding Base
Embedding Baseの評価指標は、How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation[Liu 2016]にて、対話応答生成・応答選択向けにまとめられた評価指標です。
上記の論文自体は対話システムの文脈では比較的よく参照されており、2019/11/10現在で401件の論文で引用されています。*4
後述しますが、上記の論文でもEmbedding Baseの指標と人間評価の間には相関はないと結論付けられていますが、語彙が異なっていても意味的な近さを既存指標よりも評価しやすいという期待からたびたび使用されています。
上記の論文では、Embedding Baseの指標として以下の3種類があげられています。
Embedding Averageは、生成文に含まれる単語のベクトルの和と、リファレンス文に含まれる単語のベクトルの和とのコサイン類似度をスコアとしたものです。
Vector Extremaは、文に含まれる各単語の単語ベクトルのうち、各次元ごとに最大値もしくは最小値を、文のベクトルの対応する次元の値として、リファレンス文と生成文のコサイン類似度をスコアとしたものです。
Greedy Matchingは、リファレンス文と生成文に含まれる単語ベクトルと比較した際に、最もコサイン類似度が高くなる単語のコサイン類似度の平均をスコアとしたものです。
いずれの指標でも、学習済みのベクトルとして、word2vecのリポジトリ*5で公開されているGoogleのNews Corpusで作成されたものを使用することが多いようです。
Distinct
A Diversity-Promoting Objective Function for Neural Conversation Models[Li 2016]にて、対話応答生成向けに、生成された文の多様性評価指標としして提案された指標です。
生成型の対話システムでは、 "I don’t know" や "I’m OK" といった無難で前後の文脈にも合うが、システムの挙動としては期待しない文が生成されることが問題なっており、上記の論文はその解決策の走りとして提出されたもので、他の論文からの参照も多く、2019/11/10現在で495件の論文で引用されています。*6
Distinctは、上記の論文内にてあくまで提案手法の評価用に定義されただけのものですが、生成文の多様性はEnd2Endな対話システムでは大きな課題として考えられており、同じような課題意識を持つ論文では幅広く使用されています。
定義は非常に簡単で、Distinct-Nは、生成された複数文中で登場したn-gramの種類数を、複数文中に登場する全てのn-gramの数で割った値として定義されます。*7
人間評価
人間による評価では、システム全体の良さ、もしくは評価軸に基づいて、直接2つのシステムを比較したり、5段階評価で点数つけしてもらうことにより評価を行います。
評価軸に基づいた評価は、FluencyやNaturalnessといった文生成一般に使用される評価軸以外にも、以下の二つの評価軸が対話システムの評価としてよく使用されます。
Interest (Informative, Richness): 対話として情報のある文かどうか。Distinctを同じ用に、常に I don’t know 等で返す場合低い評価となる
Relevance (Consistency): 直前のユーザー発話文や対話履歴との関連性がある文かどうか
後述するように、End2Endな対話システムの評価では決定的な自動評価指標はなく、必ずと言ってよいほど人間による評価を行うことが一般的です。
特に、上記の二つのように、対話として有意味か、前後の文脈を評価できているかについては、自動評価による評価が難しく、特に評価指標としてよく用いられています。
評価指標の課題
既存指標の課題
対話システムの応答生成は、他の文生成タスクと比較して、以下の2点の特徴があるため自動評価が難しいと考えられています。
- コンテキストにあえば多様な応答が正解となりえ、リファレンス文と使用されている単語が違っていても正解となる
- 単語が一致しないだけでなく、意味的にリファレンス文と全く異なっていても、コンテキストにあえば正解となる
Liu 2016では、検索型および生成型の応答生成タスクで、それぞれ複数のモデルを用いて、非タスク指向対話の2つのコーパスを使用にて、各種評価指標と人間評価の相関を検証しています。
各対話システムが生成した応答文を、25人の評価者に5段階で評価してもらい、平均スコアを算出。その値と、自動評価指標の評価結果の値の相関を見るというのが主なアプローチです。
下記グラフは、2つのコーパスにて、人間の評価と、BLEU、Embedding Average、2グループの評価者の評価の対応関係を散布図で表したものです。
グラフの通り、人間同士の評価の相関はいずれのコーパスでも非常に高い(0.9以上)一方、自動評価指標はBLEUもEmbedding Averageも、いずれのコーパスでもほぼ相関がないようなグラフとなっています。
実際、Twitterコーパスでは、BLEUは相関が0.35ほど(さらに、ストップワードを抜いた場合は0.2ほど)、Embedding Averageも0.2ほど、Ubuntuコーパスでは、どちらもほぼ0付近の相関値となっています。
この問題に対応する方法として、論文中では以下の3つのアプローチが可能なのではないかと示唆されています。
- タスク指向対話システムのように、ポリシーがが決定したアクションをもとに応答を生成するなど、正解のバリエーションがすくなるなるようにタスク設計する
- それぞれのコンテキストにおいて、正解と考えられる発話文を複数用意したデータセットを構築する
- リファレンス文と生成文の意味や、コンテキストと生成文の関係性を評価できる新しい評価指標を検討する
1番目は、Relevance of Unsupervised Metrics in Task-Oriented Dialogue for Evaluating Natural Language Generation[Sharma 2017]にて検討されており、非タスク指向対話に比べるとかなり高い相関が見られることを報告していますが、相関が見られる範囲および使用しているデータセットが限定できである点について考慮が必要です。*8
2番目は、残念ながら対話というジャンルの性質上構築が難しいのか、複数の応答が正解として用意されているようなデータセットはまだ見かけません。
3番目は、BERTScoreやSentence Mover’s Similarityのような、事前学習済みのEmbeddingを使用した新しい評価指標が、対話以外の分野から続々と登場してきています。
また後述するように、対話システムの分野でも、対話のコンテキストを考慮した複数の評価指標が提案されています。
対話のコンテキストを考慮した評価指標
ADEM(Automatic Dialogue Evaluation Model)
ADEM[Lowe 2017]は、最初期のコンテキストを考慮した対話システムの評価指標で、対話履歴、リファレンスの応答文、システムが生成した応答文をもとにスコアを出力します。
スコアを出力するモデルは、ベースラインシステムが生成(選択)した対話応答文を、人間が評価した値を集めたデータセットを学習して構築します。
上記のデータセットのテストセットで評価した結果、人間評価との相関値がBLEUやROUGEなどの既存の指標を大幅に上回ることを示しています。
一方で、上記データセットに含まれる該当システムへの人間評価を学習時に取り除いた場合、該当システムが生成した応答文への評価の相関値が大幅に低下する実験結果も示されており、扱いには注意が必要です。
RUBER(Referenced metric and Unreferenced metric Blended Evaluation)
RUBER[Tao 2018]は、生成した応答文と、リファレンスの応答文との一致率と、対話コンテキストの一致率を別々に計算し統合することにより、人間評価に近い評価を得られる指標の構築を試みた指標です。
生成した応答文とリファレンスの応答文との一致率(Referenced Metric)は、Embedding Baseの指標と同様、既存の事前学習済み単語ベクトルを使用します。
生成した応答文と対話コンテキストの一致率(Unreferenced Metric)は、ニューラルネットを使用して、学習データに含まれるコンテキスと応答文の組み合わせでは高く、学習データに含まれない組み合わせでは低くなるように、スコアを出力するモデルを学習します。
Referenced MetricとUnreferenced Metricの統合方法は、最小値を用いるケース、算術平均を用いるケース、幾何平均を用いるケース、最大値を用いるケースで検証されており、最大値以外は、概ね人間評価との相関値が0.45前後と比較的高い数値を得られることを示しています。
一方で、上記の結果は対話システムと同じデータを用いてUnreferenced Metricを算出するモデルを学習した場合の値であり、異なるデータで学習した対話システムが生成した応答文の評価においては、人間評価との相関値が0.35ほどと10%ほど下がってしまうことが示されています。
また、Referenced MetricとUnreferenced Metricともに、単語をベクトルに使用する事前学習済みのモデルとして、word embeddingではなくBERTなどのContextual Embedingにするなど、いくつか改良を加えた方が、人間評価との相関値がより良くなるという報告も存在しています。
まとめ
本記事では、End2Endな対話システムの自動評価指標として、言語処理分野で一般的なものから、対話の応答生成用に独自で使用されている指標についても紹介しました。
また、人間評価との乖離という問題についても、どのような議論が行われているかを紹介しました。
残念ながら決定的な自動評価指標がないのがまだまだ現状です。
ここで紹介されていないけど、こんな評価指標あるよなどがあれば、ぜひ教えていただければ幸いです。
参考文献
- ParlAI
- NLTK
- AllenNLP
- Py-rouge
- ROUGE Summary Evaluation Package
- nlg-eval
- neural-dialogue-metrics -Metrics for NLG evaluation
- Evaluation Methods for Dialog Systems
- Evaluating Text Output in NLP: BLEU at your own risk
- ROUGEを訪ねて三千里:より良い要約の評価を求めて
- Sequence to Sequence Learning with Neural Networks
- How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation
- A Diversity-Promoting Objective Function for Neural Conversation Models
- Relevance of Unsupervised Metrics in Task-Oriented Dialogue for Evaluating Natural Language Generation
- Neural Approaches to Conversational AI
- BERTScore: Evaluating Text Generation with BERT
- Sentence Mover’s Similarity: Automatic Evaluation for Multi-Sentence Texts
- Towards an Automatic Turing Test: Learning to Evaluate Dialogue Responses
- RUBER: An Unsupervised Method for Automatic Evaluation of Open-Domain Dialog Systems
- Better Automatic Evaluation of Open-Domain Dialogue Systems with Contextualized Embeddings
*1:https://github.com/facebookresearch/ParlAI/blob/master/parlai/core/metrics.py
*2:https://github.com/nltk/nltk/blob/14c701fbc99ce2242a2c912b6c82177b03fad744/nltk/translate/bleu_score.py#L336
*3:https://github.com/nltk/nltk/blob/14c701fbc99ce2242a2c912b6c82177b03fad744/nltk/translate/bleu_score.py#L201
*4:https://scholar.google.com/scholar?um=1&ie=UTF-8&lr&cites=9769435644141907733
*5:https://code.google.com/archive/p/word2vec/
*6:https://scholar.google.com/scholar?um=1&ie=UTF-8&lr&cites=6301775661806157248
*7:論文中では、Table 2の説明中に "distinct-1 and distinct-2 are respectively the number of distinct unigrams and bigrams divided by total number of generated words." と記載されている