Ana içeriğe geç

Orta9 dk

Düşünce zinciri (chain-of-thought) ve sınırları

Önkoşul:Örnekle öğretme (few-shot)

Kanca

“Bir mağazada 84 elma vardı. Sabah 27, öğleden sonra 19 tane sattılar, sonra 45 elmalık yeni bir teslimat geldi. Şimdi kaç elma var?” — modelden DOĞRUDAN cevap istemek mi, yoksa ARA ADIMLARI göstermesini istemek mi daha GÜVENİLİR?

Sezgi

“Düşünce zinciri” (chain-of-thought, CoT), modelden DOĞRUDAN cevap yerine, ARA ADIMLARI YAZARAK ilerlemesini istemektir. Bunun NEDEN işe yaradığı, 5. kategoride (NLP & LLM) kurduğumuz Transformer mimarisinin BİR ÖZELLİĞİNDEN kaynaklanır: her token, SABİT miktarda hesaplama alır.

Mekanizma

Aynı çok-adımlı problemi, doğrudan ve CoT olarak karşılaştıralım — HEM istem HEM çıktı token’larını sayalım:

Doğrudan cevap vs adım adım gösterim

# "Düşünce zinciri" (chain-of-thought, CoT): modele DOĞRUDAN cevabı sormak yerine,
# ARA ADIMLARI göstermesini istemek. Bir çok-adımlı problem üzerinde karşılaştıralım.
SORU = (
    "A store had 84 apples. They sold 27 in the morning and 19 in the afternoon, "
    "then received a new delivery of 45 apples. How many apples does the store have now?"
)
DOGRUDAN_ISTEM = SORU + " Answer with just the final number."
COT_ISTEM = SORU + " Think step by step, showing each calculation before giving the final answer."

# ÖĞRETİCİ amaçlı ÖRNEK çıktılar (gerçek bir LLM'e bu ortamda erişim YOK, ama token
# sayımı GERÇEK bir tokenizer ile yapılıyor):
DOGRUDAN_CIKTI = "83"
COT_CIKTI = (
    "Start: 84 apples.\n"
    "Morning sale: 84 - 27 = 57.\n"
    "Afternoon sale: 57 - 19 = 38.\n"
    "New delivery: 38 + 45 = 83.\n"
    "Final answer: 83"
)

t_dogrudan_istem = mesaj_token_sayisi(DOGRUDAN_ISTEM)
t_cot_istem = mesaj_token_sayisi(COT_ISTEM)
t_dogrudan_cikti = mesaj_token_sayisi(DOGRUDAN_CIKTI)
t_cot_cikti = mesaj_token_sayisi(COT_CIKTI)

print(f"Doğrudan istem: {t_dogrudan_istem} token, çıktı: {t_dogrudan_cikti} token, TOPLAM: {t_dogrudan_istem + t_dogrudan_cikti}")
print(f"CoT istem:      {t_cot_istem} token, çıktı: {t_cot_cikti} token, TOPLAM: {t_cot_istem + t_cot_cikti}")
print(f"\nCoT, TOPLAM maliyeti {(t_cot_istem+t_cot_cikti)/(t_dogrudan_istem+t_dogrudan_cikti):.1f}x artırıyor -- ÇOĞU")
print("ek maliyet, İSTEMDEN değil, ÇIKTIDAN (ara adımların YAZILMASINDAN) geliyor.")
Doğrudan istem: 113 token, çıktı: 3 token, TOPLAM: 116
CoT istem:      142 token, çıktı: 97 token, TOPLAM: 239

CoT, TOPLAM maliyeti 2.1x artırıyor -- ÇOĞU
ek maliyet, İSTEMDEN değil, ÇIKTIDAN (ara adımların YAZILMASINDAN) geliyor.

Matematik

Neden CoT işe yarar: sabit hesaplama bütçesi

17-19. derste (NLP & LLM kategorisi) gördüğümüz gibi, bir Transformer HER YENİ token için AYNI sayıda katmandan, TEK bir ileri geçişte geçer — token başına “düşünme kapasitesi” SABİTTİR. Karmaşık, çok adımlı bir problemi TEK bir token’da (doğrudan cevap) çözmek, bu SABİT bütçeyi ZORLAR.

CoT, hesaplamayı adımlara yayar

# 17-19. dersten (NLP kategorisi) hatırla: bir Transformer, HER token için SABİT
# miktarda hesaplama yapar (N katman, tek ileri geçiş) -- token BAŞINA "düşünme" SINIRLIDIR.
print("\n17-19. dersten (NLP & LLM kategorisi) hatırla: bir Transformer, HER YENİ token için")
print("SABİT sayıda katmandan SADECE BİR KEZ geçer -- 'tek adımda' ne kadar karmaşık bir")
print("hesaplama yapabileceği SINIRLIDIR. Ama HER üretilen token, bir SONRAKİ token'ın")
print("BAĞLAMININ bir PARÇASI olur (17. ders, otoregresif üretim).")
print("\nCoT, bu SINIRI 'aşmanın' bir yolu: modelin karmaşık problemi TEK bir ileri geçişte")
print("çözmesini İSTEMEK yerine, HESAPLAMAYI ARA ADIMLARA YAYARAK, her adımı AYRI (ve daha")
print("BASİT) bir ileri geçişte ürettirmek -- ve HER adım, bir SONRAKİNİN girdisi olur.")

17-19. dersten (NLP & LLM kategorisi) hatırla: bir Transformer, HER YENİ token için
SABİT sayıda katmandan SADECE BİR KEZ geçer -- 'tek adımda' ne kadar karmaşık bir
hesaplama yapabileceği SINIRLIDIR. Ama HER üretilen token, bir SONRAKİ token'ın
BAĞLAMININ bir PARÇASI olur (17. ders, otoregresif üretim).

CoT, bu SINIRI 'aşmanın' bir yolu: modelin karmaşık problemi TEK bir ileri geçişte
çözmesini İSTEMEK yerine, HESAPLAMAYI ARA ADIMLARA YAYARAK, her adımı AYRI (ve daha
BASİT) bir ileri geçişte ürettirmek -- ve HER adım, bir SONRAKİNİN girdisi olur.

CoT, bu sınırı “aşmanın” bir yolu: karmaşık problemi TEK bir ileri geçişte çözdürmek yerine, hesaplamayı ARDIŞIK, BASİT adımlara yayıyor — NLP kategorisinin 17. dersindeki otoregresif üretim sayesinde HER yazılan adım, SONRAKİNİN bağlamının bir parçası oluyor.

Kod

Doğrudan cevap ve chain-of-thought yaklaşımlarının istem ve çıktı token sayılarını yığılmış çubuklarla gösteren grafik; CoT belirgin biçimde daha yüksek, farkın çoğu çıktıdan geliyor.
CoT'un ek maliyetinin BÜYÜK kısmı çıktıdan (turuncu) geliyor -- ara adımların YAZILMASI, doğrudan cevabın (3 token) aksine 97 token tutuyor.

Nerede işe yarar

CoT güçlü ama MÜKEMMEL olmayan bir teknik:

CoT'un bilinen sınırları

# CoT MÜKEMMEL değildir. Araştırmalar (Anthropic, 2023, "Measuring Faithfulness in
# Chain-of-Thought Reasoning") GÖSTERDİ: modelin YAZDIĞI ara adımlar, cevaba GERÇEKTEN
# NASIL ulaştığını HER ZAMAN dürüstçe YANSITMAYABİLİR -- bu "sadakatsizlik" (unfaithfulness)
# olarak adlandırılır.
print("\nCoT'un BİLİNEN sınırları:")
print("  1. Maliyet: bu dersteki örnekte TOPLAM token maliyetini belirgin biçimde artırdı.")
print("  2. Basit görevlerde FAYDASIZ: tek adımlı bir soruda ('2+2 kaç eder?') CoT gereksiz")
print("     UZUNLUK ve gecikme (latency) ekler.")
print("  3. Sadakatsizlik (unfaithfulness): araştırmalar, modelin YAZDIĞI 'akıl yürütmenin',")
print("     cevaba NASIL ulaştığının HER ZAMAN doğru bir açıklaması OLMAYABİLECEĞİNİ gösterdi --")
print("     yazılan adımlar 'makul görünen' ama GERÇEK süreci YANSITMAYAN bir anlatı OLABİLİR.")

CoT'un BİLİNEN sınırları:
  1. Maliyet: bu dersteki örnekte TOPLAM token maliyetini belirgin biçimde artırdı.
  2. Basit görevlerde FAYDASIZ: tek adımlı bir soruda ('2+2 kaç eder?') CoT gereksiz
     UZUNLUK ve gecikme (latency) ekler.
  3. Sadakatsizlik (unfaithfulness): araştırmalar, modelin YAZDIĞI 'akıl yürütmenin',
     cevaba NASIL ulaştığının HER ZAMAN doğru bir açıklaması OLMAYABİLECEĞİNİ gösterdi --
     yazılan adımlar 'makul görünen' ama GERÇEK süreci YANSITMAYAN bir anlatı OLABİLİR.
  • Çok-adımlı MANTIK ve ARİTMETİK görevlerinde EN ÇOK fayda sağlar — tek adımlı, doğrudan bilgi sorularında (2. derste gördüğümüz “Türkiye’nin başkenti” gibi) genelde GEREKSİZDİR.
  • “Sadakatsizlik” (unfaithfulness), AKTİF bir araştırma konusudur — modelin YAZDIĞI adımların, GERÇEK iç hesaplamayı ne kadar DOĞRU yansıttığı hâlâ tam netleşmemiştir.
  • Maliyet ve gecikme (latency) HER ZAMAN artar — CoT’u SADECE gerçekten FAYDALI olacağı görevlerde kullanmak, gereksiz UZUN yanıtlardan KAÇINMANIN yoludur.

Bu 2 hatayı yaparsın:

  1. CoT’u HER göreve otomatik olarak uygulamak — basit görevlerde SADECE maliyet ve gecikme EKLER, doğruluğa katkısı YOKTUR.
  2. Modelin yazdığı “akıl yürütmeyi” HER ZAMAN GERÇEK iç sürecin dürüst bir açıklaması SANMAK — araştırmalar, bunun HER ZAMAN böyle olmadığını gösteriyor.

Kendini test et

1. Notebook'ta CoT (adım adım düşünme), toplam maliyeti 2.1 kat artırıyor. Bu ek maliyetin BÜYÜK kısmı NEREDEN geliyor?
  1. Sadece istemden (soru metninden)
  2. ÇIKTIDAN -- doğrudan cevap sadece 3 token iken, ara adımları GÖSTEREN CoT çıktısı 97 token; asıl maliyet farkı MODELİN YAZDIĞI ek metinden geliyor (doğru cevap)
  3. İkisi arasında hiçbir fark yoktur
  4. Sadece istem uzunluğundan

Neden: dogrudan-vs-cot bloğunda doğrudan çıktı 3 token, CoT çıktısı 97 token -- istem farkı (113 vs 142) çok daha KÜÇÜK, asıl fark ÇIKTIDA.

2. CoT'un işe yaramasının ALTINDA yatan mimari neden nedir?
  1. CoT modelin parametrelerini geçici olarak artırır
  2. Bir Transformer HER token için SABİT miktarda hesaplama yapar (tek ileri geçiş); CoT, karmaşık bir problemi TEK bir token'da çözmek yerine, hesaplamayı BASİT ARDIŞIK adımlara YAYARAK bu sabit bütçeyi aşar (doğru cevap)
  3. CoT modele internetten ek bilgi indirtir
  4. CoT, modelin eğitim verisini günceller

Neden: MathBox ve neden-ise-yarar bloğunda AÇIKÇA belirtildiği gibi, 17-19. dersteki (NLP kategorisi) 'her token sabit hesaplama alır' ilkesi, CoT'un NEDEN işe yaradığının mimari temelidir.

3. 'Sadakatsizlik' (unfaithfulness) kavramı CoT bağlamında NEYİ ifade eder?
  1. Modelin yalan söylemesi
  2. Modelin YAZDIĞI ara akıl yürütme adımlarının, cevaba GERÇEKTEN nasıl ulaşıldığının HER ZAMAN doğru/dürüst bir açıklaması OLMAYABİLECEĞİ -- yazılan adımlar 'makul görünen' ama gerçek süreci yansıtmayan bir anlatı olabilir (doğru cevap)
  3. Modelin CoT kullanmayı reddetmesi
  4. Modelin yanlış dilde cevap vermesi

Neden: sinirlar bloğunda bu AÇIKÇA tanımlanıyor: araştırmalar (Anthropic, 2023), yazılan akıl yürütmenin gerçek iç süreci HER ZAMAN yansıtmayabileceğini gösterdi.

Özet

Özet

  • CoT, modelden doğrudan cevap yerine ARA ADIMLARI yazmasını ister.
  • Bunun mimari nedeni: bir Transformer her token için SABİT hesaplama yapar -- CoT, karmaşık hesaplamayı ARDIŞIK, basit adımlara YAYAR.
  • Bu dersteki örnekte CoT toplam maliyeti 2.1x artırdı -- FARKIN büyük kısmı çıktıdan (ara adımlardan) geldi.
  • CoT çok-adımlı mantık/aritmetik görevlerinde en FAYDALI, tek-adımlı sorularda genelde GEREKSİZDİR.
  • "Sadakatsizlik" (unfaithfulness): modelin yazdığı adımlar, gerçek iç süreci HER ZAMAN dürüstçe yansıtmayabilir.
Sonraki adım: Yapılandırılmış çıktı alma (JSON, şema) →