【論文紹介】distributed representations of sentences and documents

46
Distributed Representations of Sentences and Documents Proceedings of The 31st International Conference on Machine Learning (ICML 2014), pp. 1188 – 1196, 2014 スススススス スス スス スススススススス ススススス ススススス ススススススススススススススス Quoc Le, Tomas Mikolov Google Inc. 1/46 スススス

Upload: tomofumi-yoshida

Post on 12-Apr-2017

1.059 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: 【論文紹介】Distributed Representations of Sentences and Documents

Distributed Representations of Sentences and Documents

Proceedings of The 31st International Conference on Machine Learning (ICML 2014),

pp. 1188 – 1196, 2014

スライド作成:吉田 朋史工学院大学大学院 工学研究科 情報学専攻

インタラクティブメディア研究室

Quoc Le, Tomas MikolovGoogle Inc.

1/46

論文紹介

Page 2: 【論文紹介】Distributed Representations of Sentences and Documents

概要文書をベクトルで表現 → Bag-of-Words (BOW) が一般的

⇒ 2 つの大きな欠点1. 単語の語順情報が失われる2. 単語の意味を表現する事が苦手

2/46

提案手法: Paragraph Vector ( doc2vec の中身)◦ 可変長の文書 → 文書の固定長特徴ベクトル◦ 文書中に出現する単語を予測するよう学習 → 特徴ベクトルを獲得◦ 学習にはニューラルネットワークを使用

評価実験: 文書の極性(肯定 or 否定)判定 & 文書検索◦ 短文・長文それぞれで既存手法を大幅に上回る◦ 世界最先端の精度(筆者談)

Page 3: 【論文紹介】Distributed Representations of Sentences and Documents

本資料の構成

3/46

word2vec の説明: 40%◦ doc2vec の基本アイデアは word2vec の発展系(筆者の以前の研

究)◦ 文書に応用させただけで違いはちょっとだけだよ!(筆者談)

doc2vec の説明: 20%◦ word2vec と対比しながら解説◦ 圧倒的な実験結果をご紹介するぜ!!

前提となる基本知識の説明: 40%◦ Bag-of-Words (ベクトル空間モデル)◦ ニューラルネットワーク

※ 注意◦ 機械学習の細かいアルゴリズムはすっ飛ばします◦ 引用元の記載が無い図は紹介論文本文中の図を使用しています

Page 4: 【論文紹介】Distributed Representations of Sentences and Documents

背景

4/46

文書のクラスタリング → 自然言語処理の重要なテーマ◦ ウェブ検索・スパムフィルタリングなどの中核技術◦ 文書をベクトルとして扱うアルゴリズムが多数

◦ K-means †◦ ロジスティック回帰 ††

† HTTP://TECH.NITOYON.COM/JA/BLOG/2009/04/09/KMEANS-VISUALISE/

†† HTTP://QIITA.COM/HIK0107/ITEMS/9B6E1E989F4EAEFDC31D

Page 5: 【論文紹介】Distributed Representations of Sentences and Documents

Bag-of-Words (BoW)

5/46

文書をベクトルで表す最もポピュラーな方法◦ 行:文書中に各単語が何回出現したか(単語頻度)◦ 列:各文書を表すベクトル

𝒅𝟏=(2211000)

仕事世話

日課散歩

私犬

𝒅𝟐=(2000211)

仕事世話

日課散歩

私犬

猫𝑫=(

2 22 01 01 00 20 10 1

)仕事世話

日課散歩

私犬

𝒅𝟏 𝒅𝟐

文書 1 () = 「私は犬を飼っていて,犬の散歩は私の日課だ」文書 2 () = 「私は猫を飼っていて,猫の世話は私の仕事だ」

例)

Page 6: 【論文紹介】Distributed Representations of Sentences and Documents

Bag-of-Words の欠点

6/46

単語の語順情報が失われる◦ 全く同じ単語が同じ頻度で含まれる → 同じ文書と判定◦ bag-of-n-grams は語順も考慮 → しかし疎&高次元になりやすい

単語の意味関係を表現出来ない◦ 文書 1 () = 「私は犬が好き」◦ 文書 2 () = 「僕はポメラニアンが好き」

好き

ポメラニアン

が犬

私は

𝑫=(1 01 11 01 11 10 10 1

)𝒅𝟏 𝒅𝟐

Page 7: 【論文紹介】Distributed Representations of Sentences and Documents

n-gram

7/46

単語を最小単位 → 1 単語ずつずらして文章を分割 例)「 This is a good pen 」◦ : This is / is a / a good / good pen◦ : This is a / is a good / a good pen

日本語文章: 文字を最小単位として文を分割例)「今日は大雨です。」◦ :今日 / 日は / は大 / 大雨 /雨で / です / す。 /。◦ :今日は / 日は大 / は大雨 / 大雨で /雨です / です。 / す。 / 。◦ 形態素解析:今日 / は / 大雨 / です /。◦ → bigram と呼んだりする

Page 8: 【論文紹介】Distributed Representations of Sentences and Documents

単語のベクトル表現

8/46

ニューラルネットワークで単語ベクトルを得る方法が確立◦ 筆者が考えた word2vec など◦ 文章は単語の組み合わせ → 単語ベクトルで文書も表現できない

か?

手法 1 :文書内の全単語ベクトルの重み付き平均→ 単純に足し合わせると BOW と同様に語順を反映できない

手法 2 :構文解析で単語間の関係や順序を考慮して重み付き平均◦ 構文解析:文の主語動詞,修飾関係などを分析◦ 単文単位にしか適応できない→ フレーズ(文より短い)やパラグラフ(複数文)に対応できない

単語ベクトルを組み合わせるだけでは文書を上手く表現できない

Page 9: 【論文紹介】Distributed Representations of Sentences and Documents

提案手法

9/46

word2vec と同様のアイデアで文書を表現するベクトルを獲得◦ 文書を表現するベクトル → パラグラフベクトル◦ パラグラフ:複数文の集まり(≒ 段落)◦ パラグラフ中に出現する単語を予測するよう学習

既存手法と比べた利点◦ どんな長さの入力文にも対応できる◦ 入力の長さによって処理が変わらない&構文解析も必要ない

なぜ「パラグラフ」ベクトル?◦ 文書( document )が短くても長くても OK !と強調したかった(筆者

談)◦ genism の実装名は doc2vec ですが・・・( doc : document の略)

Page 10: 【論文紹介】Distributed Representations of Sentences and Documents

閑話休題

10/46

まず word2vec について理解する必要があります

word2vec ではニューラルネットワークを学習に使います

というわけでニューラルネットワークのお勉強です

Page 11: 【論文紹介】Distributed Representations of Sentences and Documents

ニューロン(神経細胞)

11/46

人間の脳を構成する細胞◦ 入力信号を細胞毎に重み付けて合計◦ 合計値が閾値を超えたときだけ次の細胞へ信号送信

出力信号

閾値を超えると信号送信

入力信号の重み付き総和

重み付け

A

B

閾値

細胞

細胞

入力信号

入力信号

Page 12: 【論文紹介】Distributed Representations of Sentences and Documents

ニューラルネットワーク( NN )

12/46

ニューロンの働きを数学でモデル化◦ 入力をユニット毎に重み付けて合計◦ 合計値が閾値を超えたときだけ次のユニットへ出力◦ 入力 / 出力はベクトルで表現する事が多い

入力

𝒙𝟏=(31)

𝒙𝟐=(12)

𝒘𝟏=2

𝒘𝟐=−3

重み2

( 3−4 )

重み付き総和

𝒇 ( 3−4)◦ 値を 0~1 に変換

◦ 0 :信号無し◦ 1 :信号あり

活性化関数

(10)出力

−3 (12)

Page 13: 【論文紹介】Distributed Representations of Sentences and Documents

脳の情報処理の仕組み

13/46

物体や言葉を認識

処理を行う細胞(色・形の認識など)

感覚器官(目・耳など)

信号

細胞

︙細胞

細胞

︙細胞

細胞

︙細胞

Page 14: 【論文紹介】Distributed Representations of Sentences and Documents

階層型ニューラルネットワーク

14/46

出力層

︙︙

中間層入力層

︙ ︙ ︙

中間層が大量 → Deep Learning

Page 15: 【論文紹介】Distributed Representations of Sentences and Documents

NN を用いたクラスタリング

15/46

例)文書のカテゴリ分類◦ 入力:単語「工学院」が含まれる文書 ◦ 出力:文書が各カテゴリに属する確率

◦ が「工学院大学」カテゴリに属する確率◦ が「日本工学院」カテゴリに属する確率

𝒑=(𝑝1𝑝2⋮ )

出力層中間層入力層

𝒅𝟏=(𝑥1𝑥2⋮𝑥𝑛

) ︙活性化関数

確率分布に変換

都合の良い関数が必要

Page 16: 【論文紹介】Distributed Representations of Sentences and Documents

Softmax 関数

16/46

𝑓 (𝑥1𝑥2⋮𝑥𝑛

)=(𝑒𝑥1

𝑒 𝑥1+𝑒 𝑥2+⋯+𝑒𝑥𝑛

𝑒𝑥2

𝑒 𝑥1+𝑒 𝑥2+⋯+𝑒𝑥𝑛

⋮𝑒𝑥𝑛

𝑒 𝑥1+𝑒 𝑥2+⋯+𝑒𝑥𝑛

) 𝑓 (1021 )=(0.9995⋯0.0003⋯0.0001⋯)例)

入力ベクトル → 確率分布を表す出力ベクトルに変換◦ 各次元の値= 0~1◦ 各次元の値の総和= 1◦ 元の値の大小関係を保存

Page 17: 【論文紹介】Distributed Representations of Sentences and Documents

バックプロパゲーション

17/46

正解値との誤差を少なくするように重み の値を更新◦ 訓練データから正解値 を算出 → 出力値 との誤差を算出

◦ が「工学院大学」カテゴリに属する実際の確率◦ が「日本工学院」カテゴリに属する実際の確率

𝒑=(𝑝1𝑝2⋮ )出力層中間層入力層

𝒅𝟏=(𝑥1𝑥2⋮𝑥𝑛

) ︙Softmax関数

確率分布に変換

𝒑 ′=(𝑝1′

𝑝2′

⋮ )正解値

誤差

更新更新

誤差を減らすよう重みを更新

Page 18: 【論文紹介】Distributed Representations of Sentences and Documents

閑話休題2

18/46

ニューラルネットワークでの学習の流れが分かりました

次は word2vec の仕組みを理解しましょう

Page 19: 【論文紹介】Distributed Representations of Sentences and Documents

Harris の分布仮説

19/46

「飼っている と散歩」→ に入る単語は?◯◯ ◯◯◦ 「犬」「イヌ」「ポメラニアン」などなど◦ 同じ文脈で使われる単語 → 似た意味を持つ傾向がある◦ 同じ文脈 ≒ 共起する周辺単語が同じ

基本方針:ある単語 周辺単語を予測する ⇄ NN を構築 ◦ その過程で単語を表現するベクトルを上手いこと学習したい◦ 大規模データで学習できるようにモデルはなるべく単純にしたい

HTTP://WWW.TANDFONLINE.COM/DOI/PDF/10.1080/00437956.1954.11659520

Page 20: 【論文紹介】Distributed Representations of Sentences and Documents

つまりどういうことだってばよ?

20/46

◯= 「犬」な確率

飼って

いる

散歩

周辺単語

こういう確率をニューラルネットワークに予測させる

コンテキスト(文脈)◦ 別名 Window

前 2 単語

後 2 単語

Page 21: 【論文紹介】Distributed Representations of Sentences and Documents

提案モデル(今回は CBOW を紹介)

21/46

周辺単語 → 該当単語を予測

Continuous BOW Skip-gram

該当単語 → 周辺単語を予測

HTTPS://ARXIV.ORG/ABS/1301.3781

Page 22: 【論文紹介】Distributed Representations of Sentences and Documents

One-hot ベクトル

22/46

入力単語を表すベクトル◦ 次元数:総語彙数 ◦ 該当する単語の次元だけ値が 1 ,その他の次元の値は全て 0◦ word2vec → 総次元数は数百万

𝒙犬=(00100) と

飼っている

散歩

𝒙 𝒊=(0⋮010⋮0) 次元

例)文書「飼っている犬と散歩」における単語「犬」の単語ベクトル

One-hot ベクトル

Page 23: 【論文紹介】Distributed Representations of Sentences and Documents

入力層への入力

23/46

𝒙𝟏=(10000) と

飼っている

散歩

𝒙𝟒=(00010)

と犬

飼っている

散歩

𝒙𝟐=(01000)

と犬

飼っている

散歩

𝒙𝟓=(00001) と

飼っている

散歩

(𝒙𝟏 𝒙𝟐 𝒙𝟑 𝒙𝟒 )

Page 24: 【論文紹介】Distributed Representations of Sentences and Documents

word2vec が出したいもの

24/46

One-hot ベクトル

𝒘 𝒊=(0.1234…0.5678…⋮ ) 数百次元𝒙 𝒊=(

0⋮010⋮0) 数百万次元

単語ベクトル

Page 25: 【論文紹介】Distributed Representations of Sentences and Documents

ちょっとタンマ

25/46

Q. 単語ベクトルってどこで獲得するの?

⇒ A. 値が更新されるところです!!

誤差誤差を減らすよう重みを更新

𝒑 ′=(𝑝1′

𝑝2′

⋮ )正解値

更新更新𝒑=(𝑝1𝑝2⋮ )

出力層中間層入力層

︙ Softmax関数𝒙 𝒊=(

0⋮010⋮0)

Page 26: 【論文紹介】Distributed Representations of Sentences and Documents

入力層→中間層の重み

26/46

各単語の単語ベクトルを横に並べた行列◦ :単語 を表現する 次元列ベクトル(: 200~400 )◦ 各次元は適当な初期値を与えておく

𝑾=(𝒘𝟏 𝒘𝟐 ⋯ 𝒘 𝒊 ⋯ 𝒘 𝑺 )

¿ ( 𝑤1 ,1 𝑤2 , 1 ⋯ 𝑤 𝑖 ,1 ⋯ 𝑤𝑆, 1𝑤1 , 2 𝑤2 , 2 ⋯ 𝑤 𝑖 , 2 ⋯ 𝑤𝑆 ,2

¿𝑤1 ,𝑁 𝑤2 ,𝑁 ⋯ 𝑤𝑖 ,𝑁 ⋯ 𝑤𝑠 ,𝑁)⋮ ⋮ ⋮ ⋮

⇒ こいつは一体何者?

Page 27: 【論文紹介】Distributed Representations of Sentences and Documents

種明かし

27/46

入力( One-hot ベクトル) を掛け算してみると・・・?

𝑾 𝒙 𝒊=( 𝑤1,1 𝑤2,1 ⋯ 𝑤𝑖 ,1 ⋯ 𝑤𝑆 ,1𝑤1,2 𝑤2,2 ⋯ 𝑤𝑖 , 2 ⋯ 𝑤𝑆 ,2

¿𝑤1 ,𝑁 𝑤2 ,𝑁 ⋯ 𝑤𝑖 ,𝑁 ⋯ 𝑤𝑆 ,𝑁)(0⋮010⋮0)=(

𝑤 𝑖 ,1𝑤 𝑖 ,2

⋮𝑤𝑖 ,𝑖⋮

𝑤𝑖 ,𝑁

)¿𝒘 𝒊

⇒ 単語 に対応する単語ベクトル が取り出せた

Page 28: 【論文紹介】Distributed Representations of Sentences and Documents

入力層の出力(中間層の入力)

28/46

𝑾 (𝒙𝟏 𝒙𝟐 𝒙𝟑 𝒙𝟒 )=(𝒘𝟏 𝒘𝟐 𝒘 𝟑 𝒘𝟒 )

文脈ベクトル

入力単語 と重み の掛け算結果

結果を結合 →文脈ベクトル を出力(活性化関数は使わない)◦ 前後の単語を考慮した文脈を表すベクトル◦ 統合の方法には議論あり(総和 or 平均 or 連結(?))◦ 現在では連結が採用されることが多いらしい(今回は総和で)

Page 29: 【論文紹介】Distributed Representations of Sentences and Documents

中間層→出力層の重み

29/46

各単語ベクトルの転置ベクトルを縦に並べた行列◦ 転置ベクトル:ベクトルの行と列を入れ替えたもの◦ 入力層→中間層の重み の転置行列

𝑾 𝒕=(𝒘𝟏

𝒕

𝒘𝟐𝒕

⋮𝒘 𝒊

𝒕

⋮𝒘 𝑺

𝒕)=(

𝑤1,1 𝑤1 , 2 ⋯ 𝑤1 , 𝑁𝑤2 , 1 𝑤2 , 2 ⋯ 𝑤2 ,𝑁¿𝑤𝑖 ,1 𝑤 𝑖 ,2 ⋯ 𝑤𝑖 ,𝑁

¿𝑤𝑆 ,1 𝑤𝑆 ,2 ⋯ 𝑤𝑆,𝑁)⋮

Page 30: 【論文紹介】Distributed Representations of Sentences and Documents

中間層の出力(まで後一歩)

30/46

文脈ベクトル と重み の掛け算

𝑾 𝒕𝒄=(𝑤1,1 𝑤1,2 ⋯ 𝑤1 ,𝑁𝑤2,1 𝑤2,2 ⋯ 𝑤2, 𝑁¿𝑤𝑖 ,1 𝑤𝑖 ,2 ⋯ 𝑤𝑖 ,𝑁

¿𝑤𝑆 ,1 𝑤𝑆 ,2 ⋯ 𝑤𝑆 ,𝑁)(𝑣1+2+3+4 , 1𝑣1+2+3+4 , 2

⋮𝑣1+2+3+4 ,𝑁

)=(𝒘𝟏

𝒕 ∙𝒄𝒘𝟐

𝒕 ∙𝒄⋮

𝒘 𝒊𝒕 ∙𝒄⋮

𝒘𝑺𝒕 ∙𝒄

)各次元の値 → 単語ベクトル と文脈ベクトル の内積◦ 内積 → コサイン類似度の正規化する前の値◦ 文脈と単語の共起度の強さを表すスコアのような役割

Page 31: 【論文紹介】Distributed Representations of Sentences and Documents

ようやく出番だ! Softmax 関数!

31/46

𝑓 (𝒘𝟏

𝒕 ∙𝒄𝒘𝟐

𝒕 ∙𝒄⋮

𝒘 𝒊𝒕 ∙𝒄⋮

𝒘𝑺𝒕 ∙𝒄

)=(𝑒𝑤1

𝑡 ∙𝑐

𝑒𝑤1𝑡 ∙𝑐+𝑒𝑤2

𝑡 ∙𝑐+⋯+𝑒𝑤 𝑖𝑡∙𝑐+⋯𝑒𝑤𝑆

𝑡 ∙𝑐

𝑒𝑤2𝑡 ∙𝑐

𝑒𝑤1𝑡 ∙𝑐+𝑒𝑤2

𝑡 ∙𝑐+⋯+𝑒𝑤 𝑖𝑡∙𝑐+⋯𝑒𝑤𝑆

𝑡 ∙𝑐

⋮𝑒𝑤𝑖

𝑡 ∙𝑐

𝑒𝑤1𝑡 ∙𝑐+𝑒𝑤2

𝑡 ∙𝑐+⋯+𝑒𝑤 𝑖𝑡∙𝑐+⋯𝑒𝑤𝑆

𝑡 ∙𝑐

⋮𝑒𝑤𝑆

𝑡 ∙𝑐

𝑒𝑤1𝑡 ∙𝑐+𝑒𝑤2

𝑡 ∙𝑐+⋯+𝑒𝑤 𝑖𝑡∙𝑐+⋯𝑒𝑤𝑆

𝑡 ∙𝑐

)=(𝑝1𝑝2⋮𝑝𝑖⋮𝑝𝑆

)

→ 確率値 に変換◦ =ある文脈(周辺単語群) において単語 が出現する確率 ◦ 内積の値の大小関係を考慮して確率に変換 ⇒ 出力層への入力

Page 32: 【論文紹介】Distributed Representations of Sentences and Documents

つまりこういうことだってばよ!!

32/46

の値を更新 → 単語ベクトル を獲得◦ → 学習データから算出した実際の確率◦ (「犬」の出現確率)が高くなるように重み を更新◦ は の転置行列 → 更新する必要無し

誤差を減らすよう重みを更新

誤差

𝒑 ′=(𝑝1′

𝑝2′

𝑝3′

𝑝4′

𝑝5′

⋮)

正解値

更新𝒑=(

𝑝1𝑝2𝑝3𝑝4𝑝5⋮

)出力層中間層入力層

Softmax関数

「飼って」 =

「いる」 =

「と」 =

「散歩」 =

(𝑤1+2+3+ 4,1

𝑤1+2+3+ 4,2

⋮𝑤1+2+3+ 4 ,𝑁

)

Page 33: 【論文紹介】Distributed Representations of Sentences and Documents

成し遂げた

33/46

以上, word2vec についての論文紹介でした

ご清聴ありがとうございました!!!

(もうちょっとだけ続くんじゃ)

Page 34: 【論文紹介】Distributed Representations of Sentences and Documents

doc2vec が学習するもの

34/46

文書ベクトル を全文書数 個文並べた重み行列 ◦ 次元数 は単語ベクトルと共通(文書 ≒ 新しい単語とみなす)◦ 次元 One-hot ベクトルを掛けると文書ベクトル が取り出せる

𝑫= (𝒅𝟏 𝒅𝟐 ⋯ 𝒅𝒊 ⋯ 𝒅𝑼 )

¿ ( 𝑑1 , 1 𝑑2 ,1 ⋯ 𝑑𝑖 ,1 ⋯ 𝑑𝑈 ,1𝑑1 ,2 𝑑2 ,2 ⋯ 𝑑𝑖 ,2 ⋯ 𝑑𝑈 ,2

¿𝑑1 ,𝑁 𝑑2 ,𝑁 ⋯ 𝑑𝑖 ,𝑁 ⋯ 𝑑𝑈 ,𝑁)⋮ ⋮ ⋮ ⋮

Page 35: 【論文紹介】Distributed Representations of Sentences and Documents

PV-DM (分散記憶モデル)

35/46

周辺単語 + 文書ベクトルを入力 →中間層で結合 ◦ 周辺単語 + 文書ベクトル → 文書全体の文脈が加味される◦ 文書ベクトル → 文脈を保持するメモリのように振る舞う◦ word2vec の CBOW に対応( gensim のデフォルトはこっち)

中間層の入力◦ 単語ベクトル ◦ 文書ベクトル

Page 36: 【論文紹介】Distributed Representations of Sentences and Documents

PV-DBOW (分散 BOW モデル)

36/46

語順を無視して(!?)該当文書内に含まれそうな単語を予測◦ 入力:文書ベクトルのみ◦ 単語ベクトル行列 を学習しなくて済むから早い!◦ word2vec の Skip-gram と対応◦ gensim の実装では Skip-gram で を学習するオプションあり◦ あんだけ語順語順言ってたのにこの期に及んで無視・・・!?

中間層の入力:文書ベクトル

Page 37: 【論文紹介】Distributed Representations of Sentences and Documents

この後は?

37/46

𝑾 𝒕=(𝒘𝟏

𝒕

𝒘𝟐𝒕

⋮𝒘 𝒊

𝒕

⋮𝒘 𝑺

𝒕)=(

𝑤1,1 𝑤1 , 2 ⋯ 𝑤1 , 𝑁𝑤2 , 1 𝑤2 , 2 ⋯ 𝑤2 ,𝑁¿𝑤𝑖 ,1 𝑤 𝑖 ,2 ⋯ 𝑤𝑖 ,𝑁

¿𝑤𝑆 ,1 𝑤𝑆 ,2 ⋯ 𝑤𝑆,𝑁)

各単語ベクトルの転置行列 と掛ける◦ word2vec の と全く同じもの

◦ PV-DM :先に を学習してから を学習◦ PV-DBOW : は初期値のまま更新せず だけ学習

◦ あとは Softmax 通して の重み更新して~の繰り返し

Page 38: 【論文紹介】Distributed Representations of Sentences and Documents

評価実験 1 :感情分析(単文)

38/46

使用データ: Stanford Sentiment Treebank Dataset◦ Rotten Tomatoes (映画レビューサイト)のレビュー◦ データ数: 11,855 文( 0 : Very Negative ~ 1 : Very Positive のラ

ベル付き)◦ 訓練 / テスト / 検証用データ: 8,544 / 2,210 / 1,110 文

実験内容◦ ラベルの 5値分類: { Very Negative, Negative, Neutral, Positive, Very

Positive } ◦ ラベルの 2値分類: { Negative, Positive}

◦ PV-DM ・ PV-DBOW 共に文書ベクトルの次元数 = 400◦ Window 幅 = 8 (交差検証して決めたよ†)

◦ 学習した文書ベクトルをロジスティック回帰に入力 → ラベル値を予測

HTTP://GIHYO.JP/DEV/SERIAL/01/MACHINE-LEARNING/0021

Page 39: 【論文紹介】Distributed Representations of Sentences and Documents

実験結果 1

39/46

提案手法が最強◦ BOW を使う手法(ナイーブベイズ・ SVM )は精度が悪い◦ 単語ベクトルの平均では精度は向上しない◦ NN を使うとちょっと良くなる(その中でも提案手法最強)

Page 40: 【論文紹介】Distributed Representations of Sentences and Documents

評価実験 2 :感情分析(長文)

40/46

使用データ: IMDB Dataset◦ IMDB (映画レビューサイト)のレビュー(全て複文)◦ データ数: 100,000 文

◦ 訓練データ: 75,000 文(ラベル: Negative or Positive )◦ ラベル有り / 無し: 25,000 / 50,000 文

◦ ラベル有りテストデータ: 25,000 文

実験内容◦ ラベルの 2値分類: { Negative, Positive }

◦ PV-DM ・ PV-DBOW 共に文書ベクトルの次元数 = 400◦ Window 幅 = 10 (交差検証して決めたよ)

◦ 学習した文書ベクトルをロジスティック回帰に入力 → ラベル値を予測

Page 41: 【論文紹介】Distributed Representations of Sentences and Documents

実験結果 2

41/46

提案手法が最強◦ BOW を使う手法が強い◦ 長い文書 → 語順の影響が弱まってくる?◦ そんな中でも提案手法最強

Page 42: 【論文紹介】Distributed Representations of Sentences and Documents

評価実験 3 :情報検索

42/46

使用データ:ウェブページ◦ 100万クエリ × 検索結果上位 10件 = 10,000,000ページのス

ニペット◦ これ絶対 Google からもらったろ

実験内容◦ 3 つの文書を用意

◦ 2 つ → 同じクエリによりヒットしたページ(類似度高いはず)◦ 残り 1 つ → 違うクエリによりヒットしたページ(類似度低いはず)◦ 文書ベクトル間のコサイン類似度を算出 → 正しく類似度判定できるか

スニペット

Page 43: 【論文紹介】Distributed Representations of Sentences and Documents

実験結果 3

43/46

提案手法最強◦ Weighted :各次元の値を TF-IDF で重み付け◦ 色々やったけどやっぱ提案手法最強だぜ

Page 44: 【論文紹介】Distributed Representations of Sentences and Documents

その他の考察結果

44/46

PV-DM vs PV-DBOW → 基本的には PV-DM の方が強い◦ PV-DM 単独で使ってもだいたい良い結果◦ PV-DBOW と合わせて使うほうがオススメ

PV-DM での入力値の統合 → 総和より連結の方が良い◦ 総和だと語順失われるから◦ 結局 concatenation (連結)ってどういう操作なんですかね・・・Window 幅は交差検証して決めようぜ!

◦ 多くのアプリケーションで上手くいく幅 → 5~ 12 くらい

学習は並列化してやろうぜ!◦ 16コアで 25,000 文書 × 平均 230 単語 → 平均 30分で学習終了◦ 初期の実装と比較して爆速になってる(重み更新アルゴリズムの進化)

Page 45: 【論文紹介】Distributed Representations of Sentences and Documents

まとめ

45/46

提案手法:パラグラフベクトル( doc2vec の中身)◦ 可変長の文書 → 文書の固定長特徴ベクトル◦ 文書中に出現する単語を予測するよう学習 → 特徴ベクトルを獲得◦ 学習にはニューラルネットワークを使用

評価実験: 文書の極性(肯定 or 否定)判定 & 文書検索◦ 短文・長文それぞれで既存手法を大幅に上回る◦ BOW の欠点(語順・意味)を克服◦ 他の NN を用いた最先端の手法を上回る精度

期待 → テキストデータ以外の時系列データへの適用◦ 映像・音声データなど(データの前後関係に意味があるもの)

Page 46: 【論文紹介】Distributed Representations of Sentences and Documents

参考文献

46/46

ニューラルネットワーク関連◦ http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/menu.html◦ http://mathtrain.jp/softmax

word2vec & doc2vec 関連◦ http://tkengo.github.io/blog/2016/05/09/understand-how-to-learn-

word2vec/◦ https://deepage.net/bigdata/machine_learning/2016/09/02/

word2vec_power_of_word_vector.html◦ http://stackoverflow.com/questions/27470670/how-to-use-gensim-

doc2vec-with-pre-trained-word-vectors◦ http://datascience.stackexchange.com/questions/10724/how-does-

pv-dbow-doc2vec-work◦ https://groups.google.com/forum/#!topic/gensim/uC6I47JtIps