AI Prompt Engineering · درس

أخذ عينات الاتساق الذاتي

التصويت بين مسارات استدلال متعددة.

الدرس 2 من 413 خطوة

أخذ عينات الاتساق الذاتي درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.

سلسلة واحدة هشة

قد تنحرف سلسلة تفكير واحدة عن المسار الصحيح مبكرًا ولا تستعيده أبدًا. يعالج الاتساق الذاتي (Wang et al., 2022) ذلك بأخذ عينات من مسارات استدلال مستقلة كثيرة، ثم تجميع إجاباتها النهائية، عادةً عبر تصويت الأغلبية.

الفكرة هي أن الاستدلال الصحيح يتقارب نحو الإجابة نفسها عبر مسارات متنوعة، بينما تتشتت الأخطاء. ويؤدي التجميع إلى تضخيم الإشارة المتسقة.

def self_consistency(prompt, n=20, temperature=0.7):
    answers = []
    for _ in range(n):
        chain = llm(prompt, temperature=temperature)
        answers.append(extract_answer(chain))
    return majority_vote(answers)

لماذا ينجح التهميش عبر المسارات

يقرّب الاتساق الذاتي مفهوم التهميش عبر مسارات الاستدلال: فبدلًا من الوثوق باشتقاق كامن واحد، تقدّر الإجابة النهائية الأكثر احتمالًا بعد دمج نتائج اشتقاقات متعددة.

هذا تقدير بطريقة مونت كارلو لتوزيع الإجابات. ويكون منوال هذا التوزيع عادةً أكثر موثوقية من أي مسار مأخوذ بعينه، لا سيما عندما يكون فضاء الإجابات صغيرًا ومنفصلًا.

from collections import Counter

def majority_vote(answers):
    norm = [normalize_answer(a) for a in answers]
    counts = Counter(norm)
    answer, votes = counts.most_common(1)[0]
    confidence = votes / len(norm)
    return answer, confidence

التنوع عبر درجة الحرارة

يحتاج الاتساق الذاتي إلى مسارات متنوعة. فالتوليد الجشع أو استخدام درجة حرارة تقترب من الصفر ينتج سلاسل متطابقة تقريبًا، مما يبطل فاعلية الطريقة. استخدم درجة حرارة متوسطة (غالبًا من 0.5 إلى 0.8)، وربما أخذ عينات top-p لتوزيع المسارات.

تؤدي درجة الحرارة المرتفعة جدًا إلى إضعاف كل سلسلة على حدة؛ لذا اضبط درجة الحرارة لتعظيم دقة المجموعة، لا جودة السلسلة المفردة.

def tune_temperature(prompt, val_set, temps=(0.4, 0.6, 0.8, 1.0)):
    best = max(
        temps,
        key=lambda t: ensemble_accuracy(prompt, val_set, temp=t, n=20)
    )
    return best

تطبيع الإجابات أمر حاسم

لا تُحتسب الأصوات إلا إذا جرى التعرف على الإجابات المتكافئة باعتبارها متساوية. طبّع الإجابات قبل العد: أزل الوحدات، ووحّد تمثيل الأرقام بصيغة معيارية، ووحّد حالة الأحرف في النصوص، وحلّل الكسور والنسب المئوية، وطبّق التكافؤ الخاص بالمهمة.

يؤدي التطبيع الضعيف إلى تقسيم الأغلبية الحقيقية بين صيغ ظاهرية مختلفة، ويسمح لإجابة أقلية بالفوز في التصويت.

def normalize_answer(a):
    a = a.strip().lower().rstrip('.')
    a = a.replace(',', '').replace('$', '').replace('%', '')
    try:
        return str(round(float(a), 6))   # numeric canonical form
    except ValueError:
        return a

كم عدد العينات؟

تزداد الدقة مع عدد العينات n، لكن مع عوائد متناقصة، وغالبًا ما تستقر عند نحو 10 إلى 40 عينة بحسب صعوبة المهمة. وتضاعف كل عينة التكلفة ووقت الاستجابة خطيًا.

اختبر قيم n على مجموعة تحقق، واختر نقطة الركبة في المنحنى، حيث لا تعود العينات الإضافية تبرر تكلفتها.

def sweep_n(prompt, val, ns=(1,3,5,10,20,40)):
    return {n: ensemble_accuracy(prompt, val, n=n) for n in ns}
# Choose n at the accuracy/cost knee, not the maximum

الإيقاف المبكر التكيفي

وفّر موارد المعالجة باستخدام أخذ العينات التكيفي: أوقف توليد المسارات عندما يصبح التصويت حاسمًا. فإذا حافظت إجابة واحدة على تقدم واضح بعد 5 عينات، فمن غير المرجح أن تغيّر العينات الإضافية الفائز.

بهذا تتركز موارد المعالجة على العناصر الصعبة والمتنازع عليها فعلًا، وتُجاب العناصر السهلة بتكلفة منخفضة.

def adaptive_sc(prompt, max_n=40, margin=0.6, min_n=5):
    answers = []
    for i in range(max_n):
        answers.append(extract_answer(llm(prompt, temperature=0.7)))
        if i + 1 >= min_n:
            ans, conf = majority_vote(answers)
            if conf >= margin:
                return ans, conf, i + 1
    return majority_vote(answers)

التصويت الموزون والمدعوم بأداة تحقق

يعامل تصويت الأغلبية العادي جميع المسارات بالتساوي. ويمكنك ترجيح الأصوات وفق الاحتمالية التي يعيّنها النموذج للمسار، أو وفق درجة يحددها مقيّم متعلَّم، أو وفق التقييم الذاتي لصلاحية كل سلسلة.

يتفوق الاتساق الذاتي الموزون بالمقيّم غالبًا على التصويت غير الموزون، لأنه يخفض ترتيب أنماط الإخفاق المتكررة التي تكون خاطئة رغم الثقة العالية بها.

def weighted_vote(chains):
    scores = {}
    for c in chains:
        a = normalize_answer(extract_answer(c))
        scores[a] = scores.get(a, 0.0) + verifier_score(c)
    return max(scores, key=scores.get)

الثقة المستمدة من التوافق

يُعد هامش التصويت إشارة مفيدة إلى الثقة. فالإجابة بالإجماع أكثر موثوقية بكثير من انقسام 6 مقابل 5. اعرض هذه الإشارة على المنطق اللاحق: وأحِل العناصر ذات التوافق المنخفض إلى التصعيد أو المراجعة البشرية أو نموذج أقوى.

بهذا يتحول الاتساق الذاتي إلى أداة لتحسين الدقة وآلية للمعايرة في آن واحد.

def route(prompt):
    ans, conf = adaptive_sc(prompt)[:2]
    if conf < 0.5:
        return escalate_to_stronger_model(prompt)
    return ans

القيود: المهام المستمرة والمفتوحة

يفترض تصويت الأغلبية وجود فضاء إجابات منفصل وقابل للمقارنة. ولا ينطبق مباشرةً على التوليد الحر أو النصوص الطويلة أو المخرجات المستمرة التي لا تتطابق فيها عينتان.

في هذه المهام، استخدم تجميعًا مختلفًا: اجمع المخرجات المتشابهة دلاليًا في عناقيد، أو صوّت على الحقول المهيكلة المستخرجة، أو استخدم نموذجًا مُحكِّمًا لاختيار أفضل عينة بدلًا من عدّ التطابقات التامة.

def semantic_consistency(samples):
    clusters = cluster_by_embedding(samples)
    biggest = max(clusters, key=len)        # largest agreement cluster
    return representative(biggest)            # medoid of the cluster

النشر المراعي للتكلفة

يُعد الاتساق الذاتي من أكثر تقنيات التوجيه تكلفةً؛ إذ تتوسع التكلفة مع n. خصصه للعناصر المهمة أو الصعبة، وادمجه مع الإيقاف التكيفي، وفكّر في سياسة متعددة المستويات تتولى فيها سلسلة واحدة معالجة العناصر السهلة.

قارن دائمًا دقته مقابل كل دولار بدقة استدعاء نموذج أقوى مرة واحدة، فقد يكون ذلك أرخص لتحقيق المكسب نفسه.

def tiered(prompt, q):
    if easy(q):
        return extract_answer(llm(prompt, temperature=0))
    return adaptive_sc(prompt, max_n=20)[0]   # SC only when needed

الاتساق الذاتي من البداية إلى النهاية

يتكون المسار المتكامل من ضبط درجة الحرارة وn، وأخذ عينات من سلاسل متنوعة، وتطبيع الإجابات بدقة، وإجراء التصويت (مع إمكانية ترجيحه بواسطة مقيّم)، واستخدام الهامش بوصفه مقياسًا للثقة، والإيقاف المبكر عند حسم النتيجة، وتصعيد العناصر منخفضة التوافق.

والنتيجة نظام استدلال أدق وأكثر قدرة على المعايرة الذاتية من أي سلسلة واحدة.

def solve(prompt):
    chains = sample_until_decisive(prompt, max_n=20, temp=0.7)
    ans, conf = weighted_majority(chains)
    if conf < THRESH:
        return escalate(prompt)
    return {'answer': ans, 'confidence': conf, 'paths': len(chains)}

تحقق سريع

شخّص إعدادًا للاتساق الذاتي يحقق أداءً ضعيفًا.

خلاصة

أهم النقاط:

  • يأخذ الاتساق الذاتي عينات من سلاسل متنوعة كثيرة ويصوّت بينها، مقاربًا بذلك التهميش عبر مسارات الاستدلال.
  • يُعد التنوع (باستخدام درجة حرارة متوسطة) والتطبيع الدقيق للإجابات شرطين أساسيين لنجاحه.
  • تزداد الدقة مع n لكنها تستقر؛ فاستخدم الإيقاف المبكر التكيفي للتحكم في التكلفة.
  • زِن الأصوات باستخدام مقيّم، واستخدم هامش التصويت بوصفه إشارة ثقة مُعايرة.
  • يحتاج إلى فضاء إجابات منفصل؛ أما المهام المفتوحة فاجمع مخرجاتها دلاليًا في عناقيد أو استخدم مُحكِّمًا.
البدء مجانًا

تعلم AI Prompt Engineering مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
53
الدروس
199

الأسئلة الشائعة

هل درس «أخذ عينات الاتساق الذاتي» مجاني؟

نعم — نص درس «أخذ عينات الاتساق الذاتي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.

ماذا ستتعلم في «أخذ عينات الاتساق الذاتي»؟

التصويت بين مسارات استدلال متعددة. تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟

لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «أخذ عينات الاتساق الذاتي»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟

نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التلقين بالتفكير المتسلسل
  2. أخذ عينات الاتساق الذاتي
  3. استكشاف شجرة الأفكار
  4. متى تفيد تلقينات الاستدلال
← العودة إلى AI Prompt Engineering