RNNLM

Preview:

DESCRIPTION

RNNLMについて調査してみました

Citation preview

Neural Netowork

Based Language

Model内海慶

kuchiumi@d-itlab.co.jp

黒船到来

• 自然言語処理における Deep Learning の活用を紹介• google の人が公開した word2vec というツールが話題

デモ文章のみから単語の意味を獲得する

n-gram language model

• 文に対する確率分布をモデル化• 単語の条件付き確率の積で表す

• 単語の条件付き確率は N-1 個前までの単語で計算できると仮定する

適切な n-gram 確率をいかに求めるかがこれまでの焦点コーパスに現れない低頻度な n-gram にも事前分布に従って正確

な確率を与えるという試みがなされてきた(スムージング)

n-gram lm の例• HPYLM

trigram の確率は…

観測した trigram 頻度をディスカウントして…

bigram 確率で back-off

“ トヨタ / 自動車” の確率は 0.5“ 日産 / 自動車”の確率は 0.4

Q: トヨタと日産の関係は?

A: 知らない

n-gram LM のポイント• 直接訓練コーパスに対して尤度最大化

• 過学習になるのでやらない

• 適切なスムージングを入れる• 事前分布を考慮して,今あるコーパスから真

の n-gram 確率を推定する• 汎化されたモデル(アウトドメインに強い)

Neural Network Language Model

これまでの言語モデル• 単語の出現確率を頻度から計算

• 適切な n-gram 確率を計算することにフォーカス• 各単語は独立に扱われる• 単語間の関係は見ない

NNLM• 単語の出現確率をデータから学

習・予測• 直接コーパスに対して尤度最大化• インドメインに強い• アウトドメイン?何それ

• 各単語を連続空間のベクトルとして表現• 似た単語は似たベクトルを持つ

従来は禁忌とされてきたコーパスに対する直接の尤度最大化をやってしまった.事前知識なんていらない.アウトドメインとか汎化とか知らない.

NNLM の例• Recurrent Neural Network Language Model

• 次の単語の出現確率を直接コーパスから学習

次の単語は,1. 入力単語を潜在空間へ写像(ベクトル表現)したものと,2. 単語の潜在ベクトルの履歴(ベクトル)を結合したベクトルと3. 重みベクトル V との内積で予測

RNNLM

NNLM のポイント• 学習された単語の潜在ベクトル (U*j) が単語の意味を

獲得する

• 獲得した単語の潜在ベクトルを使った操作で単語間の関係が分かる

• ( やろうと思えば ) 入力単語を表す素性の追加もできる(音声系で最近よくやられている)

• コーパスの尤度を直接最大化するのでインドメインに強い

獲得した潜在ベクトル

man

woman

king

queen

U で獲得された単語の潜在ベクトル表現

king のベクトルから man のベクトルを引く( man と king の関係を取り出す)woman のベクトルに足すと…

queen に近いベクトルコサイン類似度でqueen が見つかる

NNLM って今までなかったの ?

• 実は…• 1990 年に Elman が既に単純再帰型ニュー

ラルネットワーク(通称エルマンネット)を提案

• 1991 年には単語予測に利用して,文法構造がネットワークの結合係数として学習されることを示している

エルマンネットとの違い

RNNLM単語を潜在ベクトルで表現U で潜在空間へ写像する

エルマンネット単語を 1 of V で表現

文脈 s も V 次元ベクトル過去の単語ベクトルに減衰係数を掛けて

足し込んでいる

w(t)+αs(t-1)

つまり• エルマンネットでは単語を潜在空間に写像

するという発想は無かった

RNNLM の学習

• を最大化するような U, W, V の 3 つを学習する• 学習は SGD を使って逐次更新をする• だいたい 5 〜 10回程度の epoch で良い

f : シグモイド関数g : ソフトマックス関数

次の単語の確率

単語の潜在ベクトル表現

対数尤度の最大化• データの対数尤度を最大化

• 逆誤差伝搬を使って更新

• 細かいところはおいておいて,更新式は...

: 出力誤差

: 正解ベクトル( 1 of V 表現) 次の単語 w(t+1) の位置だけが 1 で残りは 0

出力層 V の更新式

• 出力誤差を潜在ベクトルに掛けて V に足し込むだけ

• α は学習率

隠れ層への誤差伝搬

• 誤差の勾配を隠れ層へ伝搬させる• V の重みを逆向き(隠れ層へ向かって)掛ける

• d は隠れ層の関数 s の微分• RNNLM では s にシグモイド関数を使ってるのでこの式にな

単語の潜在ベクトル表現U の更新

• 隠れ層の誤差の勾配を入力層に伝搬

• w(t) が 1 of V 表現なので更新は効率的

再帰の重み W の更新

• U と同じように書けるが, s(t-1) は密

Backpropagation Through Time

• 文脈ユニットを畳み込まない• 状態の履歴を持つ

• 直前の単語と状態は直後には影響しないけど,もっと後には影響するかもしれない

• U と W の更新にもっと過去の情報も使うようにしてより最適にしようという発想

• 今回は割愛

どのくらい上手く意味を捉えられるのか ?

• 文法規則を獲得できているかのテスト• 形容詞の原型,比較級,最高級• 名詞の単数,複数• 所有格と非所有格• 現在形と過去形• 現在形と三人称単数• 過去形と三人称単数

• PennTreebank でニュース記事にタグ付けして,各項目ごとに高頻度な事例を取り出し,同じカテゴリの単語と組み合わせたりして analogy question を自動生成.

• 約40% の正解率

どのくらい上手く意味を捉えられるのか ?

• SemiEval-2012, Task2, Measuring Relation Similarity[Jurgens et al., 2012]

• 細かい粒度で単語の関係が書かれている 79 単語を使用• 10 個を使って学習, 69 個はテストに使用• 各関係には 3 〜 4 事例の単語のペアが与えられている• e.g. 集合包含 : 集合単数→ clothing:shirt• 正解のペアがどのくらいの関連度を持っているか平均を出して,他

の手法と比較( MaxDiff という尺度を使うらしい)

• 他の手法と比較しても高いスコアを出せた• e.g. RNN-1600 MaxDiff Acc. 0.418, UTD-NB, 0.395(state-of-

the-art)

他分野での利用

• 言語モデルを使う他のタスクで利用され始めている• 機械翻訳• 音声認識

• InterSpeech の言語モデルセッションは RNNLM ばかり

• etc.

• 提案• 方言と標準語混じりのコーパスから類似語を獲得• 画像処理分野で visual words に適用できたりす

る ?

まとめ• 最近話題の RNNLM について紹介

• 従来の n-gram 言語モデルでは考慮されていなかった,単語間の関係が RNNLM では獲得できる

• ニュース記事にタグ付けしたデータを使った評価で,文法規則を自動で獲得できていることを示している

• SemiEval-2012 のデータを使った評価で,単語間の関係も獲得できていることを確認

参考• Tomas Mikolov, Statistical language models based on neural

networks (http://www.fit.vutbr.cz/~imikolov/rnnlm/thesis.pdf)

• Tomas Mikolov, et al., Linguistic regularities in continuous space word representations, in NAACL HLT, 2013

• Tomas Mikolov, et al., Efficient estimation of word representations in vector space, in ICLR, 2013

• 浅川伸一 , 単純再帰型ニューラルネットワーク (http://www.cis.twcu.ac.jp/~asakawa/waseda2002/elman.pdf)

• 浅川伸一 , 単純再帰型ニューラルネットワークの心理学モデルとしての応用可能性 (http://www.cis.twcu.ac.jp/~asakawa/chiba2002/lect4-SRN/srn2001-compact.pdf)