AI Prompt Engineering · Ders

Top-p Çekirdek Örnekleme

top-p'nin örneklemeyi en olası belirteç kümesiyle nasıl sınırladığını öğrenin.

2. ders / 413 adım

Top-p Çekirdek Örnekleme, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

Top-p Örneklemesi Nedir

Top-p örneklemesi (çekirdek örneklemesi olarak da adlandırılır), örneklemeyi kelime dağarcığının dinamik bir alt kümesiyle sınırlayan bir tekniktir. Model, tüm belirteçlerden örnekleme yapmak yerine, kümülatif olasılığı en az p olan en küçük belirteç kümesini dikkate alır.

Holtzman ve diğerleri tarafından 2019'da yayımlanan 'Sinirsel Metin Bozulmasının İlginç Vakası' adlı makalede önerilen bu yöntem, çeşitli ancak tutarlı üretim konusunda basit sıcaklık ölçeklendirmesinden daha iyi sonuç verir.

Top-p Adım Adım Nasıl Çalışır

Algoritma:

  1. Tam kelime dağarcığı üzerindeki softmax olasılıklarını hesaplayın
  2. Belirteçleri olasılığa göre sıralayın (en yüksekten en düşüğe)
  3. Kümülatif toplam p'ye ulaşana kadar sıralı listede ilerleyerek olasılıkları biriktirin
  4. Bu belirteç kümesi çekirdektir
  5. Yalnızca çekirdekten örnekleme yapın (olasılıkları toplamları 1 olacak şekilde yeniden normalleştirin)
import numpy as np

def top_p_sample(logits, p=0.9):
    probs = softmax(logits, temperature=1.0)

    # Sort by probability descending
    sorted_indices = np.argsort(probs)[::-1]
    sorted_probs = probs[sorted_indices]

    # Find nucleus: smallest set with cumulative prob >= p
    cumulative = np.cumsum(sorted_probs)
    nucleus_size = np.searchsorted(cumulative, p) + 1
    nucleus_indices = sorted_indices[:nucleus_size]
    nucleus_probs = sorted_probs[:nucleus_size]

    # Renormalize
    nucleus_probs = nucleus_probs / nucleus_probs.sum()

    # Sample
    chosen = np.random.choice(nucleus_indices, p=nucleus_probs)
    return chosen

token = top_p_sample(logits, p=0.9)

Dinamik Çekirdek

Top-p'nin temel içgörüsü şudur: çekirdeğin boyutu dinamiktir. Model çok emin olduğunda (tek bir belirteç 0.95 olasılıkla baskın olduğunda) çekirdek yalnızca 1 belirteç içerir. Model emin olmadığında (birçok belirtecin olasılığı birbirine yakın olduğunda) çekirdek daha fazla belirteci içerecek şekilde genişler.

Bu yöntem kendini modelin güven düzeyine uyarlar — yüksek güven → küçük kelime dağarcığı → odaklanmış çıktı. Düşük güven → daha büyük kelime dağarcığı → daha fazla keşif.

# High-confidence situation: model strongly prefers 'the'
high_confidence_logits = np.array([5.0, 1.0, 0.5, 0.1, -0.5])
hc_probs = softmax(high_confidence_logits)
print('High confidence probs:', np.round(hc_probs, 3))
# [0.974, 0.018, 0.011, 0.007, 0.004]
# Top-p=0.9 nucleus: just 1 token (cumulative after token 0 = 97.4% > 90%)

# Low-confidence situation: model unsure
low_confidence_logits = np.array([1.1, 1.0, 0.9, 0.8, 0.7])
lc_probs = softmax(low_confidence_logits)
print('Low confidence probs:', np.round(lc_probs, 3))
# [0.218, 0.208, 0.199, 0.190, 0.181]
# Top-p=0.9 nucleus: all 5 tokens (need all to reach 90%)

OpenAI API'sinde Top-p

API çağrınızda top_p değerini ayarlayın. Geçerli aralık 0.0–1.0'dır. Varsayılan değer 1.0'dır (tam kelime dağarcığı, çekirdek sınırlaması yok).

OpenAI'nin önerisi şudur: top_p'yi değiştirirseniz sıcaklığı 1.0'da bırakın; sıcaklığı değiştirirseniz de bunun tersini yapın. İkisini aynı anda ayarlamak, etkin örnekleme davranışının öngörülmesini zorlaştırır.

import openai
client = openai.OpenAI(api_key='sk-...')

# Nucleus sampling: top 90% of probability mass
resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Tell me an interesting fact about the ocean.'}],
    temperature=1.0,   # leave temperature at default
    top_p=0.9          # sample from top 90% nucleus
)
print(resp.choices[0].message.content)

p=1.0: Sınırlamasız Örnekleme

top_p=1.0 olduğunda çekirdek tüm belirteçleri, yani tam kelime dağarcığını içerir. Bu, top-p sınırlaması olmadan yapılan salt sıcaklık örneklemesine eşdeğerdir. Ne kadar düşük olasılıklı olursa olsun her belirtecin seçilme ihtimali sıfırdan büyüktür.

Maksimum çeşitliliği istediğinizde p=1.0 kullanın. p=1.0 iken dağılımın şeklini yalnızca sıcaklık kontrol eder.

# p=1.0: all tokens in nucleus
resp_full = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Generate a creative story opening.'}],
    temperature=1.0,
    top_p=1.0  # no nucleus restriction
)

# p=0.5: very focused nucleus
resp_focused = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Generate a creative story opening.'}],
    temperature=1.0,
    top_p=0.5  # only top 50% probability mass
)

Ödünleşim: Top-p ve Sıcaklık

Her iki parametre de çıktı çeşitliliğini kontrol eder, ancak bunu farklı biçimlerde yapar:

  • Sıcaklık tüm dağılımı yeniden şekillendirir — bir belirtecin diğer tüm belirteçlere göreli olasılığı değişir
  • Top-p dağılımı keser — bir belirteç çekirdeğin dışındaysa, göreli olasılığı ne olursa olsun basitçe dışlanır

Top-p, 'kuyruk örneklemesi' sorununu önler: yüksek sıcaklıkta son derece düşük olasılıklı belirteçler (anlamsız metinler, ilgisiz sözcükler) zaman zaman seçilebilir. Top-p, bu belirteçleri değerlendirmeden tamamen çıkarır.

# The tail problem with temperature alone
high_temp_logits = np.array([3.0, 2.0, 1.0, 0.0, -1.0, -5.0, -10.0])
probs_high_temp = softmax(high_temp_logits, temperature=2.0)
print('High temp probs:', np.round(probs_high_temp, 4))
# The last token (logit=-10) still has a small probability
# With many tokens in a real vocab, these rare tokens accumulate
# and occasionally get sampled, producing incoherent output

# Top-p=0.9 cuts these off entirely
# ensuring only tokens contributing to the top 90% are considered

Sıcaklık ve Top-p'yi Birlikte Kullanma

Her iki parametre birlikte kullanıldığında önce sıcaklık uygulanır (dağılım yeniden şekillendirilir), ardından top-p ortaya çıkan olasılıklara uygulanır (dağılım çekirdekle sınırlandırılır).

Yaygın üretim yapılandırmaları:

  • Yaratıcı yazım: sıcaklık=1.0, top_p=0.95
  • Sohbet: sıcaklık=0.8, top_p=0.9
  • Kod: sıcaklık=0.2, top_p=1.0 (düşük sıcaklıkta top-p sınırlayıcı değildir)
def combined_sample(logits, temperature=1.0, top_p=0.9):
    # Step 1: apply temperature
    probs = softmax(logits, temperature=temperature)

    # Step 2: apply top-p nucleus
    sorted_idx = np.argsort(probs)[::-1]
    sorted_probs = probs[sorted_idx]
    cumulative = np.cumsum(sorted_probs)
    nucleus_size = np.searchsorted(cumulative, top_p) + 1
    nucleus_idx = sorted_idx[:nucleus_size]
    nucleus_probs = probs[nucleus_idx]
    nucleus_probs = nucleus_probs / nucleus_probs.sum()

    return np.random.choice(nucleus_idx, p=nucleus_probs)

Top-p ve Tekrar

Düşük top-p değerleri tekrara yol açabilir. Çekirdek çok küçük olduğunda (ör. p=0.5) model, küçük bir belirteç kümesinden tekrar tekrar örnekleme yapar. Çıktı tekrarlı ve öngörülebilir hâle gelir; bu da amaçlanan yaratıcı etkinin tam tersidir.

Top-p'nin görev için fazla düşük olduğunun bir işareti olarak tekrara dikkat edin. Yararlı bir tanı yöntemi şudur: model aynı ifadelerde döngüye giriyorsa top-p'yi veya sıcaklığı artırın.

def detect_repetition(text, window=20):
    words = text.split()
    if len(words) < window * 2:
        return False
    # Check if any window of words repeats within the text
    for i in range(len(words) - window):
        phrase = ' '.join(words[i:i + window])
        rest = ' '.join(words[i + window:])
        if phrase in rest:
            return True
    return False

response = call_llm(prompt)
if detect_repetition(response):
    print('Warning: repetition detected — consider increasing top_p or temperature')

Top-p ve Top-k: Önizleme

Top-p ve top-k, örneklemeden önce kelime dağarcığını sınırlar, ancak bunu farklı biçimlerde yapar:

  • Top-p: dinamik çekirdek boyutu — model emin olmadığında genişler, emin olduğunda küçülür
  • Top-k: sabit çekirdek boyutu — güven düzeyinden bağımsız olarak her zaman tam olarak k belirteci değerlendirir

Top-p, modelin güven düzeyine uyum sağladığı için genellikle tercih edilir. Top-k, bir sonraki derste ayrıntılı olarak ele alınacaktır.

# Top-k equivalent for comparison
def top_k_sample(logits, k=50):
    probs = softmax(logits)
    # Keep only top-k tokens
    top_k_indices = np.argsort(probs)[::-1][:k]
    top_k_probs = probs[top_k_indices]
    top_k_probs = top_k_probs / top_k_probs.sum()
    return np.random.choice(top_k_indices, p=top_k_probs)

# Key difference: k is always 50, regardless of model confidence
# Top-p nucleus size varies from 1 to thousands depending on confidence

Varsayılan Değerler ve Bunları Ne Zaman Değiştirmeli

API varsayılanı: top_p = 1.0 (çekirdek sınırlaması yok). Bunu ne zaman değiştirmelisiniz?

  • Top_p'yi düşürün (0.7–0.9): çıktılar tutarsız göründüğünde veya anlamsız sözcükler içerdiğinde — çok fazla kuyruk örneklemesi vardır
  • 1.0'da bırakın: sıcaklık zaten düşük olduğunda — düşük sıcaklıkta dağılım zaten keskindir ve top-p yine de sınırlayıcı değildir
  • 0.5'in altına düşürmeyin: tekrara ve çeşitliliğin kaybolmasına neden olur
# Guidance: what to adjust based on symptoms
TROUBLESHOOTING = {
    'output is incoherent or contains random words': {
        'fix': 'lower top_p to 0.9 or 0.85',
        'or': 'lower temperature'
    },
    'output is repetitive and looping': {
        'fix': 'increase top_p or temperature',
        'also': 'try adding frequency_penalty or presence_penalty'
    },
    'output is too predictable and boring': {
        'fix': 'increase temperature to 0.9-1.2',
        'keep': 'top_p at 0.95'
    },
    'output needs to be deterministic': {
        'fix': 'set temperature=0, top_p=1.0'
    }
}

Anthropic Claude'da Top-p

Anthropic'in Claude API'si de bir parametre olarak top_p değerini sunar. Davranış aynıdır: model, kümülatif olasılığı p eşiğini karşılayan en küçük belirteç kümesinden bir çekirdek oluşturur, ardından bu çekirdekten örnekleme yapar.

İnce ayar için sıcaklıkla birlikte kullanın: sıcaklığı dağılımı şekillendirmek, top_p'yi ise bu dağılımdan seçilebilecek belirteçleri sınırlamak için kullanın.

import anthropic
claude = anthropic.Anthropic(api_key='sk-ant-...')

# Creative writing with nucleus sampling
message = claude.messages.create(
    model='claude-opus-4-5',
    max_tokens=256,
    temperature=1.0,
    top_p=0.95,
    messages=[{
        'role': 'user',
        'content': 'Write a short poem about the ocean.'
    }]
)
print(message.content[0].text)

Bilgi Kontrolü

Top-k örneklemesine kıyasla top-p (çekirdek) örneklemesinin temel avantajı nedir?

Özet: Top-p Çekirdek Örneklemesi

Top-p örneklemesi, toplam olasılığın en az p'sini kapsayan en küçük belirteç kümesi olan dinamik bir çekirdek oluşturur:

  • p=1.0: tam kelime dağarcığı, sınırlama yok
  • p=0.9: olasılık kütlesinin en yüksek %90'ı — tipik yaratıcı ayar
  • p=0.5: çok odaklı — tekrarlama riski

Model emin olmadığında çekirdek genişler, emin olduğunda daralır. Bu, çeşitliliği korurken kuyruk örneklemesini (düşük olasılıklı belirteçlerden anlamsız metinler üretilmesini) önler. Sonraki ders: top-k örneklemesi ve bunun top-p'den farkı.

Başlamak ücretsiz

Yapay zeka eğitmeniyle AI Prompt Engineering öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
53
Dersler
199

Sıkça Sorulan Sorular

“Top-p Çekirdek Örnekleme” dersi ücretsiz mi?

Evet — “Top-p Çekirdek Örnekleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.

“Top-p Çekirdek Örnekleme” dersinde ne öğreneceğim?

top-p'nin örneklemeyi en olası belirteç kümesiyle nasıl sınırladığını öğrenin. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Top-p Çekirdek Örnekleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. LLM'lerde Sıcaklık Nedir
  2. Top-p Çekirdek Örnekleme
  3. Top-k Örnekleme
  4. Kullanım Alanınız İçin Parametreleri Seçme
← AI Prompt Engineering Sayfasına Dön