Skip to content

Latest commit

 

History

History
68 lines (36 loc) · 7.72 KB

File metadata and controls

68 lines (36 loc) · 7.72 KB

التضمينات

عند تدريب المصنفات باستخدام BoW أو TF/IDF، كنا نعمل على متجهات حقيبة الكلمات عالية الأبعاد بطول vocab_size، وكنا نقوم بتحويل المتجهات ذات التمثيل الموضعي منخفض الأبعاد إلى تمثيل واحد-ساخن متفرق بشكل صريح. ومع ذلك، فإن هذا التمثيل الواحد-ساخن ليس فعالًا من حيث الذاكرة. بالإضافة إلى ذلك، يتم التعامل مع كل كلمة بشكل مستقل عن الأخرى، أي أن المتجهات الواحد-ساخن لا تعبر عن أي تشابه دلالي بين الكلمات.

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

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

باستخدام طبقة التضمين كطبقة أولى في شبكة المصنف الخاصة بنا، يمكننا الانتقال من نموذج حقيبة الكلمات إلى نموذج حقيبة التضمينات، حيث نقوم أولاً بتحويل كل كلمة في النص إلى التضمين المقابل لها، ثم نحسب دالة تجميعية على جميع هذه التضمينات، مثل sum أو average أو max.

صورة توضح مصنف التضمين لخمس كلمات في تسلسل.

الصورة بواسطة المؤلف

✍️ تمارين: التضمينات

واصل التعلم من خلال الدفاتر التالية:

التضمينات الدلالية: Word2Vec

بينما تعلمت طبقة التضمين كيفية تحويل الكلمات إلى تمثيل متجه، إلا أن هذا التمثيل لم يكن بالضرورة ذا معنى دلالي كبير. سيكون من الجيد تعلم تمثيل متجه بحيث تكون الكلمات المتشابهة أو المرادفات قريبة من بعضها البعض من حيث مسافة المتجه (مثل المسافة الإقليدية).

للقيام بذلك، نحتاج إلى تدريب نموذج التضمين مسبقًا على مجموعة كبيرة من النصوص بطريقة محددة. إحدى الطرق لتدريب التضمينات الدلالية تُسمى Word2Vec. وهي تعتمد على بنيتين رئيسيتين تُستخدمان لإنتاج تمثيل موزع للكلمات:

  • حقيبة الكلمات المستمرة (CBoW) — في هذه البنية، نقوم بتدريب النموذج للتنبؤ بكلمة من السياق المحيط. بالنظر إلى النغرام $(W_{-2},W_{-1},W_0,W_1,W_2)$، هدف النموذج هو التنبؤ بـ $W_0$ من $(W_{-2},W_{-1},W_1,W_2)$.
  • التخطي المستمر (Continuous skip-gram) هو عكس CBoW. يستخدم النموذج نافذة السياق المحيطة للتنبؤ بالكلمة الحالية.

CBoW أسرع، بينما التخطي المستمر أبطأ ولكنه يقوم بتمثيل الكلمات النادرة بشكل أفضل.

صورة توضح كلا من خوارزميات CBoW و Skip-Gram لتحويل الكلمات إلى متجهات.

الصورة من هذه الورقة

يمكن استخدام تضمينات Word2Vec المدربة مسبقًا (وكذلك نماذج مشابهة مثل GloVe) بدلاً من طبقة التضمين في الشبكات العصبية. ومع ذلك، نحتاج إلى التعامل مع المفردات، لأن المفردات المستخدمة لتدريب Word2Vec/GloVe مسبقًا من المحتمل أن تختلف عن المفردات في نصوصنا. ألقِ نظرة على الدفاتر أعلاه لمعرفة كيفية حل هذه المشكلة.

التضمينات السياقية

أحد القيود الرئيسية لتمثيلات التضمين المدربة مسبقًا مثل Word2Vec هو مشكلة تمييز معاني الكلمات. بينما يمكن للتضمينات المدربة مسبقًا أن تلتقط بعض معاني الكلمات في السياق، يتم ترميز كل المعاني الممكنة للكلمة في نفس التضمين. يمكن أن يسبب هذا مشاكل في النماذج اللاحقة، حيث أن العديد من الكلمات مثل كلمة "play" لها معانٍ مختلفة حسب السياق الذي تُستخدم فيه.

على سبيل المثال، كلمة "play" في الجملتين التاليتين لها معانٍ مختلفة تمامًا:

  • ذهبت إلى عرض مسرحي في المسرح.
  • جون يريد أن يلعب مع أصدقائه.

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

الخاتمة

في هذا الدرس، اكتشفت كيفية بناء واستخدام طبقات التضمين في TensorFlow و PyTorch لتعكس بشكل أفضل المعاني الدلالية للكلمات.

🚀 التحدي

تم استخدام Word2Vec في بعض التطبيقات المثيرة للاهتمام، بما في ذلك إنشاء كلمات الأغاني والشعر. ألقِ نظرة على هذه المقالة التي تشرح كيف استخدم المؤلف Word2Vec لإنشاء الشعر. شاهد أيضًا هذا الفيديو بواسطة Dan Shiffmann لاكتشاف شرح مختلف لهذه التقنية. ثم حاول تطبيق هذه التقنيات على نصوصك الخاصة، ربما من مصادر مثل Kaggle.

المراجعة والدراسة الذاتية

اقرأ هذه الورقة حول Word2Vec: Efficient Estimation of Word Representations in Vector Space