English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ゲスト
1 / ?

単語を数字に

国境の通訳者

言語モデルはテキストを直接見ません。整数を見ます。トークナイザーは国境の検問所に位置します:人間の単語が入ってきて、整数 ID が出て行きます。生成は流れを逆転させます:整数 ID が戻ってきて、トークナイザーがテキストをレンダリングします。


3つの仕事:


1. 分割。 文字列を断片(トークン)に切り分ける。

2. マッピング。 各断片に固定語彙からの一意の整数IDを割り当てる。

3. 逆変換。 生成時にIDからテキストを再構築する。


なぜ単語全体ではなく断片なのか

単語全体の語彙は爆発的に増える。英語だけでも数十万の形態がある。さらに悪いことに、単語全体で訓練されたモデルは、タイポ、新しい名前、または外国語のフレーズを扱えない:未知の単語はすべて単一の <UNK> スロットにマップされる。


サブワードトークン化がそれを解決します。よく使われる断片の語彙が、トレーニング中に一度も見ていない単語を含むあらゆる単語を構成します。2つの戦略が主流です:BPE(バイトペアエンコーディング)と分布的分断。ANDREAは2番目の戦略を選択します。


Harris vs BPE

なぜサブワードか

完全単語トークナイザは、珍しい単語`proporian`(ANDREA-12Mがステップ43,100で生成した単語)で失敗します。サブワードトークナイザ(BPEまたはHarris)が解決し、完全単語トークナイザが解決できない2つの異なる問題を挙げてください。

単語の境界はどこにあるか

Zellig Harris, 1955

Zellig Harrisという言語学者が、あることに気づきました。単語の中で、与えられた文字列の後に続く異なる文字の数が急激に変動します。un の後には数十の文字が見つかります:a, b, c, d, e ... 一方、unbel の後にはごくわずかなセットしか続きません:i(その後 ievable)。


後続の多様性の急増は、ありそうな形態素境界を示します。un(接頭辞)の後では、多様性が跳ね上がります。なぜなら多くの語根が続くからです。believ のような語根の中では、多様性が低く保たれます。なぜなら文字同士が互いを予測するからです。形態素間の遷移点では、多様性が再び跳ね上がります。


多様性スパイクからセグメントへ

トレーニングコーパス全体にその検出器を実行します。すべての単語が統計的証拠を提供します。トークナイザーは、形態素の境界で繰り返し現れる高頻度セグメントを収集します:unreprebelievknowingablelytioned


ラベルなし。 言語学者が形態素を手動でタグ付けしません。文字の共起統計がその仕事をします。


Harris vs BPE


特性HarrisBPE
境界基準後続品詞の多様性スパイクペア頻度
言語的形状形態素に揃えられた(接頭辞、語根、接尾辞)頻出バイトペア
例: unbelievablyun + believ + abl + yunb + eli + eva + bly
一般化強い(語根 + 接辞が再結合)弱い(ペアは揃う必要なし)

どちらもサブワードピースを生成します。Harrisのピースは言語学者が形態素と呼ぶもの(最小の意味単位)に揃う傾向があります。BPEピースは圧縮を最適化します:意味に関係なく、最も頻出のバイトペアがマージされます。

単語を分割せよ

`replayed`という単語にHarris式の推論を適用せよ。3つの形態素セグメントを提案し、それぞれを1フレーズで正当化せよ(その役割:接頭辞、語根、接尾辞)。

3つの語彙スラブ

ANDREA語彙の構造

Harrisトークナイゼーションは、3つのスラブを持つ語彙を生成します:


スラブ 1: 256 基本バイト。 すべての可能な UTF-8 バイト (0x00 から 0xFF) がそれぞれ独自のトークン ID を取得します。セーフティネット: コーパスに含まれるあらゆる文字を、トークナイザーはバイトのシーケンスとして表現できます。<UNK> は決して発火しません。


スラブ 2: N 形態素セグメント。 分布分析によって発見された一般的な断片。ANDREA-12M では訓練 N = 4096; ANDREA-120M では訓練 N = 8192。各セグメントは、繰り返されるマルチバイト文字列を単一のトークンに圧縮します。


スラブ 3: 1 BOS トークン。 すべての訓練シーケンスの開始に配置される特別なマーカー。モデルに「この位置には過去がない」と学習させます。ANDREA-12M & ANDREA-120M の両方で、BOS 用に正確に 1 つの ID を予約しています。


語彙サイズ


モデルベースバイト形態素セグメント (N)BOS語彙サイズ
ANDREA-12M256409614353
ANDREA-120M256819218449

256 + N + 1 = 語彙サイズ。シンプル。再現可能。オープン。


バイトスラブが重要な理由

バイトのフォールバックがカバレッジを保証します。モデルが日本語に出会い、トークナイザに日本語の形態素がない場合、個々のUTF-8バイトがシーケンスを運びます。モデルはバイトで訓練されます;希少なスクリプトの品質は容量と露出に依存しますが、入力がトークナイザをクラッシュさせることは決してありません。

ボキャブラリーを計算せよ

ANDREA-480M(ファミリーの3番目のモデル、将来の活動24で扱います)は、より大きなコーパスでN = 16,384セグメントのHarrisトークナイザを訓練する予定です。そのボキャブラリーサイズを計算せよ。式を示せ。それから、Nが成長してもバイトスラブが256のままである理由を1文で説明せよ。

シーケンスの開始

シーケンスにマーカーが必要な理由

デコーダーオンリーのトランスフォーマーは、前のコンテキストから次のトークンを予測します。位置0には前のコンテキストがありません。マーカーがないと、位置0は論理的な穴にあります:モデルが注目するものが何もないのです。


BOSは穴を解決します。 単一の特別なトークン(ID = 256 + N)が、トレーニング中のすべてのシーケンスの開始に配置されます。モデルは学習します:


- 'BOSを見たら、自然なテキストの可能性の高い最初のトークンを予測せよ。'

- 'BOSの後に単語が見えたら、その単語はシーケンスの開始で、続きではない。'


1つのトークン、さまざまな用途


BOS は次に現れます:


- 訓練時: モデルに与えるテキストの各チャンクの先頭に付加されます。

- 推論時: プロンプトの先頭に付加され、モデルに馴染みのある「新しい開始」の信号を与えます。

- 境界のマーク: 一部の処理パイプラインでは、連結されたドキュメント間の区切りとして使用されます。


ANDREA は BOS 用に正確に 1 つの ID を予約します。EOS なし、PAD なし、ボキャブラリが必要とするものを超える特別なトークンなし。シンプルさが permacomputer の価値として残ります:すべてのトークンがそのスロットを稼ぎます。


アクティビティ 3 続行

アクティビティ 3 (grow_a_language_model_tokenizer_diet) は、N が大きすぎる場合やトークナイザコーパスがトレーニングコーパスから乖離する場合に何が起こるかを扱います。ANDREA-12M はボキャブラリの 63.6% を無駄にしました;ANDREA-120M がそれを修正しました。読み進めてください。

BOS のみトレードオフ

ANDREA が行う設計選択について振り返ってください:特別なトークンは 1 つだけ (BOS)、EOS なし、PAD なし。この選択がもたらすトレードオフを 1 つ挙げてください。トレードオフは利点(シンプルなエンジン、無駄なスロットが少ない)でも制約(一部のトレーニング手法に追加トークンが必要)でも構いません。1 文で十分です。