Ana içeriğe geç

Düşünce Zinciri Yönlendirmesi: LLM’lerle Adım Adım Akıl Yürütme

Düşünce Zinciri (CoT) yönlendirmesi rehberimizle Büyük Dil Modellerinin (LLM) tüm potansiyelini açığa çıkarın. LLM’lerde akıl yürütme ve problem çözme yeteneklerini nasıl geliştireceğinizi öğrenin.
· 13 dk. oku

Yapay Zeka ile Keşfedin

Büyük Dil Modelleri (LLM’ler), otoregresyon adı verilen bir teknikle metin üretir; bu teknik, bir dizideki önceki kelimelere dayanarak en olası bir sonraki kelimeyi tahmin etmeyi içerir. ChatGPT gibi LLM destekli araçlar, kullanıcı niyetini takip edecek şekilde de ince ayar yapılmıştır. Bu nedenle, yalnızca girdiyi tamamlamakla kalmaz, girdideki kullanıcı niyetini yakalar ve buna uygun bir yanıt üretirler.

Bir süredir ChatGPT’yi denediyseniz, verilen bir yanıtın kalitesinin kullanıcı girdisinin kalitesine de bağlı olduğunu; örneğin aracın bazı sorgulara diğerlerinden daha “iyi” yanıtlar verdiğini fark etmişsinizdir.

Olabilecek en iyi yanıtı almanın sırrı, LLM’lerin çıktıyı nasıl ürettiğini anlamak ve giriş istemini buna göre formüle etmektir. Kullanıcı girdisine uygulanan ve modelin tüm potansiyelinden yararlanmayı amaçlayan teknikler setine İstem Mühendisliği denir.

Bu yazıda, en güçlü İstem Mühendisliği tekniklerinden birini inceleyeceğiz: Düşünce Zinciri (CoT) yönlendirmesi. Bu teknik, akıl yürütme veya problem çözme gerektiren karmaşık görevleri tamamlamayı model için kolaylaştıracak şekilde istemi yapılandırmayı içerir. CoT olmadan, aynı modelin doğru yanıtı veremediği gösterilmiştir.

Modelin Varsayılan Yetenekleri

LLM’ler genelleme yetenekleriyle bilinse de, model yetenekleri göreve bağlıdır. LLM kullanırken, her modelin çok büyük ama yine de sınırlı bir veri tabanında eğitildiğini ve belirli görevler için optimize edildiğini akılda tutmak önemlidir. Dolayısıyla model bazı alanlarda son derece başarılı olabilirken, diğerlerinde başarısız olabilir.

Model yetenekleri zamana da bağlıdır. İnsanlarda olduğu gibi, bana 5 basamaklı bir toplama verirseniz doğru yanıtı bulup geri dönmem için biraz zamana ihtiyacım olur. Acele ederseniz, kolayca yanlış hesaplayıp hatalı bir yanıt verebilirsiniz. 

Benzer şekilde, bir dil modeline bir sonraki belirteci hesaplamak için geçen sürede yapamayacağı kadar karmaşık bir görev verirsek, doğru yanıtı veremeyebilir.

Yine de, insanlarda olduğu gibi, bu modelin görevi yapamayacağı anlamına gelmez. Biraz zaman ya da akıl yürütmesi için rehberlik verildiğinde, model yine de güvenilir bir şekilde yanıt verebilir.

Modelin yanıtı ve bunu üretmek için gereken süre, sorunun nasıl ifade edildiği gibi çeşitli faktörlerden de etkilenebilir:

  • İstem kısa ve basitse, modelin bir sonraki belirteci üretmesi fazla zaman almayabilir.
  • İstem uzun ve karmışıksa, modelin bir sonraki belirteci üretmeden önce daha fazla bilgiyi işlemesi gerekebilir; bu da daha uzun sürebilir.

Düşünce Zinciri yönlendirmesi, hem istemin nasıl formüle edileceğini seçerek hem de modele doğru yanıtı üretmesi için gereken zamanı ya da adımları sağlayarak LLM’lerin karmaşık görevleri başarıyla çözmesine rehberlik eder.

Düşünce Zinciri Yönlendirmesi Nedir?

Düşünce Zinciri yönlendirmesi, dil modellerinin performansını modele, nihai cevaba varmadan önce adım adım bir açıklama veya akıl yürütme süreci üretmesi için açıkça talimat vererek artıran bir tekniktir. Bu yöntem, modelin problemi parçalara ayırmasına ve akıl yürütme hatalarına yol açabilecek ara görevleri atlamamasına yardımcı olur.

CoT etkilidir çünkü LLM’in dikkat mekanizmasını odaklar. Akıl yürütme sürecinin parçalanması, modelin dikkatini bir seferde problemin bir bölümüne yoğunlaştırmasını sağlar ve aynı anda çok fazla bilgiyle uğraşmaktan kaynaklanabilecek hata riskini en aza indirir. 

CoT’nin Kökeni

Google araştırmacıları, 2022 yılında “Chain of Thought Prompting Elicits Reasoning in Large Language Models” başlıklı bir makalede Düşünce Zinciri yönlendirmesini tanıttı. Bu araştırma, bir modeli bir dizi ara akıl yürütme adımında yönlendirmenin, matematiksel problem çözme, mantıksal akıl yürütme ve çok aşamalı soru yanıtlama gibi görevlerde performansını önemli ölçüde artırdığını ortaya koydu.

Önerilen örneklerden birine bakalım:

Standart istem verme ile CoT istem vermenin karşılaştırması. Solda, modele doğrudan nihai cevabı vermesi talimatı veriliyor (standart istem). Sağda, modele nihai cevaba ulaşmak için akıl yürütme sürecini göstermesi talimatı veriliyor (CoT istem). Standart istemde modelin görevi tamamlayamadığını, CoT’de ise doğru cevabı verdiğini gözlemliyoruz.

Standart istem verme ile CoT istem vermenin karşılaştırması. Solda, modele doğrudan nihai cevabı vermesi talimatı veriliyor (standart istem). Sağda, modele nihai cevaba ulaşmak için akıl yürütme sürecini göstermesi talimatı veriliyor (CoT istem).

Gözlemlediğimiz gibi, bir düşünce zinciri — ara akıl yürütme adımlarının dizisi — üretmek, modelin doğru cevabı vermesine yardımcı olur.

Orijinal yazarlar, düşünce zincirini, nihai çıktıya götüren ara doğal dil akıl yürütme adımlarının dizisi olarak tanımlar ve bu yaklaşımı Düşünce Zinciri yönlendirmesi olarak adlandırırlar.

Düşünce Zinciri Yönlendirmesi Nasıl Çalışır?

Süreç, modeli problemi adım adım düşünmeye teşvik eden, böylece doğrudan nihai cevaba atlamadan ara adımlar üretmesini sağlayan istemler hazırlamakla başlar. Bu, farklı stratejilerle yapılabilir:

#1. Açık talimatlar

Açık talimat vermek, problemi bizzat kullanıcı isteminde parçalamak anlamına gelir. Örneğin, modelin düşünce sürecini ayrıntılandırmasını sağlamak için “Önce, ... dikkate almamız gerekiyor” gibi cümleler kullanmak.

Hadi bunu uygulamada görelim!

İspanyol annemin bana Soğuk Demleme tarifi için aile tarifini gönderdiğini hayal edin:

input_text = """
¡Preparar café Cold Brew es un proceso sencillo y refrescante!
Todo lo que necesitas son granos de café molido grueso y agua fría.
Comienza añadiendo el café molido a un recipiente o jarra grande.
Luego, vierte agua fría, asegurándote de que todos los granos de café
estén completamente sumergidos.
Remueve la mezcla suavemente para garantizar una saturación uniforme.
Cubre el recipiente y déjalo en remojo en el refrigerador durante al
menos 12 a 24 horas, dependiendo de la fuerza deseada.
"""

Diyelim ki kahveyle ilgili tüm kelimeleri İngilizceye çevirmekle ilgileniyoruz ve bu görev için ChatGPT’yi kullanmak istiyoruz:

prompt = f"""
Give me a numbered list of all coffee-related words in English from the text below:
Text: <{input_text}>
"""
response = chatgpt_call(prompt)
print(response)

Bu isteme verilen yanıt şöyle:

Modelden bu görevi doğrudan yapmasını istersek, görevi yanlış yerine getirdiğini görebiliyoruz. Sadece kahveyle ilgisi olmayan kelimeler üretmekle kalmıyor, bunları İngilizce yerine İspanyolca da veriyor.

Bu görevin iki adım gerektirdiği için karmaşık olduğunu düşünebiliriz:

  1. Metni İspanyolcadan İngilizceye çevirmek.
  2. Kahveyle ilgili kelimeleri belirlemek.

Bunun yerine, model doğrudan son göreve, yani kahveyle ilgili kelimeleri belirlemeye atlıyor ve çeviri adımını atlıyor. Çeviriyi bir ara görev olarak belirtip görevi iki ana adıma bölerek modeli doğru çıktıya yönlendirebiliriz:

prompt = f"""
Give me a numbered list of all coffee-related words in English from the text below:
The task requires the following actions:
1 - Translate the given text into English.
2 - List each coffee-related word from the English text.
Text: <{input_text}>
"""
response = chatgpt_call(prompt)
print(response)

Yukarıdaki Düşünce Zincirini dahil etmek doğru cevaba götürür:

Bu tekniği, bu yazıda olduğu gibi ChatGPT veya OpenAI API yerine diğer LLM’lerle denemekle ilgileniyorsanız, “Developing Large Language Models” kursu sizin için!

#2. Örtük talimatlar

Bazen, problemi istem içinde kendimiz parçalamaya gerek yoktur. Tokyo Üniversitesi, Google Research ile birlikte, orijinal istemin sonuna yalnızca “Hadi adım adım düşünelim” eklemeyi içeren ve LLM yanıtlarını iyileştiren hoş bir yöntem önerdi.

Bu basit cümle, modelin yüksek sesle akıl yürütmesini ve görevi yerine getirmek için gerekli tüm adımlardan geçmesini teşvik eder.

Yazarların orijinal makalede önerdiği örneklerden birini inceleyelim: “Large Language Models are Zero-Shot Reasoners”:

Standart istemle ve örtük CoT talimatlarının kullanımıyla yapılan karşılaştırma. Solda, model probleme doğrudan nihai cevabı veriyor (sıfır atış istem) ve başarısız oluyor. Sağda, modele örtük bir CoT talimatı veriliyor (CoT istem) ve doğru yanıta ulaşıyor.

Standart istemle ve örtük CoT talimatlarının kullanımıyla yapılan karşılaştırma. Solda, model probleme doğrudan nihai cevabı veriyor (sıfır atış istem) ve başarısız oluyor. Sağda, modele örtük bir CoT talimatı veriliyor (CoT istem) ve doğru yanıta ulaşıyor.

[a] İlk örnekte, yazarlar modelden bir aritmetik problemi çözmesini istiyor, ancak model bu görevde başarısız oluyor.

[b] Daha sonra, orijinal soruya “Hadi adım adım düşünelim” ifadesini ekleyerek modelin cevabı yüksek sesle akıl yürüterek bulması ve başarılı olması sağlanıyor.

Bu basit hileyi MultiArith matematik veri kümesine uygulayan yazarlar, bu örtük talimatın doğruluğu yüzde 18’den yüzde 79’a dört katına çıkardığını buldu!

İlginizi çekiyorsa, bu teknik hakkında “ChatGPT’nin Sonuçlarını Artırmak için Bu Kısa İstemi Kullanın” yazısını okuyabilirsiniz.

#3. Gösterimsel örnekler

Yukarıdaki bölümde birkaç kez “sıfır atış” terimini kullandık. Sıfır atış, bir modelin, o özgül görevin örnekleri üzerinde açıkça eğitilmemiş olsa bile bir görevi yerine getirebilme yeteneğine karşılık gelir. 

Bu, modelin genelleme yapabilmesine ve yeni, daha önce görülmemiş görevlere uygun yanıtlar üretebilmesine dayanır. Yani ChatGPT’nin kullanıcı arayüzünü açıp doğrudan soru sorduğumuzda, sıfır atış istem yapıyoruz demektir.

Bununla birlikte, modeli çözmek istediğimiz benzer görevlerin birkaç örneğini gösterebileceğimiz yöntemler vardır. Bir dizi gösterimsel örnek sağlamak, verilen örnek sayısına bağlı olarak tek atış ve az atış istemi olarak bilinir.

Tek atış istem

Tek atış istem, modele hedef göreve benzer bir örneği yol gösterici olarak göstermeyi içerir.

Örneğin, yazının ilk görseline geri dönersek, modelin, istemde sağlanan gösterimsel örnek sayesinde Düşünce Zinciri ürettiğini gözlemleyebiliriz.

Az atış istem

Az atış öğrenme, tek atışla aynı şekilde çalışır ancak verilen örnek sayısı daha fazladır; tipik olarak yüz civarında. Modelin performansı, örnek sayısıyla doğrusal olarak artar.

Az atış istem, Google’dan Jason Wei ve Denny Zhou ile çalışma arkadaşları tarafından incelenmiştir. Bu yaklaşım, modelin sıfır ya da tek atış istemle görevi yerine getirmek için yeterli arka plan bilgisine sahip olmayabileceği, daha uzmanlaşmış ya da alan‑özgü bilginin gerektiği görevler için özellikle kullanışlıdır. Az atış istem bazen, modelin yeni ya da özel bir veri koleksiyonunda küçük bir ince ayarı olarak görülür.

Tek atış ve az atış isteme daha fazla örnek için “Prompt Engineering ile ChatGPT Performansını İyileştirin”.

Az atış CoT istem

Tek atış ve az atış istem, CoT değildir. Ancak araştırmacılar, az atış öğrenmenin CoT yönlendirmesiyle nasıl birleştirilebileceğini, “Az atış CoT yönlendirmesi” olarak bilinen yaklaşımı incelediler. Az atış CoT’de, modele, akıl yürütme sürecini yönlendirmek için birkaç problem örneği ve bunların adım adım çözümleri sağlanır.

Az atış CoT yönlendirmesini, bilgi getirmeli üretim veya etkileşimli sorgulama gibi diğer tekniklerle birleştirmek, modelin performansını ve güvenilirliğini daha da artırabilir. Harici bilgi tabanlarının, veritabanlarının veya bilgi getirme sistemlerinin entegrasyonu, modelin akıl yürütmesini olgusal ve güncel bilgilerle güçlendirmesine olanak tanır.

Düşünce Zinciri Yönlendirmesini Pratikte Uygulamak

CoT’nin modellerin bilgi alanında gezinmesine ve karmaşık görevleri çözmesine nasıl yardımcı olabileceğini illüstre etmek için matematiksel problemler labirenti.

CoT’nin, modellerin bilgi alanında gezinmesine ve karmaşık görevleri çözmesine nasıl yardımcı olabileceğini illüstre etmek için matematiksel problemler labirenti. Aşağıdaki istemle ChatGPT 4o görsel üretimi kullanılarak kendi üretilen görsel: “Bir Dil Modeli aracısını matematiksel problemlerden oluşan bir labirentin içinde hayal edin”.

CoT’yi istemlerimize dahil etmenin birden fazla yolu vardır:

  • Yapılandırılmış şablonlar: Kahve örneğinde gördüğümüz gibi, modelin atması gereken adımları açıkça özetleyen şablonlar kullanmak. Daha fazla istem şablonu ve koşullu istem örneği için Prompting Guidelines yazısına bakın.
  • Etkileşimli istemler: Modelin her adımı açıklaması için onu diyaloğa dahil etmek veya her adımda geri bildirim ya da düzeltmeler sağlayarak modelin akıl yürütme sürecini yönlendirmek. Bu yaklaşım, İnsan-Döngüde (Human-in-the-Loop) olarak da bilinir.
  • Geri bildirim döngüleri: Modelin ara adımlarının değerlendirildiği ve gerekirse iyileştirildiği geri bildirim mekanizmalarını dahil etmek. Bu, Çok Aşamalı (Multi-Stage) istem olarak da bilinir.

CoT ve diğer İstem Mühendisliği tekniklerini uygulamanıza yardımcı olabilecek birden fazla çerçeve vardır; ancak benim favorim LangChain. LLM destekli projelerinizde LangChain kullanmakla ilgileniyorsanız, “Developing LLM Applications with LangChain” kursu ideal bir başlangıç noktasıdır.

Düşünce Zinciri Yönlendirmesinin Faydaları

Düşünce Zinciri yönlendirmesi, özellikle karmaşık görevlerde dil modellerinin performansını ve güvenilirliğini artırmada çeşitli faydalar sunar.

#1. Geliştirilmiş doğruluk

Bir problemi daha küçük, yönetilebilir adımlara bölerek model, karmaşık görevleri daha doğru şekilde ele alabilir. Ara adımlar, olası hataların yakalanıp düzeltilebileceği kontrol noktaları sağlar ve daha doğru nihai yanıtlara yol açar.

Matematik problemleri, mantık bulmacaları veya çok aşamalı soru yanıtlama gibi görevlerin bu yaklaşımdan fayda görmesinin nedeni, zaten doğaları gereği birden fazla akıl yürütme adımı gerektirmeleridir.

#2. Artırılmış yorumlanabilirlik

Adım adım akıl yürütme süreci şeffaftır; kullanıcıların modelin sonuca nasıl ulaştığını anlamalarını sağlar. Bu şeffaflık, modelin çıktısına olan güveni artırır.

Ayrıca hata ayıklamaya da yardımcı olabilir; çünkü kullanıcılar, modelin akıl yürütmesinde nerede hata yapmış olabileceğini daha kolay fark edebilir.

Sınırlamalar ve Dikkat Edilmesi Gerekenler

Elbette, her teknikte olduğu gibi, göz önünde bulundurulması gereken bazı dezavantajlar vardır:

Modele bağımlılık

CoT’nin bir modele bağımlı teknik olduğunu akılda tutmak önemlidir. Dolayısıyla, CoT yönlendirmesinin etkinliği büyük ölçüde altta yatan dil modelinin yeteneklerine bağlıdır.

İstem oluşturma

Etkili CoT istemleri hazırlamak da zorlayıcı olabilir. İstemlerin, modeli akıl yürütme sürecinde doğru şekilde yönlendirmesini sağlamak için dikkatli tasarım gerektirir. Farklı görev ve alan türleri için istemleri güncellemek ve sürdürmek zaman alıcı olabilir ve sürekli iyileştirme gerektirebilir.

Performans

CoT yönlendirmesi, belirgin bir sıralı akıl yürütme süreci olmayan görevler için o kadar etkili olmayabilir. Ayrıca, ek eğitim veya uyarlama olmadan tamamen yeni ya da beklenmedik problem türlerine iyi genellenmeyebilir; bu nedenle güncel bir bilgi tabanı ve uygun istemlerin korunması kritik önem taşır.

Ödünleşimler

CoT yönlendirmesi, adım adım açıklamalar sağlayarak yorumlanabilirliği artırsa da, daha uzun ve daha ayrıntılı çıktılara yol açabilir; bu da tüm uygulamalar için her zaman arzu edilen bir durum değildir.

Sonuç

Bu yazıda, Düşünce Zinciri yönlendirmesinin, Büyük Dil Modellerinin akıl yürütme yeteneklerini artırmada nasıl önemli bir ilerlemeyi temsil ettiğini ve uygulanmasına dair bazı pratik örnekleri gördük. 

İster istem şablonları, ister etkileşimli istemler ya da geri bildirim döngüleri kullanılsın, bu yaklaşımların arkasındaki fikir, modeli akıl yürütme süreci boyunca yönlendirmek ve yeteneklerinden yararlanmaktır. 

Ayrıca, modelin performansını daha da artıran ve CoT ile birleştirilebilen tek atış ve az atış istem gibi güçlü teknikleri; bununla birlikte göz ardı edemeyeceğimiz faydalar ve bazı sınırlamaları da inceledik.

Bu yazıda tartışılan teknikleri daha güvenilir, yüksek performanslı istemler oluşturmak için denemeyi düşünün ve şunu unutmayın: İstem Mühendisliği çıktılarınız üzerinde büyük bir etkiye sahip olabilir!

İstem mühendisliği hakkında daha fazla bilgi için DataCamp’in Understanding Prompt Engineering ve ChatGPT Prompt Engineering for Developers kurslarına göz atabilirsiniz. Ayrıca istem mühendisliği sertifikası için ayrı bir rehbere de göz atarak sizin için en iyi öğrenme yollarını keşfedebilirsiniz. 

Düşünce Zinciri Yönlendirmesi Hakkında SSS

Düşünce Zinciri Yönlendirmesi tüm soru türlerinde kullanılabilir mi?

Düşünce Zinciri Yönlendirmesi özellikle karmaşık, çok adımlı akıl yürütme gerektiren görevler için etkili olsa da, doğrudan yanıtlanabilecek daha basit sorular için her zaman gerekli olmayabilir. Doğru cevaba ulaşmak için doğal olarak ayrıntılı, adım adım bir sürecin gerektiği problemler için en faydalıdır.

Düşünce Zinciri yönlendirmesi herhangi bir yapay zeka modeliyle kullanılabilir mi?

Evet, örneğin bir robotu bir labirentte gezinmek üzere eğitirken, CoT yaklaşımı navigasyonu adımlara bölmek için kullanılabilir; mevcut konumu belirlemek, olası yolları değerlendirmek ve en az engelli yolu seçmek gibi.

Düşünce Zinciri yönlendirmesi, Yapay Zekâ Açıklanabilirliğine katkıda bulunuyor mu?

Evet, modelin akıl yürütme sürecini takip etmeyi kolaylaştırarak daha şeffaf ve yorumlanabilir hale getirir. Bu, sağlık ve finans gibi, yapay zekâ kararlarının gerekçesini anlamanın kritik olduğu alanlarda özellikle değerlidir.

Düşünce Zinciri yönlendirmesi ile Çok Adımlı istem verme arasındaki fark nedir?

Düşünce zinciri yönlendirmesi, modeli bir problemi çözmek için bir dizi mantıksal akıl yürütme adımından geçirmeyi içerir. Buna karşılık, çok adımlı istem verme, problemi çözmeye doğru modeli aşamalı olarak yönlendiren, her aşamada ek istemler veya ipuçları sağlamayı içerir.

Düşünce Zinciri yönlendirmesiyle Öz‑Tutarlılık nedir?

Öz‑tutarlılıkta, CoT’de olduğu gibi tek bir düşünce zinciri üretmek yerine, model aynı soru için birden fazla zincir üretir; her zincir farklı bir akıl yürütme yolunu temsil eder. Nihai yanıt, bu farklı akıl yürütme yolları arasında en sık görülen sonuca göre belirlenir. Bu, tek bir akıl yürütme zincirinde ortaya çıkabilecek hataları azaltmaya yardımcı olur.

Andrea Valenzuela

Yazar

Andrea Valenzuela

Andrea Valenzuela, şu anda İsviçre'nin Cenevre kentindeki parçacık hızlandırıcısında (CERN) yürütülen CMS deneyinde çalışmaktadır. Son altı yıldır veri mühendisliği ve analizi alanındaki uzmanlığıyla veri analizi ve yazılım geliştirme görevlerini üstlenmektedir. Şimdi ise Medium yayını ForCode'Sake aracılığıyla veriyle ilgili teknolojilerin öğrenimini demokratikleştirmeye yönelik çalışmalar yapmaktadır.

Katalonya Politeknik Üniversitesi'nden Mühendislik Fiziği lisans derecesine ve Pompeu Fabra Üniversitesi'nden Akıllı Etkileşimli Sistemler yüksek lisans derecesine sahiptir. Araştırma deneyimi arasında, Normalizing Flows gibi görüntü üretimine yönelik önceki OpenAI algoritmalarıyla yürütülen profesyonel çalışmalar yer almaktadır.

Konular

İlgili