NLPにおけるsubword符号化方式のまとめ
2293 ワード
NLP subword:
伝統語の表現方法では、未知または珍しい語彙(OOV問題) をうまく処理できません.伝統語tokenization法はモデル学習接尾辞間の関係に不利である E.g.モデルで学んだ「old」、「older」、and「oldest」の関係は「smart」、「smarter」、and「smartest」 に広がらない.
BPE(バイトペア)符号化または二元符号化は単純なデータ圧縮形式であり、最も一般的な連続バイトデータのペアがデータに存在しないバイトに置き換えられる
簡単な例を挙げます.
文にlow,lowerが存在する場合,lowを結合して1文字と見なすことができる.
エンコーディング:
デコード:の利点 は、用語集のサイズとステップ数(文を符号化するために必要なtokenの数)を効果的にバランスさせることができる.
欠点 は、貪欲および決定されたシンボル置換に基づいて、確率を伴う複数のスライス結果を提供することができない.
WordPieceアルゴリズムはBPEの変種と見なすことができる.異なる点は、WordPieceが次の最高周波数バイト対ではなく、尤度確率に基づいて新しいsubwordを生成することである.
choose the new word unit out of all possible ones that increase the likelihood on the training data the most when added to the model(この言葉をどう理解するか、とても面白い)
Unigramのコンセプト
履歴情報を使用せずに、単語の出現順序は単語自体の出現確率にのみ関係します.例を挙げます.
未知の文字についてどうする?確率は0 と見なす.無視 は、小さな確率 を与える.総単語数 を推測する
unigramはsubwordで使用されます.
1.比較的大きなsubword数を設定します.
2.subword数を固定し、EMアルゴリズムを用いて各subwordが出現する確率を計算する.各単語に現れるlossを計算します.単語のloss順に並べ替えて、subwordの80%しか残っていません.OOVが発生しないことを保証するためにcharacterを保持します.
中国語の常用字は数千しかないため、中国語は通常直接字で符号化される.しかし、匍匐、ブドウなど、ほとんど単独では現れない字もあります.いくつかの細かいコードは彼らを一つの言葉と見なします.
https://zhuanlan.zhihu.com/p/86965595
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37842.pdf
https://arxiv.org/pdf/1804.10959.pdf
1.従来の方法のスペースtoken
2.byte pair encoding(BPE)
BPE(バイトペア)符号化または二元符号化は単純なデータ圧縮形式であり、最も一般的な連続バイトデータのペアがデータに存在しないバイトに置き換えられる
簡単な例を挙げます.
文にlow,lowerが存在する場合,lowを結合して1文字と見なすことができる.
エンコーディング:
#
[“the”, “highest”, “mountain”]
# subword
[“errrr”, “tain”, “moun”, “est”, “high”, “the”, “a”]
#
"the" -> ["the"]
"highest" -> ["high", "est"]
"mountain" -> ["moun", "tain"]
デコード:
#
[“the”, “high”, “est”, “moun”, “tain”]
#
“the highest mountain”
3.WordPiece
WordPieceアルゴリズムはBPEの変種と見なすことができる.異なる点は、WordPieceが次の最高周波数バイト対ではなく、尤度確率に基づいて新しいsubwordを生成することである.
choose the new word unit out of all possible ones that increase the likelihood on the training data the most when added to the model(この言葉をどう理解するか、とても面白い)
4.Unigram Language Model
Unigramのコンセプト
履歴情報を使用せずに、単語の出現順序は単語自体の出現確率にのみ関係します.例を挙げます.
i live in osaka .
i am a graduate student .
my school is in nara .
P(nara) = 1/20 = 0.05
P(i) = 2/20 = 0.1
P() = 3/20 = 0.15
P(W=i live in nara . ) =0.1 * 0.05 * 0.1 * 0.05 * 0.15 * 0.15 = 5.625 * 10-7
未知の文字についてどうする?
unigramはsubwordで使用されます.
1.比較的大きなsubword数を設定します.
2.subword数を固定し、EMアルゴリズムを用いて各subwordが出現する確率を計算する.各単語に現れるlossを計算します.単語のloss順に並べ替えて、subwordの80%しか残っていません.OOVが発生しないことを保証するためにcharacterを保持します.
5.ワードLEVELコード(中国語)
中国語の常用字は数千しかないため、中国語は通常直接字で符号化される.しかし、匍匐、ブドウなど、ほとんど単独では現れない字もあります.いくつかの細かいコードは彼らを一つの言葉と見なします.
Reference:
https://zhuanlan.zhihu.com/p/86965595
https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37842.pdf
https://arxiv.org/pdf/1804.10959.pdf