
خوارزميات لكشف القيم الشاذة والهجمات العدائية والانحراف
Alibi Detect هي مكتبة بايثون متاحة المصدر تركّز على كشف القيم الشاذة، والهجمات العدائية، والانجراف. تهدف الحزمة إلى تغطية كل من الكاشفات المتصلة وغير المتصلة بالإنترنت للبيانات الجدولية والنصوص والصور والسلاسل الزمنية. كما أنّ كشف الانجراف يدعم كلًا من الخلفيتين TensorFlow وPyTorch.
لمزيد من الخلفية حول أهمية مراقبة القيم الشاذة والتوزيعات في بيئة الإنتاج، شاهد هذه المحاضرة من ورشة عمل تحديات نشر ومراقبة أنظمة التعلم الآلي في مؤتمر ICML 2020، والتي تستند إلى الورقة البحثية مراقبة النماذج وقابلية تفسيرها في الإنتاج وتشير إلى Alibi Detect.
للحصول على مقدمة شاملة حول كشف الانجراف، شاهد حماية تعلمك الآلي من الانجراف: مقدمة. تغطي المحاضرة ما هو الانجراف، ولماذا من المفيد اكتشافه، والأنواع المختلفة للانجراف، وكيف يمكن اكتشافه بطريقة منهجية، كما تصف أيضًا البنية الداخلية لكاشف الانجراف.
يمكن تثبيت الحزمة alibi-detect من:
pip)conda/mamba)Prophet: ```bash
pip install alibi-detect[prophet]
لتثبيت من conda-forge يُنصح باستخدام mamba، والذي يمكن تثبيته في بيئة conda الأساسية base باستخدام:```bash conda install mamba -n base -c conda-forge
لتثبيت alibi-detect:```bash
mamba install -c conda-forge alibi-detect
سوف نستخدم كاشف الشذوذ VAE لتوضيح واجهة الـ API.```python from alibi_detect.od import OutlierVAE from alibi_detect.saving import save_detector, load_detector
od = OutlierVAE(threshold=0.1, encoder_net=encoder_net, decoder_net=decoder_net, latent_dim=1024) od.fit(x_train)
preds = od.predict(x_test)
filepath = './my_detector/' save_detector(od, filepath) od = load_detector(filepath)
يتم إرجاع التنبؤات في قاموس بمفاتيح `meta` و`data`. يحتوي `meta` على البيانات الوصفية للكاشف بينما `data` هو في حد ذاته قاموس يحتوي على التنبؤات الفعلية. وهو يحتوي على درجات وعتبات الشذوذ أو الخصومة أو الانحراف بالإضافة إلى التنبؤات حول ما إذا كانت الحالات، على سبيل المثال، شاذة أم لا. قد تختلف التفاصيل الدقيقة قليلاً من طريقة إلى أخرى، لذلك نشجع القارئ على التعرف على [أنواع الخوارزميات المدعومة](https://docs.seldon.io/projects/alibi-detect/en/stable/overview/algorithms.html).
## الخوارزميات المدعومة
تعرض الجداول التالية حالات الاستخدام الموصى بها لكل خوارزمية. يشير العمود *مستوى الميزة* إلى ما إذا كان يمكن إجراء الاكتشاف على مستوى الميزة، على سبيل المثال لكل بكسل في صورة. راجع [قائمة مراجع الخوارزميات](#reference-list) لمزيد من المعلومات التي تتضمن روابط إلى الوثائق والأوراق الأصلية بالإضافة إلى أمثلة لكل كاشف.
### اكتشاف القيم الشاذة
| الكاشف | جدولي | صورة | سلسلة زمنية | نص | ميزات فئوية | مباشر | مستوى الميزة |
|:---------------------|:-------:|:-----:|:-----------:|:----:|:--------------------:|:------:|:-------------:|
| Isolation Forest | ✔ | | | | ✔ | | |
| Mahalanobis Distance | ✔ | | | | ✔ | ✔ | |
| AE | ✔ | ✔ | | | | | ✔ |
| VAE | ✔ | ✔ | | | | | ✔ |
| AEGMM | ✔ | ✔ | | | | | |
| VAEGMM | ✔ | ✔ | | | | | |
| Likelihood Ratios | ✔ | ✔ | ✔ | | ✔ | | ✔ |
| Prophet | | | ✔ | | | | |
| Spectral Residual | | | ✔ | | | ✔ | ✔ |
| Seq2Seq | | | ✔ | | | | ✔ |
### اكتشاف الهجمات الخصومية
| الكاشف | جدولي | صورة | سلسلة زمنية | نص | ميزات فئوية | مباشر | مستوى الميزة |
| :--- | :---: | :---: |:-----------:|:----:|:--------------------:|:------:|:-------------:|
| Adversarial AE | ✔ | ✔ | | | | | |
| Model distillation | ✔ | ✔ | ✔ | ✔ | ✔ | | |
### اكتشاف الانحراف
| الكاشف | جدولي | صورة | سلسلة زمنية | نص | ميزات فئوية | مباشر | مستوى الميزة |
|:---------------------------------| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| Kolmogorov-Smirnov | ✔ | ✔ | | ✔ | ✔ | | ✔ |
| Cramér-von Mises | ✔ | ✔ | | | | ✔ | ✔ |
| Fisher's Exact Test | ✔ | | | | ✔ | ✔ | ✔ |
| Maximum Mean Discrepancy (MMD) | ✔ | ✔ | | ✔ | ✔ | ✔ | |
| Learned Kernel MMD | ✔ | ✔ | | ✔ | ✔ | | |
| Context-aware MMD | ✔ | ✔ | ✔ | ✔ | ✔ | | |
| Least-Squares Density Difference | ✔ | ✔ | | ✔ | ✔ | ✔ | |
| Chi-Squared | ✔ | | | | ✔ | | ✔ |
| Mixed-type tabular data | ✔ | | | | ✔ | | ✔ |
| Classifier | ✔ | ✔ | ✔ | ✔ | ✔ | | |
| Spot-the-diff | ✔ | ✔ | ✔ | ✔ | ✔ | | ✔ |
| Classifier Uncertainty | ✔ | ✔ | ✔ | ✔ | ✔ | | |
| Regressor Uncertainty | ✔ | ✔ | ✔ | ✔ | ✔ | | |
#### دعم TensorFlow وPyTorch
تدعم كاشفات الانحراف خلفيات TensorFlow وPyTorch و(حيثما ينطبق ذلك) [KeOps](https://www.kernel-operations.io/keops/index.html). ومع ذلك، لا يقوم Alibi Detect بتثبيت هذه افتراضيًا. راجع [خيارات التثبيت](#installation-and-usage) لمزيد من التفاصيل.```python
from alibi_detect.cd import MMDDrift
cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05)
preds = cd.predict(x)
نفس الكاشف في PyTorch:```python cd = MMDDrift(x_ref, backend='pytorch', p_val=.05) preds = cd.predict(x)
أو في KeOps:```python
cd = MMDDrift(x_ref, backend='keops', p_val=.05)
preds = cd.predict(x)
تتضمن Alibi Detect أيضًا خطوات معالجة مسبقة متنوعة مثل المُشفِّرات المهيأة عشوائيًا، وتضمينات النص المُدرَّبة مسبقًا لاكتشاف الانجراف باستخدام مكتبة transformers، واستخراج الطبقات المخفية من نماذج التعلم الآلي. يتيح ذلك اكتشاف أنواع مختلفة من الانجراف مثل تحول التوزيع المشترك والتوزيع المتوقع. خطوات المعالجة المسبقة مدعومة أيضًا في TensorFlow وPyTorch.```python from alibi_detect.cd.tensorflow import HiddenOutput, preprocess_drift
model = # TensorFlow model; tf.keras.Model or tf.keras.Sequential preprocess_fn = partial(preprocess_drift, model=HiddenOutput(model, layer=-1), batch_size=128) cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05, preprocess_fn=preprocess_fn) preds = cd.predict(x)
اطّلع على دفاتر الأمثلة (مثل [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mmd_cifar10.html), [مراجعات الأفلام](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html)) لمزيد من التفاصيل.
### قائمة المراجع
#### كشف القيم الشاذة
- [Isolation Forest](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/iforest.html) ([FT Liu et al., 2008](https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf))
- مثال: [اختراق الشبكة](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_if_kddcup.html)
- [Mahalanobis Distance](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/mahalanobis.html) ([Mahalanobis, 1936](https://insa.nic.in/writereaddata/UpLoadedFiles/PINSA/Vol02_1936_1_Art05.pdf))
- مثال: [اختراق الشبكة](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_mahalanobis_kddcup.html)
- [Auto-Encoder (AE)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/ae.html)
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_ae_cifar10.html)
- [Variational Auto-Encoder (VAE)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vae.html) ([Kingma et al., 2013](https://arxiv.org/abs/1312.6114))
- أمثلة: [اختراق الشبكة](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_vae_kddcup.html), [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_vae_cifar10.html)
- [Auto-Encoding Gaussian Mixture Model (AEGMM)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/aegmm.html) ([Zong et al., 2018](https://openreview.net/forum?id=BJJLHbb0-))
- مثال: [اختراق الشبكة](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_aegmm_kddcup.html)
- [Variational Auto-Encoding Gaussian Mixture Model (VAEGMM)](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/vaegmm.html)
- مثال: [اختراق الشبكة](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_aegmm_kddcup.html)
- [Likelihood Ratios](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/llr.html) ([Ren et al., 2019](https://arxiv.org/abs/1906.02845))
- أمثلة: [الجينوم](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_llr_genome.html), [Fashion-MNIST مقابل MNIST](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_llr_mnist.html)
- [Prophet Time Series Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/prophet.html) ([Taylor et al., 2018](https://peerj.com/preprints/3190/))
- مثال: [توقعات الطقس](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_prophet_weather.html)
- [Spectral Residual Time Series Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/sr.html) ([Ren et al., 2019](https://arxiv.org/abs/1906.03821))
- مثال: [مجموعة بيانات اصطناعية](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_sr_synth.html)
- [Sequence-to-Sequence (Seq2Seq) Outlier Detector](https://docs.seldon.io/projects/alibi-detect/en/stable/od/methods/seq2seq.html) ([Sutskever et al., 2014](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf); [Park et al., 2017](https://arxiv.org/pdf/1711.00614.pdf))
- أمثلة: [ECG](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_seq2seq_ecg.html), [مجموعة بيانات اصطناعية](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/od_seq2seq_synth.html)
#### كشف الأمثلة العدائية
- [Adversarial Auto-Encoder](https://docs.seldon.io/projects/alibi-detect/en/stable/ad/methods/adversarialae.html) ([Vacanti and Van Looveren, 2020](https://arxiv.org/abs/2002.09364))
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/ad_ae_cifar10.html)
- [Model distillation](https://docs.seldon.io/projects/alibi-detect/en/stable/ad/methods/modeldistillation.html)
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_distillation_cifar10.html)
#### كشف الانحراف
- [Kolmogorov-Smirnov](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/ksdrift.html)
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_ks_cifar10.html), [الرسوم البيانية الجزيئية](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html), [مراجعات الأفلام](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html)
- [Cramér-von Mises](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/cvmdrift.html)
- مثال: [البطاريق](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_supervised_penguins.html)
- [Fisher's Exact Test](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/fetdrift.html)
- مثال: [البطاريق](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_supervised_penguins.html)
- [Least-Squares Density Difference](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/lsdddrift.html) ([Bu et al, 2016](https://alippi.faculty.polimi.it/articoli/A%20Pdf%20free%20Change%20Detection%20Test%20Based%20on%20Density%20Difference%20Estimation.pdf))
- [Maximum Mean Discrepancy](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/mmddrift.html) ([Gretton et al, 2012](http://jmlr.csail.mit.edu/papers/v13/gretton12a.html))
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mmd_cifar10.html), [الرسوم البيانية الجزيئية](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html), [مراجعات الأفلام](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_imdb.html), [مراجعات أمازون](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_amazon.html)
- [Learned Kernel MMD](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/learnedkerneldrift.html) ([Liu et al, 2020](https://arxiv.org/abs/2002.09116))
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_clf_cifar10.html)
- [Context-aware MMD](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/contextmmddrift.html) ([Cobb and Van Looveren, 2022](https://arxiv.org/abs/2203.08644))
- مثال: [ECG](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_context_ecg.html), [المواضيع الإخبارية](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_context_20newsgroup.html)
- [Chi-Squared](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/chisquaredrift.html)
- مثال: [التنبؤ بالدخل](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_chi2ks_adult.html)
- [Mixed-type tabular data](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/tabulardrift.html)
- مثال: [التنبؤ بالدخل](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_chi2ks_adult.html)
- [Classifier](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/classifierdrift.html) ([Lopez-Paz and Oquab, 2017](https://openreview.net/forum?id=SJkXfE5xx))
- مثال: [CIFAR10](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_clf_cifar10.html), [مراجعات أمازون](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_text_amazon.html)
- [Spot-the-diff](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/spotthediffdrift.html) (adaptation of [Jitkrittum et al, 2016](https://arxiv.org/abs/1605.06796))
- مثال [MNIST وجودة النبيذ](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/spot_the_diff_mnist_win.html)
- [Classifier and Regressor Uncertainty](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/modeluncdrift.html)
- مثال: [CIFAR10 والنبيذ](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_model_unc_cifar10_wine.html), [الرسوم البيانية الجزيئية](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_mol.html)
- [Online Maximum Mean Discrepancy](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/onlinemmddrift.html)
- مثال: [جودة النبيذ](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_wine.html), [التصوير الطبي Camelyon](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_camelyon.html)
- [Online Least-Squares Density Difference](https://docs.seldon.io/projects/alibi-detect/en/stable/cd/methods/onlinemmddrift.html) ([Bu et al, 2017](https://ieeexplore.ieee.org/abstract/document/7890493))
- مثال: [جودة النبيذ](https://docs.seldon.io/projects/alibi-detect/en/stable/examples/cd_online_wine.html)
## مجموعات البيانات
تحتوي الحزمة أيضًا على وظائف في `alibi_detect.datasets` لاسترجاع عدد من مجموعات البيانات بسهولة لأنماط مختلفة. لكل مجموعة بيانات، يتم إرجاع إما البيانات والتسميات أو كائن *Bunch* يحتوي على البيانات والتسميات وبيانات وصفية اختيارية. مثال:```python
from alibi_detect.datasets import fetch_ecg
(X_train, y_train), (X_test, y_test) = fetch_ecg(return_X_y=True)
مجموعة بيانات الجينوم: fetch_genome
(X_train, y_train), (X_val, y_val), (X_test, y_test) = fetch_genome(return_X_y=True)
ECG 5000: fetch_ecg
NAB: fetch_nab
alibi_detect.datasets.get_list_nab().CIFAR-10-C: fetch_cifar10c
fetch_cifar10c اختيار أي مستوى شدة أو نوع تشويه. يمكن استرجاع قائمة بأنواع التشويه المتاحة باستخدام alibi_detect.datasets.corruption_types_cifar10c(). يمكن استخدام مجموعة البيانات في الأبحاث حول المتانة والانجراف. يمكن العثور على البيانات الأصلية هنا. مثال: ```python
from alibi_detect.datasets import fetch_cifar10ccorruption = ['gaussian_noise', 'motion_blur', 'brightness', 'pixelate'] X, y = fetch_cifar10c(corruption=corruption, severity=5, return_X_y=True)
Adversarial CIFAR-10: fetch_attack
(X_train, y_train), (X_test, y_test) = fetch_attack('cifar10', 'resnet56', 'cw', return_X_y=True)
fetch_kdd
fetch_kdd تحديد مجموعة فرعية من اقتحامات الشبكات كأهداف أو اختيار ميزات محددة فقط. يمكن العثور على البيانات الأصلية هنا.يمكن العثور على النماذج و/أو اللبنات الأساسية التي قد تكون مفيدة خارج نطاق كشف القيم الشاذة أو الخصومة أو الانجراف تحت alibi_detect.models. التطبيقات الرئيسية:
PixelCNN++: alibi_detect.models.pixelcnn.PixelCNN
التشفير التلقائي المتغير: alibi_detect.models.autoencoder.VAE
نموذج تسلسل-إلى-تسلسل: alibi_detect.models.autoencoder.Seq2Seq
ResNet: alibi_detect.models.resnet
model = fetch_tf_model('cifar10', 'resnet32')
تم دمج Alibi-detect في منصة نشر نماذج التعلم الآلي Seldon Core وإطار عمل تقديم النماذج KFServing.
Seldon Core: أمثلة عملية لاكتشاف القيم الشاذة (outlier) و الانجراف (drift).
KFServing: أمثلة لاكتشاف القيم الشاذة (outlier) و الانجراف (drift).
إذا كنت تستخدم alibi-detect في بحثك، فيُرجى النظر في الاستشهاد به.
إدخال BibTeX:``` @software{alibi-detect, title = {Alibi Detect: Algorithms for outlier, adversarial and drift detection}, author = {Van Looveren, Arnaud and Klaise, Janis and Vacanti, Giovanni and Cobb, Oliver and Scillitoe, Ashley and Samoilescu, Robert and Athorne, Alex}, url = {https://github.com/SeldonIO/alibi-detect}, version = {0.13.0}, date = {2025-12-11}, year = {2019} }