Greedy decoding dapat terus memilih token yang secara lokal paling mungkin bahkan ketika continuation yang dihasilkan menjadi repetitif. Sampling dapat memutus pola tersebut, tetapi melakukannya dengan menambahkan randomness. Contrastive search mengambil jalur lain: untuk input dan setting yang tetap, ia tetap deterministik sambil menilai likely next-token candidate terhadap representation-level repetition penalty.
Metode ini menggabungkan dua sinyal yang menjelaskan properti candidate berbeda. Language-model probability mengutamakan token yang cocok dengan prefix saat ini. Degeneration penalty menurunkan nilai candidate yang new hidden representation-nya terlalu mirip dengan representasi yang sudah ada dalam generated context.
Candidate selection dimulai dari probabilitas model
Pada setiap decoding position, contrastive search lebih dulu membatasi perhatian pada sekumpulan likely next token, umumnya top k candidate milik model. Pembatasan ini penting karena bagian kedua dari score tidak dimaksudkan untuk menyelamatkan vocabulary item arbitrer dengan probabilitas rendah.
Untuk setiap candidate, decoder mengevaluasi hidden state yang akan dihasilkan jika token tersebut ditambahkan. Kemudian state candidate dibandingkan dengan prior hidden state pada prefix.
Secara konseptual, score dapat ditulis sebagai
score(candidate) =
(1 - alpha) * model_probability(candidate)
- alpha * degeneration_penalty(candidate)Notasi persisnya dapat berbeda antar-implementasi, tetapi kedua term tersebut mengekspresikan keputusan inti. alpha mengontrol seberapa besar representation similarity dapat mengimbangi next-token probability.
Ketika alpha bernilai nol, candidate ranking kembali ke model-probability term di dalam candidate set. Ketika alpha bertambah, hidden-state similarity memiliki pengaruh lebih besar terhadap candidate mana yang dipilih.
Degeneration penalty bekerja di representation space
Formulasi contrastive search awal mengukur degeneration memakai cosine similarity antara contextual representation candidate dan representasi token sebelumnya. Penalti yang umum mengambil similarity maksimum terhadap prefix yang sudah ada.
Secara konseptual:
penalty(candidate) =
max cosine(candidate_hidden, previous_hidden_i)Candidate yang menghasilkan state yang sangat selaras dengan state sebelumnya memperoleh penalti lebih besar. Ini berbeda dari token-level repetition rule yang memblokir token hanya karena ID-nya pernah muncul.
Perbedaan ini penting untuk subword model dan teks paraphrastic. Exact token repetition adalah surface property. Hidden-state similarity bersifat kontekstual dan dapat merespons pola representasi berulang walaupun next token ID itu sendiri bukan duplikat.
Namun penalti ini tetap hanya proxy untuk degeneration yang tidak diinginkan. Representasi mirip dapat muncul pada teks yang sah, dan similarity rendah tidak menjamin continuation yang koheren.
Top-k dan alpha mengontrol boundary yang berbeda
Candidate count k dan weighting factor alpha memengaruhi bagian search yang berbeda.
k menentukan token mana yang memenuhi syarat untuk dibandingkan. Candidate set kecil menjaga search tetap dekat dengan pilihan berprobabilitas tertinggi milik model. Menaikkannya membuka lebih banyak alternatif untuk degeneration term, tetapi juga membutuhkan evaluasi lebih banyak candidate continuation.
alpha mengubah ranking di dalam eligible set tersebut. Nilai lebih besar memberi similarity penalty pengaruh lebih kuat relatif terhadap model probability.
Kedua kontrol ini berinteraksi. Menaikkan alpha tidak dapat memilih token yang dikeluarkan dari top-k set. Menaikkan k tidak memaksa token yang lebih beragam menang jika probability term dan alpha yang dipilih masih mengutamakan candidate lain.
Menganggap kedua parameter dapat dipertukarkan karena itu dapat membingungkan evaluasi. Satu mengubah search set; yang lain mengubah score yang diterapkan di dalamnya.
Geometry hidden-state memengaruhi penalti
Cosine similarity hanya informatif sejauh hidden representation model memberikan angular separation yang berguna untuk tujuan ini. Jika banyak token representation menempati region sempit dalam space, candidate yang tidak terkait dapat memiliki cosine similarity tinggi dan penalti kehilangan daya diskriminasi.
Pekerjaan contrastive search menghubungkan masalah ini dengan representation anisotropy dan memasangkan decoding method dengan contrastive training objective bernama SimCTG. Penggunaan contrastive search berikutnya juga meneliti pretrained model yang representation space-nya cukup diskriminatif tanpa training tambahan tersebut.
Bagi developer, boundary praktisnya adalah decoder tidak hanya bekerja pada output probability. Perilakunya bergantung pada internal hidden state. Dua model dengan next-token distribution mirip dapat merespons berbeda terhadap search setting yang sama jika representation geometry-nya berbeda.
Artinya runtime juga harus mengekspos hidden state yang relevan atau mengimplementasikan scoring di dalam generation stack. API yang hanya mengembalikan sampled text tidak dapat mereproduksi metode ini dari luar.
Determinisme tidak menghilangkan biaya search
Contrastive search menghindari random sampling, tetapi membutuhkan pekerjaan lebih banyak daripada sekadar memilih next-token probability terbesar.
Decoder harus mempertimbangkan beberapa candidate dan memperoleh contextual representation untuk setiap candidate sebelum merankingnya. Implementasi dapat melakukan batching atau optimasi lain terhadap candidate computation, sehingga latency cost persisnya bergantung pada generation stack dan model architecture.
Biaya juga meningkat mengikuti pilihan seperti k. Candidate set yang lebih besar menambah jumlah candidate evaluation walaupun output final tetap berisi satu token per decoding position.
Profil sistem ini berbeda dari penalty yang memodifikasi logit hanya menggunakan token history. Token-frequency penalty sering dapat dihitung dari decoding state yang sudah ada, sedangkan contrastive search membutuhkan model representation yang terkait dengan candidate continuation.
Repetition metric tidak membuktikan coherence
Decoder dapat mengurangi repeated n-gram tetapi tetap menghasilkan teks yang menyimpang dari prompt. Ia juga dapat mempertahankan local fluency sambil membuat keputusan faktual atau task-level yang buruk. Contrastive search mengubah token selection; ia tidak menambahkan external evidence atau memperbaiki knowledge yang tersimpan di model.
Evaluasi seharusnya memisahkan failure mode yang ditargetkan decoder dari output quality yang lebih luas. Repetition rate, continuation coherence, task constraint, dan factual check menjelaskan properti yang berbeda.
Perbandingan juga perlu menjaga prompt, model weight, stopping rule, dan penanganan output length tetap sama. Jika tidak, decoder yang sekadar menghasilkan teks lebih pendek dapat terlihat lebih sedikit mengulang tanpa benar-benar menunjukkan continuation policy yang lebih baik.
Token blocking dan contrastive search menyelesaikan masalah berbeda
No-repeat n-gram constraint dan token penalty bekerja langsung pada generated symbol. Keduanya sederhana ketika requirement-nya sendiri bersifat lexical, seperti mencegah exact phrase muncul dua kali.
Contrastive search justru menggunakan representation similarity sebagai sinyal sambil tetap mempertahankan likely candidate dari language model. Ia dapat mengurangi bentuk local degeneration yang lebih luas, tetapi tidak memberi hard guarantee bahwa token atau phrase tertentu tidak akan pernah berulang.
Boundary ini menentukan mekanisme mana yang cocok untuk aplikasi. Hard lexical constraint tepat ketika repeated text memang invalid secara definisi. Representation-aware ranking lebih cocok ketika repetition tidak diinginkan sebagai generation pattern tetapi legitimate reuse tetap harus dimungkinkan.
Karena itu contrastive search paling tepat diperlakukan sebagai decoding policy, bukan generic repetition filter. Perilakunya berasal dari interaksi antara model probability, ukuran candidate set, penalty weight, dan hidden-state geometry. Mengubah salah satu bagian tersebut dapat mengubah output walaupun model weight yang mendasarinya tetap sama.