AI Prompt Engineering · Ders

Düşünce Ağacı Keşfi

Düşünceleri dallandırma ve değerlendirme.

3. ders / 413 adım

Düşünce Ağacı Keşfi, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. 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.

Zincirlerden Ağaçlara

Düşünce Ağacı (ToT, Yao ve diğerleri, 2023), düşünce zincirini tek bir doğrusal yoldan kısmi çözümlerden oluşan bir arama ağacına geneller. Her düğüm, tutarlı bir ara düşüncedir; dallar alternatif devam yollarını araştırır.

Bu yapı modelin akıl yürütmesini sağlar: birden çok sonraki adım üretir, bunları değerlendirir, umut vadedenleri korur ve çıkmazlardan geri izler. Böylece ilk fikre bağlanmak yerine sistematik problem çözme taklit edilir.

class ThoughtNode:
    def __init__(self, state, parent=None):
        self.state = state      # partial solution / reasoning so far
        self.parent = parent
        self.children = []
        self.value = None       # evaluator score

ToT'nin Dört Bileşeni

Bir ToT sisteminde dört tasarım seçimi vardır: düşünce ayrıştırması (bir adımın ne olduğu), düşünce üreticisi (sonraki adımların nasıl önerileceği), durum değerlendiricisi (kısmi çözümlerin nasıl puanlanacağı) ve arama algoritması (BFS, DFS veya en iyi öncelikli arama).

Bunların her biri ayrı bir istem veya politikadır. ToT tasarlamak, göreviniz için bu dört öğenin tümünü belirtmek anlamına gelir.

tot = {
    'decompose': step_definition,   # e.g. one equation, one move
    'generate':  propose_thoughts,  # sampling or proposal prompt
    'evaluate':  score_state,        # value/vote prompt
    'search':    bfs_with_beam,      # BFS | DFS | best-first
}

Aday Düşünceler Üretme

İki üretim stratejisi vardır: orta düzey sıcaklıkta birkaç bağımsız düşünce örnekleyin (uzayın zengin olduğu durumlarda iyidir) veya tek bir istemde birbirinden farklı sonraki adımlar kümesi önerin (açıkça farklı seçenekler istediğinizde iyidir).

Küçük bir dallanma katsayısı kullanın (çoğunlukla 3 ile 5 arası); çok fazla aday aramayı ve maliyeti katlanarak artırır.

def propose_thoughts(state, k=4):
    prompt = (
        'Given the partial solution below, propose ' + str(k) +
        ' DISTINCT possible next steps.\n' + state
    )
    return parse_list(llm(prompt, temperature=0.7))

Durumları Değerlendirme

Durum değerlendiricisi, ToT'yi rastgele örneklemeden farklı kılan unsurdur. Bir kısmi çözümün ne kadar umut verici olduğunu, bir değer istemiyle (sorunu çözmeye ne ölçüde yaklaştığını bu duruma 1'den 10'a kadar puanlayın) veya bir oylama istemiyle (bu durumlardan hangisi en umut verici) puanlar.

Adaylar arasında oylama, mutlak puanlamadan çoğu zaman daha sağlamdır; çünkü göreli yargılar model için daha kolaydır.

def score_state(state):
    prompt = (
        'Rate how likely this partial solution leads to a correct '
        'final answer. Reply sure / likely / impossible.\n' + state
    )
    label = llm(prompt, temperature=0).strip().lower()
    return {'sure': 1.0, 'likely': 0.5, 'impossible': 0.0}.get(label, 0.3)

Işın Aramalı BFS

Genişlik öncelikli ToT, tüm sınır düğümlerini her seferinde bir düzey genişletir ve ardından yalnızca değerlendirici puanına göre en yüksek puanlı b tanesini (bir ışını) tutar. Bu yöntem, birden çok hattı eş zamanlı araştırırken patlamayı sınırlar.

Işın genişliği b, araştırmanın kapsamı ile maliyet arasında denge kurar; derinliği 3 olan 5 genişliğinde bir ışın, yapılandırılmış bulmacalar için yaygın bir başlangıçtır.

def bfs_with_beam(root, depth, branch, beam):
    frontier = [root]
    for _ in range(depth):
        nxt = []
        for node in frontier:
            for t in propose_thoughts(node.state, branch):
                child = ThoughtNode(node.state + '\n' + t, node)
                child.value = score_state(child.state)
                nxt.append(child)
        frontier = sorted(nxt, key=lambda n: -n.value)[:beam]
    return max(frontier, key=lambda n: n.value)

Geri İzlemeli DFS

Derinlik öncelikli ToT, en umut verici dala iner ve değerlendirici bir durumu umutsuz gördüğünde geri izler. Bu yaklaşım, kısıt bulmacaları gibi uygulanamaz bir kısmi durumun açıkça tanımlanabildiği sorunlara uygundur.

Olanaksız dalları erkenden budamak, çökmeye mahkûm alt ağaçların gereksiz yere genişletilmesini önlediği için en önemli verimlilik kazanımıdır.

def dfs(node, depth, branch, prune=0.2):
    if depth == 0 or is_solution(node.state):
        return node
    for t in propose_thoughts(node.state, branch):
        child = ThoughtNode(node.state + '\n' + t, node)
        child.value = score_state(child.state)
        if child.value < prune:
            continue                      # backtrack: prune dead end
        res = dfs(child, depth - 1, branch, prune)
        if res and is_solution(res.state):
            return res
    return None

ToT ve Öz Tutarlılık Karşılaştırması

Öz tutarlılık bağımsız tam zincirleri örnekler ve oylar. ToT ise ara değerlendirme ve geri izlemeyle araştırmayı etkin biçimde yönlendirir ve hesaplama kaynaklarını umut vadeden yerlere yatırır.

ToT; planlama, arama veya erken hataların telafisinin mümkün olmadığı sorunlarda öne çıkar (24 Oyunu, kare bulmacalar, planlama). Ucuza üretilebilen çeşitli zincirlere ve ayrık bir yanıta sahip görevlerde öz tutarlılık daha basittir ve çoğu zaman yeterlidir.

# Rule of thumb
# - reachable by diverse single passes  -> self-consistency
# - needs lookahead / pruning / backtrack -> tree-of-thought
# ToT cost ~ branch * depth * beam * (gen + eval) LLM calls

Maliyet Patlaması ve Bütçeler

ToT pahalıdır: her düğüm üretim ve değerlendirme çağrıları doğurur. Toplam maliyet kabaca dal sayısı x derinlik x ışın genişliği ve buna ek olarak değerlendirici çağrılarıyla ölçeklenir. Kesin bir bütçe olmadan hızla büyüyebilir.

Toplam LLM çağrısı sayısını sınırlayın, bütçeyi en yüksek değerli sınır bölgesine harcamak için en iyi öncelikli aramayı kullanın ve bütçe tükenirse en iyi kısmi çözümü kullanın.

import heapq

def best_first(root, max_calls):
    heap = [(-root.value, root)]
    best, calls = root, 0
    while heap and calls < max_calls:
        _, node = heapq.heappop(heap)
        for t in propose_thoughts(node.state, 3):
            calls += 1
            child = ThoughtNode(node.state + '\n' + t, node)
            child.value = score_state(child.state); calls += 1
            if child.value > best.value:
                best = child
            heapq.heappush(heap, (-child.value, child))
    return best

Değerlendiricinin Güvenilirliği

ToT yalnızca değerlendiricisi kadar iyidir. Kalibrasyonu bozuk bir değerlendirici doğru dalları budayabilir veya çıkmazların peşine düşebilir. Değerlendiriciyi her durum için birden çok değerlendirme kullanarak oylamayla, iyi ve kötü durumlara ilişkin az örnekli örneklerle veya harici bir doğrulayıcıyla (birim testi, çözücü ya da denetleyici) iyileştirin.

Nesnel bir kontrol varsa (denklem sağlanıyor mu, kod geçiyor mu), bunu LLM yargısına tercih edin.

def robust_eval(state, votes=3):
    scores = [score_state(state) for _ in range(votes)]
    return sum(scores) / votes        # average to reduce judge noise
# Even better: replace with a deterministic verifier when available

Pratik Uygulanabilirlik

ToT, dar ancak değerli bir problem sınıfında işe yarar: çok adımlı planlama, kombinatoryal bulmacalar ve bir adımı doğrulamanın tüm sorunu çözmekten daha ucuz olduğu görevler. Günlük istem kullanımlarının çoğunda ToT gereğinden fazladır.

Güçlü yerleşik arama yeteneklerine sahip, akıl yürütmesi doğal modellerde açık bir ToT iskeleti, büyük bir kazanım sağlamadan çoğu zaman maliyet ekler; kullanıma almadan önce karşılaştırmalı ölçüm yapın.

def choose_strategy(task):
    if task.requires_search and task.step_verifiable:
        return 'tree-of-thought'
    if task.discrete_answer:
        return 'self-consistency'
    return 'single chain-of-thought'

Asgari Bir ToT Çözücüsü

Uçtan uca süreç şöyledir: bir adım tanımlayın, küçük bir düşünce dalı önerin, her birini değerlendirin (oylama veya doğrulayıcıyla), çağrı bütçesi altında ışınlı BFS ya da geri izlemeli DFS ile arama yapın ve en iyi son durumu döndürün.

Dalları, derinliği ve ışın genişliğini her görev için deneysel olarak ayarlayabilmek amacıyla düğüm sayılarını ve değerlendirici puanlarını izleyin.

def solve(problem, branch=4, depth=3, beam=5, budget=200):
    root = ThoughtNode(problem)
    root.value = score_state(root.state)
    node = bfs_with_beam(root, depth, branch, beam)
    return extract_solution(node.state)

Hızlı Kontrol

Doğru akıl yürütme stratejisini seçin.

Özet

Önemli çıkarımlar:

  • ToT, CoT'yi düşünce üretimi, durum değerlendirmesi ve bir arama algoritması içeren bir arama ağacına geneller.
  • Bir ışınla BFS veya geri izlemeli DFS kullanın; patlamayı denetlemek için dallanma katsayısını küçük tutun.
  • Durum değerlendiricisi kritik unsurdur; oylama veya harici bir doğrulayıcıyla sağlamlaştırın.
  • Maliyet dal sayısı x derinlik x ışın genişliği olarak ölçeklenir; bu nedenle çoğu zaman en iyi öncelikli aramayla bir çağrı bütçesi uygulayın.
  • ToT'yi planlama, kombinatoryal ve adımı doğrulanabilir sorunlara ayırın; günlük istem kullanımları için gereğinden fazladır.
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

“Düşünce Ağacı Keşfi” dersi ücretsiz mi?

Evet — “Düşünce Ağacı Keşfi” 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.

“Düşünce Ağacı Keşfi” dersinde ne öğreneceğim?

Düşünceleri dallandırma ve değerlendirme. 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 3. dersidir.

“Düşünce Ağacı Keşfi” 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. Düşünce Zinciri İstemleri
  2. Öz Tutarlılık Örneklemesi
  3. Düşünce Ağacı Keşfi
  4. Akıl Yürütme İstemleri Ne Zaman Yararlıdır
← AI Prompt Engineering Sayfasına Dön