هذه وحدة بايثون لتجربة خوارزميات التعلم النشط المختلفة. هناك بعض المكونات الأساسية لإجراء تجارب التعلم النشط:
البرنامج النصي للتجربة الرئيسي هو run_experiment.py
مع العديد من العلامات لخيارات التشغيل المختلفة.
يمكن تنزيل مجموعات البيانات المدعومة إلى دليل محدد عن طريق تشغيل utils/create_data.py
.
طرق التعلم النشط المدعومة موجودة في sampling_methods
.
أدناه سأتناول كل مكون بمزيد من التفاصيل.
إخلاء المسؤولية: هذا ليس أحد منتجات Google الرسمية.
التبعيات موجودة في requirements.txt
. الرجاء التأكد من تثبيت هذه الحزم قبل إجراء التجارب. إذا كنت ترغب في استخدام tensorflow
القادر على استخدام وحدة معالجة الرسومات، فيرجى اتباع التعليمات هنا.
يُقترح بشدة أن تقوم بتثبيت كافة التبعيات في virtualenv
منفصلة لتسهيل إدارة الحزم.
بشكل افتراضي، يتم حفظ مجموعات البيانات في /tmp/data
. يمكنك تحديد دليل آخر عبر علامة --save_dir
.
ستستغرق إعادة تنزيل كافة مجموعات البيانات الكثير من الوقت، لذا يرجى التحلي بالصبر. يمكنك تحديد مجموعة فرعية من البيانات لتنزيلها عن طريق تمرير سلسلة من مجموعات البيانات مفصولة بفواصل عبر علامة --datasets
.
هناك بعض العلامات الرئيسية لـ run_experiment.py
:
dataset
: اسم مجموعة البيانات، يجب أن يتطابق مع اسم الحفظ المستخدم في create_data.py
. يجب أن يكون موجودًا أيضًا في data_dir.
sampling_method
: طريقة التعلم النشط المستخدمة. يجب تحديده في sampling_methods/constants.py
.
warmstart_size
: الدفعة الأولية من الأمثلة ذات العينات الموحدة لاستخدامها كبيانات أولية. يشير التعويم إلى النسبة المئوية لإجمالي بيانات التدريب ويشير العدد الصحيح إلى الحجم الأولي.
batch_size
: عدد نقاط البيانات المطلوب طلبها في كل دفعة. يشير التعويم إلى النسبة المئوية لإجمالي بيانات التدريب ويشير العدد الصحيح إلى الحجم الأولي.
score_method
: النموذج المستخدم لتقييم أداء طريقة أخذ العينات. يجب أن يكون في طريقة get_model
لـ utils/utils.py
.
data_dir
: الدليل الذي يحتوي على مجموعات البيانات المحفوظة.
save_dir
: دليل لحفظ النتائج.
هذه مجرد مجموعة فرعية من جميع الأعلام. هناك أيضًا خيارات للمعالجة المسبقة، وإدخال ضوضاء التصنيف، وأخذ عينات فرعية من مجموعة البيانات، واستخدام نموذج مختلف للاختيار بدلاً من التسجيل/التقييم.
جميع أساليب التعلم النشط المسماة موجودة في sampling_methods/constants.py
.
يمكنك أيضًا تحديد مزيج من أساليب التعلم النشط باتباع نمط [sampling_method]-[mixture_weight]
مفصولاً بشرطات؛ أي mixture_of_samplers-margin-0.33-informative_diverse-0.33-uniform-0.34
.
تتضمن بعض طرق أخذ العينات المدعومة ما يلي:
موحدة: يتم اختيار العينات عن طريق أخذ عينات موحدة.
الهامش: طريقة أخذ العينات القائمة على عدم اليقين.
غنية بالمعلومات ومتنوعة: طريقة أخذ العينات القائمة على الهامش والعنقودية.
k-center greedy: استراتيجية تمثيلية تشكل بجشع مجموعة من النقاط لتقليل المسافة القصوى من النقطة المسماة.
كثافة الرسم البياني: استراتيجية تمثيلية تحدد النقاط في المناطق الكثيفة من التجمع.
Exp3 bandit: أسلوب تعليمي فوقي نشط يحاول تعلم طريقة أخذ العينات المثلى باستخدام خوارزمية قطاع الطرق الشهيرة متعددة الأذرع.
قم بتنفيذ إما أداة أخذ العينات الأساسية التي ترث من SamplingMethod
أو أداة أخذ العينات التعريفية التي تستدعي أدوات أخذ العينات الأساسية التي ترث من WrapperSamplingMethod
.
الطريقة الوحيدة التي يجب تنفيذها بواسطة أي أداة أخذ عينات هي select_batch_
، والتي يمكن أن تحتوي على وسيطات مسماة عشوائية. القيد الوحيد هو أن اسم نفس المدخلات يجب أن يكون متسقًا عبر جميع أجهزة أخذ العينات (أي أن مؤشرات الأمثلة المحددة بالفعل جميعها لها نفس الاسم عبر أجهزة أخذ العينات). ستتطلب إضافة وسيطة مسماة جديدة لم يتم استخدامها في طرق أخذ العينات الأخرى إدخال ذلك في استدعاء select_batch
في run_experiment.py
.
بعد تنفيذ أداة أخذ العينات، تأكد من إضافتها إلى constants.py
بحيث يمكن استدعاؤها من run_experiment.py
.
جميع النماذج المتاحة موجودة في طريقة get_model
الخاصة بـ utils/utils.py
.
الطرق المدعومة:
SVM الخطي: طريقة scikit مع غلاف بحث الشبكة لمعلمة التنظيم.
Kernel SVM: طريقة scikit مع غلاف بحث الشبكة لمعلمة التنظيم.
انحدار Logistc: طريقة scikit مع غلاف بحث الشبكة لمعلمة التنظيم.
شبكة CNN الصغيرة: شبكة CNN ذات 4 طبقات محسنة باستخدام rmsprop المطبقة في Keras مع الواجهة الخلفية لـ Tensorflow.
تصنيف المربعات الصغرى لـ Kernel: أداة حل متدرجة للكتلة يمكنها استخدام نوى متعددة، لذلك غالبًا ما تكون أسرع من scikit Kernel SVM.
يجب أن تتبع النماذج الجديدة واجهة برمجة تطبيقات scikit Learn وأن تنفذ الطرق التالية
fit(X, y[, sample_weight])
: ملاءمة النموذج لميزات الإدخال والهدف.
predict(X)
: توقع قيمة ميزات الإدخال.
score(X, y)
: إرجاع مقياس الهدف نظرا لميزات الاختبار وأهداف الاختبار.
decision_function(X)
(اختياري): احتمالات فئة الإرجاع، أو المسافة إلى حدود القرار، أو أي مقياس آخر يمكن استخدامه بواسطة أداة أخذ عينات الهامش كمقياس لعدم اليقين.
راجع small_cnn.py
للحصول على مثال.
بعد تنفيذ النموذج الجديد، تأكد من إضافته إلى طريقة get_model
في utils/utils.py
.
يجب إضافة النماذج حاليًا على أساس لمرة واحدة ولا يتم دعم جميع مصنفات scikit-Learn نظرًا للحاجة إلى إدخال المستخدم حول ما إذا كان سيتم ضبط المعلمات الفائقة للنموذج وكيفية ضبطها. ومع ذلك، من السهل جدًا إضافة نموذج scikit-Learn مع تضمين بحث المعلمات الفائقة كنموذج مدعوم.
يعالج البرنامج النصي utils/chart_data.py
معالجة البيانات والرسوم البيانية لمجموعة بيانات محددة ودليل المصدر.