التعرف على الكلام2020متوسط12 دقيقة قراءة
wav2vec 2.0: إطار عمل للتعلُّم الذاتي الإشراف لتمثيلات الكلام
wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations
Baevski, A. · Zhou, H. · Mohamed, A. · Auli, M. — NeurIPS
المشكلة
في عام 2020، كانت أنظمة تمييز الكلام تستلزم آلاف الساعات من التسجيلات الصوتية المنسوخة يدوياً حتى تؤدي بشكل مقبول. المشكلة أن أغلب لغات العالم — نحو 7000 لغة — لا تملك هذا الكمّ من النسخ النصية أصلاً. فهل يمكن لنموذج أن يستخلص تمثيلات مفيدة للكلام من صوت بلا تسميات، ثم لا يحتاج إلا لقدر ضئيل من البيانات المُعنوَنة ليميّز الكلام؟ الفكرة تشبه ما يفعله الطفل: يستمع أولاً ويفهم الأنماط، ثم يحتاج فقط لبعض التصحيحات ليتكلّم.
الإسهام
يتكوّن wav2vec 2.0 من ثلاث مراحل مترابطة: مُرمِّز التفافي يضغط الموجة الصوتية الخام إلى تمثيلات كامنة، ثم محوِّل يبني فوقها تمثيلات سياقية تأخذ بعين الاعتبار الجملة كاملة، وأخيراً وحدة تكميم تحوّل تلك التمثيلات إلى وحدات كلام منفصلة عبر الجُداءي مع دالة غمبل سوفتماكس. أثناء ، يُقنَّع جزء من التمثيلات الكامنة ويتعلّم النموذج — عبر مهمة تبايُنية — أن يميّز التمثيل المُكمَّم الصحيح من بين مُشتِّتات. النتيجة: بعشر دقائق فقط من البيانات المُعنوَنة يبلغ معدل خطأ الكلمات 4.8/8.2 على Librispeech، وبكامل البيانات يصل إلى 1.8/3.3 — رقم قياسي جديد وقتها.
الأثر
الأثر الأعمق لـ wav2vec 2.0 ليس في الأرقام بل في تغيير المنهجية: بفضل الذاتي الإشراف، لم يعد بناء نظام تمييز كلام يتطلب آلاف الساعات من النسخ اليدوي، بل أصبح ممكناً لآلاف اللغات شحيحة الموارد. بنية wav2vec 2.0 صارت الأساس الذي بُنيت عليه نماذج مثل HuBERT وWavLM، ومنهجية «درِّب مسبقاً ثم اضبط» التي أرساها BERT للنصوص انتقلت بنجاح إلى عالم الكلام. كذلك أثّر الجمع بين التعلّم التبايُني والتكميم في نماذج التوليد الصوتي مثل MusicLM وأنظمة لاحقة مثل Whisper.
تخيّل عازفة لم تقرأ النوتة الموسيقية قطّ. قضت سنوات تستمع إلى آلاف المقطوعات — جاز وكلاسيك وفلكلور — تلتقط الأنماط بأذنها وحسب. ذات يوم يُريها أحدهم بضع صفحات من النوتة، فإذا بها تستطيع قراءة أي مقطوعة. لم تكن بحاجة إلى معهد موسيقي، بل إلى استماع مكثّف أولاً، ثم دليل صغير للربط بين ما تسمعه وما تقرأه.
wav2vec 2.0 هو تلك العازفة تماماً. يستمع إلى 53,000 ساعة من الصوت الخام مستخلصاً البنية الخفية للكلام عبر . بعد ذلك، لا يحتاج إلا 10 دقائق من النسخ المُعنوَنة ليتعلّم ربط الأصوات بالكلمات — متفوقاً على أنظمة دُرِّبت على آلاف الساعات من البيانات المنسوخة يدوياً.
المشكلة: تمييز الكلام يلتهم البيانات
بحلول عام 2020، كانت أفضل أنظمة تحتاج آلاف الساعات من التسجيلات الصوتية المقرونة بنسخ نصية كتبها بشر. تكلفة هذا الجمع باهظة، والوقت اللازم طويل، أما بالنسبة لمعظم لغات العالم — نحو 7000 لغة — فالأمر شبه مستحيل. في عالم النصوص، كان BERT قد أثبت أن على نصوص بلا تسميات ثم على عيّنة صغيرة مُعنوَنة يكفي لتحقيق نتائج متقدّمة. السؤال الطبيعي: هل تنجح الفكرة نفسها مع الكلام؟
التحدّي هنا أصعب بكثير. النص منفصل بطبيعته — حروف وكلمات وفراغات واضحة. أما الكلام فهو مستمرة: تيّار من الأرقام يُؤخذ منه 16,000 عيّنة كل ثانية، بلا حدود واضحة بين الكلمات، ولا فراغات، ولا علامات ترقيم — مجرد تتابع من قيم ضغط الهواء. لذلك، قبل أن تطبّق تقنيات والتنبؤ كما في BERT، تحتاج أولاً إلى تقطيع هذه الموجة إلى وحدات ذات معنى.
المرحلة الأولى: تقطيع الموجة الصوتية — المُرمِّز الالتفافي
المكوِّن الأول يأخذ الموجة الصوتية الخام ويضغطها إلى سلسلة من . تخيّله كأنه ميكروفون لا يكتفي بتسجيل الصوت بل يُلخّصه — كل 20 ميلّيثانية تقريباً من الصوت تتحوّل إلى متجه واحد.
يتألّف من 7 كتل التفافية، كل كتلة تُطبّق التفافاً زمنياً تليه ثم GELU. أطوال الخطوة هي (5، 2، 2، 2، 2، 2، 2) فيكون حاصل ضربها 320 — بمعنى أن كل 320 عيّنة خام (نحو 20 ميلّيثانية عند 16 كيلوهرتز) تُضغط في تمثيل واحد. النتيجة نحو 49 إطاراً في الثانية، كلّ إطار يُغطّي نافذة قدرها 25 ميلّيثانية من الصوت ويُخرجها في متجه بـ512 بُعداً.
قبل أن تدخل الموجة إلى المُرمِّز، تُسوَّى إلى متوسط صفري وتبايُن واحد. الهدف أن يتعامل النموذج مع شكل الإشارة لا مع مستوى الصوت المُطلق.
التقنيع: إخفاء قطع من الأحجية
قبل أن تدخل التمثيلات الكامنة إلى ، يقوم wav2vec 2.0 بـتقنيع نطاقات منها — الفكرة مشابهة لإخفاء BERT كلماتٍ في النص، لكن هنا ما يُخفى هو شرائح من سمات الصوت. في المحصّلة، يُقنَّع نحو 49% من الخطوات الزمنية، بمتوسط طول نطاق يبلغ نحو 300 ميلّيثانية.
الآلية بسيطة: تُختار نقاط بداية عشوائية (نحو 6.5% من الخطوات الزمنية)، ثم تُقنَّع عشر خطوات متتالية بعد كل نقطة. النطاقات قد تتداخل فتُنتج مناطق مُقنَّعة أطول. كل المواضع المُقنَّعة تُستبدل بمتجه مُشترك واحد يتعلّمه النموذج.
النقطة الجوهرية: التقنيع يحدث فقط في مدخلات المحوِّل — لا في وحدة التكميم. المُكمِّم يرى دائماً التمثيلات الأصلية كما هي. بعبارة أخرى: الأهداف التي يتعلّم النموذج التنبؤ بها نظيفة وكاملة، بينما عليه أن يُعيد بناء المعنى من سياق ناقص.
المرحلة الثانية: بناء السياق — المحوِّل
يستقبل المحوِّل التمثيلات الكامنة بعد تقنيعها، ويبني فوقها تمثيلات سياقية — أي متجهات لا تعكس الإطار الصوتي المحلي فحسب، بل تستوعب معلومات من كامل الجملة المنطوقة. تخيّل طاولة اجتماع يستطيع فيها كل إطار أن يتشاور مع كل إطار آخر، مهما بعُدت المسافة بينهما في التسجيل.
النموذج يأتي بحجمين: BASE بـ12 كتلة و768 بُعداً و8 رؤوس و95 مليون معامل؛ وLARGE بـ24 كتلة و1024 بُعداً و16 رأس انتباه و317 مليون معامل.
بدلاً من الموضع الثابتة، يستخدم wav2vec 2.0 طبقة التفافية (حجم النواة 128 مع 16 مجموعة) لإنتاج تضمينات موضعية نسبية. هذا أمرن بكثير: النموذج يتعلّم المسافة بين إطارين بدلاً من حفظ مواقع مطلقة.
المرحلة الثالثة: قاموس للكلام — وحدة التكميم
هنا تظهر الحيلة الذكية في wav2vec 2.0. المتجه الكامن المتصل يحمل تفاصيل أكثر ممّا نحتاج — هوية المتحدث، ضوضاء الخلفية، جودة التسجيل — وكل هذا يُشتّت النموذج. لذلك بدلاً من التنبؤ بهذا المتجه كما هو، يتنبأ النموذج بـنسخة مُكمَّمة منه. الفكرة أشبه ببناء قاموس لأصوات الكلام: وحدة التكميم تُطابق كل تمثيل كامن متصل مع أقرب مُدخَل في مُتعلَّم.
يعتمد النظام على بمجموعتين من دفتر الشيفرات (G = 2)، في كل واحدة 320 مُدخَلاً (V = 320). لكل متجه كامن، يُنتقى مُدخَل من كل مجموعة، ثم يُدمج المُدخَلان ويُمرَّران عبر تحويل خطي ليُنتجا الهدف المُكمَّم النهائي. حاصل الضرب 2 × 320 يمنحنا حتى 102,400 كلمة شيفرة ممكنة — مخزون غني يكفي لتمثيل أصوات الكلام بتنوّعها.
لكن كيف نجعل الاختيار المنفصل قابلاً للاشتقاق؟ هنا يأتي دور دالة غمبل : تُضيف ضوضاء مُتحكَّماً فيها إلى قيم الاختيار وتستخدم معامل يتناقص تدريجياً أثناء التدريب (من 2 إلى 0.1–0.5). هذا يسمح للتدرّجات بالتدفق عبر الاختيار المنفصل أثناء ، مع استخدام مُقدِّر التمرير المباشر في الممرّ الأمامي.
هدف التدريب: اكتشف الصوت الحقيقي
دالة الخسارة في التدريب المسبق تتألف من شقّين متكاملين:
1. : عند كل خطوة زمنية مُقنَّعة، يُطلب من النموذج أن يُحدّد التمثيل المُكمَّم الصحيح من بين K = 100 مُشتِّت مأخوذة من مواضع مُقنَّعة أخرى في الجملة نفسها. المطلوب أن يكون ناتج المحوِّل قريباً من الهدف الصحيح وبعيداً عن كل شيء آخر، ويُقاس ذلك بتشابه جيب التمام مع حرارة κ = 0.1.
2. خسارة التنوع: بدون هذا المكوِّن، قد ينهار دفتر الشيفرات — أي يستخدم النموذج حفنة قليلة من المُدخَلات ويُهمل الباقي. خسارة التنوع تدفع النموذج لتوزيع استخدامه بالتساوي على جميع المُدخَلات، وذلك بتعظيم الإنتروبيا لتوزيع سوفتماكس المُعدَّل عبر الدفعة. تُوزَن بمعامل α = 0.1.
الحدس هنا واضح: الخسارة التبايُنية تُعلِّم النموذج كيف يبدو الكلام، وخسارة التنوع تضمن أنه يبني مفردات صوتية غنية لا مجموعة ضيقة محدودة.
لماذا الأهداف المُكمَّمة تتفوق على المتصلة
من أهم التجارب في الورقة التي تشرح لماذا يُحدث التكميم فرقاً. جرّب المؤلفون أربع تركيبات: مدخلات متصلة أو مُكمَّمة تدخل المحوِّل، مع أهداف متصلة أو مُكمَّمة في الخسارة التبايُنية.
النتيجة واضحة: مدخلات متصلة + أهداف مُكمَّمة هي التركيبة الأفضل. والسبب منطقي:
المدخلات المتصلة تحتفظ بكل ما أخرجه المُرمِّز، فيحصل المحوِّل على إشارة غنية لبناء السياق. أما الأهداف المُكمَّمة فتحذف التفاصيل المُشتِّتة — طابع صوت المتحدث، ضوضاء الخلفية، ظروف التسجيل — وتُبقي المحتوى الكلامي الجوهري فقط. السؤال الذي يتعلّمه النموذج يصبح: «ما نوع الصوت الذي كان هنا؟» لا «أعِد إنتاج كل تفصيل صوتي». لذلك تنخفض دقة التدريب من 78% مع أهداف متصلة إلى 62% مع أهداف مُكمَّمة — المهمة أصعب، لكن أنفع بكثير لمهام تمييز الكلام اللاحقة.
الضبط الدقيق: من التمثيلات إلى الكلمات
بعد التدريب المسبق، يكون النموذج قد اكتسب تمثيلات كلامية غنية لكنه لا يعرف بعد كيف يُنتج نصاً. مرحلة الضبط الدقيق تُضيف إسقاطاً خطياً واحداً فوق المحوِّل لتحويل متجهات السياق إلى احتمالات حروف (29 حرفاً + رمز لحدود الكلمة في Librispeech). يُدرَّب النموذج هنا بخسارة التي تتولّى محاذاة إطارات الصوت مع حروف المخرجات تلقائياً، دون الحاجة إلى تسميات محاذاة مُعدَّة سلفاً.
تفصيل مهم: المُرمِّز الالتفافي يبقى مُجمَّداً أثناء الضبط الدقيق، ولا يُحدَّث إلا المحوِّل وطبقة الإخراج الجديدة. بل إن المحوِّل نفسه يبقى مُجمَّداً خلال أول 10,000 تحديث — يتدرّب المُصنِّف وحده أولاً. هذه الإذابة التدريجية تحمي التمثيلات المُتعلَّمة من أن تدمّرها تدرّجات صاخبة في البداية.
كذلك يُطبَّق أثناء الضبط الدقيق تقنيع بأسلوب SpecAugment على خطوات زمنية وقنوات ترددية من مخرجات المُرمِّز. هذا التنظيم بالغ الأهمية في البيئات شحيحة الموارد، إذ يُؤخِّر بشكل ملحوظ.
الفكرة في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def contrastive_loss(context, quantized, distractors, kappa=0.1):
"""الخسارة التبايُنية الأساسية لخطوة زمنية مُقنَّعة واحدة.
context: ناتج المحوِّل عند الموضع المُقنَّع (d,)
quantized: الهدف المُكمَّم الصحيح (d,)
distractors: K عيّنات سلبية (K, d)
"""
# تشابه جيب التمام
def sim(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
pos_score = sim(context, quantized) / kappa
neg_scores = [sim(context, d) / kappa for d in distractors]
# InfoNCE: لوغاريتم سوفتماكس على [الإيجابي، السلبيات]
all_scores = [pos_score] + neg_scores
log_sum_exp = np.log(sum(np.exp(s) for s in all_scores))
loss = -(pos_score - log_sum_exp)
return loss
def diversity_loss(codebook_probs, G, V):
"""شجّع الاستخدام المتساوي لجميع مُدخَلات دفتر الشيفرات.
codebook_probs: (G, V) متوسط سوفتماكس عبر الدفعة
"""
loss = 0
for g in range(G):
entropy = -sum(codebook_probs[g, v] * np.log(codebook_probs[g, v] + 1e-8)
for v in range(V))
loss += entropy # عظِّم الإنتروبيا = قلِّل السالبة
return -loss / (G * V)
# الخسارة الإجمالية: L = L_تبايُنية + alpha * L_تنوع
# درِّب مسبقاً على صوت خام ← اضبط دقيقاً بـ CTC على نص مُعنوَنالنتائج: عشر دقائق غيّرت قواعد اللعبة
النتيجة الأبرز: النموذج LARGE — بعد تدريب مسبق على 53 ألف ساعة من صوت LibriVox غير المُعنوَن ثم ضبط دقيق على 10 دقائق فقط من البيانات المُعنوَنة — يصل إلى معدل خطأ كلمات 4.8/8.2 على اختبارات Librispeech النظيفة والصعبة. عشر دقائق تعني 48 تسجيلاً فحسب، بمتوسط 12.5 ثانية لكل واحد.
وعند استخدام كامل بيانات Librispeech المُعنوَنة (960 ساعة)، ينخفض معدل الخطأ إلى 1.8/3.3 — رقم قياسي جديد وقتها، متفوقاً على نماذج صُمِّمت خصيصاً لتمييز الكلام رغم أن wav2vec 2.0 يعتمد بنية CTC أبسط.
على مجموعة الـ100 ساعة، يحقّق النموذج معدل خطأ 2.3/5.0 — انخفاض نسبي يصل إلى 45%/42% مقارنة بأسلوب التسمية الزائفة التكرارية الذي كان يتطلب جولات متعددة من التسمية والتصفية وإعادة التدريب. وصفة wav2vec 2.0 أبسط بكثير: تدريب مسبق مرة واحدة، ضبط دقيق مرة واحدة.
وعلى معيار TIMIT لتمييز الفونيمات، حقّق النموذج معدل خطأ 8.3 — تحسّن نسبي بنسبة 29% عن أفضل نتيجة سابقة.
ثورة التعلّم الذاتي للكلام
2018
CPC — الترميز التنبّؤي التبايُني
طرح فكرة التنبؤ بإطارات الصوت القادمة انطلاقاً من السياق السابق عبر التعلّم التبايُني، وأرسى بذلك الأساس النظري لـ wav2vec.
2019
wav2vec — الخطوة الأولى
طبّق الترميز التنبؤي التبايُني على الكلام وأظهر أن التمثيلات المُتعلَّمة مسبقاً تحسّن الأداء فعلاً. لكنه كان يتنبأ بالإطارات المستقبلية لا المُقنَّعة، فبقي السياق أحادي الاتجاه.
2020
vq-wav2vec — إضافة التكميم
تعلّم وحدات كلام منفصلة أولاً ثم درّب عليها نموذجاً شبيهاً بـ BERT — أي نظام من مرحلتين منفصلتين. wav2vec 2.0 دمج كل هذا في نظام واحد يُدرَّب من البداية إلى النهاية.
2020
wav2vec 2.0 — هذه الورقة
إطار عمل ذاتي الإشراف متكامل: تقنيع + تعلّم تبايُني + تكميم، يُدرَّب كله معاً. 10 دقائق من التسميات تكفي لتمييز كلام تنافسي.
2021
HuBERT
استعاض عن الخسارة التبايُنية بأهداف تعنقد مُعدَّة مسبقاً، فبسّط التدريب وحقّق أداءً يُضاهي wav2vec 2.0 أو يتفوق عليه.
2022
Whisper
سلك Whisper من OpenAI مساراً مختلفاً — تدريب مُشرَف على 680 ألف ساعة من البيانات المُعنوَنة — لكنه عزّز القناعة بأن التدريب واسع النطاق على الكلام، سواء كان ذاتي الإشراف أو مُشرَفاً، هو النهج الأنجع.
الصورة الأوسع: كلام لكل لغة
الأثر الأعمق لـ wav2vec 2.0 ليس في أرقام معدل خطأ الكلمات — بل في تغيير المنهجية بالكامل. قبل هذه الورقة، كان بناء نظام تمييز كلام للغة جديدة يستلزم توظيف ناطقين أصليين لنسخ مئات أو آلاف الساعات من الصوت. بعد wav2vec 2.0 صارت الوصفة: (1) اجمع صوتاً غير مُعنوَن — وهو رخيص ومتوفر في كل مكان، (2) نفّذ التدريب المسبق عليه، (3) أجرِ الضبط الدقيق بأقلّ من 10 دقائق من النسخ.
هذا فتح الباب أمام تقنية الكلام لآلاف اللغات شحيحة الموارد. مشروع MMS من Meta مثلاً بُني مباشرة على wav2vec 2.0 ليُغطّي أكثر من 1100 لغة. ومنهجية «درِّب مسبقاً ثم اضبط» التي أرساها BERT للنصوص ثبتت صحّتها للكلام أيضاً، ممّا يرسم وصفة موحّدة تعمل عبر الطرائق المختلفة.
المرجعBaevski, Zhou, Mohamed, Auli. wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations. NeurIPS, 2020.
مصطلحات هذه الورقة
- التعلم ذاتي الإشرافSelf-Supervised Learning
- التعلم التبايُنيContrastive Learning
- الخسارة التبايُنيةContrastive Loss
- التكميمQuantization
- جدول الرموزCodebook
- التعرّف على الكلامSpeech Recognition
- استخلاص السماتFeature Extraction
- التقنُّعMasking
- المحوِّلTransformer
- الضبط الدقيقFine-Tuning
- التدريب المسبقPre-training
- التمثيل الكامنLatent Representation
- الشكل الموجيWaveform
- تعلم التمثيلات الرقميةRepresentation Learning
- خسارة InfoNCEInfoNCE