>100 Views
August 20, 19
スライド概要
2019/08/05
Deep Learning JP:
http://deeplearning.jp/hacks/
DL輪読会資料
2019/08/05 DLHacks 論文実装 Topic‑Aware Neural Keyphrase Generation for Social Media Language Takuya MATSUDATE | @m3yrin ‑ 1
論文 ‑ 2
Paper Info Topic‑Aware Neural Keyphrase Generation for Social Media Language Wang+, 2019 ACL 2019 Long paper arXiv : https://arxiv.org/pdf/1906.03889.pdf ‑ 3
TL;DR seq2seq キーフレーズ生成モデル + Neural Topic Modelingを共同 して使用し、ソーシャルメディアの短く砕けた文章からのキーフレ ーズの予測性能を上げた Twitter等のデータセットで効果を確認した ‑ 4
背景 ソーシャルメディア等によってテキストは爆発的に増えている テキストから自動で重要情報を抽出させたい ‑ 5
キーフレーズ予測 Extraction approach ある程度の成果を上げた ドキュメント中に現れないキーフレーズを推測させるタスクで はどうしようもなかった Keyphrase generation 2017年に論文(Meng+, ACL2017)が発表される Encoder‑Decoderとしてキーフレーズを生成するのでAbsent keyphraseにも対応できる。Scientific Articleで成果を上げた。 ‑ 6
課題 キーフレーズ生成モデルはソーシャルメディアのテキストでうまく いかない "よく書かれた文章"ではうまくいくが、ソーシャルメディアの短くて砕 けた文章ではうまくいかなかった ‑ 7
目的 ソーシャルメディアで扱われる文章からのキーフレーズ生成 ‑ 8
手法 Neural Topic Modelから得られる潜在トピックの情報も使って、入力文 書中に存在しないキーフレーズを推測 ‑ 9
トピックモデル 文書集合で話題となっているトピックを、同じ文書で現れやすい語彙と して抽出する手法の総称 Latent Dirichlet Allocation(LDA) 一つの文書に複数のトピックを持つと仮定し、文章が生成される過程を モデル化 θd ∼ Dir (α0 ) , for d ∈ D zn ∼ M ulti (θd ) , for n ∈ [1, Nd ] wn ∼ M ulti (βzn ) , for n ∈ [1, Nd ] : : ‑ Topic θd 文書 d に対する 分布 zn 文書中の単語 wn に対するトピック割当 α0 , βzn ハイパーパラメータ : 10
Neural Topic Model 2017年あたりに論文が発表され始めた Miao et al. (2017); Srivastava and Sutton (2017) 事後分布の推論をNNで行う, 有り体に言えばVAE モデルをいじるごとに推論手法を導出する必要がなくなる ‑ 11
今回のモデル Seq2seq + Neural topic model ‑ 12
データ collection C = {x1 ,x2 , ...,x∣C∣ } のそれぞれの文章xから、 BoWベクトル xbow ∈RV , (V は語彙数) 系列ベクトル xseq を作成 ‑ 13
Neural Topic Modeling 今回は最も簡単なGaussian Softmaxモデル(GSM)を使用している 有限の潜在トピック数K を仮定するモデル NTMモデル ‑ 14
Neural Topic Model BoW Encoder μ = fμ (fe (xbow )) , log σ = fσ (fe (xbow )) ReLUのFC層 f∗ (⋅) は ‑ 15
Neural Topic Model BoW Decoder 以下のステップでxbow を再構成 潜在トピック変数zをサンプル z ∼ N (μ, σ2 ) 混合トピックを計算 θ = sof tmax (fθ (z)) For each word w ∈ x : w ∼ sof tmax (fϕ (θ)) ‑ 16
Sequence Encoder Embedding vector νi を計算 wi ∈xseq (i = 1, 2, ..., ∣x∣) から Bi‑GRUで各時刻でのhidden stateを計算 hi = fbiGRU (νi ,hi−1 ) hidden stateをまとめてメモリバンクMを作成 M = ⟨h1 ,h2 , … ,h∣x∣ ⟩ ‑ 17
Topic‑Aware Sequence Decoder 混合トピックθと前ステップの出力uj を入力として、Unidirectional GRU で逐次デコード sj = fGRU ([uj ; θ] ,sj−1 ) ‑ 18
Topic‑Aware Sequence Decoder 注意重みを計算し、メモリバンクMを集約 αij = ‑ exp (fα (hi ,sj , θ)) ∣x∣ ∑i′ =1 exp (fα (hi′ ,sj , θ)) ∣x∣ , cj = ∑ αij hi i=1 19
Topic‑Aware Sequence Decoder cj とsj から単語を生成 pgen = sof tmax (Wgen [sj ;cj ] +bgen ) ‑ 20
Topic‑Aware Sequence Decoder 重みをつけて入力データ中の単語分布を合成し、最終的な出力を計 算(Copy機構) λj = sigmoid (Wλ [uj ;sj ;cj ; θ] +bλ ) ∣x∣ pj = λj ⋅ pgen + (1 − λj ) ⋅ ∑ αij i=1 ‑ 21
目的関数 NTMのLoss LN T M = DKL (p(z)∥q(z∣x)) −Eq(z∣x) [p(x∣z)] キーフレーズ生成のLoss N LKG = − ∑ log (P r (yn ∣xn , θn )) n=1 最終的なLoss L =LN T M + γ ⋅LKG ‑ 22
実験 ‑ 23
データ Twitter / Weibo / Stack Exchenge のデータを使用 TwitterとWeiboのtargetは投稿に付与されたハッシュタグ(?) SEのtargetは投稿に付与されたタグ 前処理は先行研究と条件を同じになるように頑張った ‑ 24
結果 Latent Topicを使うとしっかり性能が上がる ‑ 25
Absent Keyphraseへの性能 Absent Keyphraseに対しても一定の改善が見られる 今回のモデルには関係ないが、Copy機構を使うとAbsent Keyphraseに対しては性能が若干下がるとの報告 ‑ 26
実装 ‑ 27
著者実装 提供されている! https://github.com/yuewang‑cuhk/TAKG ‑ 28
Neural Topic Modeling NTMの実装も含まれてる! ‑ 29
実装1 NTMのデータローダ周りと評価関数を作って検証 実装 https://github.com/m3yrin/NTM 解説記事 https://qiita.com/m3yrin/items/3a8157f65eb9862ac21e ‑ 30
結果1 LDAの方が軽く、性能も安定 (当たり前といえば当たり前) NTMの方が細かなモデルの調整を行いやすい LossにSparsityについてのL1ペナルティ項を加えて、単語分布の重 なりを抑制できた(ようにみえる) ‑ 31
実装2(検証中) 日本語のデータセットでキーフレーズ生成 Qiita(https://qiita.com)の投稿をQiita apiを使用して収集 Qiita記事のタグをtargetとして使用しモデルを構築 実装 https://github.com/m3yrin/topic‑aware‑tag‑prediction ‑ 32
‑ 33
追記 NTMの目的関数のp(z), q(z∣x) が逆ではないか。 確認したところ、参考文献では全て LN T M = DKL (q(z∣x)∥p(z)) −Eq(z∣x) [p(x∣z)] と、なっていて、今回の論文のみが逆になっていました。逆になってい る理由はわかりませんでした。 ‑ 34
‑ 35