-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1804.10959] Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates [paper-reading] #69
Comments
SentencePiece #68 論文を読んで subword regularization が触れられているので、合わせてこちらも読んでおこうというモチベーション。 subword の分割には任意性があるが、その任意性を逆手に取ってノイズとして利用して学習をすることで、正則化効果を高めようとする手法。 |
open vocabulary 問題における subword の有効性は示されているが、この論文では subword の分割には任意性があることに注目する。 これは元は Hello world という曖昧さのない文字列でありながら、その分割は任意性があるので、論文では spurious ambiguity と呼んでいる。この spurious に込められた気持ちは、本質的には一通りだけあればいいはずなのに複数パターンを取りうる、というところから来ているのだろう。 さらに論文ではこの spurious ambiguity は この論文ではこの任意性を活かした正則化手法を提案していて、subword regularization と呼んでいる。
|
まずは問題のセットアップ。
出力の生成は以下で実施。 機械翻訳モデルは D を corpus として s はその中のサンプルとして、以下の対数尤度最大化で学習。 subword sequence を作る際には、いくつかの分割方法がある。ここではその分割を P(x|X), P(y|Y) で与えられるとして、subword regularization 込みでの尤度関数は次で表現できる。分割が確率的に与えられるのでそれをサンプルしているだけである。 可能な分割は文字列の長さに対して指数的に増えていくので、これを exact にやることは現実的に不可能である。 簡単のため k = 1 を用いる。 |
BPE は greedy でかつ deterministic なので、subword regularization を適用することは非自明である。 名前の通りサブワードが独立に出現するという(強い)仮定を置いて、以下のように定式化する。 ここで、 語彙集合が与えられていれば、subword の出現確率 まず corpus これが定式化であるが、実際の状況においてはもちろん語彙集合は未知である(これこそが求めたいものである)。
suffix array に関しては Wikipedia がこれ https://en.wikipedia.org/wiki/Suffix_array |
P(x∣X) からサブワード分割をサンプリングするする方法としては、まず得られている subword unigram 言語モデルに基づいて確率が大きい順に l 個の分割を取得し、その後に l を十分に大きくすれば全ての可能な分割を考慮することになるが、これは現実的ではない。 SentencePiece のコードで言えばこの辺りが unigram のサンプリング |
BPE との比較として、BPE は辞書型エンコーダー、unigram 言語モデルはエントロピーエンコーダー(任意の可逆データ圧縮方式をこのように呼ぶ)としてテキストの総コード長を最小化するものであり、分割戦略としては似ている。 unigram 言語モデルは確率的な言語モデルに基づいているため、より柔軟で確率付きで複数の分割を出力することが可能である。 BPE はシンプルで使いやすいけど、本質的に存在する分割の任意性を扱って何かしらの改善(この論文では正則化として使う)をしたい時には柔軟性がある unigram 言語モデルの方がいいね、ということだね。これはまあそうですねという感じ。 |
関連研究の話として、noise を加えるという意味で denoising auto encoder やそれを seq2seq の文脈で取り入れたものなどが紹介されている。 subword regularization の特徴として、従来研究が noise の入れ方がヒューリティスティックで source の文章にしか適用できなかったことに対して、unigram 言語モデルをもとにして(手法自体は unigram 言語モデルじゃないと使えないわけではない)noise を取り扱い source の文章と target の文章両方に適用できることを挙げている。それと、解釈として data augmentation としても見なせると書いてある。 分割の任意性についても述べていて、先行研究はあるけどモデルアーキテクチャに依存するものになっていたりして、subword regularization の独自性が理解できる(もちろんこういう先行研究がある中での課題感を解決するために生み出された手法なんだけど)。 モデルアーキテクチャと分離しているというのは重要な点に思う。 data augmentation 的な効果も解釈は容易。 |
実験をいろいろしているが、自分としては unigram 言語モデルの話と subword regularization の定式化が理解したいところだったので、全てはメモには残さず主要な結果だけを残しておく。 実験の設定として、corpus は 5 つ使っている。 l は subword regularization の時の分割パターンを上位何個まで扱うかを示すもので、1 であれば Viterbi 分割で subword regularization なしを示し、∞ であれば可能な全ての分割を扱うことを示す。 主要な結果としては次の通り:
この他にも out-of-domain な状況での検証や subword regularization を source/target のどちらかもしくは両方に適用する検証などもしており、概ね期待通りの結果であることが示されている。 しっかり実験をしてきっちり結果を出しているのはいい話ですね。 |
ということで一通り読んだ。 |
論文リンク
https://arxiv.org/abs/1804.10959
公開日(yyyy/mm/dd)
2018/04/29
概要
subword 分割には任意性があり(hello という文字列をどう分割するかはいくつかのパターンがある。もちろん出現頻度などでどの分割がよさそうかは一定判断できるが、そこには単語分割などと異なり言語学的な justification は存在しない)、その任意性を noise として使うことで正則化や data augmentation の効果を得る subword regularization の提案。
subword 分割の任意性を確率的に表現する unigram 言語モデルも同時に提案して、実験により subword regularization の効果が機械翻訳の文脈で効果があることを実証。
機械翻訳モデルのアーキテクチャとは独立に適用でき、source/target 文章の双方に適用できる、柔軟な手法であることが特徴。
The text was updated successfully, but these errors were encountered: