تطور واستخدامات ال CNNs ولماذا التعلم العميق؟

$$\gdef \sam #1 {\mathrm{softargmax}(#1)}$$ $$\gdef \vect #1 {\boldsymbol{#1}} $$ $$\gdef \matr #1 {\boldsymbol{#1}} $$ $$\gdef \E {\mathbb{E}} $$ $$\gdef \V {\mathbb{V}} $$ $$\gdef \R {\mathbb{R}} $$ $$\gdef \N {\mathbb{N}} $$ $$\gdef \relu #1 {\texttt{ReLU}(#1)} $$ $$\gdef \D {\,\mathrm{d}} $$ $$\gdef \deriv #1 #2 {\frac{\D #1}{\D #2}}$$ $$\gdef \pd #1 #2 {\frac{\partial #1}{\partial #2}}$$ $$\gdef \set #1 {\left\lbrace #1 \right\rbrace} $$ % My colours $$\gdef \aqua #1 {\textcolor{8dd3c7}{#1}} $$ $$\gdef \yellow #1 {\textcolor{ffffb3}{#1}} $$ $$\gdef \lavender #1 {\textcolor{bebada}{#1}} $$ $$\gdef \red #1 {\textcolor{fb8072}{#1}} $$ $$\gdef \blue #1 {\textcolor{80b1d3}{#1}} $$ $$\gdef \orange #1 {\textcolor{fdb462}{#1}} $$ $$\gdef \green #1 {\textcolor{b3de69}{#1}} $$ $$\gdef \pink #1 {\textcolor{fccde5}{#1}} $$ $$\gdef \vgrey #1 {\textcolor{d9d9d9}{#1}} $$ $$\gdef \violet #1 {\textcolor{bc80bd}{#1}} $$ $$\gdef \unka #1 {\textcolor{ccebc5}{#1}} $$ $$\gdef \unkb #1 {\textcolor{ffed6f}{#1}} $$ % Vectors $$\gdef \vx {\pink{\vect{x }}} $$ $$\gdef \vy {\blue{\vect{y }}} $$ $$\gdef \vb {\vect{b}} $$ $$\gdef \vz {\orange{\vect{z }}} $$ $$\gdef \vtheta {\vect{\theta }} $$ $$\gdef \vh {\green{\vect{h }}} $$ $$\gdef \vq {\aqua{\vect{q }}} $$ $$\gdef \vk {\yellow{\vect{k }}} $$ $$\gdef \vv {\green{\vect{v }}} $$ $$\gdef \vytilde {\violet{\tilde{\vect{y}}}} $$ $$\gdef \vyhat {\red{\hat{\vect{y}}}} $$ $$\gdef \vycheck {\blue{\check{\vect{y}}}} $$ $$\gdef \vzcheck {\blue{\check{\vect{z}}}} $$ $$\gdef \vztilde {\green{\tilde{\vect{z}}}} $$ $$\gdef \vmu {\green{\vect{\mu}}} $$ $$\gdef \vu {\orange{\vect{u}}} $$ % Matrices $$\gdef \mW {\matr{W}} $$ $$\gdef \mA {\matr{A}} $$ $$\gdef \mX {\pink{\matr{X}}} $$ $$\gdef \mY {\blue{\matr{Y}}} $$ $$\gdef \mQ {\aqua{\matr{Q }}} $$ $$\gdef \mK {\yellow{\matr{K }}} $$ $$\gdef \mV {\lavender{\matr{V }}} $$ $$\gdef \mH {\green{\matr{H }}} $$ % Coloured math $$\gdef \cx {\pink{x}} $$ $$\gdef \ctheta {\orange{\theta}} $$ $$\gdef \cz {\orange{z}} $$ $$\gdef \Enc {\lavender{\text{Enc}}} $$ $$\gdef \Dec {\aqua{\text{Dec}}}$$
🎙️ Yann LeCun

تطور ال CNNs

تتفاعل الخلايا العصبية في مخ الحيوان مع الحدود ذات اتجاه معين، وتكون مكررة في مجموعات تتفاعل مع ذات الاتجاه في كافة أنحاء مجال الرؤية.

فوكوشيما (1982) قام بتصميم شبكة عصبية تعمل بنفس الطريقة التي يعمل بها المخ. اولاً، تتكرر الخلايا العصبية في مجال الرؤية. ثانياً، هناك خلايا معقدة تجمع المعلومات من الخلايا البسيطة (التي تستخلص المعلومات بناء على الاتجاه فقط). نتيجة لذلك، تحريك الصورة سيؤدي إلى تغيير تفعيل الخلايا البسيطة، لكن لن يؤثر على التفعيل النهائي للخلايا المعقدة (التجميع الالتفافي).

استخدم لوكان (1990) الانتشار الخلفي لتدريب الشبكات العصبية الالتفافية (CNN, Convolutional Neural Network) للتعرف على الأرقام المكتوبة بخط اليد. يوجد عرض تجريبي من 1992 يظهر أن الخوارزمية قادرة على التعرف على الأرقام المكتوبة بأي أسلوب. امكانية التعرف على الأرقام باستخدام نموذج مدرب كلياً كان سبقاً جديداً في هذا الوقت. قبل ذلك، مستخرجات الخصائص كانت تستخدم اولاً، ثم يتم اضافة نموذج على الخصائص المستخلصة بعد ذلك.

نظم الـ CNN الجديدة كان لها القدرة على التعرف على أنماط/حروف متعددة في الصورة في نفس الوقت. لفعل ذلك، كان الناس يستخدمون نافذة صغيرة من الصورة كمدخل للـ CNN. تقوم تلك النافذة بمسح كل أجزاء الصورة. اذا تم تفعيل النافذة، هذا يعني ان هناك حرف/نمط ما موجود في هذا الجزء من الصورة.

لاحقاً، تم تطبيق هذه الفكرة علي التعرف علي الوجوه/الأشخاص وتنفيذ عمليات التقسيم الدلالي (تصنيف كل بيكسل في الصورة على حدة). أمثلة على ذلك تتضمن هادسيل (2009) وفارابت (2012). انتشرت تطبيقات على ذلك في الصناعة، واستخدمت في تطبيقات القيادة الآلية للسيارات مثل تعقب خطوط الطريق.

انواع خاصة من المعدات تستخدم في تدريب الCNN كانت محل اهتمام الباحثين في الثمانينات، ولكن سرعان ما قل هذا الاهتمام، ثم عاد مرة أخرى لاحقاً.

بدأت ثورة التعلم العميق (رغم أن هذا المصطلح لم يكن مستخدمًا في ذلك الوقت) ما بين 2010 الى 2013. قام الباحثون بالتركيز على ابتكار خوارزميات قادرة على تدريب شبكات CNN ضخمة بصورة أسرع. كريزيفسكي (2012) قدم شبكة AlexNet، التي كانت أضخم بكثير من كل الشبكات المستخدمة من قبل، وتم تدريبها علي قاعدة بيانات ImageNet التي تحتوي على 1.3 مليون صورة باستخدام ال GPUs. بعد التدريب لمدة أسبوعين، شبكة AlexNet كانت قادرة علي هزيمة أفضل النظم والخوارزميات المنافسة بفارق كبير – معدل خطأ على افضل خمس توقعات 16.4% مقابل 25.8%.

بعد رؤية النجاح الذي حققته شبكة AlexNet، اقتنع مجتمع رؤية الحاسب بقدرة شبكات الCNN على العمل بصورة جيدة. في حين أن كل الاوراق البحثية في الفترة من 2011 الى 2012 التي كانت تستخدم ال CNNs كان يتم رفضها، بداية من 2016 غالبية الأوراق المقبولة في الرؤية بالحاسب كانت تستخدم الـ CNNs.

علي مر السنين، ازداد عدد الطبقات المستخدمة: LeNet – 7, AlexNet – 12, VGG – 19, ResNet – 50. ولكن يجب التنازل عن ميزة للحصول على أخرى: عدد العمليات للحصول على النتيجة المطلوبة، وحجم النموذج ودقته. بناءً على ذلك، أحد الموضوعات البحثية المنتشرة حالياً هو كيفية ضغط وتقليل حجم الشبكات لتنفيذ العمليات بشكل أسرع.

التعلم العميق واستخلاص الخصائص

أظهرت الشبكات متعددة الطبقات نجاحاً بسبب قدرتها علي استغلال الهيكل التركيبي للبيانات الطبيعية. تشكل مجموعة العناصر في طبقة معينة عنصرًا جديدًا في الطبقة التالية بتركيبات هرمية. إذا قمنا بمحاكاة هذا التسلسل الهرمي كمجموعة من الطبقات وتركنا للشبكة مهمة استخلاص وتعلم الخصائص المناسبة لذلك، نكون قد كوننا ما يعرف بنموذج التعلم العميق. ومن هنا يمكن القول أن شبكات التعلم العميق هي شبكات هرمية.

معماريات التعلم العميق كانت السبب في تقدم غير مسبوق في تطبيقات الرؤية بالحاسب بدايةً من التعرف على العناصر في الصور وتحديد أماكنها بدقة، وصولاً إلى تحديد خصائص مكانية للعنصر المراد التعرف عليه في الصورة. معماريات مثل Mask-RCNN وRetinaNet كان لها دور كبير في هذا التطور.

تستخدم المعماريات المبنية علي Mask-RCNN في تجزئة العناصر، حيث تنشئ غطاء لكل نوع من العناصر في الصورة. في هذه النماذج، المدخلات المخرجات عبارة عن صور. يمكن أيضًا أن يستخدم النموذج لتجزئة المثيل، بمعنى تحديد عناصر مختلفة ولكن من ذات النوع في أي صورة. ديتيكترون Detectron هو أحد النظم التي تم تطويرها في فيسبوك للذكاء الاصطناعي، يوفر هذا النظام تصاميم مفتوحة المصدر لكافة هذه النماذج الحديثة في مجال الكشف عن عناصر الصورة.

بعض التطبيقات العملية لل CNNs يتم توظيفها في القيادة الآلية، وتحليل الصور الطبية.

علي الرغم من أن الخلفية العلمية والرياضية للتعلم العميق لم يتم فهمها بشكل كامل، إلا أنه مازال هناك بعض الاسئلة البحثية الجديرة بالاهتمام التي تتطلب المزيد من الدراسة، منها: لماذا أداء النماذج متعددة الطبقات افضل، مع العلم أنه يمكننا تقريب أي دالة رياضية بطبقتين فقط؟ لماذا تعمل شبكات الـ CNN بشكل جيد مع البيانات الطبيعية مثل الكلام، الصور، والنصوص؟ كيف يمكننا تحسين الدوال الغير محدبة non-convex بهذا الشكل الجيد؟ عملياً، وجدنا أنه حتى النماذج التي تحتوي عدد من المتغيرات اكثر من اللازم تعمل بشكل مقبول، لماذا؟

يتضمن استخلاص الخصائص نقلها إلى أبعاد أعلى، حيث عادة يمكن فصلها خطياً في تلك الأبعاد العالية بسبب زيادة عدد مستويات الفصل الممكنة في الأبعاد الأعلى.

ممارسو تعلم الآلة في العصور السابقة كانوا يستخلصون خصائص عالية الجودة بطرق يدوية. هذه الخصائص عادةً ما تكون مرتبطة بالمهمة المراد تنفيذها. بعد ذلك، يتم استخدام هذه الخصائص في نماذج الذكاء الاصطناعي. ولكن، ومع قدوم التعلم العميق، أصبحت النماذج قادرة على استخلاص خصائص عامة (غير مرتبطة بمهمة معينة) بصورة آلية. بعض الأساليب المشهورة في خوارزميات استخلاص الخصائص هي:

  • تغطية فضاء المعلومات
  • الإسقاطات العشوائية
  • المصنفات متعددة الحدود
  • دوال القواعد الشعاعية
  • آلات النووية

بسبب الطبيعة التركيبية للمعلومات، الخصائص المستخلصة لها تمثيلات هرمية ذات مستوى متصاعد من التجريد. علي سبيل المثال:

  • الصور - على أصغر وأدق نطاق، يمكن التفكير فيها كمجموعة من النقاط. تجميع هذه النقاط مع بعضها البعض ينتج حواف، تجميع الحواف ينتج عناصر متعددة الحواف، تجميع هذه العناصر ينتج أشكال غير منتظمة والتي بدورها تكون جزء من الصورة، تجميع مجموعة من هذه الأشكال ينتج الصورة كما نراها.
  • النصوص - بنفس الطريقة، هناك هرمية متأصلة في المعلومات النصية. الحروف تكون كلمات، الكلمات تكون جمل، والجمل تكون النص الذي يحكي القصة المراد حكايتها.
  • الكلام - الأصوات تكون نغمات ثم حروف ثم كلمات ثم جمل. ومن هنا نرى هرمية واضحة في تمثيل الكلام.

تعلم التمثيلات

هناك بعض الناس الذين يرفضون التعلم العميق: اذا كنا نستطيع تمثيل أي دالة باستخدام طبقتين فقط، لم الحاجة إلى طبقات كثيرة؟

علي سبيل المثال، نماذج المتجهات المتوازية (SVMs, Support Vector Machines) تبحث عن مستوي فاصل للمعلومات، بمعنى أن النتائج سوف تعتمد على المقارنة مع المعلومات المستخدمة في عملية التدريب. SVMs شبكة عصبية بسيطة مكونة من طبقتين، الطبقة الأولى تقوم بتعريف القوالب، والثانية هي مصنِف خطي. المشكلة في مغالطة الطبقتين، هي أن حجم ومدى تعقيد الطبقة الوسطى ينمو كدالة أسية، وهو ما يعني أنه للحصول على أداء جيد في مهمة أكثر صعوبة، يستلزم الأمر عمل عدد قوالب كثيرة جداً. بينما اذا قمنا بزيادة عدد الطبقات يصبح التناسب خطياً بدلاً من التناسب الاسي. هناك دائماً موائمة بين الوقت والمساحة المطلوبة.

مثال مشابه لذلك يظهر في تصميم الدوائر الكهربية لحساب دالة منطقية بطبقتين من البوابات – يمكننا حساب أي دالة منطقية بطبقتين فقط! ولكن، تعقيد وعدد البوابات المستخدمة في الطبقة الأولى سرعان ما يصبح غير منطقي للدوال المعقدة.

ما معنى “عميق”؟

  • ال SVM غير عميق ﻷنه يحتوي فقط على طبقتين
  • شجرة التصنيف غير عميقة ﻷن كل طبقة تعالج نفس مجموعة الخصائص الاصلية
  • الشبكة العميقة لها طبقات عديدة وتستخدمهم لبناء هرمية من الخصائص متزايدة التعقيد

كيف يمكن للنماذج تعلم تمثيلات (خصائص جيدة)؟

فرضية المعلومات متعددة الخصائص: المعلومات الطبيعية لها خصائص متعددة ومتشعبة في فضاء منخفض الأبعاد. مجموعة الصور الممكنة تحتوي عدد لا نهائي من الصور، مجموعة الصور “الطبيعية” هي جزء صغير منها. علي سبيل المثال: صورة شخص، مجموعة الصور الممكنة يتغير بعدد عضلات الوجه التي يمكن لهذا الشخص تحريكها، ومن ثم تغيير الصورة (تقريباً 50). مستخلص الخصائص المثالي (والغير واقعي) يمثل كل عوامل التغيير الممكنة (عضلات الوجه، مستوي الاضاءة، الخ).

أسئلة وإجابات من نهاية المحاضرة:

  • فيما يتعلق بمثال الوجه، هل يمكن لتقنيات تقليل الابعاد الاخرى (علي سبيل المثال محلل الأبعاد الأساسية Principal Component Analysis, PCA) استخلاص كل هذه الخصائص؟
  • الاجابة: سوف يعمل فقط إذا كان مستوي الخصائص عالي الأبعاد، وهو ما لم يحدث هنا.

📝 Marina Zavalina, Peeyush Jain, Adrian Pearl, Davida Kollmar
Ahmed Shahin
27 Jan 2020