33
Copyright © 2017 TIS Inc. All rights reserved. 言葉のもつ広がりを、モデルの学習に活かそう 戦略技術センター 久保隆宏 one-hot to distribution in language modeling

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

Embed Size (px)

Citation preview

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

Copyright © 2017 TIS Inc. All rights reserved.

言葉のもつ広がりを、モデルの学習に活かそう

戦略技術センター久保隆宏

one-hot to distribution in language modeling

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

自己紹介

言葉のもつ広がりを、モデルの学習に活かす

論文の主張

one hotの問題点

one hotからdistributionへ

定式化

実験結果

実装と検証

おわりに

目次

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

久保隆宏TIS株式会社 戦略技術センター

化学系メーカーの業務コンサルタント出身

既存の技術では業務改善を行える範囲に限界があるとの実感から、戦略技術センターへと異動

現在は機械学習や自然言語処理の研究・それらを用いたシステムのプロトタイピングを行う

自己紹介

OpenAI Gymを利用した、強化学習に関する講演(@PyConJP 2016)

kintoneアプリ内にたまったデータを簡単に学習・活用(@Cybozu Days 2016)

機械学習のビジネスへの適用/音楽生成で同人誌ダブル出展(@技術書典2 2017)

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

所属するチームのミッション

chakki

すべての人が、ティータイムに帰れるようにする

すべての人が、ティータイム(15:00)に帰れる(茶帰)社会の実現を目指します。

この実現には、既存の仕事を効率化するのでなく、根本的に「仕事の仕方」を変える必要があります。

しかし、慣れた仕事の仕方というのは簡単には変わりません。だからこそ、実際に「体験」をし、効果を「実感」してもらうことが重要になります。

そのため、私たちは先進的技術を用い、仕事の仕方が変わる体験を提供していきます。

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

chakki

まずは自分たち(システム開発者)が帰れるように

自然言語処理/機械学習を活用する

Elephant Sense

「質の高い」文章を検索するための試み。ビュー数やいいね数だけでなく、コンテンツの品質の評価も行う。

karura

業務に機械学習をさくっと組み込むための試み。kintone/Slackのプラグインとなり、予測したい項目/予測に使う項目の指定のみでモデルを自動作成する。

chazutsu NEW!

自然言語で使うデータを簡単に手に入れるための仕組み。

データのダウンロードからpandasまでを一行で。

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

Copyright © 2016 TIS Inc. All rights reserved. 6

言葉の持つ広がりを、モデルの学習に活かす

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

Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling

言葉の広がりを反映した学習を行うために、「one hotではなくdistribution」レベルでの比較を行おう

この手法を適用すると、同時に「input embeddingとoutput projectionの間に等価性が生じる」。これによりパラメーター数を大幅に削減することができる。

もちろん、精度もよくなる

論文の主張

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

機械学習において単語を表現する際、「one hotベクトル」という形式が良く用いられる。

one hotベクトルとは、その名前の通り表現したい単語の箇所のみに「1」が立っているようなベクトル(この際、ベクトルのサイズは辞書のサイズと等しくなる) 。

one hotによる学習の問題点(1/4)

0 1 0 0 0 0・・・

apple

banana

cherry zoid

zoo

ベクトルのサイズ=単語の数(辞書のサイズ)

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

ただ、one hotは非常にサイズが大きく、また情報が疎になっている。

そのためモデルに対して入力を行う際は、通常埋め込み表現という形式をを用いる。

one hotによる学習の問題点(2/4)

banana

is

delicious

2

9

5

単語 辞書上の番号 埋め込みベクトル(embedding)

単語の数(辞書のサイズ)

出力

ベクトルサイズfruit ・・・

「ベクトルの辞書」を引いているような形になるため、この操作をembedding lookupと呼んだりもします

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

ここで具体的なモデルの例として、3つ前までの単語から次の単語を予測するようなモデルを示す。

one hotによる学習の問題点(3/4)

0

0

1

0

0

0

・・・

banana

is

delicious

inputembedding

outputprojection

softm

ax

ベクトルを辞書サイズに戻す(projection)

出力を合計が1になる値(確率)に変換

fruit

単語を予測するケースの場合、教師データはone hotの形で与えられる。これに対しモデルからの出力は確率分布となり、この二つの差異が最適化すべき誤差となる(図右)。

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

この状況の問題点としては、教師データとして唯一の正解しか与えられないという点。本当なら別に(同じ意味の)他の単語でも良かったりする場合でも、回答は常にひとつ(oneがhotな箇所)だけ。

one hotによる学習の問題点(4/4)

つまり、one hotの世界では正解に近い単語でも遠い単語でもすべからく「外れは外れ」として処理されることになる。これでは、「意味の広さ」を表現することができない。

これが、one hotによる学習の問題点となる。

fruit

sweets

food

crop

iron

zoid

割とどれでもいい

正解以外は、意味が近しかろうがNG。例外はない(キリッ

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

この問題が解決された姿として、以下のような感じだとうれしい。

one hotからdistributionへ(1/5)

0.1

0.3

1

0.8

0.6

0.2

・・・

fruit

予測分布vs真の分布で差異を取る

sweets

food

iron

animal

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

これを行うため、以下のような操作を行う。

one hotからdistributionへ(2/5)

fruit 4

単語(正解) 辞書上の番号 埋め込みベクトル(embedding)

単語の数(辞書のサイズ)

ベクトル

ベクトルサイズ

内積->softmax

正解のベクトルに似ている単語が高く評価された分布が手に入る

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

全体像としては、以下のような形となる。

one hotからdistributionへ(3/5)

banana

is

delicious

inputembedding

outputprojection

softm

ax

fruit

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

このモデルにおいて誤差がない場合、以下の等式が成立する。

one hotからdistributionへ(4/5)

outputprojection

softm

ax

inputembedding

softm

ax

|=|とみなせるなら(双方は埋め込みベクトルサイズの単語表現なので、同一単語なら同一と考えてもよいはず)output=input が成立する。

回答予測

正解単語ベクトルから作成した分布

入力単語から作成した予測分布

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

パラメーターの数が半分に!(embeddingは非常に大きい行列になるので、この削減効果は大きい)。

one hotからdistributionへ(5/5)

banana

is

delicious

embedding projection

softm

ax

fruit

使いまわす使いまわせる!

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

Tying Word Vectors and Word Classifiers: A Loss Framework for Language Modeling

言葉の広がりを反映した学習を行うために、「one hotではなくdistribution」レベルでの比較を行おう

この手法を適用すると、同時に「input embeddingとoutput projectionの間に等価性が生じる」。これによりパラメーター数を大幅に削減することができる。

もちろん、精度もよくなる

論文の主張(再掲)

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

誤差の定義(one hot + distribution)

定式化

one hotの誤差

distributionの誤差(KL距離)

教師分布の得方

正解単語のベクトル取得

内積計算+softmaxで分布化

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

まず、分布ベースの誤差を導入することで、input embedding = output projectionとなる仮説は正しいか検証

実験結果(1/3)

β(分布ベース誤差)の係数が大きいほど、τが高い(より滑らか)なほど、input/outpuの距離が小さくなる=仮説が証明されている

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

分布ベースの誤差を導入した効果、また、input embedding = output projectionとすることの効果は

実験結果(2/3)

+AL:分布ベース誤差+RE:input=outputの制御言語モデルの評価で、LSTMのベースラインよりも高い効果=手法が有効

データセットのサイズが大きいとALの効果は限定的になるが(one hotでも十分な情報が取れるため)、REはいずれのケースでも高い効果がある

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

この他、<unk>やaなどの出現頻度が抑えられた。

特定の単語と<unk>やaが意味的に近しいことはないので、分布距離の導入により抑制されたのではないかと考えられる。

また、回答に近い単語へよりウェイトが置かれるようになった。

実験結果(3/3)

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

Copyright © 2016 TIS Inc. All rights reserved. 22

実装と検証

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

実際に実装して検証をしてみた

icoxfog417/tying-wv-and-wc

Kerasで実装

モデル・学習のパラメーターは論文準拠(論文のAppendixに詳細なパラメーターが記載されている)

次スライドの検証では、学習時間短縮のため小さいコーパスで学

※論文に倣うなら最低でも10epoch、差分を見るのに40epochは回さないといけないので。Penn Treebankでもツライ(ましてWikiTextでは・・・)

実装と検証(1/3)

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

実装と検証(2/3)

Temperature=10

Over-fit

Temperature=20

Over-fit

Well Done!

Well Done!

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

提案されたdistributionベースの誤差、またinput=outputの制約をかけることは、強い正則化作用を与えてくれる。

Penn TreeBankでの学習でも、この傾向は同様。ただ、ベースライン(LSTM)を上回れていない(データ量を削減するためスライド幅を1ではなく3にしているので、それが影響しているかも)。

実装と検証(3/3)

augmented lossの計算には(サイズの大きい)embedding matrixとの演算が必要なので、計算コストが高くなる(演算速度でハンデがある)

Temperatureを上げると学習は遅くなる(その分正則化作用が強まるか?は未検証)

予測単語における冠詞の抑制は確認できず(むしろ多いような?)

Learningnot enough

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

理屈としては、学習初期は学習されていないembeddingを使って教師分布を作ることになるため、学習の安定性に問題がある

そのため、distributionベースの誤差の使用率/Temperatureは基本的には学習が進むにつれてあげていったほうがより効率的なはず

Deep Q-Networkの学習のように、教師分布の作成に利用するembeddingを特定epochごとに更新する(一定期間fixする)といった方法も考えられる(Fixed Target Q-Network)

この意味では、事前学習済み分散表現(word2vec/Gloveなど)の利用が効果的な可能性がある

仮説

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

行列計算におけるbroadcastの重要性

学習データは通常のデータの次元にbatchsizeが加わるため、単純な行列演算に持ち込んで計算を効率化することが難しい。かといってfor(map)なんて使った日には・・・(GPUでもキツイ)

tensordotなどの関数は、こうしたbatchsizeに沿った行列演算(broadcast)の実装を助けてくれる(現時点ではKerasのbackendに実装されていないので、Theano/TensorFlowの関数を利用する)。

<unknown>なshape

Kerasでcompileにより学習用グラフを構築する際、「実際データが入ってこないとわからない」行列の次元はunknown(None)になる。そのため、この次元を利用した演算をしているとNoneとの演算はできません~というたぐいのエラーが発生する。

推定できそうなときもunknownになったりするので、その場合明示的なreshapeをかましたりする。

余談(1/2)

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

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)

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

Copyright © 2016 TIS Inc. All rights reserved. 29

おわりに

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

今回は言語だったが、モデルの扱う対象をどう表現するのか、差異をどう定義するかは、モデルの構築において非常に重要なポイントとなる。

対象の表現

画像に対し潜在分布を仮定したVAE(これで書き癖などを表現できた)

差異の表現

ピクセル単位ではなく、「真か偽か」で差異を定義したGAN

Wasserstein GANなど、「距離」の定義方法だけでも精度に大きな影響を与える

自然言語という多義的な世界で、単語や文、ひいては文章をどのように表現し、どう差異を定義するのかはまだまだ開拓の余地がある!

おわりに

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

最近の研究では、単語をベクトルではなく分布で表現しようという試みがある。

Multimodal Word Distributions

単語をword2vecのように単一点(ベクトル)ではなく、広がりを持った分布で表現しようという試み(複数の意味を表現するため、分布を複合した多峰分布で表現する)。

おわりに

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

おわりに

arXivTimesという、論文のまとめを共有するリポジトリを運営しています(Twitterアカウントも有り)。

GitHubらしく、投稿だけでなくディスカッションもオープンに行えればと思っていますので、ご参加お待ちしております!

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

THANK YOU