الشبكات التوليدية
اربطوا بُنى التكرار واحد لواحد وواحد لعدة وتسلسل لتسلسل بالمهام المناسبة.
90 دقيقة
وش بتتعلّم
- اربطوا بُنى التكرار واحد لواحد وواحد لعدة وتسلسل لتسلسل بالمهام المناسبة.
- ولّدوا النص رمزًا بعد رمز واشرحوا كيف تغيّر حرارة أخذ العينة التنوع والترابط.
وش تحتاج قبل تبدأ
- الشبكات العصبية المتكررة (RNN)
الوقت المتوقع
90 دقيقةتشخيص اختياري
وش تعرف من قبل؟
ما له درجة نجاح، ولا يوقف الدرس. اختر «ماني متأكد» إذا هذا جوابك الصادق.
الشبكات التوليدية
وفّرت الشبكات العصبية المتكررة (RNNs)، ومعها الخلايا ذات البوابات مثل خلايا الذاكرة الطويلة قصيرة المدى (LSTMs) والوحدات المتكررة ذات البوابات (GRUs)، طريقةً لنمذجة اللغة؛ لأنها تتعلّم ترتيب الكلمات وتتنبأ بالكلمة اللي بعدها في التسلسل. وهالشي يخلّينا نستخدم RNNs في المهام التوليدية، مثل توليد النصوص، والترجمة الآلية، وحتى كتابة وصف للصور.
✅ تذكّروا المرات اللي استفدتوا فيها من مهمة توليدية، مثل إكمال النص وأنتم تكتبون. ابحثوا عن تطبيقاتكم المفضلة وشوفوا هل استخدمت RNNs أو لا.
في بنية RNN اللي أخذناها بالوحدة السابقة، كل وحدة RNN تطلع الحالة المخفية التالية. ونقدر بعد نضيف مخرجًا ثانيًا لكل وحدة متكررة، وبكذا تطلع لنا تسلسلًا طوله يساوي طول التسلسل الأصلي. ونقدر نستخدم وحدات RNN ما تستقبل مدخلًا في كل خطوة؛ تأخذ متجه حالة ابتدائي، وبعدها تنتج تسلسلًا من المخرجات.
هالخيارات تعطينا بُنى عصبية مختلفة، مثل اللي بالصورة:
وصف الشكل: صورة تبيّن الأنماط الشائعة للشبكات العصبية المتكررة.
الصورة من تدوينة Unreasonable Effectiveness of Recurrent Neural Networks لـ Andrej Karpaty
- واحد إلى واحد: شبكة عصبية تقليدية لها مدخل واحد ومخرج واحد.
- واحد إلى متعدد: بنية توليدية تستقبل قيمة واحدة، وتنتج تسلسلًا من القيم. مثلًا، إذا بغينا ندرّب شبكةً تكتب وصفًا للصورة، ندخل الصورة ونمررها على CNN عشان نحصل على حالتها المخفية، وبعدها تولّد سلسلة متكررة الوصف كلمةً كلمة.
- متعدد إلى واحد: يطابق بُنى RNN اللي شرحناها بالوحدة السابقة، مثل التصنيف النصي.
- متعدد إلى متعدد، أو تسلسل إلى تسلسل: يطابق مهام مثل الترجمة الآلية؛ تجمع RNN الأولى معلومات تسلسل الإدخال كلها في الحالة المخفية، ثم تفرد RNN ثانية هالحالة على شكل تسلسل مخرجات.
بهالوحدة بنركّز على نماذج توليدية بسيطة تساعدنا نولّد نصوصًا. وللتبسيط، بنجزّئ النص على مستوى المحارف.
بندرّب RNN على توليد النص خطوةً بخطوة. بكل خطوة نأخذ تسلسل محارف طوله nchars، ونطلب من الشبكة تولّد المحرف التالي لكل محرف في الإدخال:
وصف الشكل: صورة تبيّن مثالًا على توليد RNN لكلمة 'HELLO'.
وقت توليد النص (أثناء الاستدلال)، نبدأ بموجّه نصي (prompt) ونمرره على خلايا RNN عشان نكوّن الحالة الوسيطة، ومنها يبدأ التوليد. نولّد محرفًا واحدًا كل مرة، ثم نمرر الحالة والمحرف الناتج إلى خلية RNN ثانية عشان تولّد اللي بعده، ونكرر لين نوصل لعدد المحارف المطلوب.
وصف الشكل: حُذف الأصل لأن حقوق إعادة استخدامه غير موثّقة.
✍️ تمارين: الشبكات التوليدية
كمّلوا التعلّم في الدفترين هذولا:
التوليد المرن للنص ودرجة الحرارة
مخرج كل خلية RNN هو توزيع احتمالي للمحارف. لو أخذنا دائمًا المحرف صاحب أعلى احتمال على أنه المحرف التالي، غالبًا بيدخل النص في حلقة ويكرر تسلسلات المحارف نفسها، مثل هالمثال:
today of the second the company and a second the company ...
لكن إذا طالعنا توزيع احتمالات المحرف التالي، ممكن يكون الفرق بين أعلى الاحتمالات بسيطًا؛ مثلًا احتمال محرف يساوي 0.2 واحتمال الثاني 0.19. وإذا كنا ندور المحرف التالي بعد 'play'، فالمسافة وe (مثل كلمة player) ممكن يكونان خيارين متقاربين.
يعني مو دايم من المناسب نختار صاحب أعلى احتمال؛ لأن ثاني أعلى احتمال ممكن بعد يعطينا نصًا له معنى. الأفضل إننا نأخذ عيّنة من توزيع الاحتمالات اللي طلعته الشبكة. ونقدر نستخدم معامل درجة الحرارة: نسطّح به التوزيع إذا بغينا عشوائية أكثر، أو نخليه أحدّ إذا بغينا نلتزم بالمحارف الأعلى احتمالًا.
شوفوا في الدفترين فوق كيف نُفّذ هالتوليد المرن للنص.
الخلاصة
توليد النص مفيد بحد ذاته، لكن فائدته الأكبر تطلع لما نولّد النص باستخدام RNN من متجه سمات ابتدائي. مثلًا، يدخل التوليد ضمن الترجمة الآلية (تسلسل إلى تسلسل): نستخدم متجه الحالة من المشفّر لتوليد الرسالة المترجمة أو فك ترميزها. وندخله بعد في كتابة وصف للصورة، وهنا يجي متجه السمات من مستخرج CNN.
🚀 التحدي
خذوا بعض دروس Microsoft Learn عن هالموضوع:
- توليد النص باستخدام PyTorch/TensorFlow
المراجعة والتعلّم الذاتي
هذي مواد تساعدكم توسّعون معرفتكم:
- طرق مختلفة لتوليد النص باستخدام سلسلة ماركوف وLSTM وGPT-2: تدوينة
- مثال على توليد النص في توثيق Keras
التكليف
شفنا كيف نولّد النص محرفًا محرفًا. في المختبر، بتجرّبون توليده على مستوى الكلمات.
طبّق
المختبرات والواجب
الزبدة
- اربطوا بُنى التكرار واحد لواحد وواحد لعدة وتسلسل لتسلسل بالمهام المناسبة.
- ولّدوا النص رمزًا بعد رمز واشرحوا كيف تغيّر حرارة أخذ العينة التنوع والترابط.
اختبار بعد الدرس
تأكد من فهمك
أرسله مرة وحدة عشان يفتح لك إكمال الدرس، وتقدر تعيده قد ما تبي.
اختم هالدرس
أرسل اختبار ما بعد الدرس، وبعدها أكّد إنك جاهز تكمّل الدرس.