Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-

23,958 views

Published on

"Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling"の解説

Published in: Data & Analytics
  • Be the first to comment

言葉のもつ広がりを、モデルの学習に活かそう -one-hot to distribution in language modeling-

  1. 1. Copyright © 2017 TIS Inc. All rights reserved. 言葉のもつ広がりを、モデルの学習に活かそう 戦略技術センター 久保隆宏 one-hot to distribution in language modeling
  2. 2.  自己紹介  言葉のもつ広がりを、モデルの学習に活かす  論文の主張  one hotの問題点  one hotからdistributionへ  定式化  実験結果  実装と検証  おわりに 目次
  3. 3. 久保隆宏 TIS株式会社 戦略技術センター  化学系メーカーの業務コンサルタント出身  既存の技術では業務改善を行える範囲に限界があるとの実感から、戦 略技術センターへと異動  現在は機械学習や自然言語処理の研究・それらを用いたシステムのプ ロトタイピングを行う 自己紹介 OpenAI Gymを利用した、 強化学習に関する講演 (@PyConJP 2016) kintoneアプリ内にたまった データを簡単に学習・活用 (@Cybozu Days 2016) 機械学習のビジネスへの適用/ 音楽生成で同人誌ダブル出展 (@技術書典2 2017)
  4. 4. 所属するチームのミッション chakki すべての人が、ティータイムに帰れるようにする すべての人が、ティータイム(15:00)に帰れる(茶帰) 社会の実現を目指します。 この実現には、既存の仕事を効率化するのでなく、 根本的に「仕事の仕方」を変える必要があります。 しかし、慣れた仕事の仕方というのは簡単には変わ りません。だからこそ、実際に「体験」をし、効果 を「実感」してもらうことが重要になります。 そのため、私たちは先進的技術を用い、仕事の仕方 が変わる体験を提供していきます。
  5. 5. chakki  まずは自分たち(システム開発者)が帰れるように  自然言語処理/機械学習を活用する Elephant Sense 「質の高い」文章を検索するための試み。ビュー数やいい ね数だけでなく、コンテンツの品質の評価も行う。 karura 業務に機械学習をさくっと組み込むための試み。 kintone/Slackのプラグインとなり、予測したい項目/予 測に使う項目の指定のみでモデルを自動作成する。 chazutsu NEW! 自然言語で使うデータを簡単に手に入れるための仕組み。 データのダウンロードからpandasまでを一行で。
  6. 6. Copyright © 2016 TIS Inc. All rights reserved. 6 言葉の持つ広がりを、モデルの学習に活かす
  7. 7. Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling  言葉の広がりを反映した学習を行うために、「one hotではなく distribution」レベルでの比較を行おう  この手法を適用すると、同時に「input embeddingとoutput projectionの間に等価性が生じる」。これによりパラメーター数を大幅 に削減することができる。  もちろん、精度もよくなる 論文の主張
  8. 8. 機械学習において単語を表現する際、「one hotベクトル」という形式が 良く用いられる。 one hotベクトルとは、その名前の通り表現したい単語の箇所のみに 「1」が立っているようなベクトル(この際、ベクトルのサイズは辞書のサ イズと等しくなる) 。 one hotによる学習の問題点(1/4) 0 1 0 0 0 0・・・ apple banana cherry zoid zoo ベクトルのサイズ=単語の数(辞書のサイズ)
  9. 9. ただ、one hotは非常にサイズが大きく、また情報が疎になっている。 そのためモデルに対して入力を行う際は、通常埋め込み表現という形式を を用いる。 one hotによる学習の問題点(2/4) banana is delicious 2 9 5 単語 辞書上の番号 埋め込みベクトル (embedding) 単語の数 (辞書のサイズ) 出力 ベクトルサイズfruit ・ ・ ・ 「ベクトルの辞書」を引い ているような形になるため、 この操作をembedding lookupと呼んだりもします
  10. 10. ここで具体的なモデルの例として、3つ前までの単語から次の単語を予測 するようなモデルを示す。 one hotによる学習の問題点(3/4) 0 0 1 0 0 0 ・ ・ ・ banana is delicious input embedding output projection softmax ベクトルを辞書 サイズに戻す (projection) 出力を合計が1にな る値(確率)に変換 fruit 単語を予測するケースの場合、教師データはone hotの形で与えられる。 これに対しモデルからの出力は確率分布となり、この二つの差異が最適化 すべき誤差となる(図右)。
  11. 11. この状況の問題点としては、教師データとして唯一の正解しか与えられな いという点。本当なら別に(同じ意味の)他の単語でも良かったりする場合 でも、回答は常にひとつ(oneがhotな箇所)だけ。 one hotによる学習の問題点(4/4) つまり、one hotの世界では正解に近い単語でも遠い単語でもすべからく 「外れは外れ」として処理されることになる。これでは、「意味の広さ」 を表現することができない。 これが、one hotによる学習の問題点となる。 fruit sweets food crop iron zoid 割とどれでもいい 正解以外は、意味が 近しかろうがNG。 例外はない(キリッ
  12. 12. この問題が解決された姿として、以下のような感じだとうれしい。 one hotからdistributionへ(1/5) 0.1 0.3 1 0.8 0.6 0.2 ・ ・ ・ fruit 予測分布vs真の分布 で差異を取る sweets food iron animal
  13. 13. これを行うため、以下のような操作を行う。 one hotからdistributionへ(2/5) fruit 4 単語(正解) 辞書上の番号 埋め込みベクトル (embedding) 単語の数 (辞書のサイズ) ベクトル ベクトルサイズ 内積->softmax 正解のベクトルに似て いる単語が高く評価さ れた分布が手に入る
  14. 14. 全体像としては、以下のような形となる。 one hotからdistributionへ(3/5) banana is delicious input embedding output projection softmax fruit
  15. 15. このモデルにおいて誤差がない場合、以下の等式が成立する。 one hotからdistributionへ(4/5) output projection softmax input embedding softmax |=|とみなせるなら(双方は埋め 込みベクトルサイズの単語表現 なので、同一単語なら同一と考 えてもよいはず)output=input が成立する。 回答予測 正解単語ベク トルから作成 した分布 入力単語から 作成した予測 分布
  16. 16. パラメーターの数が半分に!(embeddingは非常に大きい行列になるので、 この削減効果は大きい)。 one hotからdistributionへ(5/5) banana is delicious embedding projection softmax fruit 使いまわす使いまわせる!
  17. 17. Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling  言葉の広がりを反映した学習を行うために、「one hotではなく distribution」レベルでの比較を行おう  この手法を適用すると、同時に「input embeddingとoutput projectionの間に等価性が生じる」。これによりパラメーター数を大幅 に削減することができる。  もちろん、精度もよくなる 論文の主張(再掲)
  18. 18.  誤差の定義(one hot + distribution) 定式化 one hotの誤差 distributionの誤差(KL距離)  教師分布の得方 正解単語のベクトル取得 内積計算+softmaxで分布化
  19. 19.  まず、分布ベースの誤差を導入することで、input embedding = output projectionとなる仮説は正しいか検証 実験結果(1/3) β(分布ベース誤差)の係数が大 きいほど、τが高い(より滑ら か)なほど、input/outpuの距 離が小さくなる =仮説が証明されている
  20. 20.  分布ベースの誤差を導入した効果、また、input embedding = output projectionとすることの効果は 実験結果(2/3) +AL:分布ベース誤差 +RE:input=outputの制御 言語モデルの評価で、LSTMの ベースラインよりも高い効果 =手法が有効 データセットのサイズが大きいとALの効果は限定的になるが(one hotで も十分な情報が取れるため)、REはいずれのケースでも高い効果がある
  21. 21.  この他、<unk>やaなどの出現頻度が抑えられた。  特定の単語と<unk>やaが意味的に近しいことはないので、分布距 離の導入により抑制されたのではないかと考えられる。  また、回答に近い単語へよりウェイトが置かれるようになった。 実験結果(3/3)
  22. 22. Copyright © 2016 TIS Inc. All rights reserved. 22 実装と検証
  23. 23.  実際に実装して検証をしてみた  icoxfog417/tying-wv-and-wc  Kerasで実装  モデル・学習のパラメーターは論文準拠(論文のAppendixに詳細な パラメーターが記載されている)  次スライドの検証では、学習時間短縮のため小さいコーパスで学  ※論文に倣うなら最低でも10epoch、差分を見るのに40epochは回さ ないといけないので。Penn Treebankでもツライ(ましてWikiTextで は・・・) 実装と検証(1/3)
  24. 24. 実装と検証(2/3) Temperature=10 Over-fit Temperature=20 Over-fit Well Done! Well Done!
  25. 25.  提案されたdistributionベースの誤差、またinput=outputの制約を かけることは、強い正則化作用を与えてくれる。  Penn TreeBankでの学習でも、この傾向は同様。ただ、ベースライ ン(LSTM)を上回れていない(データ量を削減するためスライド幅を 1ではなく3にしているので、それが影響しているかも)。 実装と検証(3/3)  augmented lossの計算には(サイズの大きい)embedding matrixとの 演算が必要なので、計算コストが高くなる(演算速度でハンデがある)  Temperatureを上げると学習は遅くなる(その分正則化作用が強まる か?は未検証)  予測単語における冠詞の抑制は確認できず(むしろ多いような?) Learning not enough
  26. 26.  理屈としては、学習初期は学習されていないembeddingを使って教師 分布を作ることになるため、学習の安定性に問題がある  そのため、distributionベースの誤差の使用率/Temperatureは基本的 には学習が進むにつれてあげていったほうがより効率的なはず  Deep Q-Networkの学習のように、教師分布の作成に利用する embeddingを特定epochごとに更新する(一定期間fixする)といった方 法も考えられる(Fixed Target Q-Network)  この意味では、事前学習済み分散表現(word2vec/Gloveなど)の利用が 効果的な可能性がある 仮説
  27. 27.  行列計算におけるbroadcastの重要性  学習データは通常のデータの次元にbatchsizeが加わるため、単純 な行列演算に持ち込んで計算を効率化することが難しい。かといっ てfor(map)なんて使った日には・・・(GPUでもキツイ)  tensordotなどの関数は、こうしたbatchsizeに沿った行列演算 (broadcast)の実装を助けてくれる(現時点ではKerasのbackendに 実装されていないので、Theano/TensorFlowの関数を利用する)。  <unknown>なshape  Kerasでcompileにより学習用グラフを構築する際、「実際データ が入ってこないとわからない」行列の次元はunknown(None)にな る。そのため、この次元を利用した演算をしているとNoneとの演 算はできません~というたぐいのエラーが発生する。  推定できそうなときもunknownになったりするので、その場合明 示的なreshapeをかましたりする。 余談(1/2)
  28. 28.  GPUサーバーのディスク容量  「計算するだけだから~」と思っていると足元をすくわれる。  機械学習系のライブラリ、CUDAなどは結構重く、また学習デー タ・epoch毎に保存するモデルファイルのサイズもばかにならない。  8Gだとぎりぎり、9~10G程度あったほうが安心できると思う。  PyTorchの言語モデルのサンプルではすでにtyingが実装されている  Word-level language modeling RNN  ソースコード中でも言及されているように、本論文以外にもinput embeddin/output projectionを等価にすることの効果を支持する 研究がある("Using the Output Embedding to Improve Language Models")  積極的に使っていこう! 余談(2/2)
  29. 29. Copyright © 2016 TIS Inc. All rights reserved. 29 おわりに
  30. 30. 今回は言語だったが、モデルの扱う対象をどう表現するのか、差異をどう 定義するかは、モデルの構築において非常に重要なポイントとなる。  対象の表現  画像に対し潜在分布を仮定したVAE(これで書き癖などを表現でき た)  差異の表現  ピクセル単位ではなく、「真か偽か」で差異を定義したGAN  Wasserstein GANなど、「距離」の定義方法だけでも精度に大きな 影響を与える 自然言語という多義的な世界で、単語や文、ひいては文章をどのように表 現し、どう差異を定義するのかはまだまだ開拓の余地がある! おわりに
  31. 31. 最近の研究では、単語をベクトルではなく分布で表現しようという試みが ある。  Multimodal Word Distributions  単語をword2vecのように単一点(ベクトル)ではなく、広がりを 持った分布で表現しようという試み(複数の意味を表現するため、 分布を複合した多峰分布で表現する)。 おわりに
  32. 32. おわりに arXivTimesという、論文のまとめを共有するリポジトリを運営していま す(Twitterアカウントも有り)。 GitHubらしく、投稿だけでなくディスカッションもオープンに行えれば と思っていますので、ご参加お待ちしております!
  33. 33. THANK YOU

×