言語処理学会 第24回年次大会 発表論文集 (2018年3月)

深層コード学習による単語分散表現の圧縮
朱 中元 中山 英樹
東京大学 大学院情報理工学系研究科{shu, nakayama}@nlab.ci.i.u-tokyo.ac.jp
平成 30 年 1 月 17 日

1

序論

K

ニューラルネットワークを用いた自然言語処理におい|V |て，単語のベクトル表現（分散表現）は重要な役割を果たしている. しかし，従来の単語分散表現の問題と+



Ẽ(w)

E(Cw )

して各単語に独立したベクトルが割り当てられるため，(a)パラメータの数が膨大になるという点が挙げられる.
例えば，各ベクトルを 500 次元とすると，20 万個の語彙を表すために約１億個ものパラメータが必要になる.
実際，本稿で扱う簡単な感情分析モデルでは，単語ベクトルのパラメータ数は全パラメータ数の 98.8 ％を占める.
この研究では，モデルの性能を下げずに，単語ベクトルで使用するパラメータ数を減らすことを目的とす

図 1: (a) 従来の単語分散表現の求め方 (b) 提案手法
（合成的コードによって単語ベクトルを構築する）
ドワード）を持つ. ある単語の分散表現を計算する際には，その単語の各サブコードに対応する基底ベクトルを次のように足し合わせる：

る. 既存研究によって，ニューラルネットワークモデ

E(Cw ) =ルのパラメータには冗長性があることが既に分かっている. 本研究では，単語ベクトルはそれぞれ独立に学習されるため，非常に冗長性を含んでいると考える.
例えば，単語 “dog” と “dogs” はほぼ同じ意味を持ち，形態的にしか違いはない. この２つの単語を効率的に表現するためには，“dog” と “dogs” のベクトル表現の殆どの部分を共有するのが望ましい. 当然違いを捉えるために，それぞれのベクトルの一部は異なっている必要がある.
単語の分散表現を部分的に共有させるために，本研
究では各単語 w に単語 ID の代わりに，コード Cw =12Mi(Cw, Cw, ..., Cw) を割り当てる. 各サブコード Cwは[1, K] に属する整数である. 理想的には，意味が近い単語同士は類似するコードが割り当てられる. 例えば，Cdog = (3, 2, 4, 1), Cdogs = (3, 2, 4, 2) は良いコードの一例である. このように，本研究では各単語ごとに異なった分散表現を学習する代わりに，各サブコードの分散表現を学習する.
具体的には，モデルの中で M 個のコードブックを持ち，各コードブックは K 個の基底ベクトル（コー(b)M∑i
Ei (Cw),(1)i=1

ここで，Ei (Ciw ) は単語コード Cw の i 番目のサブコードのベクトル表現である. 図 1に示すように，単語をエンコードすることによって，語彙数によらずモデルが保持する必要のある基底ベクトルの数は常に M × Kである. 実験の結果，基底ベクトルの数は 512 ∼ 1024
個で十分であることが分かっている. この数字は語彙数よりも遥かに少なく，高い圧縮率を期待できる.
次に，各単語のコードと基底ベクトルの学習方法を考案する. 圧縮したい分散表現 (ベースライン) をẼ(w) とする. 最も素直な方法としては，Ẽ(w) と距離が近い単語ベクトルが構築されるように基底ベクトルÊ とコードの集合 Ĉ を最適化することが考えられる：
1 ∑||E(Cw ) − Ẽ(w)||2 (2)(Ĉ, Ê) = argmin|V |C,Ew∈V

ここで，|V | は語彙数を表す. ベースラインの分散表現としては，word2vec や GloVe による学習済みの単語分散表現を想定する. しかし，各単語のコード Cw は離散値であるため，通常直接的に式 (2) を最適化することは難しい. そこで，本研究では Gumbel-softmax― 1183 ―Copyright(C) 2018 The Association for Natural Language Processing.
All Rights Reserved.

encoderdecoder

トリック [8] を利用し，ニューラルネットワークを用+いて直接的に損失関数を最小化する方法を提案する.

関連研究

2Ẽ(w)

ニューラルネットワークを圧縮する既存手法としては，
低精度計算 [11]，量子化 [3, 4]，枝刈り法 [5]，知識蒸留法 [6] の大きく 4 種類が存在する.
近年では，モデルを圧縮するために，特に量子化と枝↵iwhw

diwi
A>
i dw

E(Cw )

図 2: コード学習するためのニューラルネットワーク構造（Gumbel-softmax の計算は点線で示されている）は以下の形になる：

刈り法が多く使われている. 量子化は，少数の真のパラメータのプールを用意し，このプールの中のパラメーE(Cw ) =M∑

iA⊤i dw .

(3)

タを重み行列の複数の位置に割り当てる手法である. 代i=0

表的な手法として，HashNet[3] と DeepCompression

よって，コードを学習する問題は one-hot ベクトルの[4] が挙げられる. 本研究は重み行列を行単位で量子化集合 d1w , ..., dMw と基底ベクトルの辞書 A1 , ..., AM をする手法として解釈できる.

学習する問題に帰着する. ここで，one-hot ベクトルを枝刈り法は重み行列をスパースにするための方法である. 代表的な手法である Iterative Pruning[5] は絶対値の小さいパラメータを強制的にゼロにする手法である. 近年，この手法は機械翻訳モデルにも適用され学習するために，Gumbel-Softmax トリック [8] を用いて，diw を以下のように計算する：( i )dw k = softmaxτ (log αiw + G)kexp((log (αiw )k + Gk )/τ )= ∑K.
i′′k′ =1 exp((log (αw )k + Gk )/τ )[10, 12]，約 80 ％の圧縮率が報告されている. 本研究では，Iterative Pruning をベースラインとして，実験

(4)
(5)

式 (5) の Gk は Gumbel 分布 − log(− log(Uniform[0で比較対象とした.

，1])) からサンプリングされるノイズであり，τ は soft-3

提案手法

3.1

合成的コーディング

max の温度とする. 本研究では，ベクトル αiw を簡単な多層ニューラルネットワークによって計算する：⊤

ここまでで説明した複数のコードブックを用いるコー

αiw = softplus(θi′ hw + b′i )，(6)hw = tanh(θ ⊤ Ẽ(w) + b) .

(7)

ディングアプローチは，合成的コーデング或いはマルチコードブックエンコーディングと呼ばれる. 例えばコー

ここで，隠れ層 hw のユニット数は常に M K/2 であドブックが M 個存在し，各コードブックに K 個の基る. 実験では，温度は τ = 1 で固定する. 図１に示す

底ベクトルが含まれる場合，コードの長さは M log K

ように，コード学習のモデルは実際には一種の auto-ビットになる. この性質によって，通常のバイナリーencoder として見なせる. このモデルは合計 5 種類のコードと比べて，同数の基底ベクトルの組合せを表すパラメータを持つ（θ, b, θ ′ , b′ , A）. コード学習のモ

のに，合成的コードでは必要なビット数がより少ない

デルが学習されると，各単語のハッシュコード Cw はというメリットを持つ.

中間層 d1w , ..., dMw それぞれに argmax を適用するこ

3.2

Gumbel-Softmax によるコード学習

圧縮したい単語ベクトルの重み行列を Ẽ ∈ R|V |×Hとする. ここで H は各単語ベクトルの次元数である.とで簡単に得られる. 学習したパラメータ A1 , ..., AMは基底行列としてそのまま使われる.

4

実験

式 (2) で定義した損失関数を最小化することは，実際∑Mには近似行列分解 Ẽ ≈ i=0 D i Ai を解くことに等し自然言語処理の典型的なタスク（感情分析及び機械翻い. ここで，Ai ∈ R

K×H

本章では，本稿の提案手法による圧縮率を検証する.

は基底ベクトルで構成され訳）において，モデルの性能を悪化させずに達成できる基底行列である.D i は |V | × K 行列であり，各行ベる最大圧縮率を評価した. 単語の分散表現のサイズをクトルは K 次元の one-hot ベクトルである. したがっ測る際，numpy のダンプファイルのサイズを報告すて，単語 w の i 番目のサブコードに対応する one-hotるが，Iterative Pruning によって得られたスパース行ベクトルを diw にすることで，単語ベクトルの計算式列については scipy.csc matrix で保存したファイルのサイズを報告する.

― 1184 ―Copyright(C) 2018 The Association for Natural Language Processing.
All Rights Reserved.

ベクトル数

ベクトルサイズ

コード長

コードサイズ合計サイズ

スコア

感情分析タスク / スコア：判別精度
GloVe baseline

75102

78 MB-

-

78 MB

87.18

prune 80%75102

21 MB-

-

21 MB

86.25

16 × 32 coding

512

0.52 MB80 bits

0.71 MB1.23 MB

87.37

32 × 16 coding

512

0.52 MB128 bits

1.14 MB1.66 MB87.80

64 × 8 coding

512

0.52 MB192 bits

1.71 MB2.23 MB

88.15

baseline

40000

35 MB

-

-

35 MB

29.45

prune 90%40000

5.21 MB--5.21 MB

29.34

prune 95%

40000

2.63 MB--2.63 MB

28.84

32 × 16 coding

512

0.44 MB128 bits

0.61 MB1.05 MB

29.04

64 × 16 coding

1024

0.89 MB256 bits

1.22 MB2.11 MB

29.56

独英機械翻訳タスク / スコア：BLEU(%)

英日機械翻訳タスク / スコア：BLEU(%)

baseline

80000

274 MB--

274 MB

37.93

prune 90%

80000

41 MB

--

41 MB

38.56

prune 98%80000

8.26 MB--8.26 MB

37.09

32 × 16 coding

5121.75 MB128 bits

1.22 MB2.97 MB

38.10

64 × 16 coding

1024

3.50 MB256 bits

2.44 MB5.94 MB38.89

表 1: 感情分析タスクと機械翻訳タスクにおける実験結果

4.1セットに含まれる 7.5 万語彙に絞ったものである.

コード学習

モデル構造:

Embedding 層を除いて，本実験の各単語のコードと基底ベクトルの辞書を学習するため全てのモデルは同一の計算グラフを持つ. モデルは一に，まず各タスクにおいて圧縮対象となる単語分散表

層の LSTM と，ロジスティック回帰のための softmax

現を用意する. 感情分析タスクでは GloVe，機械翻訳で層で構成される.LSTM 層のユニット数は 150 とした.

は学習済みのニューラル機械翻訳モデルの Embedding

ベースラインモデルの Embedding 層のパラメータ数は層を利用する. 図 2に示すコード学習モデルを訓練す

75, 000×300 である. 提案手法を適用した場合，32×16る際には，圧縮対象の分散表現の行列からランダムにの合成的コードを使用するならば，Embedding 層の単語ベクトルのバッチをサンプリングし，式 (2) の損パラメータ数は 512 × 300 になる.Iterative Pruning の失関数を最適化することで学習を行う. バッチサイズは 128 とした. パラメータの更新アルゴリズムとして場合，枝刈りしたスパース行列はモデルの学習と同時にチューニングされる.

Adam を用い，学習率は 0.0001 として，20 万イタレーション実行した.4 つの GPU(GTX 1080Ti) を使用すモデル学習:

る場合，実時間では約 15 分で学習が可能である.

4.2

実験結果:

様々な M と K の組合せにおける識別性能と圧縮率を表 1に示す. ベースラインモデルの精感情分析タスク

データセット:

すべてのモデルは Adam（学習率0.0001）を使って 15 エポック訓練する.

度は 87.16%であるが，Embedding 層では約 78MB を

本実験は IMDB 映画レビューデータ消費する.Iterative Pruning を使用した場合，圧縮率セット [7] を用いる. 学習データとテストデータはそれを 80%以上にするとモデルの性能が悪化することがわ

ぞれ 25,000 個のレビューテキストから構成される. 前

かる. 提案手法については，16 × 32 のコードを使用す処理として nltk で形態素解析し，小文字化した後，最る場合，98.4%のモデル圧縮率を達成できた. 圧縮率を初の 400 単語を残した. 圧縮対象の分散表現は，42B少し犠牲にした場合，強い正則化の効果によって，モトークンの Common Crawl データセットで学習されデルの識別性能は約 1%向上することが確認された.

た GloVe の 300 次元の単語ベクトルを IMDB データ― 1185 ―Copyright(C) 2018 The Association for Natural Language Processing.
All Rights Reserved.

4.3

機械翻訳タスク

データセット:5結論

このタスクでは，IWSLT 2014 独英本研究では，単語ベクトル間で部分的に情報を共有さ翻訳タスク [2] 及び ASPEC 英日翻訳タスク [9] で実験せ，単語分散表現の冗長性を低減させるアプローチをを行う. 独英翻訳タスクの前処理では，moses toolkit提案した. 実験結果から，提案手法はモデルの性能をによって形態素解析を行った後，語彙数が 2 万になる悪化させずに，感情分析タスクでは 98%，機械翻訳タように byte-pair encoding (以下 BPE) を適用した. 評

スクでは 94%の圧縮を達成できることが確認できた.

価尺度としては tokenized BLEU を報告する. 英日翻本論文の主な貢献は，Gumbel-softmax トリックを用

訳では，先頭の 1,500 万対訳ペアを学習データとしていて，ニューラルネットワークによるハッシュコード用いた. 英語側を moses, 日本語側を kytea で前処理をと基底ベクトル辞書の同時学習手法を提案したことで行い，語彙数が 4 万になるように BPE を適用した. 評ある. 本研究では，単語分散表現の圧縮のみを対象と価については，このタスクの公式サイトで提供されてしたが，提案手法は Softmax 層の重みを含むその他のいる後処理の Kytea ベースのスクリプトを用いた.

重み行列の圧縮にも適用が可能であると考える.

モデル構造:

ニューラル機械翻訳モデル（以下，NMT）の性能を向上させるための複数の手法を用いた.NMT のエンコーダ側は Bahdanau ら [1] と同様に標準的な双方向 LSTM によって構築し，デコーダ側は2 層の LSTM によって構築した. またデコーダ LSTMには Residual Connection を適用した.LSTM のユニット数については，独英翻訳タスクでは 256，英日翻訳タスクでは 1000 とした.LSTM 層内部の計算を除き，すべての層の前にドロップ率 0.2 の Dropout を適用した. デコーダ LSTM の 1 層目においては Key-Value

Attention を用いた.Attention 層のキーとして線形変換したエンコーダ隠れ状態を用いた.
モデル学習:

すべてのモデルは Nesterov 勾配降下法によってパラメータの更新を行い，初期学習率は 0.25 とした.7,000 イタレーション毎に検証用データセットでモデルの性能を測り，パラメータを保存した. 学習率のスケジューリングについては，3 回の検証でモデルの性能の向上が観測されない場合，学習率を10%まで減少させた. 学習の高速化のために 4GPU での分散学習を行い，各 GPU は 16 バッチを学習する.
実験結果:

翻訳タスクの結果を表 1の後半に載せる. 全ての翻訳結果の出力にはビームサーチ（ビーム幅 5）を用いた. 枝刈り法では，英日翻訳タスクにおいて翻訳性能を維持したまま 90%の圧縮率を達成できるが，独英翻訳では性能の悪化が観測された. 一方，提案手法を用いた場合には，それぞれのタスクで性能を悪化させずに 94%，99%の圧縮率を達成できた.
感情分析タスクと同様に，圧縮率を僅かに犠牲にすることで翻訳性能を向上させることができる. ここで，Embedding 層の圧縮後もリカレント層と Softmax 層の影響で NMT モデルのサイズは依然として膨大であることに注意が必要である. それらの部分を圧縮する

参考文献[1] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning toalign and translate. In ICLR, 2015.
[2] Mauro Cettolo, Jan Niehues, Sebastian Stüker, Luisa
Bentivogli, and Marcello Federico. Report on the 11thiwslt evaluation campaign, iwslt 2014. In Proceedings ofthe International Workshop on Spoken Language Translation, Hanoi, Vietnam, 2014.
[3] Wenlin Chen, James T. Wilson, Stephen Tyree, Kilian Q.
Weinberger, and Yixin Chen. Compressing neural networks with the hashing trick. In ICML, 2015.
[4] Song Han, Huizi Mao, and William J Dally. Deep compression: Compressing deep neural networks with pruning, trained quantization and huﬀman coding. In ICLR,2016.
[5] Song Han, Jeﬀ Pool, John Tran, and William J. Dally.
Learning both weights and connections for eﬃcient neuralnetworks. CoRR, Vol. abs/1506.02626, , 2015.
[6] Geoﬀrey E. Hinton, Oriol Vinyals, and Jeﬀrey Dean. Distilling the knowledge in a neural network. CoRR, Vol.
abs/1503.02531, , 2015.
[7] Andrew L. Maas, Raymond E. Daly, Peter T. Pham, Dan
Huang, Andrew Y. Ng, and Christopher Potts. Learning
word vectors for sentiment analysis. In ACL, 2011.
[8] Chris J. Maddison, Andriy Mnih, and Yee Whye Teh.
The concrete distribution: A continuous relaxation ofdiscrete random variables. CoRR, Vol. abs/1611.00712, ,2016.
[9] Toshiaki Nakazawa, Manabu Yaguchi, Kiyotaka Uchimoto, Masao Utiyama, Eiichiro Sumita, Sadao Kurohashi, and Hitoshi Isahara. Aspec: Asian scientific paper
excerpt corpus. In LREC, 2016.
[10] Abigail See, Minh-Thang Luong, and Christopher D.
Manning. Compression of neural machine translation
models via pruning. In CoNLL, 2016.
[11] Vincent Vanhoucke, Andrew Senior, and Mark Z Mao.
Improving the speed of neural networks on cpus. In Proc.
Deep Learning and Unsupervised Feature Learning NIPSWorkshop, Vol. 1, p. 4, 2011.
[12] Xiaowei Zhang, Wei Chen, Feng Wang, Shuang Xu, andBo Xu. Towards compact and fast neural machine translation using a combined method. In EMNLP, 2017.

ためには，枝刈り法を適用した既存研究 [12] をなどが有効であると考えられ，参考にされたい.

― 1186 ―Copyright(C) 2018 The Association for Natural Language Processing.
All Rights Reserved.