معالجة الإشارات1982تأسيسي10 دقيقة قراءة
التكميم بأقل مربّعات الخطأ في تعديل الشفرة النبضية
Least Squares Quantization in PCM
Lloyd, S. P. — IEEE Transactions on Information Theory
المشكلة
في (PCM)، نحتاج إلى تقريب إلى عدد محدود من القيم المنفصلة تسمى مستويات . لو وزّعنا هذه المستويات بالتساوي فسنهدر الدقة: الأجزاء الهادئة من إشارة الصوت — وهي الأكثر تكراراً — تحتاج دقة عالية، أما القمم العالية فنادرة ويمكنها تحمّل تقريب خشن. السؤال إذن: لو كان لدينا N مستوى تكميم وتوزيع احتمالي معروف للإشارة، كيف نختار مواضع المستويات وحدود القرار بينها بحيث يكون متوسط الخطأ المربّع أصغر ما يمكن؟
الإسهام
حدّدت الورقة شرطين لازمين لأي مُكمِّم أمثل: (1) كل عينة تُسنَد إلى أقرب مستوى تكميم (شرط )، و(2) كل مستوى تكميم يساوي المتوسط الشرطي لعيناته (شرط ). ثم قدّمت خوارزمية تكرارية تتناوب بين هذين الشرطين، وأثبتت أن ينخفض حتماً مع كل دورة حتى يتقارب الحل إلى مُكمِّم أمثل محلياً. هذه الخوارزمية — التي عُرفت لاحقاً — أصبحت من أوسع الخوارزميات انتشاراً في علوم الحاسوب.
الأثر
كُتبت في مختبرات بِل عام 1957 لكنها لم تُنشر حتى 1982، وأصبحت خوارزمية لويد هي التطبيق المعتمد للعنقَدة بـ k-متوسطات. تظهر اليوم في ضغط الصور (تكميم الألوان)، في مرمّزات الصوت، وتصنيف العملاء، وعنقدة المستندات، وتكميم أوزان الشبكات العصبية، ومرحلة التهيئة في أنظمة تعلّم الآلة. كما أن نمطها — إسناد ثم تحديث — هو الأساس الذي بُنيت عليه خوارزمية تعظيم التوقع (EM) وكثير من أساليب الأمثَلة التكرارية. بأكثر من 15,000 اقتباس، تُعدّ من أكثر الأوراق تأثيراً في نظرية المعلومات وعلم البيانات.
تخيّل أنك تدير خدمة توصيل بيتزا في مدينة. لديك 5 سائقين، كلٌّ منهم يقف في نقطة ثابتة. عند كل طلب، يتولّى التوصيلَ السائقُ الأقرب. هدفك: ترتيب مواقع السائقين الخمسة بحيث تكون مسافة التوصيل المتوسطة لجميع الطلبات أقصر ما يمكن.
منطقياً ستضع سائقين أكثر في الأحياء المزدحمة وأقل في الأطراف الهادئة. لكن أين تحديداً؟ فكرة لويد: ابدأ بمواقع عشوائية، ثم كرِّر خطوتين — (1) اربط كل طلب بأقرب سائق، (2) حرِّك كل سائق إلى مركز ثقل طلباته. بعد جولات قليلة يستقر السائقون في المواقع المثلى. هذه هي الخوارزمية بالكامل.
الآن استبدل «السائقين» بـمستويات التكميم، و«الطلبات» بـعيّنات الإشارة، و«مسافة التوصيل» بـ**** — وستحصل على ما تقوله الورقة بالضبط.
المشكلة: كيف نحوّل عالَماً تماثلياً إلى أرقام
حين تتحدث في الهاتف، يكون صوتك إشارة كهربائية متصلة تتغيّر مع الزمن. لإرسالها رقمياً، نأخذ منها عيّنات على فترات منتظمة ثم نقرِّب كل عيّنة إلى واحدة من قيمة مسموحة — هذا التقريب هو ما نسمّيه التكميم. القيم المقرَّبة تُعرف بـ أو المراكز الثقلية.
أبسط مقاربة هي التكميم المنتظم: وزِّع المستويات الـ بالتساوي على مدى الجهد. لكن هذا إهدار واضح. إشارة الصوت في الواقع تقضي أغلب وقتها عند سعات منخفضة قرب الصمت، ونادراً ما تبلغ قمماً عالية. التوزيع المنتظم يمنح الدقة نفسها للقمم النادرة والأجزاء الهادئة المتكررة — أي أنه يُهدر البتّات حيث لا تُحدث فرقاً.
السؤال الذي طرحه لويد: إذا كنّا نعرف للإشارة، أين نضع مستويات التكميم الـ بالضبط حتى يصبح متوسط الخطأ المربّع أصغر ما يمكن؟
القاعدتان الذهبيتان للمُكمِّم الأمثل
أثبت لويد أن أي يُصغِّر متوسط الخطأ المربّع لا بدّ أن يحقق شرطين معاً. قبل الدخول في الرياضيات، لنفهم ماذا يعني كل شرط — فالفكرتان بديهيتان للغاية:
القاعدة الأولى — شرط الجار الأقرب. كل عيّنة تُسنَد إلى أقرب مستوى تكميم إليها. مثلاً، إذا كانت العيّنة عند جهد 3.7 وكان لدينا مستويان عند 3.0 و4.0، فالعيّنة تذهب إلى 4.0 لأنه الأقرب. النتيجة المباشرة: حدّ القرار بين مستويين متجاورين يقع تماماً عند نقطة المنتصف بينهما.
القاعدة الثانية — شرط مركز الثقل. كل مستوى تكميم يجب أن يقع عند متوسط العيّنات المُسنَدة إليه. فإذا كانت العيّنات في فترة معيّنة تتركّز نحو طرفها الأيسر، ينبغي أن يتحرّك المستوى يساراً ليقلّل الخطأ.
هذان الشرطان ضروريان — خرقُ أيٍّ منهما يعني أن بإمكانك خفض الخطأ بتصحيح المخالفة. وباجتماعهما يتحدّد شكل أي مُكمِّم أمثل محلياً.
الوصف الرسمي: التشوّه وتصغيره
لنفترض أن سعة الإشارة تتبع دالة كثافة احتمالية . المُكمِّم ذو المستويات الـ يقسم خطّ الأعداد الحقيقية إلى فترة ، وفي كل فترة توجد قيمة إعادة . الهدف هو تصغير التشوّه — وهو الفرق التربيعي المتوقع بين الإشارة الأصلية ونسختها بعد التكميم.
الشرط الأول: الحدود المثلى (قاعدة الجار الأقرب)
لنثبّت مستويات التكميم ونسأل: أين يقع حدّ القرار بين المستويين المتجاورين و؟ عيّنة تقع عند تبعد المسافة نفسها عن كلا المستويين، لذا لا فرق في إسنادها. ما يسار هذه النقطة أقرب إلى ، وما يمينها أقرب إلى . إذن الحدّ الذي يصغّر التشوّه هو ببساطة نقطة المنتصف:
الشرط الثاني: المستويات المثلى (قاعدة مركز الثقل)
لنثبّت الآن الحدود ونسأل: أين يجب أن يقع مستوى التكميم داخل فترته ؟ القيمة التي تصغّر الخطأ التربيعي لعيّنات تلك الفترة هي متوسطها المرجّح بالاحتمال — أي :
خوارزمية لويد: تناوَب حتى التقارب
لا يمكن لشرط واحد أن يعطي الحلّ الكامل — فالحدود تتوقف على المستويات، والمستويات تتوقف على الحدود. الفكرة المحورية عند لويد هي التناوب بينهما:
الخطوة 0 — التهيئة. اختر مستوى تكميم ابتدائي (عشوائياً أو بالتساوي). الخطوة 1 — الإسناد. ضع كل حدّ عند نقطة المنتصف بين المستويين المتجاورين (شرط الجار الأقرب). الخطوة 2 — التحديث. حرِّك كل مستوى إلى مركز ثقل العيّنات في فترته (شرط مركز الثقل). كرِّر الخطوتين 1 و2 حتى تتوقف المستويات عن التغيّر ().
في كل دورة، الخطوة الأولى لا يمكنها إلا أن تُنقص أو تُبقيه كما هو، والأمر ذاته ينطبق على الخطوة الثانية. وبما أن لا يمكن أن يقلّ عن الصفر، فلا بدّ أن تتقارب المتتالية.
لماذا تتقارب: هبوط رتيب
حجّة التقارب أنيقة في بساطتها. لنعرِّف التشوّه كدالة في المستويات والحدود معاً. في كل خطوة من الخوارزمية نُحسِّن مجموعة متغيرات واحدة مع تثبيت الأخرى — وهذا التحسين لا يمكنه إلا إنقاص أو إبقاءه كما هو. متتالية لا تتزايد ومحدودة من الأسفل لا بدّ أن تتقارب.
لكن هذا لا يضمن الوصول إلى — الخوارزمية تصل إلى تعتمد على نقطة البداية. تهيئة مختلفة قد تقود إلى حلّ مختلف. لذلك الممارسة المعتادة هي تشغيل الخوارزمية عدّة مرات بتهيئات عشوائية ثم اختيار أفضل نتيجة.
من التكميم إلى العنقَدة: الخوارزمية ذاتها
كتب لويد ورقته لمهندسي الإشارات: المدخل جهد كهربائي أحادي البُعد والهدف تقليل ضجيج التكميم. لكن إذا تجاوزنا مصطلحات معالجة الإشارات، ما يتبقّى هندسة بحتة:
لدينا نقطة وسحابة بيانات: (1) اربط كل عنصر بأقرب نقطة ()، (2) حرِّك كل نقطة إلى مركز ثقل خليّتها. كرِّر.
هذا بالضبط ما نسمّيه بالمتوسطات (k-means) — من أوسع الخوارزميات انتشاراً في تعلّم الآلة وعلم البيانات. أصل الخوارزمية هو تقرير لويد الفني غير المنشور من عام 1957، وإن كان فورغي قد توصّل إليها مستقلاً عام 1965، ثم أطلق عليها ماكوين اسم «k-means» عام 1967. حين نُشرت الورقة أخيراً عام 1982 انتشرت على نطاق واسع ورسّخت مكانتها في الأدبيات.
الفكرة نفسها في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def lloyd_quantizer(samples, n_quanta, max_iter=100, tol=1e-6):
"""إيجاد مستويات التكميم المثلى لبيانات أحادية البُعد بخوارزمية لويد.
samples : مصفوفة أحادية من قيم الإشارة
n_quanta: عدد مستويات التكميم (العناقيد)
يُعيد : مصفوفة مرتبة من المستويات المثلى (المراكز الثقلية)
"""
# الخطوة 0: تهيئة المستويات عند مئينات موزعة بالتساوي
quanta = np.percentile(samples, np.linspace(0, 100, n_quanta + 2)[1:-1])
for iteration in range(max_iter):
# الخطوة 1 — الإسناد: كل عينة ← أقرب مستوى تكميم
# الحدود هي نقاط المنتصف بين المستويات المتجاورة
boundaries = (quanta[:-1] + quanta[1:]) / 2
# np.digitize تسند كل عينة إلى صندوق
assignments = np.digitize(samples, boundaries)
# الخطوة 2 — التحديث: حرِّك كل مستوى إلى مركز ثقل عيناته
new_quanta = np.array([
samples[assignments == i].mean()
for i in range(n_quanta)
if np.any(assignments == i)
])
# التحقق من التقارب
if np.max(np.abs(new_quanta - quanta)) < tol:
break
quanta = new_quanta
return np.sort(quanta)
# هذه بالضبط خوارزمية k-متوسطات حيث k = n_quanta والأبعاد = 1.
# في أبعاد أعلى، استبدل «نقاط المنتصف» بخلايا فورونوي
# و«المتوسط» بمركز الثقل المتجهي. المنطق مطابق تماماً.الصلة المقاربية: قانون القوة الثُلثية لبانتر ودايت
أثبت لويد أيضاً أنه كلّما كبر عدد المستويات ، يقترب حلّه المحدود من نتيجة معروفة منذ 1951: الكثافة المقاربية لمستويات التكميم ينبغي أن تتناسب مع حيث هي كثافة الإشارة الاحتمالية. المعنى العملي: منطقة يُحتمل أن تظهر فيها الإشارة 8 أضعاف لا تحتاج إلا ضعف عدد المستويات فحسب — وليس 8 أضعاف. هذا القانون التكعيبي يوازن بين فائدة الدقة العالية في المناطق الكثيفة وبين تناقص العائد من حشد مستويات كثيرة فيها.
لماذا كانت مهمة — ولا تزال
1951
بانتر ودايت — التكميم المقاربي
أثبتا أن الكثافة المثلى لمستويات التكميم تتناسب مع الجذر التكعيبي لكثافة الإشارة — لكن النتيجة تقتصر على الحالة المقاربية ولا تقدّم خوارزمية عملية لعدد محدود من المستويات.
1957
لويد — ولادة الخوارزمية (غير منشورة)
كتب ستيوارت لويد الخوارزمية في مختبرات بِل كمذكرة فنية داخلية. تداولها المهندسون على نطاق واسع لكنها لم تُنشر رسمياً إلا بعد 25 عاماً.
1960
ماكس — إعادة اكتشاف مستقلة
توصّل جويل ماكس إلى شروط الأمثلية نفسها بشكل مستقل ونشرها في IRE Transactions. لذلك تُعرف الخوارزمية أحياناً بمُكمِّم لويد-ماكس.
1965
فورغي — نسخة العنقَدة
نشر فورغي الخوارزمية التكرارية نفسها لأغراض العنقَدة، وبذلك ربط بين عالمَي التكميم والعنقَدة.
1967
ماكوين — تسمية «k-متوسطات»
أطلق ماكوين مصطلح «k-means» على مسألة العنقَدة، وإن كانت خوارزميته تختلف في آلية التحديث.
1982
لويد — النشر أخيراً
نُشرت أخيراً مذكرة مختبرات بِل الأصلية (1957) في IEEE Transactions on Information Theory، وتجاوز عدد اقتباساتها منذ ذلك الحين 15,000 اقتباس.
2007
k-means++ — تهيئة أذكى
قدّم آرثر وفاسيلفيتسكي طريقة تهيئة احتمالية تضمن تقريباً جيداً للحل الأمثل، وعالجت بذلك نقطة ضعف خوارزمية لويد الرئيسية: حساسيتها لاختيار نقاط البداية.
2024
تكميم الشبكات العصبية
تُستخدم خوارزمية لويد اليوم لتكميم أوزان الشبكات العصبية من 32 بت إلى 4 بت، ما يتيح تشغيل النماذج اللغوية الكبيرة على الهواتف. فكرة عمرها يعود إلى 1957 وما زالت فاعلة.
المرجعLloyd, S. P.. Least Squares Quantization in PCM. IEEE Transactions on Information Theory, 1982.
مصطلحات هذه الورقة
- التكميمQuantization
- المُكمِّمQuantizer
- تقسيم فورونويVoronoi Partition
- مركز الثقلCentroid
- التشوّهDistortion
- قيمة الإعادةReproduction Value
- العنقَدة بـ k-متوسطاتk-means Clustering
- الجار الأقربNearest Neighbor
- التوقع الشرطيConditional Expectation
- تعديل الشفرة النبضيةPulse-Code Modulation (PCM)
- التكميم المتجهيVector Quantization
- الإشارة التماثليةAnalog Signal