معالجة الإشارات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) حرِّك كل سائق إلى مركز ثقل طلباته. بعد جولات قليلة يستقر السائقون في المواقع المثلى. هذه هي الخوارزمية بالكامل.

الآن استبدل «السائقين» بـمستويات التكميم، و«الطلبات» بـعيّنات الإشارة، و«مسافة التوصيل» بـ**** — وستحصل على ما تقوله الورقة بالضبط.

المشكلة: كيف نحوّل عالَماً تماثلياً إلى أرقام

حين تتحدث في الهاتف، يكون صوتك إشارة كهربائية متصلة تتغيّر مع الزمن. لإرسالها رقمياً، نأخذ منها عيّنات على فترات منتظمة ثم نقرِّب كل عيّنة إلى واحدة من NN قيمة مسموحة — هذا التقريب هو ما نسمّيه التكميم. القيم المقرَّبة تُعرف بـ أو المراكز الثقلية.

أبسط مقاربة هي التكميم المنتظم: وزِّع المستويات الـ NN بالتساوي على مدى الجهد. لكن هذا إهدار واضح. إشارة الصوت في الواقع تقضي أغلب وقتها عند سعات منخفضة قرب الصمت، ونادراً ما تبلغ قمماً عالية. التوزيع المنتظم يمنح الدقة نفسها للقمم النادرة والأجزاء الهادئة المتكررة — أي أنه يُهدر البتّات حيث لا تُحدث فرقاً.

السؤال الذي طرحه لويد: إذا كنّا نعرف للإشارة، أين نضع مستويات التكميم الـ NN بالضبط حتى يصبح متوسط الخطأ المربّع أصغر ما يمكن؟

افتح في المختبر
حرّك المنزلق لتغيير عدد مستويات التكميم. قارن بين التوزيع المنتظم (يسار) والتوزيع الأمثل بطريقة لويد (يمين) — لاحظ كيف تتكثّف المستويات في المناطق ذات الكثافة الأعلى.
تستيقظ التجربة عند وصولك…

القاعدتان الذهبيتان للمُكمِّم الأمثل

أثبت لويد أن أي يُصغِّر متوسط الخطأ المربّع لا بدّ أن يحقق شرطين معاً. قبل الدخول في الرياضيات، لنفهم ماذا يعني كل شرط — فالفكرتان بديهيتان للغاية:

القاعدة الأولى — شرط الجار الأقرب. كل عيّنة تُسنَد إلى أقرب مستوى تكميم إليها. مثلاً، إذا كانت العيّنة عند جهد 3.7 وكان لدينا مستويان عند 3.0 و4.0، فالعيّنة تذهب إلى 4.0 لأنه الأقرب. النتيجة المباشرة: حدّ القرار بين مستويين متجاورين يقع تماماً عند نقطة المنتصف بينهما.

القاعدة الثانية — شرط مركز الثقل. كل مستوى تكميم يجب أن يقع عند متوسط العيّنات المُسنَدة إليه. فإذا كانت العيّنات في فترة معيّنة تتركّز نحو طرفها الأيسر، ينبغي أن يتحرّك المستوى يساراً ليقلّل الخطأ.

هذان الشرطان ضروريان — خرقُ أيٍّ منهما يعني أن بإمكانك خفض الخطأ بتصحيح المخالفة. وباجتماعهما يتحدّد شكل أي مُكمِّم أمثل محلياً.

الوصف الرسمي: التشوّه وتصغيره

لنفترض أن سعة الإشارة xx تتبع دالة كثافة احتمالية p(x)p(x). المُكمِّم ذو المستويات الـ NN يقسم خطّ الأعداد الحقيقية إلى NN فترة [ti1,ti)[t_{i-1}, t_i)، وفي كل فترة توجد قيمة إعادة qiq_i. الهدف هو تصغير التشوّه — وهو الفرق التربيعي المتوقع بين الإشارة الأصلية ونسختها بعد التكميم.

D=(xQ(x))2p(x)dx=i=1Nti1ti(xqi)2p(x)dxD = \int_{-\infty}^{\infty} (x - Q(x))^2 \, p(x) \, dx = \sum_{i=1}^{N} \int_{t_{i-1}}^{t_i} (x - q_i)^2 \, p(x) \, dx
التشوّه (متوسط الخطأ المربّع للتكميم)يستبدل التكميم عدداً كبيراً من القيم الممكنة بمجموعة أصغر من القيم الممثِّلة. ويقيس التشوّه مقدار المعلومات المفقودة نتيجة هذا التقريب: فكلما ازداد الفرق بين القيمة الأصلية والقيمة الممثلة لها ازداد الخطأ. أما التشوّه الكلي فيمثل متوسط هذا الخطأ عبر جميع القيم الممكنة مع مراعاة مدى شيوع كل قيمة. وتهدف خوارزمية لويد إلى اختيار القيم الممثلة وحدود الفترات بطريقة تجعل هذا الخطأ الكلي أصغر ما يمكن.

الشرط الأول: الحدود المثلى (قاعدة الجار الأقرب)

لنثبّت مستويات التكميم qiq_i ونسأل: أين يقع حدّ القرار tit_i بين المستويين المتجاورين qiq_i وqi+1q_{i+1}؟ عيّنة تقع عند x=tix = t_i تبعد المسافة نفسها عن كلا المستويين، لذا لا فرق في إسنادها. ما يسار هذه النقطة أقرب إلى qiq_i، وما يمينها أقرب إلى qi+1q_{i+1}. إذن الحدّ الذي يصغّر التشوّه هو ببساطة نقطة المنتصف:

ti=qi+qi+12t_i = \frac{q_i + q_{i+1}}{2}
شرط الجار الأقرب (الحد الأمثل)الحدّ بين مستويي تكميم متجاورين يقع عند نقطة منتصفهما — أي حيث تتساوى المسافة المربّعة إلى كل منهما. هذا ما يُعرف بتقسيم فورونوي في بُعد واحد.

الشرط الثاني: المستويات المثلى (قاعدة مركز الثقل)

لنثبّت الآن الحدود tit_i ونسأل: أين يجب أن يقع مستوى التكميم qiq_i داخل فترته [ti1,ti)[t_{i-1}, t_i)؟ القيمة التي تصغّر الخطأ التربيعي لعيّنات تلك الفترة هي متوسطها المرجّح بالاحتمال — أي :

qi=ti1tixp(x)dxti1tip(x)dx=E[Xti1X<ti]q_i = \frac{\int_{t_{i-1}}^{t_i} x \, p(x) \, dx}{\int_{t_{i-1}}^{t_i} p(x) \, dx} = E[X \mid t_{i-1} \leq X < t_i]
شرط مركز الثقل (المستوى الأمثل)كل مستوى تكميم يقع عند مركز ثقل التوزيع الاحتمالي داخل فترته، وليس عند منتصفها. الفرق أنّ مركز الثقل ينجذب نحو المنطقة الأكثر كثافة بالعيّنات.
افتح في المختبر
انقر «أصلح الانتهاك» لترى كيف يتصحّح كل شرط. إذا سحبت مستوى تكميم بعيداً عن مركز ثقله فأنت تنتهك القاعدة الثانية، وإذا أزحت حدّ القرار عن موضعه فأنت تنتهك الأولى.
تستيقظ التجربة عند وصولك…

خوارزمية لويد: تناوَب حتى التقارب

لا يمكن لشرط واحد أن يعطي الحلّ الكامل — فالحدود تتوقف على المستويات، والمستويات تتوقف على الحدود. الفكرة المحورية عند لويد هي التناوب بينهما:

الخطوة 0 — التهيئة. اختر NN مستوى تكميم ابتدائي (عشوائياً أو بالتساوي). الخطوة 1 — الإسناد. ضع كل حدّ tit_i عند نقطة المنتصف بين المستويين المتجاورين (شرط الجار الأقرب). الخطوة 2 — التحديث. حرِّك كل مستوى qiq_i إلى مركز ثقل العيّنات في فترته (شرط مركز الثقل). كرِّر الخطوتين 1 و2 حتى تتوقف المستويات عن التغيّر ().

في كل دورة، الخطوة الأولى لا يمكنها إلا أن تُنقص DD أو تُبقيه كما هو، والأمر ذاته ينطبق على الخطوة الثانية. وبما أن DD لا يمكن أن يقلّ عن الصفر، فلا بدّ أن تتقارب المتتالية.

افتح في المختبر
اضغط «خطوة» للتقدّم في خوارزمية لويد دورة بدورة. راقب كيف تنزاح مستويات التكميم نحو المناطق الأكثف بينما ينخفض منحنى التشوّه.
تستيقظ التجربة عند وصولك…

لماذا تتقارب: هبوط رتيب

حجّة التقارب أنيقة في بساطتها. لنعرِّف التشوّه DD كدالة في المستويات والحدود معاً. في كل خطوة من الخوارزمية نُحسِّن مجموعة متغيرات واحدة مع تثبيت الأخرى — وهذا التحسين لا يمكنه إلا إنقاص DD أو إبقاءه كما هو. متتالية لا تتزايد ومحدودة من الأسفل لا بدّ أن تتقارب.

لكن هذا لا يضمن الوصول إلى — الخوارزمية تصل إلى تعتمد على نقطة البداية. تهيئة مختلفة قد تقود إلى حلّ مختلف. لذلك الممارسة المعتادة هي تشغيل الخوارزمية عدّة مرات بتهيئات عشوائية ثم اختيار أفضل نتيجة.

من التكميم إلى العنقَدة: الخوارزمية ذاتها

كتب لويد ورقته لمهندسي الإشارات: المدخل جهد كهربائي أحادي البُعد والهدف تقليل ضجيج التكميم. لكن إذا تجاوزنا مصطلحات معالجة الإشارات، ما يتبقّى هندسة بحتة:

لدينا NN نقطة وسحابة بيانات: (1) اربط كل عنصر بأقرب نقطة ()، (2) حرِّك كل نقطة إلى مركز ثقل خليّتها. كرِّر.

هذا بالضبط ما نسمّيه بالمتوسطات (k-means) — من أوسع الخوارزميات انتشاراً في تعلّم الآلة وعلم البيانات. أصل الخوارزمية هو تقرير لويد الفني غير المنشور من عام 1957، وإن كان فورغي قد توصّل إليها مستقلاً عام 1965، ثم أطلق عليها ماكوين اسم «k-means» عام 1967. حين نُشرت الورقة أخيراً عام 1982 انتشرت على نطاق واسع ورسّخت مكانتها في الأدبيات.

افتح في المختبر
اضغط «تشغيل» لمشاهدة k-means وهي تعنقد نقاطاً ثنائية الأبعاد. المناطق الملونة هي خلايا فورونوي — الفكرة نفسها من مُكمِّم لويد أحادي البُعد، لكن هنا في بُعدين.
تستيقظ التجربة عند وصولك…

الفكرة نفسها في الكود

خوارزمية لويد (مُكمِّم أحادي البُعد والعنقَدة في دالة واحدة)python

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

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.
# في أبعاد أعلى، استبدل «نقاط المنتصف» بخلايا فورونوي
# و«المتوسط» بمركز الثقل المتجهي. المنطق مطابق تماماً.

الصلة المقاربية: قانون القوة الثُلثية لبانتر ودايت

أثبت لويد أيضاً أنه كلّما كبر عدد المستويات NN، يقترب حلّه المحدود من نتيجة معروفة منذ 1951: الكثافة المقاربية لمستويات التكميم ينبغي أن تتناسب مع p(x)1/3p(x)^{1/3} حيث p(x)p(x) هي كثافة الإشارة الاحتمالية. المعنى العملي: منطقة يُحتمل أن تظهر فيها الإشارة 8 أضعاف لا تحتاج إلا 81/3=28^{1/3} = 2 ضعف عدد المستويات فحسب — وليس 8 أضعاف. هذا القانون التكعيبي يوازن بين فائدة الدقة العالية في المناطق الكثيفة وبين تناقص العائد من حشد مستويات كثيرة فيها.

d(qi)p(x)1/3d(q_i) \propto p(x)^{1/3}
قانون بانتر-دايت للقوة الثُلثية (الكثافة المقاربية للمستويات)عند توفر عدد كبير من مستويات التكميم، تكون الاستراتيجية المثلى هي تخصيص مستويات أكثر للمناطق التي تظهر فيها الإشارة بكثرة، ومستويات أقل للمناطق النادرة. لكن هذا التخصيص لا يتناسب طردياً مع كثافة الإشارة نفسها، بل يزداد بوتيرة أبطأ كثيراً تتبع علاقة الجذر التكعيبي. ويحقق ذلك توازناً مدروساً بين منح دقة أعلى للمناطق الأكثر أهمية وتجنب تركيز عدد مفرط من مستويات التكميم ضمن جزء صغير من مجال الإشارة.

لماذا كانت مهمة — ولا تزال

  1. 1951

    بانتر ودايت — التكميم المقاربي

    أثبتا أن الكثافة المثلى لمستويات التكميم تتناسب مع الجذر التكعيبي لكثافة الإشارة — لكن النتيجة تقتصر على الحالة المقاربية ولا تقدّم خوارزمية عملية لعدد محدود من المستويات.

  2. 1957

    لويد — ولادة الخوارزمية (غير منشورة)

    كتب ستيوارت لويد الخوارزمية في مختبرات بِل كمذكرة فنية داخلية. تداولها المهندسون على نطاق واسع لكنها لم تُنشر رسمياً إلا بعد 25 عاماً.

  3. 1960

    ماكس — إعادة اكتشاف مستقلة

    توصّل جويل ماكس إلى شروط الأمثلية نفسها بشكل مستقل ونشرها في IRE Transactions. لذلك تُعرف الخوارزمية أحياناً بمُكمِّم لويد-ماكس.

  4. 1965

    فورغي — نسخة العنقَدة

    نشر فورغي الخوارزمية التكرارية نفسها لأغراض العنقَدة، وبذلك ربط بين عالمَي التكميم والعنقَدة.

  5. 1967

    ماكوين — تسمية «k-متوسطات»

    أطلق ماكوين مصطلح «k-means» على مسألة العنقَدة، وإن كانت خوارزميته تختلف في آلية التحديث.

  6. 1982

    لويد — النشر أخيراً

    نُشرت أخيراً مذكرة مختبرات بِل الأصلية (1957) في IEEE Transactions on Information Theory، وتجاوز عدد اقتباساتها منذ ذلك الحين 15,000 اقتباس.

  7. 2007

    k-means++‎ — تهيئة أذكى

    قدّم آرثر وفاسيلفيتسكي طريقة تهيئة احتمالية تضمن تقريباً جيداً للحل الأمثل، وعالجت بذلك نقطة ضعف خوارزمية لويد الرئيسية: حساسيتها لاختيار نقاط البداية.

  8. 2024

    تكميم الشبكات العصبية

    تُستخدم خوارزمية لويد اليوم لتكميم أوزان الشبكات العصبية من 32 بت إلى 4 بت، ما يتيح تشغيل النماذج اللغوية الكبيرة على الهواتف. فكرة عمرها يعود إلى 1957 وما زالت فاعلة.

المرجعLloyd, S. P.. Least Squares Quantization in PCM. IEEE Transactions on Information Theory, 1982.

مصطلحات هذه الورقة