ブログではないです

ブログでなくはないです

THE CURIOUS CASE OF NEURAL TEXT DeGENERATION (Ari+, ICLR'20)

https://arxiv.org/pdf/1904.09751.pdf

概要

ニューラルテキスト生成モデルのdecodingに関する論文.
ニューラルテキスト生成では単語ごとに生成確率を推定して,そのargmaxを取っていく形 (いわゆるgreedy decoding) や beam searchによる生成が一般的なアプローチである.ただ,そうしたやり方では対話応答生成やstory generationなど,出力の高い多様性が期待されるタスクにおいて情報量の少ない似たような出力,あるいは同じフレーズを延々とリピートするような生成が行われてしまう事が問題で,それをどうにかしたいという話.

手法

論文中ではNucleus samplingという手法を提案している.かなりシンプルで,確率分布の単語について上位からの累積確率を計算し,それがハイパーパラメータp (論文中ではp=0.95) に達するまで単語を候補に追加し,その中から確率に従って選択するというもの (例えば [0.5, 0.3, 0.15, ...] という分布なら累積確率 [0.5, 0.7, 0.95, ...] なので3単語目までが対象) . 既存手法にはtop-k samplingなどと呼ばれる,decode時に確率分布内の上位k単語だけを候補とし(論文中の実験ではk=40 or 640を試している),truncateした分布からランダムに選択する手法があるが,それとかなり似ている.
意図としては,確率分布がpeakyでまず間違いなく次はこの単語が来る,といった状況で,kを大きく取った時に超低確率な単語がたまたまサンプルされてしまって変な文になったり,逆にflatな確率分布に対してkが小さいと生成の幅が狭くなってしまうので,分布に応じてコントロールしたいということのようだ.

実験

f:id:jack_and_rozz:20210312191424p:plain:w400

GPT-2を用いてシードとなるパラグラフの続きを生成するタスクで,いくつかのdecoding手法を提案手法と比較. いくつかの評価尺度 (中身は論文参照) について,人間の書いたテキストとの近さを比較していた.結果としては,greedyやbeam searchと比べてsampling-basedな手法ではrepetitionがかなり抑えられているし,self-BLEUも低く(≒互いに異なる生成文に)なっている.ただ,top-k samplingと比べて提案手法に大きく優位性があるかと言うと怪しい? *1

雑感

sampling-basedなやり方で多様性が上がりそうなのも,argmaxを取るアプローチで問題が起きてしまうのも分かるが,主にrepetition周りなど,根本的になんでこんなことになるのか,という部分で納得しきれなかった感じがある(ちゃんと読み込めていないだけかもしれない)
下図は論文中のちょっと面白かった分析で,"I don't know. " というフレーズをひたすら生成し続けて,その生成確率を眺めてみると,生成すればするほど同じフレーズの生成確率が高くなる正のフィードバックループになっていたそうな.こういう同じものをひたすら繰り返す例は訓練例に無いはずなのに,結果的にこうなってしまうのはdecodingだけの問題なのか?argmaxを取ることそのものじゃなく,repetitionを避けるような分布が計算できていない事が問題,あるいは今のアーキテクチャの計算の何かが原因となって,正のフィードバックループが自然と出来るようになってしまっているのではないか?という感覚も個人的にはある.

f:id:jack_and_rozz:20210312195058p:plain:w400

*1:自分でも試してみたが,正直top-kもNucleus samplingもハイパーパラメータ次第で傾向が大きく変わってしまうのでなんとも言えない感じがあった