
تم تكليف فريقنا بالمهمة: لتكرار نتائج عمل الشبكة العصبية الاصطناعية لتوليف الكلام
Tacotron2 التأليف DeepMind. هذه قصة عن الطريق الشائك الذي سلكناه خلال تنفيذ المشروع.
لطالما كانت مهمة تركيب خطاب الكمبيوتر تهم العلماء والخبراء التقنيين. ومع ذلك ، فإن الأساليب الكلاسيكية لا تسمح بتوليف الكلام ، الذي لا يمكن تمييزه عن الإنسان. وهنا ، كما هو الحال في العديد من المجالات الأخرى ، جاء التعلم العميق للإنقاذ.
دعونا نلقي نظرة على طرق التوليف الكلاسيكية.
توليف الكلام التجميعي
تعتمد هذه الطريقة على تسجيل أجزاء الصوت القصيرة مسبقًا ، والتي يتم دمجها بعد ذلك لإنشاء خطاب متماسك. اتضح أنها نظيفة وواضحة للغاية ، ولكنها خالية تمامًا من المكونات العاطفية وغير العقلانية ، أي أنها تبدو غير طبيعية. وكل ذلك لأنه من المستحيل الحصول على تسجيل صوتي لجميع الكلمات الممكنة وضوحا في جميع التوليفات الممكنة من العواطف والإيجابيات. تتطلب النظم المتسلسلة قواعد بيانات ضخمة ومجموعات الترميز الثابت لتشكيل الكلمات. يستغرق تطوير نظام موثوق به الكثير من الوقت.
تركيب الكلام البارامترى
تطبيقات TTS التسلسلية محدودة بسبب متطلبات البيانات العالية ووقت التطوير. لذلك ، تم تطوير طريقة إحصائية تستكشف طبيعة البيانات. يولد الكلام من خلال الجمع بين المعلمات مثل التردد ، الطيف السعة ، الخ
يتكون التوليف المعلمي من مرحلتين.
- أولاً ، يتم استخراج الميزات اللغوية ، مثل الصوتيات والمدة وما إلى ذلك ، من النص.
- ثم ، بالنسبة للمشفّر الصوتي (أشكال الموجات المولدة للنظام) ، يتم استخراج الميزات التي تمثل إشارة الكلام المقابلة: cepstrum ، التردد ، الطيف الخطي ، الطباشير الطباشيري.
- يتم نقل هذه المعلمات التي تم تكوينها يدويًا ، إلى جانب الميزات اللغوية ، إلى نموذج مشفر الصوت ، وهي تقوم بالعديد من التحويلات المعقدة لتوليد موجة صوتية. في الوقت نفسه ، يقوم المشفر الصوتي بتقييم معلمات الكلام ، مثل الطور ، والمحاكمة ، والتجويد وغيرها.
إذا استطعنا تقريب المعلمات التي تحدد الكلام على كل وحدة من وحداتها ، فيمكننا إنشاء نموذج حدودي. التوليف البارامترى يتطلب بيانات أقل بكثير وعمل شاق من النظم المتسلسلة.
من الناحية النظرية ، كل شيء بسيط ، ولكن في الممارسة العملية هناك العديد من القطع الأثرية التي تؤدي إلى الكلام الخافت بصوت "صاخب" ، والذي لا يشبه الصوت الطبيعي على الإطلاق.
والحقيقة هي أننا في كل مرحلة من مراحل التوليف نصلب بعض الميزات ونأمل في الحصول على خطاب حقيقي. لكن البيانات المحددة تستند إلى فهمنا للكلام ، والمعرفة الإنسانية ليست مطلقة ، وبالتالي ، فإن العلامات التي تم التقاطها لن تكون بالضرورة أفضل حل ممكن.
وهنا التعلم العميق يدخل المشهد بكل روعته.
الشبكات العصبية العميقة هي أداة قوية ، من الناحية النظرية ، يمكنها تقريب وظيفة معقدة بشكل تعسفي ، أي إحضار بعض مساحة بيانات الإدخال X إلى مساحة بيانات الإخراج Y. في سياق مهمتنا ، ستكون هذه النصوص والصوت مع الكلام ، على التوالي.
معالجة البيانات مسبقا
بادئ ذي بدء ، سوف نحدد ما لدينا كمدخلات وما نريد الحصول عليه في الإخراج.
سيكون الإدخال نصًا ، وسيكون الإخراج عبارة عن مطيافية
للطباشير . هذا تمثيل منخفض المستوى تم الحصول عليه من خلال تطبيق تحويل فورييه السريع على إشارة صوتية منفصلة. وتجدر الإشارة على الفور إلى أن الطيفية التي تم الحصول عليها بهذه الطريقة لا تزال
بحاجة إلى التطبيع بضغط النطاق الديناميكي. يتيح لك ذلك تقليل العلاقة الطبيعية بين أعلى الأصوات وأكثرها هدوءًا في التسجيل. في تجاربنا ، أثبت استخدام البرامج الطيفية التي تقل إلى
المدى [-4 ؛ 4] أنه الأفضل.
الشكل 1: الطيفية الطباشير للإشارة الصوتية الكلام خفضت إلى المدى [-4 ؛ 4].كمجموعة بيانات التدريب ، اخترنا
مجموعة بيانات LJSpeech ، التي تحتوي على
13100 مسار صوتي لمدة
تتراوح بين 2 و 10 ثوانٍ. وملف مع نص المقابلة للكلام الإنجليزية المسجلة على الصوت.
يتم ترميز الصوت باستخدام التحولات المذكورة أعلاه في الطيفية الطباشير. النص رمزي وتحويله.
في سلسلة من الأعداد الصحيحة. يجب أن أؤكد على الفور أن النصوص يتم تطبيعها: جميع الأرقام مكتوبة شفهيا ، ويتم فك رموز الاختصارات المحتملة ، على سبيل المثال: "السيدة روبنسون "-" ميسيس روبنسون ".
وبالتالي ، بعد المعالجة المسبقة ، نحصل على مجموعات من الصفائف numpy من التسلسلات العددية والطيفية الطباشير المسجلة في ملفات npy على القرص.
بحيث في مرحلة التدريب تتزامن جميع الأبعاد في tensors patch ، سنضيف الحشوات لتسلسلات قصيرة. بالنسبة للتسلسلات في شكل نصوص ، سيتم حجزها للحشو 0 وللأطياف ، الأطر التي تكون قيمها أقل قليلاً من الحد الأدنى للطيفية التي نحددها نحن. يوصى بهذا لعزل هذه البطانات وفصلها عن الضوضاء والصمت.
الآن لدينا بيانات تمثل النص والصوت المناسبة للمعالجة بواسطة شبكة عصبية اصطناعية. دعونا نلقي نظرة على بنية شبكة التنبؤ بالميزات ، والتي ستسمى Tacotron2 باسم العنصر المركزي لنظام التوليف بأكمله.
العمارة
Tacotron 2 ليس شبكة واحدة ، ولكن شبكتين: ميزة التنبؤ بالشبكة و NN-
vocoder WaveNet . تتيح لنا المقالة الأصلية ، بالإضافة إلى رؤيتنا الخاصة بالعمل المنجز ، اعتبار شبكة التنبؤ بالميزات بمثابة الكمان الأول ، بينما يلعب مشفر الصوت WaveNet دور النظام المحيطي.
Tacotron2 هو
تسلسل لهندسة
التسلسل . وهو يتألف من
مشفر (مشفر) ، مما يخلق فكرة داخلية لإشارة الدخل (الرموز الرمزية) ، وفك
الشفرة (مفكك الشفرة) ، مما يحول هذا التمثيل إلى مطياف طباشيري. ومن العناصر المهمة للغاية في الشبكة ما يسمى
PostNet ، والذي تم تصميمه لتحسين البرنامج الطيفي الناتج عن وحدة فك الترميز.
الشكل 2: Tacotron 2 هندسة الشبكات.دعونا نفكر بمزيد من التفصيل في كتل الشبكة والوحدات الخاصة بها.
طبقة
التشفير الأولى هي طبقة التضمين. بناءً على سلسلة من الأرقام الطبيعية التي تمثل الحروف ، فإنها تخلق متجهات متعددة الأبعاد (512-الأبعاد).
بعد ذلك ، يتم تغذية ناقلات التضمين في مجموعة من ثلاث طبقات تلافيفية أحادية البعد. تحتوي كل طبقة على 512 مرشحًا بطول 5. هذه القيمة هي حجم مرشح جيد في هذا السياق ، لأنها تجسد شخصية معينة ، بالإضافة إلى جهازيها السابقين والجيران اللاحقين. يتبع كل طبقة تلافيفية تطبيع دفعة صغيرة وتفعيل ReLU.
يتم تطبيق التنسورات التي تم الحصول عليها بعد الكتلة التلافيفية على طبقات LSTM ثنائية الاتجاه ، 256 خلية لكل منهما. إلى الأمام وعودة النتائج متسلسلة.
وحدة فك الترميز لديها بنية متكررة ، أي في كل خطوة لاحقة ، يتم استخدام الإخراج من الخطوة السابقة. هنا سوف يكون إطار واحد من الطيفية. العنصر الآخر المهم ، إن لم يكن المفتاح ، هو آلية
الاهتمام اللطيف (المدرّب) - وهي تقنية جديدة نسبياً تكتسب شعبية أكثر فأكثر. في كل خطوة من وحدات فك الترميز ، الانتباه إلى تشكيل متجه السياق وتحديث وزن الانتباه يستخدم:
- إسقاط الحالة الخفية السابقة لشبكة RNN لوحدة فك التشفير على طبقة متصلة بالكامل ،
- إسقاط خرج التشفير على طبقة متصلة بالكامل ،
- وكذلك المضافة (المتراكمة في كل خطوة زمنية من فك التشفير) الأوزان الاهتمام.
ينبغي فهم فكرة الاهتمام على النحو التالي: "أي جزء من بيانات المشفر ينبغي استخدامه في خطوة فك التشفير الحالية".
الشكل 3: مخطط لآلية الاهتمام.في كل خطوة من وحدات فك الترميز ،
يتم حساب متجه السياق
C i (يشار إليه على أنه "مخرجات مشفرة حضر" في الشكل أعلاه) ، وهو نتاج خرج المشفر (
h ) وأوزان الانتباه (
α ):

حيث
α ij هي أوزان الانتباه المحسوبة بالمعادلة:

حيث تمثل
e ij ما يسمى "الطاقة" ، حيث تعتمد صيغة الحساب الخاصة بها على نوع آلية الانتباه التي تستخدمها (في حالتنا ، ستكون نوعًا مختلطًا ، باستخدام كل من الاهتمام المستند إلى الموقع والاهتمام المستند إلى المحتوى). يتم حساب الطاقة بواسطة الصيغة:
e ij = v aT tanh (Ws i-1 + Vh j + Uf i، j + b)حيث:
- s i-1 - الحالة الخفية السابقة لشبكة LSTM لجهاز فك التشفير ،
- α i-1 - أوزان الانتباه السابقة ،
- h j هي الحالة الخفية jth من التشفير ،
- W ، V ، U ، v a و b هي معايير التدريب ،
- f i، j - علامات الموقع المحسوبة بالصيغة:
f i = F * α i-1
حيث F هي عملية الالتواء.
لفهم واضح لما يحدث ، نضيف أن بعض الوحدات الموضحة أدناه تفترض استخدام المعلومات من الخطوة السابقة لجهاز فك التشفير. ولكن إذا كانت هذه هي الخطوة الأولى ، فستكون المعلومات عبارة عن توترات في القيم الصفرية ، وهي ممارسة شائعة عند إنشاء هياكل التكرار.
الآن النظر
في خوارزمية العملية .
أولاً ، يتم إدخال خرج وحدة فك الترميز من الخطوة الزمنية السابقة في وحدة PreNet صغيرة ، وهي كومة من طبقتين متصلتين تمامًا من 256 خلية عصبية ، بالتناوب مع طبقات التسرب بمعدل 0.5. من الخصائص المميزة لهذه الوحدة أن التسرب يتم استخدامه ليس فقط في مرحلة التدريب النموذجية ، ولكن أيضًا في مرحلة الإخراج.
يتم تغذية إخراج PreNet بالتسلسل مع متجه السياق الذي تم الحصول عليه نتيجة لآلية الانتباه إلى المدخلات في شبكة LSTM ثنائية الاتجاه أحادية الاتجاه ، مع 1024 خلية عصبية في كل طبقة.
بعد ذلك ، يتم تغذية تسلسل إخراج طبقات LSTM مع متجه السياق نفسه (وربما المختلف) في طبقة متصلة بالكامل مع 80 خلية عصبية ، وهو ما يتوافق مع عدد قنوات الطيفية. تشكل هذه الطبقة النهائية لجهاز فك التشفير الإطار الطيفي المتوقع حسب الرتل. وبالفعل يتم توفير ناتجها كمدخلات في الخطوة التالية من وحدة فك الترميز في PreNet.
لماذا ذكرنا في الفقرة السابقة أن متجه السياق قد يكون مختلفًا بالفعل؟ أحد الأساليب الممكنة هو إعادة حساب متجه السياق بعد الحصول على الحالة الكامنة لشبكة LSTM في هذه الخطوة. ومع ذلك ، في تجاربنا لم يبرر هذا النهج نفسه.
بالإضافة إلى الإسقاط على طبقة متصلة بالكامل بـ 80 خلية عصبية ، يتم تغذية سلسلة مخرجات طبقات LSTM مع متجه السياق في طبقة متصلة بالكامل بخلايا عصبية واحدة ، متبوعة بتنشيط السيني - وهذه طبقة "التنبؤ بوقف الرمز المميز". ويتوقع احتمال أن يكون الإطار الذي تم إنشاؤه في هذه الخطوة من وحدة فك الترميز نهائيًا. تم تصميم هذه الطبقة لتوليد طيفي غير ثابت ، ولكن طولًا تعسفيًا في مرحلة إخراج النموذج. وهذا هو ، في مرحلة الإخراج ، يحدد هذا العنصر عدد خطوات وحدة فك الترميز. ويمكن اعتباره مصنف ثنائي.
سيكون إخراج وحدة فك الترميز من جميع خطواتها هو الطيفية المتوقعة. ومع ذلك ، هذا ليس كل شيء. لتحسين جودة البرنامج الطيفي ، يتم تمريره من خلال وحدة PostNet ، وهي مجموعة مكونة من خمس طبقات تلافيفية أحادية البعد تحتوي على 512 مرشحًا في كل منها مع حجم مرشح 5. وتطبيع الدُفعة والتنشيط المماسي يتبعان كل طبقة (ما عدا الأخيرة). للعودة إلى البعد من الطيفية ، نقوم بتمرير بيانات الإخراج ما بعد الشبكة من خلال طبقة متصلة بالكامل مع 80 الخلايا العصبية وإضافة البيانات المستلمة مع النتيجة الأولية لجهاز فك التشفير. نحصل على الطيفية الطباشير ولدت من النص. الربح
يتم تنظيم جميع الوحدات التلافيفية مع طبقات التسرب بمعدل 0.5 ، وتكرار الطبقات مع طريقة
Zoneout الأحدث بمعدل 0.1. الأمر بسيط للغاية: بدلاً من تطبيق الحالة الكامنة وحالة الخلية التي تم الحصول عليها في الخطوة الحالية إلى الخطوة التالية لشبكة LSTM ، فإننا نستبدل جزءًا من البيانات بقيم من الخطوة السابقة. ويتم ذلك في مرحلة التدريب وفي مرحلة الانسحاب. في هذه الحالة ، يتم عرض الحالة المخفية فقط (التي يتم تمريرها إلى الخطوة LSTM التالية) لطريقة Zoneout في كل خطوة ، بينما يبقى إخراج خلية LSTM في الخطوة الحالية دون تغيير.
اخترنا PyTorch كإطار التعلم العميق. على الرغم من أنه في وقت تنفيذ الشبكة كان في حالة ما قبل النشر ، لكنه كان بالفعل أداة قوية للغاية لبناء وتدريب الشبكات العصبية الاصطناعية. في عملنا ، نستخدم أطر عمل أخرى مثل TensorFlow و Keras. ومع ذلك ، تم تجاهل هذا الأخير بسبب الحاجة إلى تنفيذ هياكل مخصصة غير قياسية ، وإذا قارنا TensorFlow و PyTorch ، فعند استخدام الثاني ، لا يوجد شعور بأن النموذج ممزق من لغة Python. ومع ذلك ، فإننا لا نتعهد بتأكيد أن أحدهما أفضل والآخر أسوأ. قد يعتمد استخدام إطار معين على عدة عوامل.
يتم تدريب الشبكة بواسطة طريقة backpropagation. يستخدم
ADAM كمحسِّن ، يتم استخدام Mean Square Error قبل وبعد PostNet ، وكذلك Binary Cross Entropy أعلى من القيم الفعلية والمتوقعة لطبقة Stop Token Prediction ، كوظائف خطأ. الخطأ الناتج هو مجموع بسيط من هؤلاء الثلاثة.
تم تدريب هذا الطراز على وحدة معالجة الرسومات GeForce 1080Ti واحدة مع 11 جيجابايت من الذاكرة.
التصور
عند العمل مع هذا النموذج الكبير ، من المهم أن نرى كيف تسير عملية التعلم. وهنا أصبح TensorBoard أداة مريحة. لقد قمنا بتتبع قيمة الخطأ في كل من تكرارات التدريب والتحقق من الصحة. بالإضافة إلى ذلك ، عرضنا الطيفية المستهدفة ، الطيفية المتوقعة في مرحلة التدريب ، الطيفية المتنبأ بها في مرحلة التحقق من الصحة ، والمحاذاة ، وهو وزن اهتمام متراكم بشكل إضافي من جميع خطوات التدريب.
من الممكن أن اهتمامك في البداية لن يكون مفيدًا جدًا:
الشكل 4: مثال على قياسات الانتباه سيئة التدريب.ولكن بعد أن تبدأ جميع وحداتك في العمل مثل الساعات السويسرية ، ستحصل في النهاية على شيء مثل هذا:
الشكل 5: مثال على جداول الانتباه المدربة بنجاح.ماذا يعني هذا المخطط؟ في كل خطوة من وحدات فك التشفير ، نحاول فك تشفير إطار واحد من الطيفية. ومع ذلك ، ليس من الواضح ما هي المعلومات التي يحتاج المشفر إلى استخدامها في كل خطوة من وحدات فك التشفير. يمكن افتراض أن هذه المراسلات ستكون مباشرة. على سبيل المثال ، إذا كان لدينا تسلسل نص إدخال من 200 حرفًا وطيفًا متوافقًا يتكون من 800 إطار ، فسيكون هناك 4 إطارات لكل حرف. ومع ذلك ، يجب أن تعترف أن الكلام الذي يتم إنشاؤه على أساس هذا الطيف سيكون خاليًا تمامًا من الطبيعة. نحن نلفظ بعض الكلمات بشكل أسرع ، بعضها أبطأ ، في مكان ما نتوقف فيه ، لكن في مكان ما لا نفعل ذلك. والنظر في جميع السياقات الممكنة غير ممكن. لهذا السبب يمثل الاهتمام عنصرًا أساسيًا في النظام بأكمله: فهو يحدد المراسلات بين خطوة وحدة فك الترميز والمعلومات من جهاز التشفير من أجل الحصول على المعلومات اللازمة لإنشاء إطار محدد. وكلما زادت قيمة أوزان الانتباه ، زاد "الاهتمام" بالجزء المقابل من بيانات المشفر عند إنشاء إطار الطيفية.
في مرحلة التدريب ، سيكون من المفيد أيضًا إنشاء صوت ، وليس فقط تقييم جودة البرامج الطيفية والاهتمام بصريًا. ومع ذلك ، فإن أولئك الذين عملوا مع WaveNet سيوافقون على أن استخدامه كمشفّر صوت في مرحلة التدريب سيكون ترفًا غير مقبول من حيث الوقت. لذلك ، يوصى باستخدام
خوارزمية Griffin-Lim ، والتي تسمح بإعادة الإعمار جزئيًا للإشارة بعد أن يتحول فورييه السريع. لماذا جزئيا؟ الحقيقة هي أنه عندما نقوم بتحويل الإشارة إلى برامج طيفية ، فإننا نفقد معلومات المرحلة. ومع ذلك ، ستكون جودة الصوت الذي تم الحصول عليه بهذه الطريقة كافية لفهم الاتجاه الذي تتحرك فيه.
الدروس المستفادة
سنشارك بعض الأفكار هنا حول بناء عملية التطوير ، وتقديمها في شكل نصائح. بعضها عام جدًا ، والبعض الآخر أكثر تحديدًا.
حول تنظيم سير العمل :
- استخدم نظام التحكم في الإصدار ، صف بوضوح جميع التغييرات. قد يبدو هذا بمثابة توصية واضحة ، ولكن لا يزال. عند البحث عن الهيكل الأمثل ، تحدث التغييرات باستمرار. وبعد حصولك على نتيجة وسيطة مرضية ، تأكد من أن تجعل نفسك نقطة تفتيش حتى تتمكن من إجراء التغييرات اللاحقة بأمان.
- من وجهة نظرنا ، في مثل هذه البنى ، يجب على المرء أن يلتزم بمبادئ التغليف: فئة واحدة - وحدة بيثون واحدة. هذا النهج ليس شائعًا في مهام ML ، ولكنه سيساعدك على تنظيم التعليمات البرمجية الخاصة بك وتسريع تصحيح الأخطاء والتطوير. في كل من الكود ورؤيتك للهندسة المعمارية ، قم بتقسيمها إلى كتل ، وكتل في وحدات ، ووحدات في طبقات. إذا كان للوحدة النمطية رمز يؤدي دورًا معينًا ، فضمه إلى طريقة فئة الوحدة النمطية. هذه حقائق شائعة ، لكننا لم نكن كسولين في القول عنها مرة أخرى.
- توفير فئات على غرار numpy مع الوثائق . سيؤدي ذلك إلى تبسيط العمل بشكل كبير لك ولزملائك الذين سيقرأون الكود.
- ارسم دائمًا بنية طرازك. أولاً ، سيساعدك ذلك على فهم الأمر ، وثانياً ، سيسمح لك عرض جانبي للهندسة المعمارية والمعلمات الفوقية للنموذج بالتعرف بسرعة على عدم الدقة في منهجك.
- من الأفضل أن تعمل كفريق واحد. إذا كنت تعمل بمفردك ، فلا يزال يجمع الزملاء ويناقش عملك. كحد أدنى ، يمكنهم أن يطرحوا عليك سؤالاً يقودك إلى بعض الأفكار ، لكن على أقصى تقدير سوف يشيرون إلى عدم دقة محددة لا تسمح لك بتدريب النموذج بنجاح.
- هناك خدعة مفيدة أخرى مرتبطة بالفعل بمعالجة البيانات مسبقًا. افترض أنك قررت اختبار بعض الفرضيات وإجراء التغييرات المناسبة على النموذج. لكن إعادة التدريب ، خاصة قبل عطلة نهاية الأسبوع ، ستكون محفوفة بالمخاطر. قد يكون النهج خاطئًا في البداية وسوف تضيع الوقت. ثم ماذا تفعل؟ قم بزيادة حجم نافذة تحويل فورييه السريع. المعلمة الافتراضية هي 1024؛ زيادته بنسبة 4 أو حتى 8 مرات. سيؤدي ذلك إلى "ضغط" الطيفية في العدد المناسب من المرات وتسريع عملية التعلم إلى حد كبير. ستكون جودة الصوت المسترد منها أقل جودة ، لكن هذه ليست مهمتك الآن؟ في غضون 2-3 ساعات ، يمكنك بالفعل الحصول على محاذاة ("محاذاة" مقاييس الانتباه ، كما هو موضح في الشكل أعلاه) ، سيشير هذا إلى الدقة المعمارية للنهج ويمكن اختباره بالفعل على البيانات الضخمة.
نماذج البناء والتدريب :
- لقد افترضنا أنه إذا لم يتم تكوين الدُفعات بشكل عشوائي ، ولكن استنادًا إلى طولها ، فستسرع من عملية التدريب النموذجي وتجعل البرامج الطيفية المتولدة أفضل. الافتراض المنطقي ، الذي يستند إلى فرضية أنه كلما زادت الإشارة المفيدة (وليس الحشو) إلى شبكة التدريب ، كان ذلك أفضل. ومع ذلك ، لم يبرر هذا النهج نفسه ؛ في تجاربنا ، لم نتمكن من تدريب الشبكة بهذه الطريقة. هذا ربما يرجع إلى فقدان العشوائية في اختيار الحالات للتدريب.
- استخدم خوارزميات تهيئة معلمة الشبكة الحديثة مع بعض الحالات الأولية المحسنة. على سبيل المثال ، في تجاربنا ، استخدمنا Xavier Uniform Weight Initialization. إذا كنت في الوحدة النمطية الخاصة بك تحتاج إلى استخدام التطبيع بواسطة دُفعة صغيرة وبعض وظائف التنشيط ، فيجب أن يتناوبوا مع بعضهم البعض في هذا الترتيب. في الواقع ، إذا طبقنا ، على سبيل المثال ، تنشيط ReLU ، فسنفقد على الفور جميع الإشارات السلبية التي ينبغي إشراكها في عملية تطبيع بيانات مجموعة معينة.
- من خطوة تعليمية محددة ، استخدم معدل التعلم الديناميكي. يساعد هذا حقًا في تقليل قيمة الخطأ وزيادة جودة البرامج الطيفية التي تم إنشاؤها.
- بعد إنشاء النموذج ومحاولات غير ناجحة لتدريبه على دفعات من مجموعة البيانات بأكملها ، سيكون من المفيد محاولة إعادة تدريبه على دفعة واحدة. , alignment, ( ). , , .
. . , – . , . , . - RNN- . . , . ? LSTM- -.
- , LSTM-, « »: « , LSTM-. «» bf. , , , LSTM- ft 1/2. , : , «» 1/2, . bf , 1 2: ft ».
- seq2seq- . — , . ? , ( ).
- الآن توصية محددة لإطار PyTorch. على الرغم من أن طبقة LSTM في وحدة فك الترميز هي أساسًا خلية LSTM الخاصة بها ، والتي تتلقى معلومات لعنصر واحد فقط من التسلسل في كل خطوة من وحدات فك الترميز ، يوصى باستخدام فئة
torch.nn.LSTM
بدلاً من torch.nn.LSTMCell
. والسبب هو أن الخلفية LSTM يتم تنفيذها في مكتبة CUDNN في C ، و LSTMCell في بيثون. هذه الخدعة ستسمح لك بزيادة سرعة النظام بشكل كبير.
وفي نهاية المقال ،
سنشارك أمثلة لتوليد الكلام من النصوص التي لم يتم تضمينها في مجموعة التدريب.