#autoencoder — التعلّم العميق
المرمّز التلقائي: اضغط ثم أعِد البناء.
ما ستُجرّبه
- أهلًا بك في #autoencoder. على اليسار صليب مرسوم على 8×8 = 64 بكسل، وفي الوسط عنق زجاجة مؤلَّف من 4 خلايا عصبية، وعلى اليمين ما تعيد الشبكة بناءه انطلاقًا من هذه الأرقام الأربعة وحدها. الأوزان لا تزال عشوائية، فالمخرج مجرّد لطخة رمادية. يتعلّم المرمّز التلقائي (autoencoder) أن يضغط المدخل (المُشفِّر: 64 ← 4) ثم يعيد بناءه (المُفكِّك: 4 ← 64) عبر تصغير الفارق بين المدخل والمخرج. لا توجد تسميات: الهدف هو المدخل نفسه. هذه هي الفكرة الكامنة وراء الضغط المتعلَّم وإزالة الضوضاء وجزء من مولِّدات الصور.
- لتبدأ التدريب اكتب:
/train 20. في كل حقبة (epoch) ترى الشبكة الرموز الاثني عشر، وتقيس خطأ إعادة البناء، ثم تعدِّل أوزانها عبر الانتشار الخلفي (backpropagation). - أربعون حقبة إضافية:
/train 40. المفترض أن يذوب متوسّط الخطأ التربيعي (MSE) المعروض تحت الشبكة اليمنى. - لنُضيِّق عنق الزجاجة:
/latent 2. تُعاد تهيئة الشبكة بخليّتين عصبيّتين فقط في الوسط (2): على كل رمز أن يتّسع داخل رقمين اثنين، وهما بالضبط محورا المستوى الكامن. - أعِد تدريب هذه الشبكة الضيّقة:
/train 40. ثم قارِن متوسّط الخطأ على الرموز الاثني عشر (اللوحة اليمنى) بما حصلت عليه في 4 أبعاد. - غيِّر المدخل:
/image circle. تُشفِّر الأوزان نفسها ثم تفكّ رسمًا مختلفًا تمامًا دون أي إعادة تعلّم. - أفسِد المدخل:
/noise 0.3يستبدل 30% من البكسلات بقيم عشوائية. الشبكة نفسها لم ترَ ضوضاء من قبل. - تنقَّل في الفضاء الكامن:
/interpolate cross circleيضع 5 نقاط وسيطة بين رمز الصليب ورمز الدائرة، ثم يفكّ كلًّا منها. - الدور دورك:
/point 0.5 -0.5يفكّ نقطة حرّة في المستوى الكامن، و/pixel 1 1يقلب بكسلًا خارج النمط لترى الشبكة تمحوه، و/latent 8ثم/train 30لعنق زجاجة أوسع، و/noise 0.6لإزالة ضوضاء أصعب، و/seed 3لتهيئة أخرى، و/resetللعودة إلى البداية. التالي: قناة #transfer-learning، حيث يصبح المُشفِّر المدرَّب مسبقًا نقطة انطلاق لمهمّة جديدة.
أوامر القناة
/latent <k=1..8>— تغيير بُعد عنق الزجاجة وإعادة تهيئة الشبكة (أوزان جديدة، الحقبة 0)./train <epochs=5..60>— متابعة التدريب (SGD، الهدف = رمز نظيف؛ مدخل مُشوَّش إذا كان /noise > 0)./image <cross|circle|bar|line|diagonal|square|triangle|dot|L|T|checker>— تغيير الرمز المُدخَل (الشبكة نفسها لا تتغيّر)./noise <0..1>— يُفسد المدخل (نسبة من البكسلات تُستبدل بقيمة عشوائية)؛ الهدف يبقى نظيفًا./interpolate <a> <b>— يفكّ 5 رموز وسيطة بين الرمزين الكامنَين لرمزين (الشريط السفلي)./point <z1> <z2>— فكّ نقطة حرّة من المستوى الكامن (z1، z2؛ باقي الأبعاد أصفار)./pixel <row=1..8> <col=1..8>— قلب بكسل في المدخل (السطر 1 في الأعلى) لاختبار شكل خارج مجموعة البيانات./seed <n=1..999>— تغيير البذرة: تهيئة أوزان مختلفة ونمط ضوضاء مختلف؛ يبدأ التدريب من الصفر./reset— العودة إلى الحالة الأولية: صليب، عنق زجاجة 4، أوزان عشوائية، بلا ضوضاء.
المسرد
- المرمّز التلقائي (Autoencoder)
- شبكة تُدرَّب على إعادة إنتاج مدخلها بعد عصره عبر تمثيل أصغر. لا تسميات: الهدف هو المدخل نفسه، وهذا ما يجعلها تعلّمًا ذاتي الإشراف.
- المُشفِّر (Encoder)
- النصف الأول من الشبكة: يضغط المدخل (64 بكسل هنا) في رمز كامن مؤلَّف من k أرقام.
- المُفكِّك (Decoder)
- النصف الثاني من الشبكة: يعيد بناء مخرج بحجم المدخل انطلاقًا من الرمز الكامن وحده. وهو أيضًا مولِّد صغير: أعطه رمزًا مُبتكَرًا فينتج صورة.
- عنق الزجاجة (Bottleneck)
- أضيق طبقة بين المُشفِّر والمُفكِّك. حجمها k يحدِّد نسبة الضغط (64 ← k) ويُجبر الشبكة على الاحتفاظ بالجوهر فقط.
- الفضاء الكامن (Latent space)
- فضاء بأبعاد k تعيش فيه الرموز. مدخلان متشابهان لهما رمزان قريبان؛ التنقّل فيه يعني تغيير الخصائص التي تعلَّمت الشبكة اكتشافها.
- خطأ إعادة البناء (Reconstruction error)
- الفارق بين المخرج والمدخل، وهو هنا متوسّط الخطأ التربيعي (
MSE) على 64 بكسل. إنه الخسارة الوحيدة التي يُدنِّيها التدريب. - إزالة الضوضاء (Denoising)
- صيغة يُقدَّم فيها مدخل مُشوَّش بينما يبقى الهدف الصورة النظيفة: يتعلّم المرمّز التلقائي إزالة الضوضاء، ويصبح تمثيله أكثر متانة.
- الاستيفاء الكامن (Latent interpolation)
- اختر نقاطًا وسيطة بين رمزين وفُكَّها: تحصل على أشكال لا وجود لها في أي مجموعة بيانات. يكشف ذلك ما إذا كان الفضاء الكامن متّصلًا أم مليئًا بالثقوب.
- المرمّز التلقائي المتغيّر (Variational autoencoder, VAE)
- مرمّز تلقائي رمزه توزيع (متوسّط وتباين) بدل نقطة، مع عقوبة تشدّ الرموز حول الأصل. يصبح الفضاء الكامن سلسًا وقابلًا للأخذ منه: نموذج توليدي حقيقي.
- تقليل الأبعاد (Dimensionality reduction)
- تمثيل بيانات عالية الأبعاد (64 بكسل) بأرقام قليلة (k) مع فقدان أقلّ ما يمكن من المعلومات. المرمّز التلقائي نسخته غير الخطية؛ PCA هو النسخة الخطية.
قنوات أخرى في التعلّم العميق
- #optimizers — SGD وMomentum وAdam: سباق إلى الأدنى.
- #batch-normalization — تطبيع الحُزَم: إبقاء التفعيلات في المدى الصحيح.
- #rnn-lstm — RNN وLSTM: تذكُّر تسلسل.
- #autoencoder — المرمّز التلقائي: اضغط ثم أعِد البناء.
- #transfer-learning — التعلّم بالنقل: انطلق من شبكة مدرَّبة سلفًا.
- #gan — GAN: مزوِّر ضدّ مفتِّش