الدرس 6 من 24

إعداد مجموعة البيانات

إنشاء بيانات التدريب

3 دقيقة للقراءة

لديك ثلاثة أساليب رئيسية لإنشاء بيانات التدريب: التنظيم اليدوي، التوليد الاصطناعي، وزيادة البيانات. دعنا نستكشف كل منها.

1. التنظيم اليدوي

المعيار الذهبي للجودة. الأفضل للمجالات المتخصصة.

متى نستخدم

  • خبرة المجال حرجة
  • الدقة العالية مطلوبة
  • لديك خبراء الموضوع متاحون
  • حجم مجموعة البيانات قابل للإدارة (<5,000 مثال)

أفضل الممارسات

# مثال: إنشاء مجموعة بيانات يدوية لدعم العملاء
training_data = [
    {
        "instruction": "العميل يسأل عن سياسة الإرجاع",
        "input": "اشتريت هذا اللابتوب قبل 3 أسابيع ولا يعمل. هل يمكنني إرجاعه؟",
        "output": "أنا آسف لسماع المشكلة مع لابتوبك. نعم، يمكنك إرجاعه ضمن نافذة الإرجاع 30 يوماً. بما أنه مضى 3 أسابيع، لا تزال مؤهلاً. هل تريد أن أبدأ عملية الإرجاع لك؟"
    },
    # أضف المزيد من الأمثلة...
]

إرشادات الجودة

افعل لا تفعل
استخدم أمثلة حقيقية من مجالك نسخ ولصق استجابات عامة
ضمّن الحالات الحدية ضمّن الأمثلة السهلة فقط
نوّع طول وأسلوب الاستجابة استخدم صياغة متطابقة
اطلب من الخبراء مراجعة المخرجات تخطي مراجعة الجودة

2. توليد البيانات الاصطناعية

استخدم LLMs لتوليد بيانات التدريب. سريع وقابل للتوسع.

النهج الأساسي

from openai import OpenAI

client = OpenAI()

def generate_training_example(topic, style):
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": f"""ولّد مثال تدريب للضبط الدقيق.
الموضوع: {topic}
الأسلوب: {style}

أرجع JSON بحقول 'instruction' و 'output'."""},
            {"role": "user", "content": "ولّد مثالاً واحداً عالي الجودة."}
        ],
        response_format={"type": "json_object"}
    )
    return response.choices[0].message.content

# توليد الأمثلة
example = generate_training_example(
    topic="تصحيح Python",
    style="معلم صبور يشرح لمبتدئ"
)

التوليد المبني على البذور

ابدأ بأمثلة يدوية قليلة، ثم وسّع:

seed_examples = [
    {"instruction": "اشرح التكرار", "output": "التكرار هو عندما..."},
    {"instruction": "ما هو جدول التجزئة؟", "output": "جدول التجزئة هو..."}
]

def expand_dataset(seeds, num_new=100):
    prompt = f"""هنا أزواج سؤال وجواب مثال:
{seeds}

ولّد {num_new} أمثلة جديدة متنوعة بنفس الأسلوب.
غطِّ مواضيع برمجة مختلفة.
أرجع كمصفوفة JSON."""

    # استدعاء LLM للتوليد
    # ...

طريقة Self-Instruct

النموذج يولّد بيانات تدريبه الخاصة:

def self_instruct(base_model, num_examples=1000):
    """
    1. ابدأ بمهام بذرية
    2. ولّد تعليمات جديدة
    3. ولّد استجابات
    4. صفّي الأمثلة منخفضة الجودة
    """
    tasks = load_seed_tasks()  # 175 مهمة بذرية

    for _ in range(num_examples):
        # عيّن مهام موجودة للسياق
        context_tasks = random.sample(tasks, 3)

        # ولّد تعليمة جديدة
        new_instruction = base_model.generate(
            f"بالنظر لهذه المهام: {context_tasks}\n"
            "ولّد مهمة جديدة مختلفة:"
        )

        # ولّد استجابة
        response = base_model.generate(new_instruction)

        # صفّي وأضف لمجموعة البيانات
        if passes_quality_check(new_instruction, response):
            tasks.append({"instruction": new_instruction, "output": response})

    return tasks

3. زيادة البيانات

وسّع مجموعات البيانات الموجودة من خلال التحويل.

التقنيات

# 1. إعادة الصياغة
original = "اشرح كيف يعمل التمثيل الضوئي"
augmented = [
    "كيف يعمل التمثيل الضوئي؟",
    "هل يمكنك وصف عملية التمثيل الضوئي؟",
    "ماذا يحدث أثناء التمثيل الضوئي؟"
]

# 2. الترجمة العكسية
# عربي → إنجليزي → عربي (يخلق تنويعات طبيعية)

# 3. تنويع التعقيد
simple = "ما هو الذكاء الاصطناعي؟"
medium = "اشرح الذكاء الاصطناعي وفروعه الرئيسية"
complex = "حلل العلاقة بين التعلم الآلي، التعلم العميق، والذكاء الاصطناعي العام"

خط أنابيب الزيادة

def augment_dataset(dataset, augmentation_factor=3):
    augmented = []

    for example in dataset:
        augmented.append(example)  # احتفظ بالأصلي

        # ولّد إعادات صياغة
        paraphrases = generate_paraphrases(example["instruction"], n=augmentation_factor-1)

        for para in paraphrases:
            augmented.append({
                "instruction": para,
                "output": example["output"]  # نفس المخرج
            })

    return augmented

دمج الأساليب

أفضل مجموعات البيانات غالباً تجمع الثلاث طرق:

أمثلة يدوية (100-500)
    ↓ بذر التوليد الاصطناعي
أمثلة اصطناعية (1,000-5,000)
    ↓ زيادة للتنوع
مجموعة بيانات مُزادة (5,000-20,000)
    ↓ مراجعة بشرية وتصفية
مجموعة التدريب النهائية

الجودة مقابل الكمية

حجم مجموعة البيانات الجودة المطلوبة النهج النموذجي
<500 عالية جداً يدوي فقط
500-2,000 عالية يدوي + اصطناعي بعناية
2,000-10,000 متوسطة-عالية اصطناعي + زيادة + تصفية
10,000+ متوسطة اصطناعي واسع النطاق + معاينة

رؤية أساسية: مجموعة بيانات أصغر عالية الجودة تتفوق تقريباً دائماً على مجموعة أكبر مشوشة. ابدأ صغيراً ووسّع فقط إذا احتجت.

بعد ذلك، سنتعلم كيفية تنظيف والتحقق من بيانات التدريب. :::

اختبار

الوحدة 2: إعداد مجموعة البيانات

خذ الاختبار