Ana içeriğe geç

Giriş8 dk

Örnekle öğretme (few-shot)

Önkoşul:Rol ve persona verme

Kanca

Bir göreve KURAL yazmak yerine, birkaç ÖRNEK göstersen ne olur? “Bu incelemeyi olumlu/olumsuz diye etiketle” demek yerine, ÜÇ örnek incelemeyi etiketleriyle birlikte göstersen?

Sezgi

“Few-shot” prompting, görevi YAZILI kurallarla açıklamak yerine, birkaç (girdi, çıktı) ÖRNEĞİ göstermektir — model, bu örneklerden görevin KURALINI kendisi ÇIKARSAR. Bu, 5. kategoride (NLP & LLM, 20. ders) gördüğümüz GERÇEK bir bulgunun DOĞRUDAN bir uzantısıdır.

Mekanizma

Aynı sınıflandırma görevini, zero-shot (sıfır örnek) ve 3-shot (üç örnek) olarak karşılaştıralım:

Zero-shot vs 3-shot: aynı görev, farklı öğretim yöntemi

# "Few-shot" (örnekle öğretme): göreve ait KURALI YAZILI olarak açıklamak yerine,
# birkaç (girdi, çıktı) ÖRNEĞİ göstermek -- model, örüntüyü ÇIKARSAR.
ZERO_SHOT = "Classify the sentiment of this review as positive or negative: The food was cold and the service was slow."
FEW_SHOT = """Classify the sentiment of each review as positive or negative.
Review: The staff were friendly and the food was delicious. Sentiment: positive
Review: I waited an hour and the order was wrong. Sentiment: negative
Review: Best meal I have had all year, highly recommend. Sentiment: positive
Review: The food was cold and the service was slow. Sentiment:"""

t_zero = mesaj_token_sayisi(ZERO_SHOT)
t_few = mesaj_token_sayisi(FEW_SHOT)

print(f"Zero-shot ({t_zero} token):\n  {ZERO_SHOT}")
print(f"\n3-shot ({t_few} token):\n{FEW_SHOT}")
print(f"\n3 örnek eklemek, maliyeti {t_few/t_zero:.1f}x artırdı -- ama GÖREV TANIMI hiç")
print("değişmedi. Fark: model, 'sentiment nedir, nasıl etiketlenir' kuralını YAZILI bir")
print("açıklamadan değil, ÜÇ SOMUT örnekten ÇIKARSAMAK zorunda.")
Zero-shot (67 token):
  Classify the sentiment of this review as positive or negative: The food was cold and the service was slow.

3-shot (240 token):
Classify the sentiment of each review as positive or negative.
Review: The staff were friendly and the food was delicious. Sentiment: positive
Review: I waited an hour and the order was wrong. Sentiment: negative
Review: Best meal I have had all year, highly recommend. Sentiment: positive
Review: The food was cold and the service was slow. Sentiment:

3 örnek eklemek, maliyeti 3.6x artırdı -- ama GÖREV TANIMI hiç
değişmedi. Fark: model, 'sentiment nedir, nasıl etiketlenir' kuralını YAZILI bir
açıklamadan değil, ÜÇ SOMUT örnekten ÇIKARSAMAK zorunda.

Matematik

Neden örnekler işe yarar: NLP kategorisinin 20. dersinden gerçek bir kanıt

Few-shot prompting’in NEDEN çalıştığını, GERÇEKTEN eğitilmiş bir modelle zaten GÖRMÜŞTÜK:

NLP kategorisinin 20. dersindeki genelleme bulgusu, few-shot'un temelini açıklıyor

# 20. derste (NLP kategorisi) GERÇEK bir bulgu vardı: gradyan inişiyle eğitilen mini-GPT,
# 'ABCABC...' örüntüsünü gördükten sonra, HİÇ görmediği bağlam uzunluklarında bile
# (örn. tek başına 'C') doğru bir sonraki token'ı tahmin edebiliyordu -- ÖRÜNTÜYÜ genelledi,
# ezberlemedi. Few-shot prompting, AYNI mekanizmadan yararlanır:
print("\n5. kategori (NLP & LLM), 20. ders bulgusu:")
print("  Model 'ABCABC...' dizisini gördükten sonra, HİÇ görmediği bir bağlamda ('C' tek başına)")
print("  bile doğru devamı ('A') tahmin etti -- SPESİFİK diziyi DEĞİL, GENEL kuralı öğrenmişti.")
print("\nFew-shot prompting AYNI ilkeye dayanır: birkaç (girdi->çıktı) örneği GÖRDÜKTEN sonra,")
print("model bağlamdaki ÖRÜNTÜYÜ (görev kuralını) ÇIKARSAR ve YENİ bir girdiye UYGULAR --")
print("bu, ayrı bir eğitim adımı OLMADAN, TEK bir ileri geçişte (19. ders) gerçekleşir.")

5. kategori (NLP & LLM), 20. ders bulgusu:
  Model 'ABCABC...' dizisini gördükten sonra, HİÇ görmediği bir bağlamda ('C' tek başına)
  bile doğru devamı ('A') tahmin etti -- SPESİFİK diziyi DEĞİL, GENEL kuralı öğrenmişti.

Few-shot prompting AYNI ilkeye dayanır: birkaç (girdi->çıktı) örneği GÖRDÜKTEN sonra,
model bağlamdaki ÖRÜNTÜYÜ (görev kuralını) ÇIKARSAR ve YENİ bir girdiye UYGULAR --
bu, ayrı bir eğitim adımı OLMADAN, TEK bir ileri geçişte (19. ders) gerçekleşir.

Kod

Zero-shot ve 3-shot promptların token sayılarını karşılaştıran çubuk grafik; 3-shot belirgin biçimde daha yüksek.
Her eklenen örnek, doğrudan token maliyetine yansıyor -- 3 örnek, maliyeti 3.6 kat artırdı.

Nerede işe yarar

Few-shot prompting kullanırken dikkat edilmesi gereken pratik noktalar:

  • Örnek SAYISI arttıkça FAYDA azalır (diminishing returns) — genelde 2-5 örnek çoğu görev için YETERLİDİR; onlarca örnek eklemek, hem maliyeti artırır hem de her zaman orantılı bir iyileşme SAĞLAMAZ.
  • Örneklerin SIRASI ve ÇEŞİTLİLİĞİ önemlidir — SADECE olumlu örnekler göstermek, modelin her şeyi “olumlu” etiketlemesine YOL AÇABİLİR; dengeli bir karışım daha GÜVENİLİRDİR.
  • Few-shot, 4. dersteki persona gibi, modelin BİLGİ TABANINI genişletmez — SADECE görev FORMATINI ve KRİTERLERİNİ netleştirir; model hâlâ eğitiminde ne gördüyse onu bilir.

Bu 2 hatayı yaparsın:

  1. Few-shot’un HER ZAMAN zero-shot’tan daha İYİ olduğunu düşünmek — basit, NET görevlerde (2. dersteki gibi) zero-shot genelde YETERLİDİR ve daha UCUZDUR.
  2. Tutarsız veya BİRBİRİYLE ÇELİŞEN örnekler seçmek — model, ÖRÜNTÜYÜ çıkarsamaya çalışırken, tutarsız örnekler NET bir kural bulmasını ZORLAŞTIRIR.

Kendini test et

1. Few-shot prompting, zero-shot'tan (sıfır örnek) NASIL farklıdır?
  1. Few-shot, görevi tamamen farklı bir şeye dönüştürür
  2. Few-shot'ta görev KURALI, yazılı bir açıklama yerine birkaç (girdi, çıktı) ÖRNEĞİYLE gösterilir -- model, kuralı örneklerden ÇIKARSAR; görev TANIMI aynı kalır (doğru cevap)
  3. Few-shot, modelin eğitim verisini günceller
  4. Few-shot sadece görsel görevlerde kullanılır

Neden: zero-shot-vs-few-shot bloğunda hem ZERO_SHOT hem FEW_SHOT AYNI sınıflandırma görevini soruyor -- fark, kuralın YAZILI mı yoksa ÖRNEKLERLE mi iletildiğidir.

2. 5. kategorinin (NLP & LLM) 20. dersindeki hangi bulgu, few-shot prompting'in NEDEN işe yaradığını açıklıyor?
  1. Modelin daha fazla parametreye sahip olması
  2. Eğitilen bir modelin, HİÇ görmediği bağlam uzunluklarında bile (örn. tek başına 'C') doğru tahmin yapabilmesi -- yani SPESİFİK örnekleri ezberlemek yerine GENEL bir kuralı öğrenip YENİ durumlara uygulayabilmesi (doğru cevap)
  3. Modelin internet erişimine sahip olması
  4. Modelin daha yavaş çalışması

Neden: neden-ise-yarar bloğu, NLP kategorisinin 20. dersindeki 'ABCABC...' genelleme bulgusunu AÇIKÇA few-shot'un temel mekanizması olarak gösteriyor: örüntüden kural çıkarsama, yeni girdilere uygulama.

3. Few-shot prompting'te SADECE 'olumlu' etiketli örnekler göstermenin RİSKİ nedir?
  1. Hiçbir riski yoktur
  2. Model, gösterilen örüntüye (hepsi olumlu) dayanarak YENİ girdileri de 'olumlu' etiketleme eğiliminde olabilir -- dengesiz örnekler, dengesiz bir çıkarsamaya yol açar (doğru cevap)
  3. Model bu durumda çalışmayı reddeder
  4. Sadece olumlu örnekler göstermek daha hızlı sonuç verir

Neden: Kullanım bölümünde AÇIKÇA belirtildiği gibi, örneklerin ÇEŞİTLİLİĞİ önemlidir -- model örüntüyü ÇIKARSADIĞI için, gösterilen örneklerdeki DENGESİZLİK doğrudan çıktıya YANSIR.

Özet

Özet

  • Few-shot prompting, görev kuralını yazılı açıklama yerine birkaç (girdi, çıktı) örneğiyle gösterir.
  • Model, bu örneklerden görevin ÖRÜNTÜSÜNÜ çıkarsar -- 20. dersteki (NLP kategorisi) genelleme bulgusuyla AYNI mekanizma.
  • Her eklenen örnek, doğrudan token maliyetini artırır (bu dersteki örnekte 3.6x).
  • Örnek sayısı arttıkça fayda AZALIR -- genelde 2-5 örnek çoğu görev için yeterlidir.
  • Tutarlı ve ÇEŞİTLİ örnekler seçmek, modelin DOĞRU kuralı çıkarsaması için KRİTİKTİR.
Sonraki adım: Düşünce zinciri (chain-of-thought) ve sınırları →