Skip to content

التعلم النشط

استخدام أخذ العينات بناءً على عدم اليقين لتحديد أولويات التعليق التوضيحي على الأمثلة القيّمة.

التعلم النشط

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

كيف يعمل

يقوم التعلم النشط في Potato بإعادة ترتيب حالات التعليق التوضيحي تلقائياً بناءً على تنبؤات التعلم الآلي:

  1. الجمع الأولي - جمع عدد أدنى من التعليقات التوضيحية
  2. التدريب - تدريب مصنّف على التعليقات التوضيحية الموجودة
  3. التنبؤ - الحصول على درجات عدم اليقين للحالات غير المعلّقة
  4. إعادة الترتيب - إعطاء الأولوية للحالات ذات أعلى عدم يقين
  5. التعليق التوضيحي - يقوم المعلّقون بتصنيف الحالات ذات الأولوية
  6. إعادة التدريب - تحديث النموذج دورياً بالتعليقات التوضيحية الجديدة

التهيئة

الإعداد الأساسي

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment  # Which annotation schemes to use
 
  min_annotations_per_instance: 1
  min_instances_for_training: 20
  update_frequency: 50  # Retrain after every 50 annotations
  max_instances_to_reorder: 1000

التهيئة الكاملة

yaml
active_learning:
  enabled: true
 
  # Which schemas to use for training
  schema_names:
    - sentiment
 
  # Minimum requirements
  min_annotations_per_instance: 1
  min_instances_for_training: 20
 
  # Retraining frequency
  update_frequency: 50
 
  # How many instances to reorder
  max_instances_to_reorder: 1000
 
  # Classifier configuration
  classifier:
    type: LogisticRegression
    params:
      C: 1.0
      max_iter: 1000
 
  # Feature extraction
  vectorizer:
    type: TfidfVectorizer
    params:
      max_features: 5000
      ngram_range: [1, 2]
 
  # Model persistence
  model_persistence:
    enabled: true
    save_dir: "models/"
    max_saved_models: 5

المصنّفات المدعومة

المصنّفالأفضل لـالسرعة
LogisticRegressionالتصنيف الثنائي/متعدد الفئاتسريع
RandomForestClassifierالأنماط المعقدةمتوسط
SVCمجموعات البيانات الصغيرةبطيء
MultinomialNBتصنيف النصوصسريع جداً

أمثلة على المصنّفات

yaml
# Logistic Regression (recommended starting point)
classifier:
  type: LogisticRegression
  params:
    C: 1.0
    max_iter: 1000
 
# Random Forest
classifier:
  type: RandomForestClassifier
  params:
    n_estimators: 100
    max_depth: 10
 
# Support Vector Classifier
classifier:
  type: SVC
  params:
    kernel: rbf
    probability: true
 
# Naive Bayes
classifier:
  type: MultinomialNB
  params:
    alpha: 1.0

محوّلات الميزات

المحوّلالوصف
TfidfVectorizerميزات مرجّحة بـ TF-IDF (موصى به)
CountVectorizerعدّ الكلمات البسيط
HashingVectorizerفعّال في استخدام الذاكرة للمفردات الكبيرة
yaml
# TF-IDF (recommended)
vectorizer:
  type: TfidfVectorizer
  params:
    max_features: 5000
    ngram_range: [1, 2]
    stop_words: english
 
# Count Vectorizer
vectorizer:
  type: CountVectorizer
  params:
    max_features: 3000
    ngram_range: [1, 1]
 
# Hashing Vectorizer (for large datasets)
vectorizer:
  type: HashingVectorizer
  params:
    n_features: 10000

التكامل مع نماذج اللغة الكبيرة

يمكن للتعلم النشط استخدام نماذج اللغة الكبيرة اختيارياً لتحسين اختيار الحالات:

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
 
  # LLM-based selection
  llm_integration:
    enabled: true
    endpoint_type: vllm
    base_url: http://localhost:8000/v1
    model: meta-llama/Llama-2-7b-chat-hf
 
    # Mock mode for testing
    mock_mode: false

دعم المخططات المتعددة

يمكن للتعلم النشط التنقل بين مخططات تعليق توضيحي متعددة:

yaml
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    labels: [Positive, Negative, Neutral]
 
  - annotation_type: radio
    name: topic
    labels: [Politics, Sports, Tech, Entertainment]
 
active_learning:
  enabled: true
  schema_names:
    - sentiment
    - topic
 
  # Schema-specific settings
  schema_config:
    sentiment:
      min_instances_for_training: 30
      update_frequency: 50
    topic:
      min_instances_for_training: 50
      update_frequency: 100

استمرارية النموذج

حفظ النماذج المدرّبة وإعادة تحميلها عبر عمليات إعادة تشغيل الخادم:

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
 
  model_persistence:
    enabled: true
    save_dir: "models/"
    max_saved_models: 5  # Keep last 5 models
 
    # Save to database instead of files
    use_database: false

مراقبة التقدم

تتبع لوحة تحكم المشرف مقاييس التعلم النشط:

  • دقة النموذج الحالي
  • عدد دورات التدريب
  • توزيع عدم اليقين
  • الحالات المتبقية
  • سجل إعادة التدريب

يمكن الوصول عبر /admin باستخدام مفتاح API الخاص بالمشرف.

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

1. ابدأ بأخذ العينات العشوائي

احصل على تعليقات توضيحية أولية قبل تفعيل التعلم النشط:

yaml
active_learning:
  enabled: true
  min_instances_for_training: 50  # Wait for 50 annotations

2. اختر المصنّفات المناسبة

  • LogisticRegression: سريع، خيار افتراضي جيد لمعظم المهام
  • RandomForest: أفضل للأنماط المعقدة، أبطأ
  • MultinomialNB: سريع جداً، جيد لتصنيف النصوص البسيط

3. راقب توزيع الفئات

يمكن أن يُنشئ التعلم النشط عدم توازن في الفئات. راقب ذلك في لوحة تحكم المشرف وفكّر في أخذ العينات الطبقي.

4. حدد تردد إعادة التدريب المناسب

إعادة التدريب المتكررة جداً تهدر الموارد:

yaml
update_frequency: 100  # Retrain every 100 annotations

5. فعّل استمرارية النموذج

احفظ النماذج لتجنب إعادة التدريب من الصفر عند إعادة التشغيل:

yaml
model_persistence:
  enabled: true
  save_dir: "models/"

مثال: التهيئة الكاملة

yaml
task_name: "Sentiment Analysis with Active Learning"
task_dir: "."
port: 8000
 
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment?"
    labels:
      - Positive
      - Negative
      - Neutral
 
active_learning:
  enabled: true
  schema_names:
    - sentiment
 
  min_annotations_per_instance: 1
  min_instances_for_training: 30
  update_frequency: 50
  max_instances_to_reorder: 500
 
  classifier:
    type: LogisticRegression
    params:
      C: 1.0
      max_iter: 1000
 
  vectorizer:
    type: TfidfVectorizer
    params:
      max_features: 3000
      ngram_range: [1, 2]
 
  model_persistence:
    enabled: true
    save_dir: "models/"
    max_saved_models: 3
 
output_annotation_dir: "output/"
output_annotation_format: "json"
allow_all_users: true

الدمج مع دعم الذكاء الاصطناعي

استخدم كلاً من التعلم النشط ومساعدة نماذج اللغة الكبيرة:

yaml
active_learning:
  enabled: true
  schema_names:
    - sentiment
  min_instances_for_training: 30
 
ai_support:
  enabled: true
  endpoint_type: openai
 
  ai_config:
    model: gpt-4
    api_key: ${OPENAI_API_KEY}
 
  features:
    label_suggestions:
      enabled: true

يعطي هذا المزيج الأولوية للحالات غير المؤكدة مع تقديم تلميحات ذكاء اصطناعي لمساعدة المعلّقين.

استكشاف الأخطاء وإصلاحها

فشل التدريب

  • تأكد من وجود تعليقات توضيحية كافية (min_instances_for_training)
  • تحقق من توزيع الفئات - تحتاج إلى أمثلة من جميع الفئات
  • تحقق من أن تنسيق البيانات يتطابق مع المخطط

الأداء البطيء

  • قلّل max_instances_to_reorder
  • زِد update_frequency
  • استخدم HashingVectorizer للمفردات الكبيرة

النموذج لا يتحدث

  • تحقق من إعداد update_frequency
  • تأكد من أن التعليقات التوضيحية يتم حفظها
  • راجع لوحة تحكم المشرف بحثاً عن أخطاء

قراءات إضافية

للاطلاع على تفاصيل التنفيذ، راجع الوثائق المصدرية.