التضمينات
اشرحوا كيف ترمّز متجهات التضمين الكثيفة علاقات دلالية مفيدة بين الكلمات.
80 دقيقة
وش بتتعلّم
- اشرحوا كيف ترمّز متجهات التضمين الكثيفة علاقات دلالية مفيدة بين الكلمات.
- قارنوا بُنى Word2Vec وطبقات التضمين المتعلّمة والتضمينات السياقية.
نسخة هلا جي بي تي
اشرحوا كيف ترمّز متجهات التضمين الكثيفة علاقات دلالية مفيدة بين الكلمات.
80 دقيقة
تشخيص اختياري
ما له درجة نجاح، ولا يوقف الدرس. اختر «ماني متأكد» إذا هذا جوابك الصادق.
طبّق
التكليف: دفاتر Jupyter استخدموا دفتر PyTorch أو TensorFlow مع متن من الملكية العامة، أو من تأليفكم، أو يسمح ترخيصه صراحةً بهالاستخدام. وثّقوا مصدر المتن وترخيصه بدل نسخ كلمات أغاني أو نصوص محمية. قارنوا جيران عدة كلمات، واشرحوا أثر التكرار والسياق في المتجهات، ووثّقوا قيدًا أو تح
اختياري وتسويه بوقتك؛ ما يأثر على إكمال الدورة.
اختبار بعد الدرس
أرسله مرة وحدة عشان يفتح لك إكمال الدرس، وتقدر تعيده قد ما تبي.
أرسل اختبار ما بعد الدرس، وبعدها أكّد إنك جاهز تكمّل الدرس.
لما درّبنا المصنّفات اعتمادًا على BoW أو TF/IDF، كنا نتعامل مع متجهات حقيبة كلمات عالية الأبعاد طولها vocab_size، ونحوّل بشكل صريح من متجهات التمثيل الموضعي منخفضة الأبعاد إلى تمثيل one-hot متناثر. لكن تمثيل one-hot ما يستخدم الذاكرة بكفاءة. وفوق هذا، يتعامل مع كل كلمة بمعزل عن غيرها؛ يعني إن متجهات one-hot ما تعبّر عن أي تشابه دلالي بين الكلمات.
فكرة التضمين إننا نمثّل الكلمات بمتجهات كثيفة وأقل أبعادًا، وتعكس بشكل أو بآخر المعنى الدلالي للكلمة. قدّام بنتكلم عن طريقة بناء تضمينات كلمات لها معنى، أما الحين فخلونا نفهم التضمين على إنه طريقة لتقليل أبعاد متجه الكلمة.
تأخذ طبقة التضمين كلمة كمدخل وتطلع متجهًا بالحجم المحدد في embedding_size. وهي تشبه طبقة Linear من ناحية، لكن بدل ما تستقبل متجه one-hot، تقدر تستقبل رقم الكلمة مباشرة؛ وبكذا نتجنب إنشاء متجهات one-hot ضخمة.
إذا استخدمنا طبقة التضمين كأول طبقة في شبكة المصنّف، نقدر ننتقل من نموذج حقيبة الكلمات إلى نموذج حقيبة التضمينات. أول شيء نحوّل كل كلمة في النص إلى تضمينها، ثم نحسب دالة تجميع على كل هالتضمينات، مثل sum أو average أو max.
وصف الشكل: رسم يوضّح مصنّف تضمين لتسلسل من خمس كلمات.
كملوا التعلّم في الدفترين هذولا:
طبقة التضمين اللي درّبناها تعلّمت تربط الكلمات بتمثيل متجهي، لكن هالتمثيل ما كان بالضرورة يحمل معنى دلاليًا واضحًا. الأفضل إننا نتعلّم تمثيلًا تكون فيه الكلمات المتشابهة أو المترادفة قريبة من بعض بحسب مسافة متجهية معيّنة، مثل المسافة الإقليدية.
عشان نوصل لهالنتيجة، نحتاج ندرّب نموذج التضمين مسبقًا على مجموعة نصوص كبيرة وبطريقة محددة. من طرق تدريب التضمينات الدلالية Word2Vec، وهي مبنية على بنيتين أساسيتين تنتجان تمثيلًا موزعًا للكلمات:
CBoW أسرع، بينما skip-gram أبطأ لكنه يمثّل الكلمات قليلة التكرار بشكل أفضل.
وصف الشكل: رسم يوضّح خوارزميتي 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.
استخدموا دفتر PyTorch أو TensorFlow مع متن من الملكية العامة، أو من تأليفكم، أو يسمح ترخيصه صراحةً بهالاستخدام. وثّقوا مصدر المتن وترخيصه بدل نسخ كلمات أغاني أو نصوص محمية. قارنوا جيران عدة كلمات، واشرحوا أثر التكرار والسياق في المتجهات، ووثّقوا قيدًا أو تحيزًا واحدًا لاحظتوه.