Lensa ML

Tokenization & BPE

Langkah 1 dari 6: Kenapa Perlu Tokenization?

Teks harus menjadi angka sebelum bisa diproses model

Tahap merge (aturan dipelajari: 0)0
The␣transformer␣model␣processes␣textPanjang sequence: 36 tokenKosakata: 18 token← lebih sedikit merge = lebih banyak token, kosakata lebih kecillebih banyak merge = lebih sedikit token, kosakata lebih besar →Merge diurutkan menurut frekuensi pasangan dalam korpus training kecil
Merge dipelajari
0
Merge terakhir
belum ada
Token
36
Kosakata
18

Belum ada merge: setiap huruf dan spasi menjadi token sendiri. Kosakatanya sangat kecil (18 karakter), tetapi sequence-nya paling panjang.

Geser slider Tahap merge dari 0 sampai 26 dan lihat "The transformer model processes text" menyusut dari 36 token menjadi 9. Merge dipelajari menurut urutan frekuensi pasangan pada korpus training kecil, dimulai dari "he" (52 kali), dan kalimat ini sudah menjadi kata utuh setelah 31 merge. Neural network hanya menerima angka, jadi setiap model teks lebih dulu memotong string menjadi unit dari daftar tetap dan mengganti tiap unit dengan indeksnya. Pilihan unit menentukan dua biaya sekaligus: berapa baris yang dibutuhkan tabel embedding, dan berapa posisi yang harus diproses attention. Biaya attention tumbuh mengikuti kuadrat panjang sequence, jadi memangkas jumlah token menjadi setengah memotong biayanya sekitar empat kali.

Langkah 2 dari 6: Token Karakter vs Kata

Tradeoff antara ukuran kosakata dan panjang sequence

unbelievableunbelievable12unbelievable3unbelievable1rethinkingrethinking10rethinking3rethinking1xylophonistxylophonist11xylophonist4[UNK]1Karakterkosakata ~26Subwordkosakata ~30kKatakosakata ~200k+
Tingkat
Subword
Ukuran kosakata
~30k
Panjang sequence
seimbang

Tingkat subword: 'unbelievable' terpecah menjadi 'un' (negasi), 'believ' (akar kata), dan 'able' (sufiks). Kata langka seperti 'xylophonist' tetap terurai menjadi bagian yang dikenal.

Klik Karakter, Subword, dan Kata untuk membandingkan cara tiap skema memecah ketiga contoh kata. Sistem sungguhan ada di dekat tengah: GPT-2 punya kosakata 50.257 token dan BERT asli sekitar 30.000 token WordPiece. Subword juga berbagi statistik antar-bentuk kata yang berkaitan, jadi "think" yang dipelajari dari "thinking" ikut membantu "rethinking". Pemecahannya mengikuti frekuensi, bukan tata bahasa. Potongan seperti "believ" lahir dari hitungan korpus, bukan analisis linguistik, dan kata yang sama bisa terpecah berbeda pada dua tokenizer yang dilatih dengan teks berbeda.

Langkah 3 dari 6: Merge pada Byte-Pair Encoding

Gabungkan pasangan karakter paling sering secara berulang

Langkah merge (0 = karakter)0
Korpus: "low lower lowest new newer newest wide wider widest"lowlow</w>lowerlower</w>lowestlowest</w>newnew</w>newernewer</w>newestnewest</w>widewide</w>widerwider</w>widestwidest</w>Jumlah pasangan teratas (merge berikutnya memilih #1):w + e4l + o3o + w3e + r3r + </w>3
Merge #
0
Ukuran kosakata
11
Jumlah pasangan teratas
4

Setiap kata dimulai sebagai karakter ditambah penanda akhir kata </w>. BPE menghitung setiap pasangan yang berdampingan di seluruh korpus, dan pasangan paling sering digabung lebih dulu.

Geser slider Langkah merge dari 0 sampai 12 dan ikuti papan peringkat pasangannya. Algoritma ini berasal dari metode kompresi 1994 karya Philip Gage, lalu Sennrich, Haddow, dan Birch mengadaptasinya ke neural machine translation pada 2015. Training-nya greedy: hitung semua pasangan berdampingan, gabungkan yang teratas, hitung ulang, dan ulangi sampai kosakata mencapai ukuran target. Pada korpus 9 kata ini, merge pertama adalah "w + e", yang muncul 4 kali (lower, lowest, newer, newest). Penanda </w> membedakan "st" di akhir kata dari "st" di dalam kata.

Langkah 4 dari 6: Membangun Kosakata

Lihat kosakata tumbuh seiring bertambahnya merge

Jumlah merge BPE5
0246810120012262352Kosakata ↑Token ↓Merge →
Merge
5
Kosakata
16
Total token
36
Rata-rata panjang token
1.3

5 merge: kosakata = 16, total token = 36. Makin banyak merge, kosakata makin besar dan sequence makin pendek. Model sungguhan memakai 30k–100k merge.

Geser Jumlah merge BPE dari 0 sampai 12 dan bandingkan kedua kurvanya. Setiap merge menambah tepat satu entri kosakata, jadi ukuran kosakata sama dengan simbol dasar ditambah jumlah merge: 11 + 12 = 23 di ujung kanan. Jumlah token korpus turun cepat di awal, dari 52 menjadi 36 setelah lima merge, lalu mendatar karena merge berikutnya menggabungkan pasangan yang lebih jarang. Jumlah merge adalah hyperparameter. GPT-2 mempelajari 50.000 merge di atas 256 byte token, ditambah satu token end-of-text, yang menghasilkan kosakata 50.257 entri.

Langkah 5 dari 6: Tokenization Teks Baru

Terapkan aturan BPE yang sudah dipelajari ke kata baru

awallowest</w>↓1w+e→welowest</w>↓2l+o→lolowest</w>↓4s+t→stlowest</w>↓5st+</w>→st</w>lowest</w>✓ Semua token ada di kosakata
Kata
lowest
Token
3
Merge diterapkan
4
Di kosakata
Ya

Merge dijalankan sesuai urutan saat dipelajari (peringkat 1 adalah pasangan paling sering). Untuk kata ini: #1 (w+e→we), #2 (l+o→lo), #4 (s+t→st), #5 (st+</w>→st</w>). Aturan yang pasangannya tidak ada dilewati, jadi kata yang sama selalu menghasilkan token yang sama.

Klik lowest, newer, wildest, dan slowly untuk melihat 8 merge yang sudah dipelajari diterapkan pada tiap kata. "wildest" tidak pernah muncul di korpus, tetapi berakhir sebagai wi, l, d, e, st</w>. Aturan sufiksnya berlaku, sedangkan "wid" tidak bisa karena ada l di antara i dan d. Setiap kata yang tersusun dari karakter yang dikenal mendapat pemecahan yang sah, jadi BPE tidak pernah butuh token [UNK] untuknya. Byte-level BPE, yang dipakai sejak GPT-2, mulai dari 256 nilai byte, bukan huruf, sehingga emoji, kode, dan aksara apa pun bisa di-encode. Kata langka keluar sebagai lebih banyak potongan.

Langkah 6 dari 6: Dari Token ke ID

Dari subword ke bilangan bulat, lalu ke embedding vector

Thetransformermodellearns▼▼▼▼▼▼▼101467224331118294434571055↓ Embedding lookupEmbedding[101]: (menampilkan 8 dari 768 dimensi)-0.310.49-0.450.210.12-0.390.50-0.39
Token
The
Id
101
Posisi
0
Dimensi embedding
d=768

Token "The" → ID 101 → embedding vector. ID memilih satu baris dari matriks embedding (sering 768 atau 1024 dimensi). Transformer memproses vector ini, tidak pernah teksnya langsung.

Klik setiap token dari "The" sampai "s" untuk mengikutinya ke ID dan baris embedding-nya. ID di demo ini hanya ilustrasi. Pada model sungguhan, ID adalah nomor baris token di berkas kosakata, dan matriks embedding punya satu baris per ID. Kosakata 50.000 token dengan 768 dimensi butuh sekitar 38 juta parameter untuk tabel itu saja. Banyak model memakai ulang matriks yang sama sebagai output layer yang memberi skor token berikutnya, trik yang disebut weight tying. Special token seperti [CLS], [SEP], atau <|endoftext|> juga punya ID.

Apa itu tokenization dan byte-pair encoding (BPE)?

Tokenization adalah langkah yang memecah teks mentah menjadi unit bernama token dan memetakan masing-masing ke ID bilangan bulat yang bisa dipakai model. Byte-pair encoding (BPE) adalah cara paling umum untuk membangun daftar token: mulai dari karakter tunggal, lalu berulang kali menggabungkan pasangan berdampingan yang paling sering muncul sampai kosakata mencapai ukuran yang dipilih. Hasilnya adalah kosakata berisi subword, potongan yang ukurannya di antara satu huruf dan satu kata utuh.

Setiap model teks dimulai dengan tokenizer. GPT-2, GPT-4, Llama, dan RoBERTa memakai varian BPE, sedangkan BERT memakai WordPiece yang sangat mirip. Tokenizer menentukan panjang setiap input, yang menentukan biaya komputasi dan banyaknya teks yang muat dalam context window, dan juga menentukan kata mana yang bisa direpresentasikan model. Harga API untuk model bahasa pun dihitung dalam token, bukan kata.

Ide utama

  • Tokenizer mengubah teks menjadi urutan ID bilangan bulat dari kosakata tetap.
  • Kosakata karakter sangat kecil tetapi menghasilkan sequence panjang; sequence tingkat kata pendek tetapi kosakatanya tidak bisa mencakup kata langka.
  • BPE membangun kosakata subword dengan berulang kali menggabungkan pasangan berdampingan yang paling sering muncul.
  • Setiap merge menambah satu entri kosakata dan memendekkan korpus yang sudah di-encode.
  • Teks baru di-encode dengan memutar ulang merge sesuai urutan training, jadi hasilnya deterministik.
  • Setiap ID token menunjuk satu baris matriks embedding, dan model bekerja dengan vector itu.

Pertanyaan umum

Satu kata itu berapa token?

Tergantung tokenizer dan bahasanya. Untuk teks bahasa Inggris dengan tokenizer gaya GPT, patokan umumnya sekitar 4 karakter atau 0,75 kata per token, jadi 100 token kira-kira 75 kata. Kata umum biasanya satu token, sedangkan kata langka, nama, dan angka terpecah menjadi beberapa.

Apa bedanya BPE, WordPiece, dan SentencePiece?

BPE menggabungkan pasangan dengan jumlah mentah tertinggi. WordPiece, yang dipakai BERT, memilih merge yang paling menaikkan likelihood data training, sehingga lebih memilih pasangan yang sering muncul relatif terhadap bagian-bagiannya. SentencePiece adalah library, bukan algoritma: ia memperlakukan spasi sebagai simbol biasa dan bisa melatih BPE atau tokenizer unigram language model langsung pada teks mentah.

Kenapa model bahasa kesulitan menghitung huruf?

Model melihat ID token, bukan karakter. Kata seperti "strawberry" bisa datang sebagai dua atau tiga subword token, jadi huruf-hurufnya tidak pernah terlihat langsung. Untuk menjawab pertanyaan tingkat huruf, model harus sudah menghafal ejaan tiap token.

Apakah tokenizer memperlakukan semua bahasa secara setara?

Tidak. Tokenizer yang dilatih terutama dengan bahasa Inggris mempelajari merge panjang untuk kata bahasa Inggris dan lebih sedikit untuk bahasa lain, jadi kalimat yang sama dalam bahasa Thai, Hindi, atau Amharik bisa memakan beberapa kali lebih banyak token. Akibatnya, bahasa-bahasa itu lebih lambat dan lebih mahal diproses, dan ruang di context window jadi lebih sempit.

Penjelasan terkait

  • Embedding · Mengubah kata dan kategori menjadi vector
  • Language Modeling · Memprediksi token berikutnya, tujuan yang menggerakkan GPT, BERT, dan NLP modern
  • Bag of Words · Mengubah teks menjadi angka: hitung kemunculan kata untuk membuat representasi dokumen paling sederhana di NLP
  • Word2Vec & Word Embedding · Mempelajari representasi dense vector, dengan kata yang mirip saling berdekatan di dalam ruang
  • Arsitektur Transformer · Panduan visual untuk paper "Attention Is All You Need"

Referensi

  1. Sennrich, Haddow & Birch (2016), "Neural Machine Translation of Rare Words with Subword Units", ACL
  2. Kudo & Richardson (2018), "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing"
  3. Kudo (2018), "Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates"
  4. Jurafsky & Martin, "Speech and Language Processing" (3rd ed. draft)

Terakhir diperbarui