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
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:
- CoT’u HER göreve otomatik olarak uygulamak — basit görevlerde SADECE maliyet ve gecikme EKLER, doğruluğa katkısı YOKTUR.
- 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?
- Sadece istemden (soru metninden)
- Ç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)
- İkisi arasında hiçbir fark yoktur
- 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?
- CoT modelin parametrelerini geçici olarak artırır
- 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)
- CoT modele internetten ek bilgi indirtir
- 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?
- Modelin yalan söylemesi
- 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)
- Modelin CoT kullanmayı reddetmesi
- 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.