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

More Related Content

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