Incorporating Copying Mechanism in Sequene to

ACL2016読み会@すずかけ台
東工大 奥村・高村研究室 渡邉亮彦
※ 図は論文中から引用しています
概要
・Sequence to Sequence(Seq2Seq)を用いた研究が盛ん
・Seq2Seqにおいて,
入力の部分列を出力にコピーする現象を取り扱いたい
・この論文では,COPYNETを提案
attention-basedなEncoder-Decoderモデルに
copying mechanism を新たに導入した
copying mechanism がある
とどう嬉しいか?(対話を例に)
1. 入力の重要なセグメント(固有名詞, 日付 etc.)を参照できる
2.
(入力にある)OOVな単語も出力できる
Input: 私は群馬出身です.
Output
w/o copy:
Output
with copy: 奇遇ですね!私も群馬出身なんです!
奇遇ですね!私も栃木出身なんです!
Background:
Attention Mechanism
RNNSearch
[Bahdanau et al., 2014]
RNNEncoderの各隠れ層をとっておき
Decoder
各隠れ層を荷重平均し
文脈ベクトルを作成
↵t⌧
は,前回のDecの隠れ層
対応するEncの隠れ層
st
h⌧
1
から求める
(文脈ベクトルはこれまでの出力に応じて動的に変化)
RNNDecoderの単語生成に用いる
cf. http://www.slideshare.net/yutakikuchi927/deep-learning-nlp-attention
Encoder
Background:
Attention Mechanism
RNNSearch
[Bahdanau et al., 2014]
RNNEncoderの各隠れ層をとっておき
Decoder
各隠れ層を荷重平均し
文脈ベクトルを作成
↵t⌧
は,前回のDecの隠れ層
対応するEncの隠れ層
st
h⌧
1
から求める
(文脈ベクトルはこれまでの出力に応じて動的に変化)
RNNDecoderの単語生成に用いる
cf. http://www.slideshare.net/yutakikuchi927/deep-learning-nlp-attention
Encoder
Background:
Attention Mechanism
RNNSearch
[Bahdanau et al., 2014]
RNNEncoderの各隠れ層をとっておき
各隠れ層を荷重平均し
文脈ベクトルを作成
提案手法(COPYNET)はこのモデルを拡張
↵t⌧ は,前回のDecの隠れ層
st mechanism
1
copying
を導入
対応するEncの隠れ層 h⌧
Decoder
から求める
(文脈ベクトルはこれまでの出力に応じて動的に変化)
RNNDecoderの単語生成に用いる
cf. http://www.slideshare.net/yutakikuchi927/deep-learning-nlp-attention
Encoder
RNNSearchと同じ
Decoderに
と
部分を新たに導入
RNNSearchと同じ
・二種類のモードの確率を組み合わせて出力する単語を予測
・generate-mode
vocab内の単語が出力される確率
・
入力内の単語がコピーされる確率
コピーされる確率は,Enc
・copy-modeにより,OOVだが入力にある単語は出力可
RNNSearchと同じ
・二種類のモードの確率を組み合わせて出力する単語を予測
・generate-mode
vocab内の単語が出力される確率
・
入力内の単語がコピーされる確率
コピーされる確率は,Enc
・copy-modeにより,OOVだが入力にある単語は出力可
Decoder: 単語のscoring
・各単語のscoring function
generate-mode(RNNSearch)
copy-mode
Encの対応する隠れ層を用いる
RNNSearchの単語スコアに
入力内の単語をコピーするスコアが加算
・UNKはOOVでsourceにない単語(インスタンスごとに異なる)
RNNSearchと同じ
・前回出力した単語が入力に存在する場合,
対応するEncの隠れ層を用いてDecの状態を更新(Selective Read)
・前回出力した単語が入力のどの 位置 にあるかがDecの状態に反映
・コピーしたい入力単語が連続している場合でもうまく扱える
RNNSearchと同じ
・前回出力した単語が入力に存在する場合,
対応するEncの隠れ層を用いてDecの状態を更新(Selective Read)
・前回出力した単語が入力のどの 位置 にあるかがDecの状態に反映
・コピーしたい入力単語が連続している場合でもうまく扱える
学習
・負の対数尤度を最小化
・End-to-Endで学習できる
・データからgenerate-modeとcopy-modeの連動を学習
・大抵の場合,片方のモードが支配的になる
評価:Synthetic Dataset
・5種類の人工的な変数の変換ルールを作成
シンボル(1000種類)と 変数 , を組み合わた系列の変換ルール
変数にシンボルの系列(1-15シンボル)を代入し,インスタンスを生成
→ 変換ルールに則って変数に代入された系列をコピーし, 正しい系列を出力できるか?
Training: 20,000 instances Test: 20,000 instances
評価:Synthetic Dataset
生成した系列がExact Matchした割合
・Enc-Dec, RNNSearchを上回っている
・ルールを学習し,変数に代入されたsub-sequenceを的確にコピー
評価:Synthetic Dataset
・copy-modeの活性度合いを表すheatmap
copy-modeとgenerate-modeがうまく連動している
評価:文書要約
・LCSTSデータセットを用いる[Hu et al., 2015]
Weibo(中国版のTwitter)のnews mediaの投稿から収集した
short news(80文字未満)とその要約(10-30文字)の対からなるデータ
PART III :3人のアノテータが5段階で要約の適切さを評価
各アノテータのスコアが一致したものを抽出したもの
training data
test data
評価:文書要約
RNN, RNN context ではcharacter-basedな場合にROUGEスコアが高い
COPYNETではword-basedな場合にROUGE-2スコアが高い
→ COPYNETがOOVを出力することができたためROUGEスコアが向上
・入力中のの連続した単語もコピーできている
・出力の大半がコピーによって生成された場合もfluent(らしい)
・OOVを含む要約も生成できる
評価:Single-turn Dialogue
・Baidu Tieba(掲示板)から会話を収集
・収集した会話から173パターンのsingle-turnの会話を抽出
e.g.
・Synthetic datasetと同様に,変数に適切な
sub-sequence(固有表現,日付等)を代入しデータを拡張
Training: 6,500 instances Test: 1500 instances
trainingとtestで
代入したsub-sequenceの
重複がないデータ
評価:Single-turn Dialogue
・正解とは異なるが,意味的には正しいものが生成されている
・正しくコピーできない場合も
まとめ
・Seq2SeqにCopying mechanismを導入した COPYNETを提案
・データからEnd-to-Endで学習できる
・generation-modeとcopy-modeの連動を学習
(どのタイミングでcopy-modeに入り終わるか等)
・OOVな単語を出力することができる