Upload
deep-learning-jp
View
1.127
Download
0
Embed Size (px)
Citation preview
Adversarial Feature Matching
for Text Generation
2017/7/7 DL輪読会
松尾研 曽根岡侑也
1
メタ情報
• 著者
- Yizhe Zhang, Zhe Gan, Kai Fan, Zhi Chen, Ricardo Henao,
Lawrence Carin
- NIPS2016 ✕ 3, ICML ✕ 2のデューク大学PhD
• Accepted by ICML2017(arXiv on 12 Jun 2017)
• NIPS2016 Workshopの進化版
2
概要
• 文書生成にGANを用いるTextGANを提案
- GeneratorはLSTM、DiscriminatorはCNN
- FeatureMatchingと再構成の項を目的関数に追加し、
ModeCollapse・勾配消失問題を軽減
- Soft-argmax近似、Pre-training、soft-labeling等の
学習テクニック
• SeqGANよりいい評価 & 現実的な文生成に成功
3
背景:自然言語生成
• 自然言語生成の系譜
- 文書から確率分布を評価し、その分布からサンプリング
- RNNを用いたAutoEncoder [Cho et al.(2014)]
- RNNベースのVAE [Bowman et al.(2016)]
• RNNベースではうまくいかない
- 潜在空間の一部しかカバーできていない
- Exposure Bias:文後半に向けてズレが蓄積
4
背景:GAN
• 本物らしく作るGenerator vs 偽物を見抜くDiscriminator
- Dは最大化、Gは最小化するように最適化
- DはJSDを近似し、Gは近似されたJSDを最小化する方向に
• GANの問題点
- ModeCollapsing:潜在変数から同じ結果を作る
- Dが局所解に近づいた場合、勾配消失が起きる
(EBGANのTVDも同様)
5
提案手法:TextGAN
• GはLSTM、DとEはCNNを使用
• Feature Machingを採用 [Salimans et al. (2016)]
6
TextGANの目的関数
7
(λr, λmはハイパーパラメータ)
→ GANと同じ
→ Gは最小化する
→ Dは最大化する
→ 潜在変数の再構成時の誤差
TextGANの目的関数
8
(λr, λmはハイパーパラメータ)
③
②
→ GANと同じ
→ Gは最小化する
→ Dは最大化する
→ 潜在変数の再構成時の誤差
③① ②
①
Maximum Mean Discrepancy(MMD)
• Gaussianカーネルで再生核ヒルベルト空間(RKHS)へ写像し、
平均の差を用いて一致度を測定 [Gretton et al (2012)]
9
→ 今回はGaussian
TextGANの目的関数
10
(λr, λmはハイパーパラメータ)
→ GANと同じ
→ Gは最小化する
→ Dは最大化する
→ 潜在変数の再構成時の誤差
③① ②
① 偽物を見抜く方向に
② 潜在変数を最大限保存する方向に
③ Generatorがあわせるのが難しい特徴量を見つける方向に
Discriminator/Encoder:CNN
• 文を学習済みの埋め込み行列でk ✕ Tの行列に変換
• Windowサイズが異なるConvolutionのフィルタをかけ、フィル
タ毎にMaxPooling(活性化関数はtanh)
• DはMLPの後にSoftmaxで真偽を判定、EはMLPでzを復元
11
[Kim et al.(2014)]
Generator:LSTM
• よくあるLSTM
• yは生成された単語を埋め込みベクトルにしたもの
• zは毎回渡す
12
データ効率①:Compressing Network
• 課題
GaussianカーネルMMDでは特徴ベクトルfの次元に応じて、
ミニバッチのサイズを大きくする必要がある
• Compressing Network
- 特徴ベクトルfを圧縮するための全結合レイヤーを追加
- 変換後の次元数はデータ効率と表現力のトレードオフ
13
データ効率②:Gaussian covariance matching
• カーネルトリックの代わりに下記を使う
14
: の共分散
: の平均
学習テクニック①:Soft-argmax approximation
• 離散変数を含むため、Gの学習での勾配評価は難しい
• 下記の式で近似(Gumbel-Softmaxに近い?)
15
Soft-argmax近似元の式
学習テクニック②:Pre-training
• D/E(CNN)
- Permutation training
- テキストの2単語を入れ替えて偽の文を作り学習
- 単語追加・消去より難しいタスク
• G(LSTM)
- CNN-LSTM autoencoderを利用 [Gan et al. (2016)]
16
学習テクニック③:Soft-labeling
• 1 or 0とするのが普通であるが、正解=0.7-1.2、偽=0-0.3か
らランダムにサンプルする[Salimans et al (2016)]
• 本論文では、最大0.99, 最低0.01としている
17
実験
• データ
- BookCorpus(70m) + Arxiv(5m)から各50万文ずつ
• 潜在変数zは900次元
• D/E(CNN)
- Windowサイズは3,4,5で、各300個ずつのfilter
- 活性化関数はSigmoid
- D:900-200-2のMLPで真偽を判定z、出力層はSoftmax
- E:900-900-900でzを再構成、出力層はtanh
• LSTM:隠れ層500
18
実験
• その他
- Gを5回更新したらDを1回更新
- Gaussianカーネルのσ:20前後
- Optimizer:Adam(学習率:5 ✕ 10^-5)
- ミニバッチ:256
- GのLossとBLEU (正解と生成の類似度)でValidation
- 50 epoch (3days)
19
実験結果①:特徴ベクトルの分布
• 本物と偽物の2000文ずつの特徴ベクトル(900次元)の
平均と共分散をプロット
20
実験結果②:定量的比較
21
※ SeqGANは金子さんの輪読参照(16/9/30)
MM:Mean Matching, CM:Covariance Matching
MMD-L:compressed to 200次元
実験結果③:生成文
• 文法に関してはDがうまく機能しており、約95%で偽物を識別
- 丸括弧やクォーテーションをあわせて生成している
- 文法的には正しいが20語以上になると意味がおかしくなる
22
実験結果④:潜在特徴空間の軌道
• 文Aから文Bまで潜在変数を連続的に変更した際の変化
• AEより意味的にも文法的にも正しいが、大きな変化が起きる
23
まとめ
• 文書生成にGANを用いるTextGANを提案
- GeneratorはLSTM、DiscriminatorはCNN
- FeatureMatchingと再構成の項を目的関数に追加し、
ModeCollapse・勾配消失問題を軽減
- Soft-argmax近似、Pre-training、soft-labeling等の
学習テクニック
• SeqGANよりいい評価 & 現実的な文生成に成功
24
Appendix
25
【参考】Jensen-Shannonダイバージェンス(JSD)
• KLダイバージェンス:分布と分布の差異の大きさ
• JSダイバージェンス:KLに対称性を付加
26
【参考】 MMDのPytorch実装
27
【参考】TextCNN実装
• https://github.com/dennybritz/cnn-text-classification-tf
28
関連研究:Generative Moment Matching Networks(GMMNs)
• GANのDをMMDで代替するアイデアで同じ
• 自然言語で使えない(NNで使う場合近似する)
- 計算量が重く次元数が大きいケースでは厳しい
- 単語ベースの類似度のため、文構造を考慮しない
(boy is swimming と a boy is swimming)
29
関連研究:その他
• Kernelized Stein Discrepancy(KSD)
- MMDからKSDにするのはFuture Work
• WGAN
- JSDよりWassersteinのほうがよさそうだが、MMDを
使っているので勾配消失は軽減されている
30
【参考】BLEU
31
FutureWork
• KSDの導入
• DropOut
• 強化学習の戦略を用いてLSTMをアップデート
• Conditional GAN
• reverse-order LSTM
32
【参考】KSD
33