بناء وكيل ذكاء اصطناعي عصبي متقدم وقوي: تدريب مستقر، تعلم تكيفي، واتخاذ قرارات ذكية

هذا البرنامج التعليمي يستعرض تصميم وتنفيذ وكيل عصبي متقدم يجمع بين تقنيات الشبكات العصبية الكلاسيكية وتحسينات الاستقرار الحديثة. سنقوم ببناء الشبكة باستخدام مبادرة Xavier لتدفق التدرج المتوازن، وإضافة دوال تنشيط مستقرة مثل Leaky ReLU و Sigmoid و Tanh مع القطع لتجنب الفيضان. لتثبيت التدريب، سنطبق قطع التدرج، والتحديثات المستوحاة من الزخم، وانحلال الوزن. تتضمن حلقة التدريب مجموعات مصغرة، والتوقف المبكر، ومعدلات تعلم تكيفية، وإعادة الضبط عند عدم الاستقرار، مما يجعل النموذج قوياً لمجموعات البيانات المعقدة. نقوم أيضاً بتطبيع الأهداف، وحساب MSE و MAE و R²، و توسيع الوكيل مع إعادة تشغيل الخبرة واتخاذ القرارات الاستكشافية، مما يحوله إلى نظام مرن للانحدار، والتصنيف إلى الانحدار، ومهام على غرار التعلم المعزز.

1. المكتبات والتحضيرات الأولية

نبدأ باستيراد المكتبات الأساسية مثل NumPy و Matplotlib و scikit-learn، والتي نستخدمها لتوليد البيانات، والمعالجة المسبقة، وتقسيمها. نقوم أيضاً بقمع التحذيرات للحفاظ على سير عملنا نظيفاً ومركزاً.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification, make_regression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings('ignore')

2. تصميم وكيل الذكاء الاصطناعي المتقدم (AdvancedNeuralAgent)

2.1. تهيئة الوكيل

تتم تهيئة الوكيل باستخدام حدود Xavier، ودوال تنشيط Leaky-ReLU، و مخازن الزخم لتحقيق استقرار التدرجات وتسريع التقارب.

class AdvancedNeuralAgent:
    def __init__(self, input_size, hidden_layers=[64, 32], output_size=1, learning_rate=0.001):
        """وكيل ذكاء اصطناعي متقدم مع قدرات تدريب مستقرة واتخاذ قرارات"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.2. دوال التنشيط ومشتقاتها

تستخدم دوال تنشيط مستقرة مع القطع لتجنب المشاكل المحتملة.

    def activation(self, x, func='relu'):
        """دوّال تنشيط مستقرة مع القطع"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

    def activation_derivative(self, x, func='relu'):
        """مشتقات مستقرة"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.3. المرور الأمامي والخلفى

يتم استخدام قطع التدرج في المرور الخلفي لمنع الانفجار.

    def forward(self, X):
        """المرور الأمامي مع قطع التدرج"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

    def clip_gradients(self, gradients, max_norm=1.0):
        """قطع التدرج لمنع الانفجار"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

    def backward(self, X, y, output):
        """انتشار خلفي مستقر مع قطع التدرج"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.4. معدل التعلم التكيفي

يتم ضبط معدل التعلم تلقائياً بناءً على أداء التحقق.

    def adapt_learning_rate(self, epoch, performance_history):
        """معدل تعلم تكيفى مع تعديل قائم على الأداء"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.5. حساب الخسارة

يتم استخدام حساب خسارة مستقر مع التعامل مع الحالات غير المحددة.

    def calculate_loss(self, y_true, y_pred):
        """حساب الخسارة المستقر"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.6. إعادة تشغيل الخبرة واتخاذ القرارات

يتم استخدام إعادة تشغيل الخبرة لإضافة سلوك يشبه الوكيل.

    def store_experience(self, state, action, reward, next_state):
        """إعادة تشغيل الخبرة لجوانب التعلم المعزز"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

    def make_decision(self, X, exploration_rate=0.1):
        """اتخاذ قرارات مستقرة"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.7. إعادة ضبط الشبكة عند عدم الاستقرار

يتم إعادة ضبط معلمات الشبكة إذا أصبح التدريب غير مستقر.

    def reset_if_unstable(self):
        """إعادة ضبط الشبكة إذا أصبح التدريب غير مستقر"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.8. تدريب الوكيل

يُدرب الوكيل باستخدام مجموعات مصغرة، وقطع التدرج، وانحلال الوزن L2، ومعدلات تعلم تكيفية، والتوقف المبكر، وإعادة الضبط التلقائية.

    def train(self, X, y, epochs=500, batch_size=32, validation_split=0.2, verbose=True):
        """تدريب قوي مع فحوصات الاستقرار"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

2.9. التنبؤ وتقييم الأداء

يتم استخدام التطبيع في التنبؤ وتقييم الأداء.

    def predict(self, X):
        """إجراء تنبؤات مع إلغاء التطبيع"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

    def evaluate_performance(self, X, y):
        """تقييم شامل للأداء"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

    def visualize_training(self, train_losses, val_losses):
        """تصور تقدم التدريب"""
        # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

3. عرض توضيحي شامل (AIAgentDemo)

يُشغّل هذا العرض التوضيحي اختبارات شاملة للوكيل، مع توليد مجموعات بيانات متعددة، ومسح تكوينات الوكيل، وتدريب/تقييم كل إعداد باستخدام مقاييس موحدة (R²، MSE، MAE).

class AIAgentDemo:
    # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

4. عرض توضيحي سريع

يوفر هذا العرض التوضيحي السريع تدريبًا سريعًا على مجموعة بيانات انحدار بسيطة.

def run_quick_demo():
    # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

5. نقطة الدخول الرئيسية

تحدد هذه الفقرة نقطة الدخول الرئيسية للبرنامج.

if __name__ == "__main__":
    # ... (باقي الكود كما هو في المثال الأصلي مع ترجمة التعليقات)

6. الخاتمة

يوضح هذا البرنامج التعليمي كيف تلعب الخيارات الهندسية المراعية للاستقرار، بدءاً من تنظيم انحلال الوزن وحتى قياس معدل التعلم الديناميكي بناءً على سجل خسارة التحقق، دوراً حاسماً في تحقيق أداء ثابت عبر مجموعات بيانات متنوعة. الوكيل ليس مجرد مُنبئ ثابت؛ بل إنه يتكيف بنشاط من خلال تخزين التجارب السابقة، وحقن استكشاف مُتحكم به في قراراته، وإعادة ضبط معالمه عندما يتم الوصول إلى عتبات عدم الاستقرار. نقوم كذلك بالتحقق من التصميم من خلال عروض توضيحية شاملة عبر تكوينات خفيفة، وقياسية، وعميقة، وعريضة، مع قياس الأداء على مجموعات بيانات انحدار بسيطة، ومعقدة، ومشتقة من التصنيف. تسلط النتائج الضوء على التحسينات القابلة للقياس في R² و MSE و MAE، بينما توفر أدوات التصور رؤى حول ديناميكيات التعلم وسلوك التقارب.

المصدر: MarkTechPost