Repetition penalty dapat bekerja sebelum sampling dengan mengubah logit milik ID token yang sudah terdapat dalam riwayat token tertentu. Operasi ini tidak harus membandingkan kata, frasa, atau string hasil render. Unit yang diperiksa dapat berupa ID integer dari tokenizer, sehingga makna mekanismenya lebih sempit daripada kesan yang diberikan oleh namanya.

Perbedaan tersebut terlihat saat decoder menghasilkan token subword. Dua string yang tampak serupa dapat tersusun dari urutan token berbeda, sedangkan satu token yang dipakai di dalam kata berbeda tetap dapat ditandai sebagai token yang sudah muncul.

Penalty berada di antara logit model dan pemilihan token

Pada satu langkah decoding, model autoregresif menghasilkan vektor logit (z \in \mathbb{R}^{V}) untuk vocabulary berukuran (V). Logits processor dapat mengubah vektor tersebut sebelum softmax, top-k, top-p, atau aturan pemilihan lain memakainya.

Salah satu aturan repetition penalty yang umum memakai faktor (p>1). Untuk setiap ID token (i) yang terdapat dalam riwayat yang dikonfigurasi, logit terkait diganti menjadi

[ z’_i = \begin{cases} z_i / p, & z_i > 0,\ z_i \cdot p, & z_i < 0. \end{cases} ]

Logit nol tetap nol pada kedua cabang. ID token yang belum muncul mempertahankan logit aslinya.

Operasi yang bergantung pada tanda ini mendorong logit token yang sudah muncul menjauh dari arah yang lebih menguntungkan. Nilai positif menjadi lebih kecil, sedangkan nilai negatif menjadi lebih negatif. Membagi semua logit yang terkena penalty dengan (p) tidak menghasilkan sifat yang sama untuk nilai negatif: angka negatif yang dibagi nilai di atas satu justru bergerak mendekati nol dan dapat menjadi lebih kompetitif.

Rumus tersebut menggambarkan pola implementasi decoder yang umum, bukan definisi universal bagi setiap API bernama repetition_penalty. Dokumentasi runtime tetap menjadi kontrak untuk cakupan riwayat, urutan processor, rentang parameter yang diterima, serta interaksi dengan processor lain.

Identitas token menentukan batas pencocokan

Pemeriksaan riwayat bekerja pada ID token. Jika tokenizer merepresentasikan sebuah fragmen teks dengan beberapa ID, pemberian penalty pada salah satu ID tersebut tidak secara langsung menyatakan bahwa keseluruhan fragmen pernah muncul. Mekanisme hanya mencatat bahwa entri vocabulary tertentu ada di dalam riwayat yang diperiksa.

Kondisi sebaliknya juga berlaku. Satu ID token dapat dipakai dalam beberapa konteks teks. Setelah ID tersebut dianggap sudah muncul, logit yang disesuaikan dapat memengaruhi kelanjutan berikutnya meskipun kata atau frasa di sekitarnya berbeda dari kemunculan sebelumnya.

Detail tokenizer karena itu memengaruhi hasil yang terlihat. Token yang sensitif terhadap whitespace, token tanda baca, fragmen byte-level, dan batas subword dapat membuat dua bentuk teks yang berkaitan mempunyai ID berbeda. Kontrol repetisi pada lapisan ini tidak setara dengan deduplikasi string.

Jumlah kemunculan tidak harus melipatgandakan faktor

Implementasi berbasis himpunan memeriksa apakah sebuah ID ada dalam riwayat, bukan berapa kali ID itu muncul. Jika ID token (i) muncul sekali atau sepuluh kali, processor tetap menerapkan transformasi yang dikonfigurasi satu kali pada (z_i) di langkah decoding saat ini.

Perilaku ini berbeda dari frequency penalty yang besar efeknya bergantung pada jumlah kemunculan. Mekanisme ini juga berbeda dari batasan n-gram yang memeriksa urutan ID dan dapat melarang kandidat yang akan membentuk ulang n-gram tertentu.

Ketiga mekanisme dapat mengurangi repetisi yang terlihat, tetapi state yang direpresentasikan berbeda. Repetition penalty dapat bersifat unary terhadap identitas token; frequency penalty memerlukan hitungan; aturan n-gram memerlukan konteks token yang berurutan.

Urutan logit dapat berubah sebelum sampling

Karena hanya sebagian logit vocabulary yang diubah, peringkat kandidat dapat bergeser. Misalnya, token yang sudah muncul memiliki logit positif (4.0), sedangkan token yang belum muncul memiliki logit (3.5). Dengan (p=1.2), logit token pertama menjadi sekitar (3.33), sehingga token kedua berada di atasnya sebelum softmax.

Efek tersebut bergantung pada nilai awal dan semua processor yang diterapkan di sekitarnya. Faktor penalty tidak menyatakan penurunan probabilitas yang tetap karena softmax menormalisasi seluruh logit kandidat secara bersama. Filtering top-k atau top-p dapat memperbesar konsekuensi praktis jika token yang diubah melewati batas filtering.

Urutan processor juga dapat berpengaruh. Dua transformasi yang nonlinear atau selektif secara umum tidak harus komutatif. Runtime yang menerapkan penyesuaian repetisi sebelum filtering kandidat dapat menghasilkan himpunan kandidat berbeda dari runtime yang melakukan filtering lebih dulu lalu mengubah logit yang tersisa. Stack decoding yang dikonfigurasi, bukan parameter penalty secara terpisah, menentukan distribusi akhirnya.

Cakupan riwayat merupakan bagian dari perilaku

Istilah “token yang sudah muncul” belum lengkap tanpa batas riwayat. Sistem serving dapat mempertimbangkan prompt beserta kelanjutan yang dihasilkan, hanya token hasil generation, atau bagian terbaru dengan panjang terbatas, bergantung pada API dan implementasinya.

Jika token prompt disertakan, entri vocabulary yang diberikan caller dapat langsung terkena penalty saat generation dimulai. Jika prompt dikecualikan, mekanisme terbatas pada token yang sudah dikeluarkan decoder. Region bergeser menghasilkan state lain lagi karena token lama dapat berhenti memenuhi syarat setelah keluar dari region tersebut.

Batas ini dapat memengaruhi structured output. Sintaks sering memerlukan pengulangan tanda baca, delimiter, nama field, atau control token secara sengaja. Memberi penalty pada ID tersebut dapat mengubah logit relatifnya meskipun repetisi diperlukan oleh format target. Aturan dasar berbasis ID token tidak memiliki sinyal intent pada tingkat teks.

Parameter tidak menentukan tingkat repetisi teks

Faktor yang lebih besar meningkatkan transformasi logit bagi ID yang terkena pada aturan berbasis tanda tersebut, tetapi tidak memetakan secara langsung ke persentase pengulangan teks tertentu. Tokenisasi, distribusi awal model, pengaturan sampling, urutan processor, dan cakupan riwayat semuanya berada di antara parameter dan hasil render.

Untuk implementasi, batas teknisnya cukup spesifik: bentuk repetition penalty ini adalah logits processor yang memakai identitas token sebelumnya sebagai kunci. Mekanisme dapat mengubah peringkat kandidat sebelum pemilihan, tetapi repetisi semantik, penggunaan ulang frasa, dan batasan format berada pada lapisan berbeda. Menyamakan semua lapisan itu dapat membuat perilaku decoder tampak tidak konsisten padahal aturan tingkat token sedang dijalankan secara tepat.