الدافع وراء التعلم العميق، تاريخه، وإلهامه
🎙️ Yann LeCunخطة الدورة
- أساسيات التعلم بالخبرة، الشبكات العصبية، التعلم العميق
- الانتشار الخلفي، والمكونات البنائية
- الشبكات العصبية الالتفافية وتطبيقاتها
- المزيد من نماذج التعلم العميق
- حيل للتنظيم / حيل للتحسين / فهم كيفية عمل التعلم العميق
- النماذج المبنية على مفهوم الطاقة
- التعلم بالإشراف الذاتي وما بعده
الإلهام وراء التعلم العميق وتاريخه
مفهوم التعلم العميق مستوحى من الدماغ، ولكن ليست كل تفاصيل الدماغ ذات علاقة. يمكن مقارنة ذلك بالطائرات المستوحاة من الطيور. مبدأ الطيران هو نفسه ولكن التفاصيل مختلفة للغاية.
يعود تاريخ التعلم العميق إلى مجال أصبح اسمه الآن علم الـ cybernetics أي علم التحكم الآلي. بدأ هذا العلم في الأربعينيات مع McCulloch وPitts، حيث توصلوا إلى فكرة أن الخلايا العصبية هي وحدات ذات قيم محدودة وحالتي تشغيل وإيقاف. يمكنك بناء دائرة منطقية (boolean) من خلال ربط تلك الخلايا مع بعضها البعض وإجراء استدلال منطقي. إن الدماغ في الأساس هو آلة استدلال منطقي لأن الخلايا العصبية ثنائية القيمة (binary). تقوم الخلايا العصبية بحساب مجموعًا موزونًا للمدخلات وتقارنه بالحد الأدنى: إذا كانت القيمة أعلى من الحد الأدنى فإن الخلايا العصبية تبدأ في العمل، أم إذا كانت أقل من ذلك، فإنها تتوقف. وهذا شرح مبسط لكيفية عمل الشبكات العصبية.
في عام 1947، وردت لدونالد هب فكرة أن الخلايا العصبية في الدماغ تتعلم من خلال تعديل قوة الروابط بين الخلايا العصبية، وهو ما يسمى بالتعلم المفرط: إذا تم تشغيل خليتين عصبيتين معًا، فإن الاتصال المرتبط بينهما يزيد، أما إذا لم يعملا معًا ، فإن الاتصال يقل.
في وقت لاحق من عام 1948، اقترح نوربرت وينر علم الـ cybernetics، والذي يقوم على فكرة أنه من خلال امتلاك أنظمة مزودة بأجهزة استشعار ومشغلات، يكون لديك حلقة تغذية مرتدة feedback loop ونظام ينظم نفسه ذاتيا self-regulatory system. كافة قواعد ردود فعل السيارة تأتي من هذا العمل.
في عام 1957، اقترح فرانك روزنبلات خوارزمية الـ Perceptron، وهي خوارزمية تعليمية تعدل أوزان الشبكات العصبية البسيطة جدًا.
بشكل عام، وُلدت فكرة بناء آلات فكرية تحاكي الخلايا العصبية في الأربعينيات من القرن الماضي، ثم انطلقت في الخمسينيات من القرن الماضي، وانتهت تمامًا في أواخر الستينيات. الأسباب الرئيسية لانقراض هذا الحقل من الأبحاث في عام 1960 هي:
- استخدم الباحثون الخلايا العصبية ثنائية القيمة. ومع ذلك، فإن طريقة عمل الانتشار الخلفي للأخطاء (backpropagation) هو استخدام دالة تفعيل متصلة (continuous activation functions). في ذلك الحين، لم يكن لدى الباحثين فكرة استخدام الخلايا العصبية المتصلة ولم يعتقدوا أنهم يستطيعون التدريب باستخدام الانحدارات (gradients) لأن الخلايا العصبية ثنائية القيمة ولا يمكن اشتقاقها.
- استخدام خلايا عصبية متصلة تتطلب أن يقوم المرء بحساب حاصل ضرب دالة تفعيل الخلية بوزن ما للحصول على مساهمة تلك القيمة في المجموع الموزون. ولكن قبل عام 1980 كانت عملية ضرب عددين وخاصة أعداد الفاصلة العائمة (floating-point numbers) بطيئة للغاية مما أدى إلى تجنب استخدام الخلايا العصبية المتصلة.
انطلق التعلم العميق مرة أخرى في عام 1985 مع ظهور الانتشار الخلفي للأخطاء. في عام 1995، توقف المجال مرة أخرى وتخلّى مجتمع التعلم الآلي عن فكرة الشبكات العصبية. في أوائل عام 2010، بدأ الناس في استخدام شبكات الخلايا العصبية للتعرف على الكلام وحصل تحسن كبير في الأداء، وبعد ذلك انتشرت شبكات الخلايا العصبية على نطاق واسع في المجال التجاري. في عام 2013، بدأ مجال رؤية الكمبيوتر (computer vision) يالتحول إلى استخدام الشبكات الخلايا العصبية. وحدث نفس الانتقال في مجال معالجة اللغة الطبيعية (natural language processing) في عام 2016. وقريباً، ستحدث ثورات مماثلة في مجال الروبوتات والتحكم والعديد من المجالات الأخرى.
التعلم بالإشراف
90 $\%$ من تطبيقات التعلم العميق تستخدم التعلم بالإشراف (Supervised Learning). في هذا النوع من التعلم نقوم من خلاله بجمع مجموعة من المدخلات والمخرجات. يتم إدخال المدخلات في آلة لمعرفة المخرجات. عندما تكون المخرجات صحيحة، لا نقوم بأي شيء. ولكن إذا كان المخرج خاطئًا ، يمكنك تعديل معاملات الجهاز وتصحيحها للحصول على النتيجة المطلوبة. السؤال هنا هو كيف يمكننا تحديد الاتجاه ومقدار تعديل هذه المعاملات، وهذا يعود بنا إلى موضوع حساب الانحدارات والانتشار الخلفي.
التعلم بالإشراف ينبع من مفهومي الـ Perceptron و الـ Adaline. يقوم مفهوم Adaline على نفس النموذج مع مدخلات موزونة: عندما تكون أعلى من الحد الأدنى يتم تشغيلها، ولكن إذا كانت أقل منه فتتوقف عن العمل. في حين أن مفهوم الـ Perceptron يستخدم لوصف الشبكة العصبية المكونة من طبقتين حيث تكون الطبقة الثانية قابلة للتدريب والطبقة الأولى ثابتة. في معظم الأحيان ، يتم تحديد الطبقة الأولى بشكل عشوائي وهذا ما يسمونه الطبقات الترابطية (associative layers).
تاريخ التعرف على الأنماط ومقدمة في الإنحدار التدريجي
ما سبق هو الأساس لمفهوم التعرف على الأنماط (pattern recognition) قبل تطور مجال التعلم العميق. يتكون نموذج التعرف على الأنماط عادة من مستخرج للخواص المميزة والمصنف القابل للتدريب. يتم إدخال المدخلات في مستخرج الميزات لاستخراج الخصائص المفيدة من المدخلات مثل اكتشاف العين عندما يكون الغرض هو التعرف على الوجه. بعد ذلك، يتم تغذية متجه الصفات المميزة إلى المصنف القابل للتدريب لحساب المجموع الموزون ومقارنته بالحد الأدنى. يمكن أن يكون المصنف القابل للتدريب عبارة عن perceptron أو شبكة عصبية (neural network) واحدة. ولكن تكمن المشكلة في أنه يجب تصميم مستخرج الميزات يدويًا. مما يعني أن التعرف على الأنماط / رؤية الكمبيوتر يركز على مستخرج الميزات مع الأخذ في الاعتبار كيفية تصميمه لمشكلة معينة، ولا يهتم كثيرًا ببناء مُصنف قابل للتدريب.
بعد ظهور التعلم العميق وتطوره، تغيرت العملية المكونة من مرحلتين إلى عدد متسلسل من الوحدات. تحتوي كل وحدة على معاملات غير خطية وقابلة للضبط. تلك المعاملات يتم جمعها وبناء عدد من الطبقات منها. هذا هو سبب تسميته “التعلم العميق”. السبب في استخدام معاملات غير خطية بدلاً من الخطية هو أن كل طبقتين خطيتين يمكن أن تكونا طبقة خطية واحدة لأن حاصل تركيب عمليتين خطيتين هي عملية خطية أيضًا.
قد يكون أبسط نموذج متعددة الطبقات مع معاملات غير خطية وقابلة للضبط هو الآتي: يتم تمثيل المدخلات كمتجه مثل صورة أو صوت. يتم ضرب هذا الإدخال في مصفوفة الأوزان التي تكون معاملاتها قابلةً للضبط. بعد ذلك، يتم تمرير كل متجه ناتج عبر دالة غير خطية مثل ReLU. بتكرار هذه العملية تتكون لدينا شبكة عصبية أساسية. السبب وراء تسميتها بالشبكة العصبية هو أن هذه البنية تعمل على حساب المجموع الموزون للمدخلات مقابل صفوف المصفوفة.
بإمكاننا الآن العودة إلى موضوع التعلم بالإشراف، حيث نقارن الناتج من العملية مع المخرجات التي نهدف الوصول لها، ثم نحسن من دالة الهدف (objective function) وفي مقدار الخسارة، أي المسافة/العقوبة/الاختلاف بين النتيجة والهدف. ثم نحسب متوسط دالة التكلفة هذه على كافة بيانات التدريب. هذا هو الهدف الذي نريد تقليله. بمعنى آخر، نريد إيجاد قيمة معاملات تقلل قيمة هذا المتوسط.
يمكننا التقليل من قيمة المتوسط عن طريق حساب الانحدار. على سبيل المثال، إذا فقدنا الطريق فوق جبل ناعم في ليلة ضبابية وأردنا الذهاب إلى القرية في الوادي. يمكن أن تكون إحدى الطرق هي الالتفاف ومعرفة الطريقة الأكثر انحدارًا هي النزول ثم اتخاذ خطوة صغيرة للأسفل. هذا الاتجاه هو انحدار (سلبي). كل ذلك يعد صحيحًا بعد افتراض أن الوادي محدب، وأنه بالإمكان الوصول إلى الوادي.
الطريقة الأكثر فعالية تسمى الانحدار التدريجي العشوائي (Stochastic Gradient Descent) واختصارها SGD. نظرًا لأننا نريد تقليل متوسط الخسارة خلال مجموعة التدريب، فإننا نأخذ عينة واحدة أو مجموعة صغيرة من العينات ونحسب الخطأ، ثم نقوم بعملية الانحدار التدريجي. بعد ذلك ، نأخذ عينة جديدة والتي ينتج عنها قيمة جديدة للخطأ، ثم نعيد عملية الانحدار والذي قد تكون في اتجاه آخر مختلف. اثنان من الأسباب الرئيسية لاستخدام SGD هو أنه يساعد النموذج على الوصول للقيمة المطلوبة سريعًا إذا كانت مجموعة التدريب كبيرة جدًا، كما يؤدي إلى التعميم بشكل أفضل، مما يعني الحصول على أداء مشابه ولكن على مجموعات آخرى من البيانات.
حساب التدرجات بواسطة الانتشار الخلفي
حساب التدرجات عن طريق الانتشار الخلفي هو تطبيق عملي لقاعدة السلسلة (chain rule). معادلة الانتشار الخلفي لانحدار المدخلات هي كالآتي:
\[\begin{aligned} \frac{\partial C}{\partial \boldsymbol{x}_{i - 1}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial \boldsymbol{x}_i}{\partial \boldsymbol{x}_{i - 1}} \\ \frac{\partial C}{\partial \boldsymbol{x}_{i - 1}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial f_i(\boldsymbol{x}_{i - 1}, \boldsymbol{w}_i)}{\partial \boldsymbol{x}_{i - 1}} \end{aligned}\]معادلة الانتشار الخلفي لتدرجات الوزن كما يلي:
\[\begin{aligned} \frac{\partial C}{\partial \boldsymbol{w}_{i}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial \boldsymbol{x}_i}{\partial \boldsymbol{w}_{i}} \\ \frac{\partial C}{\partial \boldsymbol{w}_{i}} &= \frac{\partial C}{\partial \boldsymbol{x}_i}\frac{\partial f_i(\boldsymbol{x}_{i - 1}, \boldsymbol{w}_i)}{\partial \boldsymbol{w}_{i}} \end{aligned}\]لاحظ أنه بدلاً من المدخلات العددية، ستكون المدخلات عبارة عن متجهات، أو بشكل عام، مدخلات متعددة الأبعاد. يسمح لك الانتشار الخلفي بحساب مشتقة الفرق في المخرجات التي تريدها والمخرجات التي تحصل عليها (وهي قيمة دالة الهدف) مقابل أي قيمة من داخل الشبكة. أخيرًا، يعد الانتشار الخلفي ضروريًا لأنه ينطبق على طبقات متعددة.
من المهم النظر في كيفية تفسير المدخلات. على سبيل المثال، قد تتطلب الصورة 256\(\times\)256 مصفوفة قيمتها 200,000. هذه مصفوفات تعد ضخمة وستحتاج طبقات الشبكة العصبية للتعامل معها. ولكن من غير العملي استخدام مثل هذه المصفوفات. لذلك، من المهم وضع فرضية حول بنية المصفوفة.
التمثيل الهرمي للقشرة المرئية
وضحت لنا تجارب فوكوشيما كيفية تفسير دماغنا للمدخلات إلى أعيننا. باختصار، حيث اكتشف بأن الخلايا العصبية الموجودة في مقدمة شبكية العين تقوم بالضغط على المدخلات (المعروفة باسم contrast normalization) وتنتقل الإشارة من أعيننا إلى الدماع. ثم تتم معالجة الصورة على مراحل، ويتم تنشيط بعض الخلايا العصبية لفئات معينة. وبالتالي، فإن القشرة البصرية تتعرف على الأنماط بطريقة هرمية.
التجارب التي قام فيها الباحثون بدس أقطاب كهربائية في مناطق معينة من القشرة البصرية وتحديداً منطقة V1 التي جعلت الباحثين يدركون أن بعض الخلايا العصبية تتفاعل مع عناصر معينة ضمن مساحة ضيقة جدًا من المجال البصري، ولاحظوا أمرًا مماثلاً مع الخلايا العصبية المجاورة والمناطق المحيطة في المجال البصري. بالإضافة إلى ذلك، وجد الباحثون بأن الخلايا العصبية التي تتفاعل مع نفس المجال البصري، تتفاعل أيضًا مع أنواع مختلفة من الحواف بطريقة منظمة (على سبيل المثال، الحواف الرأسية أو الأفقية). من المهم أيضًا التنويه بنظرية أن العملية المرئية هي في الأساس عملية تغذية أمامية (feed forward). وبالتالي ، تتم عملية التعرف والإدراك بشكل سريع بدون بعض عمليات الاتصال المتكررة.
📝 Yunya Wang, SunJoo Park, Mark Estudillo, Justin Mae
Haya Alsharif
27 Jan 2020