كيفية تدريب وضبط نماذج الترميز الندرة باستخدام Sentence Transformers v5
تحسين وتدريب نماذج الترميز النادر باستخدام Sentence Transformers v5 ما هي نماذج الترميز النادرة؟ نماذج الترميز النادرة (Sparse Embedding Models) هي نماذج تقوم بتحويل النصوص إلى تمثيلات متجهة عالية البعد، حيث تكون معظم القيم في هذه المتجهات صفراً. على عكس النماذج الكثيفة التي تنتج متجهات ذات أبعاد منخفضة (مثل 384، 768، أو 1024 بُعد) حيث تكون معظم القيم غير صفراً، فإن النماذج النادرة تنتج متجهات ذات بُعد أعلى بكثير (مثل 30,000+) حيث تكون معظم القيم صفراً. كل بُعد نشط في التمثيل النادر يرتبط عادةً برمز محدد في قاموس النموذج، مما يسمح بفهم أفضل لمساهمة الكلمات في التمثيل. مثال على نموذج naver/splade-v3 ```python from sentence_transformers import SparseEncoder تحميل من hub model = SparseEncoder("naver/splade-v3") تشغيل الاستدلال sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium.", ] embeddings = model.encode(sentences) print(embeddings.shape) (3, 30522) الحصول على درجات التشابه للمتجهات similarities = model.similarity(embeddings, embeddings) print(similarities) tensor([[ 32.4323, 5.8528, 0.0258], [ 5.8528, 26.6649, 0.0302], [ 0.0258, 0.0302, 24.0839]]) فك تشفير المتجهات لفهمها decoded = model.decode(embeddings, top_k=10) for decoded, sentence in zip(decoded, sentences): print(f"Sentence: {sentence}") print(f"Decoded: {decoded}") print() ``` في هذا المثال، يتم إنتاج متجهات ذات 30,522 بُعد، حيث يمكن فك تشفير الأبعاد النشطة للتعرف على الكلمات التي تسهم بشكل كبير في التمثيل. توسيع الاستعلامات والمستندات تعتبر عملية توسيع الاستعلامات والمستندات مكونًا أساسيًا في نماذج الترميز النادرة العصبية. على عكس الطرق التقليدية مثل BM25 التي تقيد التوسيع بالكلمات الدقيقة فقط، فإن النماذج النادرة العصبية توسع النص تلقائيًا بالكلمات ذات الصلة من الناحية الدلالية. على سبيل المثال: ```python توسيع الجملة "The weather is lovely today" decoded: [('weather', 2.754), ('today', 2.611), ('lovely', 2.432), ('beautiful', 1.505), ('cool', 1.466), ('pretty', 0.899), ('nice', 0.832), ('summer', 0.770)] ``` هذه العملية تساعد في مطابقة المحتوى ذي الصلة دلاليًا حتى في حالة عدم وجود مطابقات دقيقة للكلمات، وتتعامل مع الأخطاء الإملائية وأخطاء المطابقة بين القواميس. لماذا استخدام نماذج الترميز النادرة؟ النماذج النادرة تقع في مكانة قيمة بين الطرق التقليدية مثل BM25 والنماذج الكثيفة مثل Sentence Transformers. وهي تتميز بالآتي: - كفاءة التخزين والاسترجاع: بسبب الطبيعة النادرة للمتجهات، فهي أقل تكلفة في التخزين وأسرع في الاسترجاع. - فهم أفضل: يمكن تفسير الأبعاد النشطة مباشرة ككلمات في النص. - أداء أفضل: غالبًا ما تتفوق على الطرق التقليدية في المهام ذات الصلة بالبحث والتصنيف. لماذا إجراء التعديل النهائي (Fine-tuning)؟ معظم النماذج النادرة العصبية تستخدم عملية التوسيع لتتعرف على الكلمات المرادفة وتوسيع النص ب كلمات ذات صلة. ومع ذلك، قد يكون هناك بعض الكلمات المتخصصة التي لا يتم التعرف عليها بشكل صحيح. على سبيل المثال: python '##lal', 'severe', '##pha', 'ce', '##gia', 'patient', 'complaint', 'patients', 'complained', 'warning' بدلاً من: python 'headache', 'pain', 'discomfort' من خلال التعديل النهائي، يمكن للنموذج تعلم التركيز على المجال واللغة التي تهمك بشكل حصري. مكونات التدريب تتضمن عملية تدريب نماذج Sentence Transformers المكونات التالية: - النموذج: النموذج الذي سيتم تدريبه أو تعديله، والذي يمكن أن يكون نموذجًا متدربًا مسبقًا أو نموذجًا أساسيًا. - المجموعة: البيانات المستخدمة للتدريب والتقييم. - دالة الخسارة: دالة تقيس أداء النموذج وتوجه عملية التحسين. - อาร์กументات التدريب (اختيارية): المعلمات التي تؤثر على أداء التدريب وتتبعه. - أدوات التقييم (اختيارية): أدوات لتقييم الأداء قبل أو أثناء أو بعد التدريب. - المدرب: يجمع بين جميع المكونات السابقة لتنفيذ التدريب. معماريات النماذج تتوفر العديد من المعماريات التي يمكن استخدامها لتدريب نماذج الترميز النادرة: - Splade: يستخدم تحويلًا مasked language modeling (MLMTransformer) يتبعه SpladePooling لتقديم تمثيل نادر بحجم قاموس النموذج. - Inference-free Splade: يستخدم راوتر (Router) مع مكونات مختلفة للاستعلامات والمستندات. يتم معالجة المستندات باستخدام تحويل MLM الكامل وSpladePooling، بينما يتم معالجة الاستعلامات باستخدام SparseStaticEmbedding. - Contrastive Sparse Representation (CSR): يطبق SparseAutoEncoder على نموذج Sentence Transformer كثيف، مما يجعله فعالًا في النماذج الكثيفة ذات البُعد العالي. مجموعة اختيار المعمارية إليك دليل سريع لاختيار المعمارية المناسبة: - إذا كنت ترغب في التركيز على الكفاءة في وقت الاستعلام، اختر Inference-free Splade. - إذا كنت ترغب في الحفاظ على قابلية الفهم، اختر Splade. - إذا كنت تستخدم نموذجًا كثيفًا أساسًا، اختر CSR. المجموعات يمكن استخدام SparseEncoderTrainer مع مجموعات البيانات من نوع datasets.Dataset أو datasets.DatasetDict. يمكنك تحميل البيانات من hub Hugging Face أو استخدام بيانات محلية بتنسيق CSV، JSON، Parquet، Arrow، أو SQL. ```python from datasets import load_dataset تحميل مجموعة بيانات من hub train_dataset = load_dataset("sentence-transformers/natural-questions", split="train") تحميل مجموعة بيانات محلية dataset = load_dataset("csv", data_files="my_file.csv") ``` تنسيق المجموعة من الضروري التأكد من أن تنسيق مجموعتك يتطابق مع دالة الخسارة المختارة. يجب أن تتحقق من: - العمود "label": إذا كانت دالة الخسارة تتطلب تسمية، يجب أن تحتوي مجموعتك على عمود اسمه "label" أو "score". - عدد الأعمدة غير المصنفة: يجب أن يتطابق عدد هذه الأعمدة مع عدد المدخلات المطلوبة لدالة الخسارة. دالة الخسارة تقيس دوال الخسارة مدى أداء النموذج على مجموعة البيانات المعطاة وتقود عملية التحسين. يجب استخدام SpladeLoss أو CSRLoss اعتمادًا على المعمارية. إليك مثال على تدريب نموذج: ```python from sentence_transformers import SparseEncoder from sentence_transformers.sparse_encoder.losses import SpladeLoss, SparseMultipleNegativesRankingLoss تحميل النموذج model = SparseEncoder("distilbert/distilbert-base-uncased") تهيئة SpladeLoss loss = SpladeLoss( model=model, loss=SparseMultipleNegativesRankingLoss(model=model), query_regularizer_weight=5e-5, document_regularizer_weight=3e-5, ) ``` آرگومينات التدريب تقدم فئة SparseEncoderTrainingArguments معلمات تؤثر على أداء التدريب وتتبعه. إليك مثالًا: ```python from sentence_transformers import SparseEncoderTrainingArguments args = SparseEncoderTrainingArguments( output_dir="models/splade-distilbert-base-uncased-nq", num_train_epochs=1, per_device_train_batch_size=16, learning_rate=2e-5, warmup_ratio=0.1, fp16=True, ) ``` أدوات التقييم يمكن تقييم الأداء باستخدام أدوات التقييم المتاحة في Sentence Transformers. إليك بعض الأمثلة: - SparseNanoBEIREvaluator: يقوم بتقييم النموذج باستخدام مجموعات بيانات من hub Hugging Face. - SparseEmbeddingSimilarityEvaluator: يستخدم لقياس درجات التشابه بين النصوص. - SparseTripletEvaluator: يستخدم لمجموعات البيانات التي تحتوي على ثلاثيات (anchor, positive, negative). المدرب (Trainer) يجمع SparseEncoderTrainer جميع المكونات السابقة للبدء في التدريب. إليك مثالًا على كيفية استخدامه: ```python from sentence_transformers import SparseEncoderTrainer trainer = SparseEncoderTrainer( model=model, args=args, train_dataset=train_dataset, eval_dataset=eval_dataset, loss=loss, evaluator=dev_evaluator, ) trainer.train() ``` التكامل مع قواعد البيانات المتجهة بعد تدريب نماذج الترميز النادرة، الخطوة التالية هي نشرها بشكل فعال في بيئات الإنتاج. توفر قواعد البيانات المتجهة البنية التحتية الأساسية لتخزين وفهرسة واسترجاع التمثيلات النادرة. من الخيارات الشائعة Qdrant، OpenSearch، Elasticsearch، و Seismic. ```python from sentence_transformers.sparse_encoder.search_engines import semantic_search_qdrant ترميز المستندات corpus_embeddings = sparse_model.encode_document(corpus, convert_to_sparse_tensor=True, batch_size=16, show_progress_bar=True) البحث الدلالي باستخدام Qdrant results, search_time, corpus_index = semantic_search_qdrant(query_embeddings, corpus_index=corpus_index, corpus_embeddings=corpus_embeddings, top_k=5, output_index=True) ``` موارد إضافية أمثلة التدريب: صفحات تحتوي على أمثلة تدريب مفصلة وروابط للرمز البرمجي. توثيق Sentence Transformers: صفحات تحتوي على تفاصيل أكثر حول كيفية استخدام Sentence Transformers. تقييم الحدث من قبل المختصين يعد تدريب وتعديل نماذج الترميز النادرة باستخدام Sentence Transformers v5 خطوة مهمة في مجال البحث الدلالي وتحليل البيانات النصية. هذه النماذج توفر توازنًا مثاليًا بين الكفاءة والدقة، مما يجعلها خيارًا ممتازًا للتطبيقات القائمة على البحث والتصنيف. نبذة تعريفية عن Sentence Transformers Sentence Transformers هو مكتبة Python تهدف إلى تبسيط استخدام وتدريب نماذج الترميز والترتبية (re-ranking) للعديد من التطبيقات مثل الجيل المعزز بالبحث، البحث الدلالي، التشابه النصي الدلالي، وتعدين التعبيرات المكافئة. الإصدارات الأخيرة قدمت تحسينات كبيرة في التدريب، مما يجعلها أداة قوية ومبتكرة في مجال التعلم العميق والمعالجة الطبيعية للغة.