AUDIO·DSP
الصوت · العقدة 09
↩ البوابة

النموذج يتعلّمتدريب النماذج

النماذج العصبية للصوت

طوال المسار كان "النموذج" يدوياً (تنبّؤ خطّي، نماذج نفسية). ماذا لو تعلّمت آلةٌ نموذج الصوت من ملايين الأمثلة؟ هنا يعود انقسام نموذج/مرمّز بقوّة: الشبكة العصبية = نموذجٌ احتماليّ مُتعلَّم، أدقّ من أي يدويّ.

تذكّر من نظرية المعلومات (مسار الصور، العقدة ٠١): الضغط = نموذج يتنبّأ + مرمّز يحصد المفاجأة. والتنبّؤ الأفضل = إنتروبي أقلّ. حتى الآن نماذجنا بسيطة (تركيبة خطّية من عيّنات قليلة سابقة).

لكن الكلام البشري فيه بنية هائلة (حروف، كلمات، نبرة) لا يلتقطها تنبّؤ خطّي. كيف تبني نموذجاً يتنبّأ بالعيّنة التالية من آلاف العيّنات السابقة، ويتعلّم بنية اللغة نفسها؟ وإن نجح في التنبّؤ بدقّة — فما الذي يمكّنه فعله غير الضغط؟ (تلميح: نموذجٌ يتنبّأ بالتالي يستطيع أيضاً أن يُولّد.)

التوليد الانحداري الذاتي (Autoregressive) — WaveNet

الفكرة: درّب شبكة تتنبّأ بتوزيع العيّنة التالية p(x[n] | x[n-1], x[n-2], ...) من كل ما سبق. WaveNet (2016) استعمل التفافات سببية متمدّدة (dilated causal convolutions): تكديس طبقات التفاف بفجوات متزايدة (1,2,4,8,...) ليرى آلاف العيّنات السابقة بكلفة لوغاريتمية.

FIG 1 التفاف سببيّ متمدّد — حقل استقبال يتّسع أُسّياً
كل طبقة تضاعف الفجوة، فيرى العصبون النهائي آلاف العيّنات السابقة بطبقات قليلة. النتيجة: نموذج p(x[n] | الماضي) غنيّ يلتقط بنية الكلام.
التنبّؤ = التوليد = الضغط (ثلاثتها وجهٌ واحد)

نموذجٌ جيّد لـp(x[n]|الماضي) يخدم ثلاثاً: (١) التوليد: اعتِم من التوزيع عيّنةً عيّنة فتنشئ كلاماً. (٢) الضغط: سلّم التنبّؤ لمرمّز حسابي (مسار الصور، العقدة ٠٢) — تنبّؤ أدقّ = إنتروبي أقلّ = ضغط أعلى. (٣) التمييز: الميزات المتعلَّمة تصنّف. جواب اللغز: النموذج الذي يتنبّأ يولّد ويضغط ويفهم — كلّها من احتمالٍ مُتعلَّم.

عائلات النماذج

العائلةالفكرةالاستعمال
انحداري ذاتي (WaveNet)تنبّأ بالعيّنة/الإطار التاليتوليد كلام (TTS)، ضغط
على الـspectrogram (CNN/Transformer)الصوت كصورة (العقدة ٠٨)تصنيف، تعرّف كلام (ASR)
Encoder-Decoder / Transformerتسلسل→تسلسل بالانتباهWhisper (ASR)، الترجمة الصوتية
Diffusion / Flowإزالة ضوضاء تدريجيةتوليد موسيقى/كلام عالي الجودة
ليش الموجة الخام صعبة — والحلّ

التوليد عيّنةً عيّنة (16000/ثانية) بطيء جداً. لهذا تعمل أغلب النماذج على mel-spectrogram (العقدة ٠٨) ثم "vocoder" عصبيّ يحوّله لموجة، أو على رموز مضغوطة من ترميز عصبيّ (العقدة التالية). تمثيلٌ أصغر = تدريب وتوليد أسرع. اختيار التمثيل قرارٌ معماريّ بحجم اختيار الشبكة.

  1. درّب نموذجاً صغيراً (حتى انحدار خطّي/MLP صغير بإطار PyTorch) يتنبّأ بالعيّنة التالية من آخر k عيّنات على ملف صوت قصير. قِس خطأ التنبّؤ.
  2. اربطه بالضغط: احسب إنتروبي الـresidual من نموذجك العصبي مقابل التنبّؤ الخطّي (العقدة ٠٧). هل النموذج المتعلَّم خفض الإنتروبي أكثر؟ هذا هو "لماذا" الضغط العصبي.
  3. اربطه بالتوليد: ابدأ ببذرة وولّد عيّنات متتالية بإطعام تنبّؤ النموذج كدخلٍ تالٍ. اسمع الناتج (سيكون بدائياً — هذا متوقّع، الفكرة أن تفهم الحلقة).
  4. على spectrogram: درّب CNN صغيراً يصنّف نوعين من الأصوات من mel-spectrograms (العقدة ٠٨). أنت الآن تستعمل رؤية الحاسوب على الصوت.
الخلاصة

الشبكة العصبية = نموذجٌ احتماليّ مُتعلَّم، يخدم التوليد والضغط والتمييز معاً لأنها كلّها وجوهٌ لـp(صوت). تعمل على الموجة (WaveNet) أو الطيف (CNN/ Transformer). بقيت القطعة الأخيرة: إذا كان النموذج العصبي يتنبّأ أفضل من كل نماذجنا اليدوية، فهل يضغط أفضل من MP3 و FLAC معاً؟ نعم — عبر الترميز العصبي.