|
|
||
|---|---|---|
| .. | ||
| lab | ||
| GenerativePyTorch.ipynb | ||
| GenerativeTF.ipynb | ||
| README.md | ||
README.md
الشبكات التوليدية
اختبار ما قبل المحاضرة
توفر الشبكات العصبية المتكررة (RNNs) وأنواعها المختلفة مثل خلايا الذاكرة طويلة المدى (LSTMs) ووحدات التكرار المغلقة (GRUs) آلية لنمذجة اللغة، حيث يمكنها تعلم ترتيب الكلمات وتقديم توقعات للكلمة التالية في تسلسل معين. يتيح لنا ذلك استخدام RNNs في المهام التوليدية، مثل توليد النصوص العادية، والترجمة الآلية، وحتى وصف الصور.
✅ فكر في كل الأوقات التي استفدت فيها من المهام التوليدية مثل إكمال النصوص أثناء الكتابة. قم ببعض البحث عن تطبيقاتك المفضلة لترى ما إذا كانت قد استخدمت RNNs.
في بنية RNN التي ناقشناها في الوحدة السابقة، كانت كل وحدة RNN تنتج الحالة المخفية التالية كمخرج. ومع ذلك، يمكننا أيضًا إضافة مخرج آخر لكل وحدة متكررة، مما يسمح لنا بإنتاج تسلسل (يساوي في الطول التسلسل الأصلي). علاوة على ذلك، يمكننا استخدام وحدات RNN لا تقبل إدخالًا في كل خطوة، بل تأخذ فقط متجه حالة ابتدائية، ثم تنتج تسلسلًا من المخرجات.
يتيح ذلك تصميمات عصبية مختلفة كما هو موضح في الصورة أدناه:
الصورة من منشور المدونة Unreasonable Effectiveness of Recurrent Neural Networks بواسطة Andrej Karpaty
- واحد إلى واحد هو شبكة عصبية تقليدية مع إدخال واحد ومخرج واحد.
- واحد إلى متعدد هو تصميم توليدي يقبل قيمة إدخال واحدة، وينتج تسلسلًا من القيم المخرجة. على سبيل المثال، إذا أردنا تدريب شبكة وصف الصور التي تنتج وصفًا نصيًا لصورة، يمكننا إدخال صورة، وتمريرها عبر شبكة CNN للحصول على حالتها المخفية، ثم استخدام سلسلة متكررة لتوليد الوصف كلمة بكلمة.
- متعدد إلى واحد يتوافق مع تصميمات RNN التي وصفناها في الوحدة السابقة، مثل تصنيف النصوص.
- متعدد إلى متعدد، أو تسلسل إلى تسلسل يتوافق مع مهام مثل الترجمة الآلية، حيث تقوم أول سلسلة RNN بجمع كل المعلومات من تسلسل الإدخال إلى الحالة المخفية، وتقوم سلسلة RNN أخرى بفك هذه الحالة إلى تسلسل المخرجات.
في هذه الوحدة، سنركز على نماذج توليدية بسيطة تساعدنا على توليد النصوص. وللتبسيط، سنستخدم تقسيم النصوص على مستوى الحروف.
سندرب هذه الشبكة RNN لتوليد النصوص خطوة بخطوة. في كل خطوة، سنأخذ تسلسلًا من الحروف بطول nchars، ونطلب من الشبكة توليد الحرف التالي لكل حرف إدخال:
عند توليد النصوص (أثناء الاستدلال)، نبدأ ببعض المحفزات، التي يتم تمريرها عبر خلايا RNN لتوليد حالتها الوسيطة، ومن ثم يبدأ التوليد من هذه الحالة. نقوم بتوليد حرف واحد في كل مرة، ونمرر الحالة والحرف المولد إلى خلية RNN أخرى لتوليد الحرف التالي، حتى نولد عددًا كافيًا من الحروف.
الصورة بواسطة المؤلف
✍️ تمارين: الشبكات التوليدية
واصل التعلم من خلال دفاتر الملاحظات التالية:
التوليد النصي الناعم ودرجة الحرارة
مخرج كل خلية RNN هو توزيع احتمالي للحروف. إذا اخترنا دائمًا الحرف ذو الاحتمالية الأعلى كالحرف التالي في النص المولد، فقد يصبح النص "متكررًا" بين نفس تسلسلات الحروف مرارًا وتكرارًا، كما في هذا المثال:
today of the second the company and a second the company ...
ومع ذلك، إذا نظرنا إلى التوزيع الاحتمالي للحرف التالي، فقد يكون الفرق بين أعلى الاحتمالات ليس كبيرًا، على سبيل المثال، قد يكون لحرف احتمال 0.2، وحرف آخر 0.19، وهكذا. على سبيل المثال، عند البحث عن الحرف التالي في التسلسل 'play'، يمكن أن يكون الحرف التالي بنفس الاحتمالية إما مسافة أو e (كما في كلمة player).
هذا يقودنا إلى استنتاج أنه ليس من "المنصف" دائمًا اختيار الحرف ذو الاحتمالية الأعلى، لأن اختيار الحرف الثاني الأعلى قد يؤدي أيضًا إلى نصوص ذات معنى. من الأفضل أخذ عينات من الحروف بناءً على التوزيع الاحتمالي الذي تنتجه الشبكة. يمكننا أيضًا استخدام معلمة، درجة الحرارة، لتسطيح التوزيع الاحتمالي إذا أردنا إضافة المزيد من العشوائية، أو جعله أكثر انحدارًا إذا أردنا الالتزام أكثر بالحروف ذات الاحتمالية الأعلى.
استكشف كيف يتم تنفيذ هذا التوليد النصي الناعم في دفاتر الملاحظات المرتبطة أعلاه.
الخلاصة
بينما قد يكون توليد النصوص مفيدًا بحد ذاته، فإن الفوائد الرئيسية تأتي من القدرة على توليد النصوص باستخدام RNNs من بعض المتجهات المميزة الأولية. على سبيل المثال، يتم استخدام توليد النصوص كجزء من الترجمة الآلية (تسلسل إلى تسلسل، في هذه الحالة يتم استخدام متجه الحالة من المشفّر لتوليد أو فك تشفير الرسالة المترجمة)، أو توليد وصف نصي لصورة (في هذه الحالة يأتي المتجه المميز من مستخرج CNN).
🚀 تحدي
خذ بعض الدروس على Microsoft Learn حول هذا الموضوع:
- توليد النصوص باستخدام PyTorch/TensorFlow
اختبار ما بعد المحاضرة
المراجعة والدراسة الذاتية
إليك بعض المقالات لتوسيع معرفتك:
- طرق مختلفة لتوليد النصوص باستخدام سلسلة ماركوف، LSTM وGPT-2: منشور مدونة
- مثال على توليد النصوص في توثيق Keras
التكليف
لقد رأينا كيفية توليد النصوص حرفًا بحرف. في المختبر، ستستكشف توليد النصوص على مستوى الكلمات.
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة بالذكاء الاصطناعي Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الرسمي. للحصول على معلومات حاسمة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.

