論文解説「Towards a Human-like Open-Domain Chatbot」

# 論文解説「Towards a Human-like Open-Domain Chatbot」

まだ解説がなかったので、自分の理解のためにもまとめます。元になった論文はこちら

- [https://arxiv.org/abs/2001.09977](https://arxiv.org/abs/2001.09977)

Googleの研究チームのチャットボットに関する最新の研究です（2020/2/24現在）
この論文のすごいところはMeenaという26億のパラメータを持つモデルを341GBものテキストデータで学習させ、Sensibleness and Specificity Average (SSA)という新しい評価手法を提案し、Perplexityとの相関を示した、というところではないでしょうか。

# はじめに

オープンドメインチャットボットというものはどのような話題でも的確に応答できなければなりません。それができてこそ知能があると認められるのです。しかし、このようなチャットボットは検索ベース、ルールベースのシステムが搭載されていることが多いです（例えば、天気を教えてくれる機能などはルールベースのものが多い）。その理由として単一の機械学習による生成モデルは、意味のない応答したり、曖昧な応答（generic responsesやdull responses）をすることが多いということが挙げられるます。例としては「そうですね。」や「わかりません」等。

そこで筆者らは、ソーシャルメディアから341GBもの会話を集めた大規模なデータセットで、Perplexityが低いモデルを用いることで、話題に的確に応答できることボット「Meena」を開発しました。

Sensibleness and Specificity Average(SSA)は簡単に言うと、文脈の中で意味が正しいか、話題に適合する具体的な応答か（曖昧な応答を避けるため）を人間が評価したものです。この研究ではMeenaのPerplexityはSSAと強い相関を示したそうです。つまりトレーニングデータを増やすことでチャットの応答が賢明で具体的になったということ、近年の評価ではPerplexityやBLEUは人間との相関が低く、評価に適さないことが示唆されていたため、これは驚きです。**つまり、より良い（低い）Perplexityを達成できれば、人間のように話すチャットボットを作ることができるということです、、。**

このSSAはMeena79%のスコア、平均的な人間では86%のSSAです。Meenaのスコアは一般的な検索ベース、ルールベースのシステムを持つチャットボットよりも強いものです。

# 評価方法

人間による評価は、固定された質問に対する応答を人間が評価ものと、1:1で自由にチャットして評価するものの２種類があり、さらに人間によらない自動評価をしています。

まず、人間による評価はクラウドワーカーたちにラベル付けを行ってもらいます。評価基準は、常識的に考えて正しいか（Sensibleness）、話題に適合する具体的な応答か（Specificity）です。例えば「私はテニスが大好きです」に対し「それはいいね」と答える場合、発話は「具体的でない」とラベル付けされます。「常識」を用いているのが気になるところで、クラウドワーカー（5人）の一貫性を用いて調べたところ、Sensiblenessは±3%、Specificityは±2%となり、ほぼ一貫しているようです。SSAはこれら（SensiblenessとSpecificity）の単純な平均です。

固定された質問を用いた評価では、1〜3ターンの1,477（それぞれのターンで、315、500、662）の対話データを作成しています。これをMini-Turing Benchmark (MTB)と呼んでいます。これを同じようにラベル付けを行います。

自由チャットは、会話はチャットボットからの "Hi!" で始まり、話題や会話について特に指示せず、チャットボットであることを伝えて、14〜28回までの対話をさせています。

色々なボットと比較していますが、その中でもMitsuku、XiaoIceと比較しています。これは何人かで自由にチャットして調べたようです。XiaoIceは会話外にも様々な機能があるため、一点特化したMeenaは有利です。

XiaoIceの解説はこちら→[https://qiita.com/july1997/items/be189c0bba9d691389b4](https://qiita.com/july1997/items/be189c0bba9d691389b4)

最後に、自動評価はPerplexityを用いています。Perplexityは簡単に言うと、文章において次に来る単語の候補数のようなもので、低い方が予測性能がよく優れていて、理論上の最小値が1です。

# Meena

チャットボットは、検索ベース、ルールベースのシステムを持つものと、ニューラルネットワークを用いた学習ベースのものがあります。人間のように話すチャットボットを作るためには、パラメータ数を増やすことで、モデルを大きくすることでできるのか、それとも検索やルールベースのシステムが必要なのかが問題でした。Meenaはモデルを大きくすることで、ほぼ人間のように話す事ができます。

## データセット

対話データは複数の発話者を含み、ある発言に応答した対話と、それまでの対話（最大7対話）までコンテキストとして、応答とコンテキストというペアを作っています。またデータをフィルタリングしています（詳細は論文へ）。ペアの数は867Mです。サブワード化にはsentencepieceを用いて、語彙は8kです。データは全部で341GBのテキスト(400億語)で、GPT-2（40GB）と比べても圧倒的です。

## モデル

モデルはEvolved Transformerを用いたseq2seqモデルで26億のパラメータを持ちます。Evolved TransformerはTransformerの構造を最適化したもの（畳み込みが入っている）ものだと思います（詳しく調べていない）。1つのエンコーダブロックと13のデコーダブロックを持つそうです。13倍デコーダがあり、デコーダの重要性がわかります。Evolved Transformerは10.2のPerplexity、通常のTransformer(デコーダが32層)は10.7だそうです。どこのことかわかりませんがMeenaの隠れ層は2560次元、Multi-Head Attention の分割数は32で、エンコーダとデコーダでembeddingsは共有している模様です。文字の最大長は128文字です。

## 学習

TPU‐v3Podで30日間らしいです。これほど大きくても過学習したようでドロップアウト層を追加したそう。optimizerはAdafactor optimizerで学習係数は0.01から徐々に下げていったようです。TPU-v3Pod（2048TPUコア）は合計メモリ32TiBで、一般人でも使えますがいくらするのかは分かりません。

生成にはsample-and-rankという手法を使用して文章を生成しています。実際の会話はGithubから見ることができます：[https://github.com/google-research/google-research/tree/master/meena/](https://github.com/google-research/google-research/tree/master/meena/)

# 結果

PerplexityとSSAの相関は、固定された質問を用いた評価でR2 = 0.94となり非常に強い相関があることがわかります。

<img width="549" alt="スクリーンショット 2020-02-24 15.01.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475516/73eb9018-d6b6-d0ef-2dbc-3a827753b908.png">
(Towards a Human-like Open-Domain Chatbotから引用)

データセットは常識、基本的な質問は含んでいますが、より深い質問応答(例えば、チーターはどれくらい速いか)、基本的な数学(例えば、1+1は？)などは含まれてません。そのためこれらの問題をどうするのか。また、記憶や（個人の）感性をどうするかという問題は未だ解決していません。

# まとめ

個人的にはPerplexityとSSA（人間の評価）が相関することがこの研究の一番の貢献だと思っています。現時点ではモデルは誤用の危険性のため公開されていないようですが、今後公開されれば面白いですね。