التضمينات
اشرحوا كيف ترمّز متجهات التضمين الكثيفة علاقات دلالية مفيدة بين الكلمات.
80 دقيقة
وش بتتعلّم
- اشرحوا كيف ترمّز متجهات التضمين الكثيفة علاقات دلالية مفيدة بين الكلمات.
- قارنوا بُنى Word2Vec وطبقات التضمين المتعلّمة والتضمينات السياقية.
وش تحتاج قبل تبدأ
- تمثيل النص على هيئة موترات
الوقت المتوقع
80 دقيقةتشخيص اختياري
وش تعرف من قبل؟
ما له درجة نجاح، ولا يوقف الدرس. اختر «ماني متأكد» إذا هذا جوابك الصادق.
التضمينات
تمثيلات التضمين
لما درّبنا المصنّفات اعتمادًا على BoW أو TF/IDF، كنا نتعامل مع متجهات حقيبة كلمات عالية الأبعاد طولها vocab_size، ونحوّل بشكل صريح من متجهات التمثيل الموضعي منخفضة الأبعاد إلى تمثيل one-hot متناثر. لكن تمثيل one-hot ما يستخدم الذاكرة بكفاءة. وفوق هذا، يتعامل مع كل كلمة بمعزل عن غيرها؛ يعني إن متجهات one-hot ما تعبّر عن أي تشابه دلالي بين الكلمات.
فكرة التضمين إننا نمثّل الكلمات بمتجهات كثيفة وأقل أبعادًا، وتعكس بشكل أو بآخر المعنى الدلالي للكلمة. قدّام بنتكلم عن طريقة بناء تضمينات كلمات لها معنى، أما الحين فخلونا نفهم التضمين على إنه طريقة لتقليل أبعاد متجه الكلمة.
تأخذ طبقة التضمين كلمة كمدخل وتطلع متجهًا بالحجم المحدد في embedding_size. وهي تشبه طبقة Linear من ناحية، لكن بدل ما تستقبل متجه one-hot، تقدر تستقبل رقم الكلمة مباشرة؛ وبكذا نتجنب إنشاء متجهات one-hot ضخمة.
إذا استخدمنا طبقة التضمين كأول طبقة في شبكة المصنّف، نقدر ننتقل من نموذج حقيبة الكلمات إلى نموذج حقيبة التضمينات. أول شيء نحوّل كل كلمة في النص إلى تضمينها، ثم نحسب دالة تجميع على كل هالتضمينات، مثل sum أو average أو max.
وصف الشكل: رسم يوضّح مصنّف تضمين لتسلسل من خمس كلمات.
✍️ تمارين: التضمينات
كملوا التعلّم في الدفترين هذولا:
التضمينات الدلالية: Word2Vec
طبقة التضمين اللي درّبناها تعلّمت تربط الكلمات بتمثيل متجهي، لكن هالتمثيل ما كان بالضرورة يحمل معنى دلاليًا واضحًا. الأفضل إننا نتعلّم تمثيلًا تكون فيه الكلمات المتشابهة أو المترادفة قريبة من بعض بحسب مسافة متجهية معيّنة، مثل المسافة الإقليدية.
عشان نوصل لهالنتيجة، نحتاج ندرّب نموذج التضمين مسبقًا على مجموعة نصوص كبيرة وبطريقة محددة. من طرق تدريب التضمينات الدلالية Word2Vec، وهي مبنية على بنيتين أساسيتين تنتجان تمثيلًا موزعًا للكلمات:
- نموذج حقيبة الكلمات المستمر (CBoW): ندرّب النموذج بهالبنية عشان يتنبأ بكلمة من السياق اللي حولها. إذا كان عندنا ngram بالشكل ، فهدف النموذج إنه يتنبأ بـ انطلاقًا من .
- نموذج Continuous skip-gram يشتغل بعكس CBoW؛ نعطيه الكلمة الحالية ، وهو يتنبأ بكلمات السياق اللي حولها .
CBoW أسرع، بينما skip-gram أبطأ لكنه يمثّل الكلمات قليلة التكرار بشكل أفضل.
وصف الشكل: رسم يوضّح خوارزميتي CBoW وSkip-Gram لتحويل الكلمات إلى متجهات.
الصورة مأخوذة من هذي الورقة البحثية.
نقدر نستخدم تضمينات Word2Vec المدرّبة مسبقًا، وكذلك النماذج المشابهة مثل GloVe، بدل طبقة التضمين في الشبكات العصبية. لكن لازم نعالج اختلاف المفردات؛ لأن المفردات اللي تدرب عليها Word2Vec أو GloVe غالبًا تختلف عن مفردات المتن النصي عندنا. شوفوا الدفترين اللي فوق عشان تعرفون كيف نحل هالمشكلة.
التضمينات السياقية
من أهم قيود تمثيلات التضمين التقليدية المدرّبة مسبقًا، مثل Word2Vec، مشكلة تمييز معنى الكلمة. هالتضمينات تلتقط جزءًا من معنى الكلمات في السياق، لكن كل المعاني الممكنة للكلمة تنضغط داخل التضمين نفسه. وهذا ممكن يسبب مشكلة للنماذج اللي تجي بعدها؛ لأن كلمات كثيرة، مثل 'play'، يتغيّر معناها حسب السياق.
مثلًا، كلمة 'play' لها معنيان مختلفان بهالجملتين:
- I went to a play at the theatre.
- John wants to play with his friends.
التضمينات المدرّبة مسبقًا تمثّل المعنيين لكلمة 'play' بالتضمين نفسه. عشان نتجاوز هالقيد، نحتاج نبني التضمينات بالاعتماد على نموذج اللغة؛ وهو نموذج يتدرّب على متن نصي كبير ويعرف كيف تجتمع الكلمات في سياقات مختلفة. شرح التضمينات السياقية خارج نطاق هالدرس، لكن بنرجع لها لما نتكلم عن نماذج اللغة لاحقًا في الدورة.
الخلاصة
في هالدرس عرفتوا كيف تبنون طبقات التضمين وتستخدمونها في TensorFlow وPyTorch عشان تعكس المعاني الدلالية للكلمات بشكل أفضل.
🚀 التحدي
استخدم الناس Word2Vec في تطبيقات ممتعة، ومنها توليد كلمات الأغاني والشعر. اقرأوا هالمقال اللي يشرح كيف استخدم المؤلف Word2Vec لتوليد الشعر. وشوفوا بعد هالفيديو لـDan Shiffmann عشان تتعرفون على شرح مختلف للتقنية. بعدها جرّبوا تطبّقونها على متن نصي من اختياركم، وممكن تجيبونه من Kaggle.
المراجعة والدراسة الذاتية
اقرأوا ورقة Word2Vec: Efficient Estimation of Word Representations in Vector Space.
التكليف: دفاتر Jupyter
طبّق
المختبرات والواجب
Embeddings Py Torch
افتح المختبرالتكليف: دفاتر Jupyter
التكليف: دفاتر Jupyter استخدموا دفتر PyTorch أو TensorFlow مع متن من الملكية العامة، أو من تأليفكم، أو يسمح ترخيصه صراحةً بهالاستخدام. وثّقوا مصدر المتن وترخيصه بدل نسخ كلمات أغاني أو نصوص محمية. قارنوا جيران عدة كلمات، واشرحوا أثر التكرار والسياق في المتجهات، ووثّقوا قيدًا أو تح
اختياري وتسويه بوقتك؛ ما يأثر على إكمال الدورة.
الواجب: التكليف: دفاتر Jupyter
التكليف: دفاتر Jupyter
استخدموا دفتر PyTorch أو TensorFlow مع متن من الملكية العامة، أو من تأليفكم، أو يسمح ترخيصه صراحةً بهالاستخدام. وثّقوا مصدر المتن وترخيصه بدل نسخ كلمات أغاني أو نصوص محمية. قارنوا جيران عدة كلمات، واشرحوا أثر التكرار والسياق في المتجهات، ووثّقوا قيدًا أو تحيزًا واحدًا لاحظتوه.
الزبدة
- اشرحوا كيف ترمّز متجهات التضمين الكثيفة علاقات دلالية مفيدة بين الكلمات.
- قارنوا بُنى Word2Vec وطبقات التضمين المتعلّمة والتضمينات السياقية.
اختبار بعد الدرس
تأكد من فهمك
أرسله مرة وحدة عشان يفتح لك إكمال الدرس، وتقدر تعيده قد ما تبي.
اختم هالدرس
أرسل اختبار ما بعد الدرس، وبعدها أكّد إنك جاهز تكمّل الدرس.