5本目!Towards a Human-like Open-Domain Chatbot
今回がかの巨人であるGoogleが開発した Chatbotに関する論文です。
その子の名前はMeena!というか、なんて読むの?メーナ?ミーナ? まあ、ミーナの方が可愛いのでミーナってことで。なんか、ミーナって聞いたことがある気がする。調べたら、進撃の登場人物だった。あと、ミーアでティアムーンの広いんだから、たぶんどっちかと勘違いしたのかな?
それは置いておいて、MeenaはMulti-turn Open-Domain Chatbotってやつらしい。Mulit-Turnが会話の往復って意味で、Open-Domainがどのような内容に対しても回答できるっていう意味らしい。
つまり、人間のように文脈を把握して、あらゆる話題に対応しようっていう、Chatbotだそうな。
Introduction
まず、Open-Domain Chatbotの多さよ。MILABOT, XioIce, Gunrock, Mituku, Cleverbot, etc...とあるらしい。 こいつらは 知識ベース、検索ベース、ルールベースの3つを組み合わせて応答文章を作っているらしい。問題点としては、ちょー複雑なモデルであること。 一方で、Neural Networkを使用したモデルではシンプルに学習することができるが、問題点として、抽象的だったり意味をなさない応答を返すことがあることらしい。
比較サンプルはココ!
まあ、数年前に一から実装したTransformerはずっと無言だったしね('ω')
ミーナちゃんは超巨大なGenerative型のlow-perplexityなChatbotだそうだ。
low-perplexityとは何ぞや?答えの候補の確率の逆数らしい。例えば10000語の知識があって、「私が好きなエロゲはKeyの」とあったとして、次の単語が10個に単語を絞れたら、
となるらしい。今回は平均して、preplexity = 10.2で単語数がsubwordsで8000個だそうだ。 やべーな。
そして、今回使用したモデルは Seq2seqでSequence to Sequence Learning with Neural Networksっていう論文とNeural Machine Translation by Jontly Learning to Align and Translateっていう論文のモデルをEvolved TransformerっていうNeural Networkのアーキテクチャ検索をするモデルで最適化したやつを使っているらしい。
まじで意味わからん。Google AI のBlogをあさっていたら、こんなモデルが出てきた。
Evolved Transformerの中にSeq2seqが入っているのかな?
んで、今回の指標にはSSA(Sensibleness and Specific Average)ってやつを使ったそうだ。 指標としては
1.文の意味を成しているのか? 2.はっきりとした答えになっているのか?
の2つの指標を組み合わせたものらしい。でも、人間で97%って...。多分、お茶を濁しやすい日本人なら、ミーナに負けるかも(笑)
1の指標は今まで通りで、2の指標はNeuralModelの問題点であるあいまいな回答に対する指標みたい。
こいつをTest-Caseにぶち込んだ時の結果の評価と、実際の会話での評価の2通りで使用して、各Chatbotの性能を測定したそうだ。
入力文としては最大7つまでのDialogue Blockをぶち込んで、次の文章を応答としたみたい。
入力としては、A<EOS>B<EOS>...<EOS>A<EOS>みたいな感じなのかな?
Meena chatbot
モデルを高性能にする方法について論じている。
もっと、training dataを増やし、パラメータを増やせばいいのか?、それともモデルを他の検索ベースとかのモデルにくっつけた方がいいのか?
Googleの出した答えは...
超大規模なモデルを作ろう!ってことで決まったみたい。
データの下処理については
1.2単語未満 or 128単語以上の文を除く
2. 70%以下の英語の文を除く
3.URLを除く
4.Botの発言を除く
5.100以上繰り返さた文を除く(I don't knowとか?)
6.前の文とおんなじことを言っているやつを除く(海に行きたい!
これで8億6700万個の(context, response)のペアができたっていうんだけど、マジでやばい。
どうやってそんなに会話を集めたんねん(笑)
日本でやれるのはLINEぐらいじゃね?
Model Architecture
ミーナちゃんのModel ArchitectureはTransformer seq2seq modelで2.6Bのパラメータを持つらしい。
1つのEncoderBlockと13のDecoderBlockってことは、Encoderのhidden層は最小のDecoderBlockにぶち込むだけ?それとも、全部?
まあ、Evolved Transformerを調べてみればいいか。
でも、一番でかいGPT-2 modelのパラメータサイズが1.5Bってことはマジでバケモンやん。
隠れ層が2560, Attention Headsが32ってでかすぎワロタ。
Decoding
Sample-and-Rank Decodingってのを採用しているらしい。
こいつは単語を選ぶ時のsoft-maxを改良したものらしい
なんか、よくわかんないけどTを大きくすると、固有名詞とかの特定の単語が出やすくなって、Tを小さくすると、前置詞とか冠詞が出やすくなるみたい。
ここに上式の論拠となった元の論文があるから、時間があれば見てみよう。
Further Advancing SSA
ミーナの改良のやり方らしい。
#### Advancing Decoding
Decodingのときに temperature Tとtop-kのパラメータを変化させて、SSAを調節したらしい。
T = 0.88, k= 40, N=20にすると、一番良かったみたい。 Tが前の式のTで、kがtop-kで使用されるkで、NがSample-and-Rank Decodingで選ぶtokenの数らしい。
Addressing Cross-turn Repetitions
以前に登場した文を繰り返すことをCross-turn というらしい。
このCross-turnを減らすことでSSAが向上するそうな。
あと、「あんたなんて大嫌い、だから手をつないで帰ろう。」みたいな、矛盾した文章はミーナではほとんどないらしい。すげー。
ただ、共感性を持つような温かみのある会話とかはできないっぽい。
こういうのはI KNOW THE FEELING: LEARNING TO CONVERSE WITH EMPATHっていう論文とか、The Design and Implementaion of XiaoIce an Empathetic Socal Chatbotっていう論文にあるから、読んでみよう。