New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2018: Another Diversity-Promoting Objective Function for Neural Dialogue Generation #159

Open
jojonki opened this Issue Nov 23, 2018 · 2 comments

Comments

Projects
None yet
2 participants
@jojonki
Copy link
Owner

jojonki commented Nov 23, 2018

追記:Podcastで解説しましたが,こちらのissueのコメント欄にりょぼっとさん本人からフィードバックいただけました!ぜひ見てみてください.

Another Diversity-Promoting Objective Function for Neural Dialogue Generation
Ryo Nakamura, Katsuhito Sudoh, Koichiro Yoshino, Satoshi Nakamura
AAAI 2019 Workshop on Reasoning and Learning for Human-Machine Dialogues (DEEP-DIAL 2019)
https://arxiv.org/abs/1811.08100
Tweet: https://twitter.com/_Ryobot/status/1065525897288024064

今回の手法で生成した文.SRC(ソース文),TGT(正解文),MLE(最尤推定),MMI(相互情報量最大化),ITF(Inverse Token Frequency, 本手法)
screen shot 2018-12-02 at 2 34 08 pm
screen shot 2018-12-02 at 2 34 19 pm

概要

言語生成論文.通常のニューラルベースの応答生成モデルはlow diversityな応答を生成する傾向がある.本論では,生成トークンのレア度に応じた重みを損失にかける,Inverse Token Frequency (ITF)という手法を提案.モデル自体を変更することなく,損失関数だけを置き換えれば良い.OpenSubtitles(英語)とTwitterデータ(日英)で実験.BLEUのスコアは高い値を維持しつつ,DIST-1というユニグラムベースのdiversity scoreで高い値を取っている

イントロ

生成モデルベースの手法は最近多く提案されているが,"I don't know"のようなgenericな応答を生成しがち.これはクロスエントロピーロス利用による最尤推定に起因する.最尤推定により,学習データに頻繁に登場する,"I'm sorry", "I'm not sure", "I don't know"などを生成しがちになる.→Low diversities

そこで本論では,Inverse Token Frequencty (ITF)を提案し,各トークンに対してスケールしたロスを適用する.これにより,頻出トークンよりもレアトークンを生成するように促すことができる.

  • ITFロスで,生成文の品質を維持しつつ(BLEU観点),SOTAなdiversityを叩き出した.また手法はシンプルで理解しやすく,効果的.
  • ITFロスは,MMI, GAN, VAE, RLなど,様々なモデルに簡単に適用できる
  • ITFロスは,最尤推定のように安定している.一方,GANやRLは不安定で最終推定ベースの事前学習をしばしば必要とする.

関連研究

low-diversityの問題は,最初にLi (2016a)で指摘された.以下にdiversityを確保するための関連研究手法を列挙する.

  • Li 2016aでは,anti-language modelで応答生成時に言語モデルベースの罰則を与えた.
  • また安定した対話生成では,RLベースの手法が提案された.報酬として入力と応答のネガティブコサイン類似度を与えたが,diversityへの効果は小さい(Li, 2016b).
  • 出力トークンをアテンションやLSTM利用による,diversityを確保する応答生成もある(Wen, Zhou, Shao)
  • 対話履歴のエンコードと外部リソースの利用(Ghazvininejad, 2017)
  • over-generationやリランキングなども提案されたが(Wen, Li, Serban),モデルは様々な文を生成するように作らないといけない // この手法に対しては引用だけなのでよくわからない

また強い生成モデルとしてGANも登場.ただし対話生成は不安定なので,VAEを使った手法なども提案されている(Cao, Zhao (#58))

手法

対話生成の手法は,seq2seqで考える.この問題では,ターゲット文T={t1, t2, ..., tm}に対して,応答文Y={y1, y2, ... , ym}を生成し,最尤推定で鍛えていく.一般には,トークン毎に損失を計算していく.本手法もトークン毎(各時刻i)に計算する

Softmax Cross-Entropy Loss (SCE)

xは最後のプロジェクションレイヤの出力(softmax手前)である.各トークン毎にターゲットのトークンの単語が出るように尤度を最大化する.SCEロスでは,トークン毎に同様に扱うため,頻出単語の確率値は大きくなりがちで,様々なトークン候補から,頻出トークンしか出せない問題を生んでしまう.

screen shot 2018-12-02 at 12 19 07 pm

Inverse Token Frequency Loss

本論で提案するITFを説明する.ITFは頻度で重み付けしたSCEロスになる.wcは語彙の中のクラスcに該当する.λはハイパーパラメタで,頻度要因を調整できる.λを0にした場合は,SCEとおなじになる.
STARTやENDといった特別トークンも同様に扱った.これはら各文にかならず出るためかなり重みは小さくなるが,超長い文が出やすいなどの深刻な問題は発見されなかった
screen shot 2018-12-02 at 12 23 48 pm

コードはこんな感じ.クロスエントロピーロス(NLLoss)に対して,各トークン毎の重み付けをしているのがわかる.単純.
screen shot 2018-12-02 at 12 28 27 pm

実験

言語とドメインが異なる3つのデータセットで実験評価.

学習詳細

λはすべて0.4.またデコーダーでは,繰り返し抑制のためにλ=1でも実験(4.7章にて説明).エンコーダー,デコーダー,単語埋め込みは256次元.最大シーケンス長は28,ミニバッチ32,Adam.語彙は32k(sentencepiece利用)

ベースライン

  • seq2seq
    双方向,マルチレイヤーのLSTMエンコーダー及びマルチレイヤーのLSTMデコーダーを利用.各レイヤは残差接続(ディープでもうまく働くように).

  • seq2seq + attention
    ソース文に対してアテンションする.またTransformerで使われたScaled Dot-Product Attentionを利用(Q と K の内積をスケーリング因子 √dk で除算する).

  • seq2seq + MMI (Maximum Mutual Information)
    Li 2016aによる,MMI-antiLM推論をベースにする.MMIでの目的関数は下記.p(T|S)はソース文を与えたときのターゲット分の生成確率,第2項は罰則項のようなもので,ターゲット文Tの生成確率に重みを書けたものを引き算する(言語モデル的に確率が大きい=頻出文は,制約する方向に働かせる)

screen shot 2018-12-02 at 12 57 19 pm

ちなみにこのMMI-antiLMは学習時に利用すると,diversityが改善されなかったたため,学習時はMLE(最尤推定),評価時はMMI-antiLMで実験.本手法でもその方法を採択する.
また目的関数は下記のようにセットした.x(R^{|V|})はソース文を与えたときのencoder-decoderを使った際のプロジェクションレイヤの出力,u(R^{|V|})は,デコーダーのみを使った際のプロジェクションレイヤの出力(デコーダーのLSTMへの初期状態を0にしてエンコーダー部を省略したもの,デコーダー単体の単語の出しやすさみたいなものが測れそう).
logsoftmaxに関してを項毎にかけるなども実験したが事前実験ではうまくいかなかった.
λは0.8にセット,またMMI-antiLMはデコーダーの最初5ステップ分にしか適用していない.
screen shot 2018-12-02 at 12 57 27 pm

  • MemN2N (E2E Memroy Networks)
    コンテキストをメモリとして読み書きできるモデル.文ベクトルを作るにあたっては,各単語の埋め込みをオリジナルでは利用するが,今回は双方向マルチレイヤのLSTMを代わりに使い,文ベクトルを生成した.// デコーダーもLSTMを採用したのか?よくわからなかった

評価詳細

評価尺度として,BLEUとDISTを採用

  • BLEU-n
    n-gramベースで,生成文と正解文を比較する手法.BLUE-1とBLUE-2(unigram, bigram)を今回利用.BLEU-4を採用している研究も多いが,非常に低い値になった.これは大量に候補がありターゲット文とのマッチは難しい.またこの性能は,初期化方法やミニバッチ数などで大きく前後したため不採用にした

  • DIST-n
    生成したのユニークなn-gramの数を,すべての生成された応答文のn-gramの数で割る.DIST-1とDIST-2を計算(unigram, bigram).// 正しく理解できているかわからないが,ユニークなn-gramをどれだけ多く出力しているか度

// 本論での記載:DIST-n calculates the percentage of the distinct ngrams in all the n-grams of the generated responses.
// 元論文での記載:distinct-1 and distinct-2 are respectively the number of distinct unigrams and bigrams divided by total number of generated words.

結果

まずOpenSubtitles2018での実験.マルチターンのデータも含むためMemory Networkも利用可能.

結果はTable 2に.本論で提案するseq2seq+ITFがBLEUのスコアを高く維持しつつも,DISTで良い結果を出していることがわかる.Seq2Seq+MMIはDISTがよくなっているが,BLEUがやや減少.MemN2Nは最も高いBLEU-1を達成したが,DISTの改善は少なかった
screen shot 2018-12-02 at 1 34 34 pm

次にTwitterデータの日英の返信データで実験.データは自分たちで集めて,自己返信,ボット対話,長い対話などは除外.英語の各エピソードはすべて2ターン,日本語はすべてマルチターン.結果はTable 3.こちらでも日英同様にDIST-1が最もよく,BLUE及びDIST-2もそこそこ高い値を維持できている.更に日本語DIST-1に関しては,ラベルデータよりも高い値を得ている // 👍 オリジナルの返信よりも,より多様な表現ができているということ?

screen shot 2018-12-02 at 1 46 33 pm

ITFロスのλの選び方

式3のλをいろいろ変えてみた(頻出トークンの重みコントロール因子).
// λを大きくすると,頻出単語に抑制がかかるため,DISTが改善されるが,BLEUは低下していくトレードオフのような形にも見える.
screen shot 2018-12-02 at 1 54 53 pm

MLEモデルにおけるITF推論

MLEモデルでの評価のときに(テスト時),ITFの考えを適用してみる.これのメリットとして,λを変えて実験してみても学習し直す必要がないことである.ITFの考えを適用したトークンyの推定は下記のようになる.wが重みになり,要素毎に掛け算する.
screen shot 2018-12-02 at 1 58 43 pm

またITF+MMIが意味あることを示すために,単純にノイズ(標準正規分布からサンプル)を追加するモデルも導入して実験.
screen shot 2018-12-02 at 2 02 56 pm

ITF推論はMMI推論と近い性能を出した.また両推論ともノイズモデルよりも良いものになっている.λはBLEUスコアが各モデルで同じになるところでセットして平等に比較している.
screen shot 2018-12-02 at 2 04 30 pm

繰り返し生成の抑制

実験ではデコーダーは繰り返し表現を生成していた.
screen shot 2018-12-02 at 2 07 23 pm

そこで,デコード時に生成済みトークンの再生成を抑えるようにした.これを繰り返し抑制と呼び,下式で定義.トークンのこれまでに生成された回数を計算し,制約を与えるように掛け算している.
screen shot 2018-12-02 at 2 09 46 pm

これにより,生成済みトークンの抑制に成功しているのがTable 6でわかる.// BLEUとかDISTの値がどうなったんだろうという疑問が残る
screen shot 2018-12-02 at 2 07 31 pm

議論

ITF損失に関して,今回の結果は下記のように答えることができる

  1. ITFロスは,文法的に間違った文を生成する傾向にある?
    ITFでは,高いdiversityを生みだし,品質(BLEU基準)はMMIモデルと同等あるいはそれ以上となった.またλが0.7以下であれば,決定的な文法エラーは見当たらなかった.

  2. ITFロスは,応答生成の分布を変更することができたか?
    ITFロスは直接はトークン分布を変えているものではない.式3のスケールwはエラー貢献を調整しているだけであり,各トークンの勾配を頻度ベースでスケーリングしていることになる.これにより,レア単語の学習速度を向上させ,逆に頻出単語に関しては遅くすることができた

まとめ

応答生成のlow-diversity問題に着目し,単語の頻出度に応じたITFロスの導入により,unigramベースのdiversity score (DIST-1)を大きく改善させた.フューチャーワークとして,ITFを拡張した,Inverse N-gram Frequencyロスを考慮したい.今回のITFはunigramのみ考慮.またBLEUは対話応答の評価としては十分ではないので,人手による評価なども検討したい

コメント

  • 手法として非常にシンプルなので,試してみる価値は大いにありそう
  • unigramベースでのロス変更だと変な文になりそうだけど,結果を見るにそうでもなさそう.なぜだろう.
  • BLEUとDISTはトレードオフな感じで面白い.
  • 文全体としての不自然さ(非文),みたいなものって評価できないのかな,と思う // 言語生成論文全体的に

読んだほうが良さそうな論文

@jojonki jojonki added the NLG label Nov 23, 2018

@jojonki jojonki changed the title 🚧 2018: Another Diversity-Promoting Objective Function for Neural Dialogue Generation 018: Another Diversity-Promoting Objective Function for Neural Dialogue Generation Dec 2, 2018

@jojonki jojonki changed the title 018: Another Diversity-Promoting Objective Function for Neural Dialogue Generation 2018: Another Diversity-Promoting Objective Function for Neural Dialogue Generation Dec 2, 2018

@ryonakamura

This comment has been minimized.

Copy link

ryonakamura commented Dec 3, 2018

論文を紹介してくださりありがとうございます.
arXivNotesは以前よりかなりお世話になっておりました.自分の論文を🚧で見つけた時も驚きましたが,Podcastでも紹介していただけるとは思いもよらず感謝と恐縮の気持ちでいっぱいです.
Podcastも拝聴させていただきました(他論文も含めて).初心者の方にもわかりやすい丁寧な説明で自分も学ぶべき部分が多くありました.
いくつか挙げてくださいました疑問に回答させていただきます.

  • memory networkはエンコーディングに使用し,デコーディングはseq2seqと同様のLSTMを使用しました.
  • DISTの解釈は合っていると思います.DIST-nは「全ての生成文に含まれるn-gramから重複を除去したn-gramの数」を「全ての生成文に含まれるn-gramの数」で割った値になります.値の範囲の0~1(結果はパーセント表記)です.
  • ご指摘の通りBLEUとDISTにはトレードオフの関係がありITFとMMIの性能はどちらもλの値によって大きく変化します.個人的にGANの評価で使われるInception ScoreやFréchet Inception Distanceの言語モデル版のようなものが欲しいです.
  • section 4.4の実験を含んだ全ての実験・全てのモデルで suppressor (λ=1) を使用しています.
  • 表6にもある通りTwitterではsuppressorを導入しない場合にrepetitionがとても多く,BLEUとDISTにも大きな変動がありました (OpenSubtitlesではもともとrepetitionが少ないので変化が小さいです).傾向としてrepetitionを抑制することでLengthが短くなりDISTが上がります(DISTは短い文ほど有利な評価尺度です).BLEUはJa/Enで傾向が異なりなんとも言えません.

Twitter Ja

λ bleu1 bleu2 dist1 dist2 length repeat
0.0 12.58 3.128 5.155 17.53 8.532 45.07
0.5 11.01 2.713 7.803 25.76 6.285 16.43
1.0 10.69 2.629 7.975 26.26 6.112 6.660

Twitter En

λ bleu1 bleu2 dist1 dist2 length repeat
0.0 9.688 3.120 0.851 3.534 13.22 64.35
0.5 10.59 3.273 1.238 5.587 11.36 25.31
1.0 10.60 3.253 1.254 5.660 11.33 21.8

陰ながらですがarXivNotesとLeading NLP Ninjaを応援しています.

@jojonki

This comment has been minimized.

Copy link
Owner

jojonki commented Dec 3, 2018

@ryonakamura 本人からコメント頂けるとは思えませんでした!補足ありがとうございます.実は私がりょぼっとさんの昔からのファンでした(ブログめっちゃ見てます)

DISTに関してやっぱり解釈が間違えていたっぽいです.分母も分子も,すべての生成文における指標なのですね.テストデータ全体を使った生成文すべてに対して,「ユニークなn-gram数」÷「n-gramの総数」,ってことで合っていますかね.

言語生成は評価指標が難しいので,この分野面白いです.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment