SlideShare a Scribd company logo
1 of 40
Download to read offline
2020.08.14
田口 直弥
ACL 2020 参加報告
~ BPE 系 tokenization の背景と最新動向 ~
2
▪ text tokenization について
▪ NLP を ML で行う際の text 分割手法
▪ 特に BPE に関連する ACL2020 の論文2本を紹介
今回話す内容
I stayed at home this weekend.
I s t a y e d a t h o m e t h i s w e e k e n d .
I stayed at home this weekend .
I stay ed at home this week end .
3
▪ 少なくとも NLP w/ NN をするなら tokenization するはず
▪ 最近 kaggle でも BPE tokenizer を使った
▪ アプローチが 汎用的だと思った
▪ NLP に限らずここに着想を得て結構応用が効きそう
なんでこのテーマ?
4
▪ seq2seq フレームワーク 
▪ token 系列を入力とし、token 系列を出力
▪ models は RNNs, CNNs, transformers 等...
▪ 詳細はボリューム大 & 今回は説明なしでも話が進むので省略
Neural Machine Translation (NMT)
models
I stayed at home this weekend .
この週末は家にいました。
5
▪ 機械翻訳でよく使用される metric
▪ 0~1 で高いほどよい翻訳結果
▪ brevity penalty: 予測訳が正解訳より短い場合にペナルティを課す
▪ n-gram overlap: 1~4-gram の modified precision (被り n-gram 数 / 全 n-gram 数)
BLEU [Papineni et al., 2002] https://cloud.google.com/translate/automl/docs/evaluate?hl=ja
(~0.1)
(0.1~0.19)
(0.2~0.29)
(0.3~0.4)
(0.4~0.5)
(0.5~0.6)
(0.6~)
bleu score の解釈 (※図のスコアは 0~100 で書かれているので補正値を青字で記載)
6
ACL
2016
Neural Machine Translation of
Rare Words with Subword Unit
[Sennrich et al., 2016]
7
▪ 効率的な tokenization 手法である BPE を提案
▪ 学習データにない単語にも対応可能 (open-vocaburaly)
▪ 語彙数を抑えつつ、使用時の性能も良い
▪ (NLP 一般に使えるが) 着目する問題設定は NMT (機械翻訳)
概要
8
良い tokenization の設計方針
できるだけ tokenization の粒度を細かくしたい
・vocabulary 関連の時空間計算量の削減
・組み合わせによる表現で open-vocabulary 化が期待できる
・etc...
できるだけ tokenization の粒度を荒くしたい
・分割 token 数の削減による処理の効率化
・分割 token 数の削減による NN の情報伝播負担の削減
・etc...
trade off
頻出語はまとめ、珍しい単語は
subword の組み合わせで表現!
9
▪ 情報圧縮に使われる技術の話
▪ 頻出する 2 byte を 1 byte 文字に置き換えることを繰り返す
Byte Pair Encoding (BPE) [Gage, 1994]
BPE の適用例
(wikipedia より引用:https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E5%AF%BE%E7%AC%A6%E5%8F%B7%E5%8C%96)
▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です)
10
提案手法
① vocabulary を a, b, … 等の『文字』で初期化
② 学習用の text データを vocabulary をもとに tokenize
③ ②の token 系列において各 token の『ペア』を数える
④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加
⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ
a, b, c, ...
・T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r .
・I _ h a v e _ a c h i e v e d _ b e t t e r _ r e s u l t .
※簡単のため、2 sentences
vocabulary
text データ
operation
▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です)
11
提案手法
① vocabulary を a, b, … 等の『文字』で初期化
② 学習用の text データを vocabulary をもとに tokenize
③ ②の token 系列において各 token の『ペア』を数える
④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加
⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ
a, b, c, ...
・T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r .
・I _ h a v e _ a c h i e v e d _ b e t t e r _ r e s u l t .
※簡単のため、2 sentences
vocabulary
text データ
operation
『er』が最多!
▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です)
12
提案手法
① vocabulary を a, b, … 等の『文字』で初期化
② 学習用の text データを vocabulary をもとに tokenize
③ ②の token 系列において各 token の『ペア』を数える
④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加
⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ
er, a, b, c, ...
・T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r .
・I _ h a v e _ a c h i e v e d _ b e t t e r _ r e s u l t .
※簡単のため、2 sentences
vocabulary
text データ
e-r → er
operation
『er』を追加
こちらも追加
▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です)
13
提案手法
① vocabulary を a, b, … 等の『文字』で初期化
② 学習用の text データを vocabulary をもとに tokenize
③ ②の token 系列において各 token の『ペア』を数える
④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加
⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ
er, a, b, c, ...
・T h e _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er .
・I _ h a v e _ a c h i e v e d _ b e t t er _ r e s u l t .
※簡単のため、2 sentences
vocabulary
text データ
e-r → er
operation
以降 er をペアとして tokenize
▪ BPE tokenization の適用
▪ 文字分割した後 operation を順に適用
14
提案手法
e-r → er
t-h → th
th-e → the
operation
T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r .
T h e _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er .
...
Th e _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er .
The _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er ....
↓
↓
↓
15
▪ BPE は効率よく tokenize できている
▪ # tokens: 全 token 数
▪ # types : vocabulary 数
▪ # UNK : test データにおける未知語数
▪ BPE (joint) : source & target の言語を同時に tokenize
BPE tokenization 性能
tokenize に関する各種統計量
16
▪ 様々な metric における他手法との比較
▪ shortlist (char-bigram 外で別途用意された vocabulary) 無しでも良い性能
▪ rare に対する性能が良い
BPE tokenization 性能
17
ACL
2018
Subword Regularization: Improving
Neural Network Translation Models
with Multiple Subword Candidates
[Kudo, 2018]
18
▪ BPE tokenization が決定的な tokenize を行うことを問題視
▪ hello は本来 hello, he-llo, h-e-l-l-o 等様々な分割が確率的に行われ得る
▪ 確率的に tokenize を行い正則化効果を期待する手法を提案
▪ unigram language model ベースの手法
▪ 効率的に計算するため、viterbi algorithm と EM algorithm を併用
概要
19
▪ tokenize は本来決定的ではなく確率的に表現される
▪ BPE tokenization は決定的
▪ 確率はサンプリングにより表現
アイデア
BPE 提案
サンプリングで表現
データサイズ (文章数)
モデルのパラメータ
tokenize された s 番目の 翻訳対象
tokenize された s 番目の 翻訳結果
s 番目の全 tokenize 候補について期待値計算
20
▪ 各 token が独立に生起するという仮定を置く
▪ token 候補は vocabulary (これが与えられている前提) の要素
▪ token 系列の生起確率がそれぞれの token のものの積で表現可能
▪ 後は token 系列の生起確率に応じて学習時にサンプリングすれば提案が実現可能
▪ 最も確率の高い token 系列は Viterbi algorithm で効率よく計算可能 (後ほど使用)
Unigram Language Model
I
at
a t
s
stay
stayed
ed
t a y e d
...
...
...
文の token 数
token 系列の生起確率
21
▪ 各 token が独立に生起するという仮定を置く
▪ token 候補は vocabulary (これが与えられている前提) の要素
▪ token 系列の生起確率がそれぞれの token のものの積で表現可能
▪ 後は token 系列の生起確率に応じて学習時にサンプリングすれば提案が実現可能
▪ 最も確率の高い token 系列は Viterbi algorithm で効率よく計算可能 (後ほど使用)
Unigram Language Model
I
at
a t
s
stay
stayed
ed
t a y e d
...
...
...
文の token 数
token 系列の生起確率
① 各 token の生起確率はどうやって求める?
② vocabulary はどうやって確定させる?
22
▪ L を最大化する EM algorithm (appendix) により各 token の生起確率を算出
▪ 隠れ変数 : 各 token の生起確率
▪ E-step : M-step の token 系列における出現頻度に基づき、隠れ変数 を推定
▪ M-step : 各文について、viterbi algorithm で最も確からしい token 系列を求める
各 token の生起確率を求める
viterbi algorithm で計算可能
23
▪ L を最大化する EM algorithm (appendix) により各 token の生起確率を算出
▪ 隠れ変数 : 各 token の生起確率
▪ E-step : M-step の token 系列における出現頻度に基づき、隠れ変数 を推定
▪ M-step : 各文について、viterbi algorithm で最も確からしい token 系列を求める
各 token の生起確率を求める
viterbi algorithm で計算可能
この操作自体も vocabulary がわからないと適用できない
24
▪ 反復試行により vocabulary を更新していく
▪ vocabulary の確定と token 生起確率の算出を同時に行うのは難しい
vocabulary を求める
① heuristic に大きめの vocabulary の初期値を設定
② EM algorithm により token の生起確率と現状最良の tokenization を算出
③ 各 token の loss を計算
→ loss は各 token を vocabulary から抜いたときの L の減少度合いから算出
④ loss により token を sort し、上位 η% を vocabulary から除外
⑤ vocabulary の大きさが指定したものより大きい場合、② に戻る
25
▪ 様々なコーパス上で baseline (BPE) といくつかの提案手法を比較
▪ l は各文についてのサンプリング数 (l=1 は unigram language model での best な tokenization を使用)
▪ one-best vs n-best は翻訳候補の算出数 (n-best では n 個の内 best なものを使用)
▪ 基本的に提案手法は有効、特にデータが少ない場合はより有効 (augmentation 効果)
提案手法の性能
26
ACL
2020
BPE-Dropout: Simple and Effective
Subword Regularization
[Provilkov et al., 2020]
27
▪ tokenize における正則化をよりシンプルな BPE-dropout で実現
▪ 簡単に適用できる上、性能も良い
▪ kaggle とかでも使えそう?
概要
28
▪ operation を確率的に適用
▪ モデルの学習時のみ dropout し、推論時には通常の BPE と同様の tokenization
提案手法 (BPE-dropout)
e-r → er
t-h → th
th-e → the
operation
...
T h e _ s c o r e _ b e c o m e s _ ...
T h e _ s c o r e _ b e c o m e s _ ...
Th e _ s c o r e _ b e c o m e s _ ...
Th e _ s c o r e _ b e c o m e s _ ...
...
↓
↓
↓
例えばこれが適用され
なかった場合
The という単語は token にならない
29
▪ シンプルな手法にも関わらず良い性能
提案手法の性能
30
ACL
2020
Dynamic Programming Encoding for
Subword Segmentation in
Neural Machine Translation
[He et al., 2020]
31
▪ 『機械翻訳における翻訳先のみ』に tokenization 手法を提案
▪ vocabulary は BPE により与えられている前提
▪ Transformer を使った context 解釈による組合せ爆発の回避
▪ 動的計画法を使って効率的に計算
概要
32
▪ 機械翻訳における『翻訳先側の学習データ』の tokenization 手法
▪ Dynamic Programming Encoding (DPE)
アイデア
33
▪ tokenization の仕方についての周辺化を行いたい
▪ tokenization を潜在変数によるものとみなし、その周辺化により得られる
文章自体の生起確率の最大化を目指す
▪ 一方、組み合わせ爆発で現実的ではない...
→ 『context』を文字ベースにして組み合わせ削減!
アイデア
(翻訳結果の) 文章 (文字の系列) 自体の生起確率
『context』= i 番目までの tokenization された翻訳結果に依存
(書かれていないが、翻訳元 x にも依存)
tokenize の仕方 (非常に多い)
i 番目の token
34
▪ Transformer を使い、k 文字目におけるtoken 生起分布を算出
▪ 入力が『文字』・出力が『token 生起分布』
▪ ただし、(algirithm に表記はないが) 翻訳元 x は tokenize された形で入力
▪ 動的計画法により効率よく (mixed character-subword transformer を) 学習
提案手法
周辺化して得られた y (翻訳元の文) の生起確率 1 になるように学習
transformer で求める
周辺化された『context』の生起確率。
このやり方重複計算を防ぐ (動的計画法)
vocabulary にある token に限定
k 文字目『まで』
35
▪ 推論 (tokenization) 時には最も確率の高い token 系列を利用
▪ これにより『機械翻訳の翻訳先』の tokenization ができ、この token 系列を
使って機械翻訳を学習。『翻訳元』には BPE dropout を使用
▪ 学習における log-sum-exp が max になった形
提案手法
36
▪ 翻訳性能を BLEU で評価
▪ ほぼ全てのケースでBPE dropout よりも高性能
▪ 翻訳元の tokenization に依存して翻訳先の tokenize をできるのが性能の一因
提案手法の性能
37
▪ BPE やそこから派生する4つの論文の概要を紹介
▪ 確率の表現やその高速化における様々な工夫
▪ 詳細な実験結果等は論文を参照
▪ 以上!
まとめ
38
Kishore Papineni, Salim Roukos, Todd Ward, and Wei- Jing Zhu. 2002.
Bleu: a method for automatic evaluation of machine translation. In Proc. of ACL.
Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016.
Neural machine translation of rare words with subword units. In Proc. of ACL.
Philip Gage. 1994.
A new algorithm for data compression. C Users J. 12(2):23–38.
Taku Kudo. 2018.
Subword regularization: Improving neural network translation models with multiple subword candidates.
In Proc. of ACL.
Ivan Provilkov, Dmitrii Emelianenko, and Elena Voita. 2020.
Bpe-dropout: Simple and effective subword regularization. In Proc. of ACL.
Xuanli He, Gholamreza Haffari, Mohammad Norouzi. 2020.
Dynamic Programming Encoding for Subword Segmentation in Neural Machine Translation. In Proc. of ACL.
参考文献
39
APPENDIX
40
▪ 隠れ変数がある場合に尤度の最大化をしたい際に使用する
▪ 尤度が隠れ変数に依存するが、隠れ変数は観測できない
→ 以下の施行で尤度の期待値の最大化を繰り返す
① データと現状の予測パラメータから隠れ変数の事後確率を計算し、
これを用いて (対数) 尤度の期待値を計算 (E step)
② (対数) 尤度の期待値を最大化すパラメータを推定 (M step)
③ 収束しない場合 ① に戻る
▪ ex) 混合正規分布のパラメータ予測
▪ 隠れ変数 : 各サンプルがどの正規分布に属するか (0 or 1)
EM algorithm

More Related Content

Similar to Acl2020 taguchi

Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Yuto Takei
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxKouta Nakayama
 
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 Yuki Arase
 
鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門Hiroyoshi Komatsu
 
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行monglee
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解するAtsukiYamaguchi1
 
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 Yuki Arase
 
201207 ssmjp
201207 ssmjp201207 ssmjp
201207 ssmjpth0x0472
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」Shuji Morisaki
 
Characterizing transferred epithet as alternation
Characterizing transferred epithet as alternationCharacterizing transferred epithet as alternation
Characterizing transferred epithet as alternationKow Kuroda
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門Yoshitaka Seo
 
Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...Koji Matsuda
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
Lucene gosenの紹介 solr勉強会第7回
Lucene gosenの紹介 solr勉強会第7回Lucene gosenの紹介 solr勉強会第7回
Lucene gosenの紹介 solr勉強会第7回Jun Ohtani
 

Similar to Acl2020 taguchi (16)

Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptx
 
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
 
鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門鬱くしい日本語のための形態素解析入門
鬱くしい日本語のための形態素解析入門
 
FHE in Action
FHE in ActionFHE in Action
FHE in Action
 
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解する
 
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
 
201207 ssmjp
201207 ssmjp201207 ssmjp
201207 ssmjp
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
Characterizing transferred epithet as alternation
Characterizing transferred epithet as alternationCharacterizing transferred epithet as alternation
Characterizing transferred epithet as alternation
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...Large-Scale Information Extraction from Textual Definitions through Deep Syn...
Large-Scale Information Extraction from Textual Definitions through Deep Syn...
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
Lucene gosenの紹介 solr勉強会第7回
Lucene gosenの紹介 solr勉強会第7回Lucene gosenの紹介 solr勉強会第7回
Lucene gosenの紹介 solr勉強会第7回
 
Jacet2014ykondo_final
Jacet2014ykondo_finalJacet2014ykondo_final
Jacet2014ykondo_final
 

More from taguchi naoya

信号処理実応用入門
信号処理実応用入門信号処理実応用入門
信号処理実応用入門taguchi naoya
 
Trader-Company Method: A Metaheuristic for Interpretable Stock Price Predict...
Trader-Company Method:  A Metaheuristic for Interpretable Stock Price Predict...Trader-Company Method:  A Metaheuristic for Interpretable Stock Price Predict...
Trader-Company Method: A Metaheuristic for Interpretable Stock Price Predict...taguchi naoya
 
20201010 kaggle tweet コンペの話
20201010 kaggle tweet コンペの話20201010 kaggle tweet コンペの話
20201010 kaggle tweet コンペの話taguchi naoya
 
kaggle tweet コンペの話
kaggle tweet コンペの話kaggle tweet コンペの話
kaggle tweet コンペの話taguchi naoya
 
20190725 taguchi decision_tree_for_pubshare
20190725 taguchi decision_tree_for_pubshare20190725 taguchi decision_tree_for_pubshare
20190725 taguchi decision_tree_for_pubsharetaguchi naoya
 
PLAsTiCC Astronomical Classification に参加した話
PLAsTiCC Astronomical Classification に参加した話PLAsTiCC Astronomical Classification に参加した話
PLAsTiCC Astronomical Classification に参加した話taguchi naoya
 
memory augmented neural networks with wormhole connection
memory augmented neural networks with wormhole connectionmemory augmented neural networks with wormhole connection
memory augmented neural networks with wormhole connectiontaguchi naoya
 

More from taguchi naoya (7)

信号処理実応用入門
信号処理実応用入門信号処理実応用入門
信号処理実応用入門
 
Trader-Company Method: A Metaheuristic for Interpretable Stock Price Predict...
Trader-Company Method:  A Metaheuristic for Interpretable Stock Price Predict...Trader-Company Method:  A Metaheuristic for Interpretable Stock Price Predict...
Trader-Company Method: A Metaheuristic for Interpretable Stock Price Predict...
 
20201010 kaggle tweet コンペの話
20201010 kaggle tweet コンペの話20201010 kaggle tweet コンペの話
20201010 kaggle tweet コンペの話
 
kaggle tweet コンペの話
kaggle tweet コンペの話kaggle tweet コンペの話
kaggle tweet コンペの話
 
20190725 taguchi decision_tree_for_pubshare
20190725 taguchi decision_tree_for_pubshare20190725 taguchi decision_tree_for_pubshare
20190725 taguchi decision_tree_for_pubshare
 
PLAsTiCC Astronomical Classification に参加した話
PLAsTiCC Astronomical Classification に参加した話PLAsTiCC Astronomical Classification に参加した話
PLAsTiCC Astronomical Classification に参加した話
 
memory augmented neural networks with wormhole connection
memory augmented neural networks with wormhole connectionmemory augmented neural networks with wormhole connection
memory augmented neural networks with wormhole connection
 

Acl2020 taguchi

  • 1. 2020.08.14 田口 直弥 ACL 2020 参加報告 ~ BPE 系 tokenization の背景と最新動向 ~
  • 2. 2 ▪ text tokenization について ▪ NLP を ML で行う際の text 分割手法 ▪ 特に BPE に関連する ACL2020 の論文2本を紹介 今回話す内容 I stayed at home this weekend. I s t a y e d a t h o m e t h i s w e e k e n d . I stayed at home this weekend . I stay ed at home this week end .
  • 3. 3 ▪ 少なくとも NLP w/ NN をするなら tokenization するはず ▪ 最近 kaggle でも BPE tokenizer を使った ▪ アプローチが 汎用的だと思った ▪ NLP に限らずここに着想を得て結構応用が効きそう なんでこのテーマ?
  • 4. 4 ▪ seq2seq フレームワーク  ▪ token 系列を入力とし、token 系列を出力 ▪ models は RNNs, CNNs, transformers 等... ▪ 詳細はボリューム大 & 今回は説明なしでも話が進むので省略 Neural Machine Translation (NMT) models I stayed at home this weekend . この週末は家にいました。
  • 5. 5 ▪ 機械翻訳でよく使用される metric ▪ 0~1 で高いほどよい翻訳結果 ▪ brevity penalty: 予測訳が正解訳より短い場合にペナルティを課す ▪ n-gram overlap: 1~4-gram の modified precision (被り n-gram 数 / 全 n-gram 数) BLEU [Papineni et al., 2002] https://cloud.google.com/translate/automl/docs/evaluate?hl=ja (~0.1) (0.1~0.19) (0.2~0.29) (0.3~0.4) (0.4~0.5) (0.5~0.6) (0.6~) bleu score の解釈 (※図のスコアは 0~100 で書かれているので補正値を青字で記載)
  • 6. 6 ACL 2016 Neural Machine Translation of Rare Words with Subword Unit [Sennrich et al., 2016]
  • 7. 7 ▪ 効率的な tokenization 手法である BPE を提案 ▪ 学習データにない単語にも対応可能 (open-vocaburaly) ▪ 語彙数を抑えつつ、使用時の性能も良い ▪ (NLP 一般に使えるが) 着目する問題設定は NMT (機械翻訳) 概要
  • 8. 8 良い tokenization の設計方針 できるだけ tokenization の粒度を細かくしたい ・vocabulary 関連の時空間計算量の削減 ・組み合わせによる表現で open-vocabulary 化が期待できる ・etc... できるだけ tokenization の粒度を荒くしたい ・分割 token 数の削減による処理の効率化 ・分割 token 数の削減による NN の情報伝播負担の削減 ・etc... trade off 頻出語はまとめ、珍しい単語は subword の組み合わせで表現!
  • 9. 9 ▪ 情報圧縮に使われる技術の話 ▪ 頻出する 2 byte を 1 byte 文字に置き換えることを繰り返す Byte Pair Encoding (BPE) [Gage, 1994] BPE の適用例 (wikipedia より引用:https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E5%AF%BE%E7%AC%A6%E5%8F%B7%E5%8C%96)
  • 10. ▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です) 10 提案手法 ① vocabulary を a, b, … 等の『文字』で初期化 ② 学習用の text データを vocabulary をもとに tokenize ③ ②の token 系列において各 token の『ペア』を数える ④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加 ⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ a, b, c, ... ・T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r . ・I _ h a v e _ a c h i e v e d _ b e t t e r _ r e s u l t . ※簡単のため、2 sentences vocabulary text データ operation
  • 11. ▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です) 11 提案手法 ① vocabulary を a, b, … 等の『文字』で初期化 ② 学習用の text データを vocabulary をもとに tokenize ③ ②の token 系列において各 token の『ペア』を数える ④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加 ⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ a, b, c, ... ・T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r . ・I _ h a v e _ a c h i e v e d _ b e t t e r _ r e s u l t . ※簡単のため、2 sentences vocabulary text データ operation 『er』が最多!
  • 12. ▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です) 12 提案手法 ① vocabulary を a, b, … 等の『文字』で初期化 ② 学習用の text データを vocabulary をもとに tokenize ③ ②の token 系列において各 token の『ペア』を数える ④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加 ⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ er, a, b, c, ... ・T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r . ・I _ h a v e _ a c h i e v e d _ b e t t e r _ r e s u l t . ※簡単のため、2 sentences vocabulary text データ e-r → er operation 『er』を追加 こちらも追加
  • 13. ▪ BPE tokenization の学習 (※論文由来でなく、本発表においての呼称です) 13 提案手法 ① vocabulary を a, b, … 等の『文字』で初期化 ② 学習用の text データを vocabulary をもとに tokenize ③ ②の token 系列において各 token の『ペア』を数える ④ ③ で最も数の多かった『ペア』について vocabulary・operation に追加 ⑤ vocabulary の大きさが規定の数に達したら終了。そうでない場合 ② へ er, a, b, c, ... ・T h e _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er . ・I _ h a v e _ a c h i e v e d _ b e t t er _ r e s u l t . ※簡単のため、2 sentences vocabulary text データ e-r → er operation 以降 er をペアとして tokenize
  • 14. ▪ BPE tokenization の適用 ▪ 文字分割した後 operation を順に適用 14 提案手法 e-r → er t-h → th th-e → the operation T h e _ s c o r e _ b e c o m e s _ l o w e r _ a n d _ l o w e r . T h e _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er . ... Th e _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er . The _ s c o r e _ b e c o m e s _ l o w er _ a n d _ l o w er .... ↓ ↓ ↓
  • 15. 15 ▪ BPE は効率よく tokenize できている ▪ # tokens: 全 token 数 ▪ # types : vocabulary 数 ▪ # UNK : test データにおける未知語数 ▪ BPE (joint) : source & target の言語を同時に tokenize BPE tokenization 性能 tokenize に関する各種統計量
  • 16. 16 ▪ 様々な metric における他手法との比較 ▪ shortlist (char-bigram 外で別途用意された vocabulary) 無しでも良い性能 ▪ rare に対する性能が良い BPE tokenization 性能
  • 17. 17 ACL 2018 Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates [Kudo, 2018]
  • 18. 18 ▪ BPE tokenization が決定的な tokenize を行うことを問題視 ▪ hello は本来 hello, he-llo, h-e-l-l-o 等様々な分割が確率的に行われ得る ▪ 確率的に tokenize を行い正則化効果を期待する手法を提案 ▪ unigram language model ベースの手法 ▪ 効率的に計算するため、viterbi algorithm と EM algorithm を併用 概要
  • 19. 19 ▪ tokenize は本来決定的ではなく確率的に表現される ▪ BPE tokenization は決定的 ▪ 確率はサンプリングにより表現 アイデア BPE 提案 サンプリングで表現 データサイズ (文章数) モデルのパラメータ tokenize された s 番目の 翻訳対象 tokenize された s 番目の 翻訳結果 s 番目の全 tokenize 候補について期待値計算
  • 20. 20 ▪ 各 token が独立に生起するという仮定を置く ▪ token 候補は vocabulary (これが与えられている前提) の要素 ▪ token 系列の生起確率がそれぞれの token のものの積で表現可能 ▪ 後は token 系列の生起確率に応じて学習時にサンプリングすれば提案が実現可能 ▪ 最も確率の高い token 系列は Viterbi algorithm で効率よく計算可能 (後ほど使用) Unigram Language Model I at a t s stay stayed ed t a y e d ... ... ... 文の token 数 token 系列の生起確率
  • 21. 21 ▪ 各 token が独立に生起するという仮定を置く ▪ token 候補は vocabulary (これが与えられている前提) の要素 ▪ token 系列の生起確率がそれぞれの token のものの積で表現可能 ▪ 後は token 系列の生起確率に応じて学習時にサンプリングすれば提案が実現可能 ▪ 最も確率の高い token 系列は Viterbi algorithm で効率よく計算可能 (後ほど使用) Unigram Language Model I at a t s stay stayed ed t a y e d ... ... ... 文の token 数 token 系列の生起確率 ① 各 token の生起確率はどうやって求める? ② vocabulary はどうやって確定させる?
  • 22. 22 ▪ L を最大化する EM algorithm (appendix) により各 token の生起確率を算出 ▪ 隠れ変数 : 各 token の生起確率 ▪ E-step : M-step の token 系列における出現頻度に基づき、隠れ変数 を推定 ▪ M-step : 各文について、viterbi algorithm で最も確からしい token 系列を求める 各 token の生起確率を求める viterbi algorithm で計算可能
  • 23. 23 ▪ L を最大化する EM algorithm (appendix) により各 token の生起確率を算出 ▪ 隠れ変数 : 各 token の生起確率 ▪ E-step : M-step の token 系列における出現頻度に基づき、隠れ変数 を推定 ▪ M-step : 各文について、viterbi algorithm で最も確からしい token 系列を求める 各 token の生起確率を求める viterbi algorithm で計算可能 この操作自体も vocabulary がわからないと適用できない
  • 24. 24 ▪ 反復試行により vocabulary を更新していく ▪ vocabulary の確定と token 生起確率の算出を同時に行うのは難しい vocabulary を求める ① heuristic に大きめの vocabulary の初期値を設定 ② EM algorithm により token の生起確率と現状最良の tokenization を算出 ③ 各 token の loss を計算 → loss は各 token を vocabulary から抜いたときの L の減少度合いから算出 ④ loss により token を sort し、上位 η% を vocabulary から除外 ⑤ vocabulary の大きさが指定したものより大きい場合、② に戻る
  • 25. 25 ▪ 様々なコーパス上で baseline (BPE) といくつかの提案手法を比較 ▪ l は各文についてのサンプリング数 (l=1 は unigram language model での best な tokenization を使用) ▪ one-best vs n-best は翻訳候補の算出数 (n-best では n 個の内 best なものを使用) ▪ 基本的に提案手法は有効、特にデータが少ない場合はより有効 (augmentation 効果) 提案手法の性能
  • 26. 26 ACL 2020 BPE-Dropout: Simple and Effective Subword Regularization [Provilkov et al., 2020]
  • 27. 27 ▪ tokenize における正則化をよりシンプルな BPE-dropout で実現 ▪ 簡単に適用できる上、性能も良い ▪ kaggle とかでも使えそう? 概要
  • 28. 28 ▪ operation を確率的に適用 ▪ モデルの学習時のみ dropout し、推論時には通常の BPE と同様の tokenization 提案手法 (BPE-dropout) e-r → er t-h → th th-e → the operation ... T h e _ s c o r e _ b e c o m e s _ ... T h e _ s c o r e _ b e c o m e s _ ... Th e _ s c o r e _ b e c o m e s _ ... Th e _ s c o r e _ b e c o m e s _ ... ... ↓ ↓ ↓ 例えばこれが適用され なかった場合 The という単語は token にならない
  • 30. 30 ACL 2020 Dynamic Programming Encoding for Subword Segmentation in Neural Machine Translation [He et al., 2020]
  • 31. 31 ▪ 『機械翻訳における翻訳先のみ』に tokenization 手法を提案 ▪ vocabulary は BPE により与えられている前提 ▪ Transformer を使った context 解釈による組合せ爆発の回避 ▪ 動的計画法を使って効率的に計算 概要
  • 32. 32 ▪ 機械翻訳における『翻訳先側の学習データ』の tokenization 手法 ▪ Dynamic Programming Encoding (DPE) アイデア
  • 33. 33 ▪ tokenization の仕方についての周辺化を行いたい ▪ tokenization を潜在変数によるものとみなし、その周辺化により得られる 文章自体の生起確率の最大化を目指す ▪ 一方、組み合わせ爆発で現実的ではない... → 『context』を文字ベースにして組み合わせ削減! アイデア (翻訳結果の) 文章 (文字の系列) 自体の生起確率 『context』= i 番目までの tokenization された翻訳結果に依存 (書かれていないが、翻訳元 x にも依存) tokenize の仕方 (非常に多い) i 番目の token
  • 34. 34 ▪ Transformer を使い、k 文字目におけるtoken 生起分布を算出 ▪ 入力が『文字』・出力が『token 生起分布』 ▪ ただし、(algirithm に表記はないが) 翻訳元 x は tokenize された形で入力 ▪ 動的計画法により効率よく (mixed character-subword transformer を) 学習 提案手法 周辺化して得られた y (翻訳元の文) の生起確率 1 になるように学習 transformer で求める 周辺化された『context』の生起確率。 このやり方重複計算を防ぐ (動的計画法) vocabulary にある token に限定 k 文字目『まで』
  • 35. 35 ▪ 推論 (tokenization) 時には最も確率の高い token 系列を利用 ▪ これにより『機械翻訳の翻訳先』の tokenization ができ、この token 系列を 使って機械翻訳を学習。『翻訳元』には BPE dropout を使用 ▪ 学習における log-sum-exp が max になった形 提案手法
  • 36. 36 ▪ 翻訳性能を BLEU で評価 ▪ ほぼ全てのケースでBPE dropout よりも高性能 ▪ 翻訳元の tokenization に依存して翻訳先の tokenize をできるのが性能の一因 提案手法の性能
  • 37. 37 ▪ BPE やそこから派生する4つの論文の概要を紹介 ▪ 確率の表現やその高速化における様々な工夫 ▪ 詳細な実験結果等は論文を参照 ▪ 以上! まとめ
  • 38. 38 Kishore Papineni, Salim Roukos, Todd Ward, and Wei- Jing Zhu. 2002. Bleu: a method for automatic evaluation of machine translation. In Proc. of ACL. Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016. Neural machine translation of rare words with subword units. In Proc. of ACL. Philip Gage. 1994. A new algorithm for data compression. C Users J. 12(2):23–38. Taku Kudo. 2018. Subword regularization: Improving neural network translation models with multiple subword candidates. In Proc. of ACL. Ivan Provilkov, Dmitrii Emelianenko, and Elena Voita. 2020. Bpe-dropout: Simple and effective subword regularization. In Proc. of ACL. Xuanli He, Gholamreza Haffari, Mohammad Norouzi. 2020. Dynamic Programming Encoding for Subword Segmentation in Neural Machine Translation. In Proc. of ACL. 参考文献
  • 40. 40 ▪ 隠れ変数がある場合に尤度の最大化をしたい際に使用する ▪ 尤度が隠れ変数に依存するが、隠れ変数は観測できない → 以下の施行で尤度の期待値の最大化を繰り返す ① データと現状の予測パラメータから隠れ変数の事後確率を計算し、 これを用いて (対数) 尤度の期待値を計算 (E step) ② (対数) 尤度の期待値を最大化すパラメータを推定 (M step) ③ 収束しない場合 ① に戻る ▪ ex) 混合正規分布のパラメータ予測 ▪ 隠れ変数 : 各サンプルがどの正規分布に属するか (0 or 1) EM algorithm