AIについて基礎の基礎を学ぶ中で、
「AIはどうやって単語や文章を予測しているのか?」という点が気になりました。
調べていくと、その最初のステップとして重要なのが
**トークン化(Tokenization)**という処理でした。
今回はこのトークン化について、初心者なりに整理してみます。
トークンとは?
トークンとは、
AIがテキストを処理する際の最小単位
のことです。
AIは文章をそのまま理解しているわけではなく、
まず処理しやすい単位に分割してから扱います。
例えば英語の文章:
Thank you
はモデルによっては:
Thank / you
のように分割されます。
ただし、トークンの分け方はモデルごとに異なり、
必ずしも単語単位になるとは限りません。
なぜテキストをトークンとして扱うのか
トークン化には主に次のようなメリットがあります。
① 計算効率を上げるため
文字単位だとトークン数が増えすぎ、
文章単位だと逆に処理が複雑になります。
適度なサイズに分割することで、
効率よく数値計算ができるようになります。
② 未知語に対応するため
例えば英語では:
possible → impossible
のように接頭辞や接尾辞で単語が変化します。
単語を細かい単位で扱えると、
未知の単語でも既知のパーツから処理できます。
③ 語彙数の増えすぎを防ぐため
すべての単語をそのまま扱うと、
語彙数(vocabulary)が膨大になります。
トークン化によって語彙数を抑えつつ、
多言語対応もしやすくなります。
トークン化の主なアプローチ
トークン化には主に3つの考え方があります。
① 単語単位トークン化
例:
I have no idea
↓
I / have / no / idea
人間には分かりやすい方法ですが、
日本語のように単語の区切りが曖昧な言語では難しい場合があります。
② 文字単位トークン化
1文字ずつ分割する方法です。
メリット:
- 言語を問わず対応可能
デメリット:
- トークン数が増え、計算コストが高くなる
③ サブワードトークン化(現在主流)
頻出する文字列単位で分割する方法です。
例:
impossible
↓
im / possible
未知語への対応と語彙サイズのバランスが良く、
現在の大規模言語モデルで広く使われています。
トークン=単語ではない
重要なポイントとして、
トークンは必ずしも単語ではありません。
例えば:
- 接頭辞(un-, im-)
- 接尾辞(-ing, -ed)
- 空白付き単語など
モデルによって様々な分割が行われます。
まとめ
AIは文章をそのまま理解しているわけではなく、
まずトークンという単位に分割してから処理しています。
このトークン化によって、
- 計算効率の向上
- 未知語への対応
- 語彙サイズの管理
が可能になっています。
次は、このトークンがどのように数値として扱われるのか
(Embeddingなど)について整理してみたいと思います。