Professional Documents
Culture Documents
تأليف:
آ ستون زانغ وآخرون
ترجمة:
د .عالء طعيمة
على مدى السنوات القليلة الماضية ،طور فريق من علماء أمازون كتاباً " Dive into Deep
"Learningيكتسب شعبية بين الطالب والمطورين الذين ينجذبون إلى مجال التعلم العميق
المزدهر ،وهو مجموعة فرعية من التعلم اآللي تركز على الشبكات العصبية االصطناعية واسعة
النطاق.
عند انتهائي من قراءه هذا الكتاب ،احببت ان اترجم هذا الكتاب وأشارككم هذه الترجمة الن
هناك عدد من األشياء الرائعة حول هذا الكتاب وأكثر ما يعجبني هو أنه يغطي كل مجاالت التعلم
العميق تقريبًا مثالً للمبتدئين هناك فصول مثل الشبكات العصبية والبيرسيبترون متعدد الطبقات
واالنحدار والتصنيف باإلضافة الى المفاهيم األساسية من الجبر الخطي ،وحساب التفاضل
والتكامل ،واالحتمال الى فصول متقدمة مثل الشبكات العصبية االلتفافية ،CNNتم تضمين
الشبكات العصبية المتكررة RNNوالرؤية الحاسوبية CVومعالجة اللغات الطبيعية NLP
أيضًا.
هذا كتاب تفاعلي مفتوح المصدر مقدميف شكل فريد يدمج النص والرياضيات والكود،
ويدعم اآلن أطر برمجة TensorFlowو PyTorchو ،Apache MXNetوالتي تمت
صياغتها بالكامل من خالل .Jupyter Notebook
يمكن تقسيم الكتاب إلى ثالثة أجزاء تقريبًا ،لقد قمنايف الوقت الحالي بترجمة الجزء األول
والذي يشمل األساسيات والمقدمات وان شاء اللهيف المستقبل القريب سنقوم بنشر الجزء الثاني
والذي يشمل التقنيات الحديثة للتعلم العميق وبعده الجزء الثالث والذي يشمل مواضيع مثل
الرؤية الحاسوبية ومعالجة اللغات الطبيعية.
لقد اخترت كتاب " "Dive into Deep Learningلما رأيته من جودة هذا الكتاب،
وللمنهجية التي اتبعها المؤلفونيف ترتيبه وبساطة شرحه .لقد حاولت قدر المستطاع ان اخرج
بترجمة ذات جودة عالية ،ومع هذا يبقى عمالً بشرياً يحتمل النقص ،فاذا كان لديك أي مالحظات
حول هذا الكتاب ،فال تتردد بمراسلتنا عبر بريدنا االلكتروني . alaa.taima@qu.edu.iq
نأمل ان يساعد هذا الكتاب كل من يريد ان يدخليف مجال التعلم العميق ومساعدة القارئ
العربي على تعلم هذا المجال .اسأل الله التوفيقيف هذا العمل ألثراء المحتوى العربي الذي يفتقر
أشد االفتقار إلى محتوى جيد ورصينيف مجال الذكاء االصطناعي وتعلم االلة والتعلم العميق.
ونرجو لك االستمتاع مع التعلم العميق وال تنسونا من صالح الدعاء.
قبل بضع سنوات فقط ،لم يكن هناك جحافل من علماء التعلم العميق deep learning
يطورون منتجات وخدمات ذكيةيف الشركات الكبرى والشركات الناشئة .عندما دخلنا هذا
المجال ،لم يكن التعلم اآللي machine learningيتصدر عناوين الصحف اليومية .لم يكن
لدى والدينا أي فكرة عن ماهية التعلم اآللي ،ناهيك عن سبب تفضيلنا له على مهنةيف الطب أو
القانون .ك ان التعلم اآللي تخصصًا أكاديميًايف السماء الزرقاء اقتصرت أهميته الصناعية على
مجموعة ضيقة من تطبيقات العالم الحقيقي ،بمايف ذلك التعرف على الكالم speech
recognitionوالرؤية الحاسوبية .computer visionعالوة على ذلك ،تطلب العديد من هذه
التطبيقات قدرًا كبيرًا من المعرفة بالمجال لدرجة أنه غالبًا ما كان يُنظر إليها على أنها مناطق
منفصلة تمامًا كان التعلم اآللي مكونًا صغيرًا لها.يف ذلك الوقت ،كانت الشبكات العصبية neural
- networksأسالف أساليب التعلم العميق التي نركز عليهايف هذا الكتاب -تعتبر بشكل عام
عفا عليها الزمن.
في السنوات القليلة الماضية فقط ،فاجأ التعلم العميق العالم ،مما أدى إلى تقدم سريعيف
مجاالت متنوعة مثل لرؤية الحاسوبية ،computer visionومعالجة اللغة الطبيعية natural
،language processingوالتعرف التلقائي على الكالم ،automatic speech recognition
والتعلم المعزز ،reinforcement learningوالمعلوماتية الطبية الحيوية biomedical
.informaticsعالوة على ذلك ،أدى نجاح التعلم العميقيف العديد من المهام ذات األهمية
العملية إلى تحفيز التطوراتيف التعلم اآللي النظري واإلحصاءات .مع هذه التطوراتيف متناول
اليد ،يمكننا اآلن بناء سيارات تقود نفسها باستقاللية أكثر من أي وقت مضى (واستقاللية أقل
مما قد تعتقده بعض الشركات) ،أنظمة الرد الذكية التي تقوم تلقائيًا بصياغة معظم رسائل البريد
اإللكتروني العادية ،مما يساعد الناس مساعدة الناس على الخروج من البريد الوارد الكبير بشكل
قمعي ،ووكالء برمجيات يهيمنون على أفضل البشريف العالميف ألعاب الطاولة مثل ،Goوهو
إنجاز كان يُعتقديف السابق أنه يبعد عقودًا .بالفعل ،تمارس هذه األدوات تأثيرات واسعة النطاق
على الصناعة والمجتمع ،وتغير طريقة صناعة األفالم ،وتشخيص األمراض ،وتلعب دورًا متزايدًا
في العلوم األساسية -من الفيزياء الفلكية إلى علم األحياء.
يمثل هذا الكتاب محاولتنا لجعل التعلم العميق سهل المنال ،ويعلمك المفاهيم والسياق
والبرمجة.
HTML
لكي تصل أي تقنية حوسبة إلى تأثيرها الكامل ،يجب أن تكون مفهومة جيدًا وموثقة جيدًا
ومدعومة بأدوات ناضجة وجيدة الصيانة .يجب أن تكون األفكار الرئيسية موجزة بوضوح ،مما
يقلل من وقت اإلعداد الالزم لتحديث الممارسين الجدد .يجب أن تقوم المكتبات الناضجة
بأتمتة المهام الشائعة ،ويجب أن تسهل التعليمات البرمجية النموذجية على الممارسين تعديل
التطبيقات الشائعة وتطبيقها وتوسيعها لتناسب احتياجاتهم .خذ تطبيقات الويب الديناميكية
كمثال .على الرغم من وجود عدد كبير من الشركات ،مثل ،Amazonالتي طورت تطبيقات
ويب ناجحة تعتمد على قواعد البياناتيف التسعينيات ،فقد تم تحقيق إمكانات هذه التكنولوجيا
لمساعدة رواد األعمال المبدعين إلى درجة أكبر بكثيريف السنوات العشر الماضية ،ويرجع ذلك
جزئيًا إلى التطور من األطر القوية والموثقة جيدًا.
يمثل اختبار إمكانات التعلم العميق تحديات فريدة ألن أي تطبيق فردي يجمع بين مختلف
التخصصات .يتطلب تطبيق التعلم العميق فهمًا متزامنًا ( )1لدوافع طرح مشكلة بطريقة معينة؛
( )2الشكل الرياضي لنموذج معين )3( .خوارزميات التحسين لتالئم النماذج مع البيانات؛ ()4
المبا دئ اإلحصائية التي تخبرنا متى يجب أن نتوقع أن تعمم نماذجنا على البيانات غير المرئية
والطرق العملية للتصديق على أنها،يف الواقع ،معممة؛ و ( )5التقنيات الهندسية المطلوبة لتدريب
النماذج بكفاءة ،والتغلب على مخاطر الحوسبة الرقمية وتحقيق أقصى استفادة من األجهزة
المتاحة .يمثل تدريس كل من مهارات التفكير النقدي المطلوبة لصياغة المشكالت ،والرياضيات
لحلها ،واألدوات البرمجية لتنفيذ هذه الحلول كلهايف مكان واحد تحديات هائلة .هدفنايف هذا
الكتاب هو تقديم مورد موحد إلطالع الممارسين المحتملين على السرعة.
عندما بدأنا مشروع الكتاب هذا ،لم تكن هناك موارد ( )1ظلت محدثةيف نفس الوقت؛ ()2
تغطية اتساع نطاق ممارسات التعلم اآللي الحديثة بعمق تقني كافٍ؛ و ( )3عرض معشق للجودة
التي يتوقعها المرء من كتاب مدرسي مع الكود النظيف القابل للتشغيل الذي يتوقعه المرء من
برنامج تعليمي عملي .لقد وجدنا الكثير من أمثلة التعليمات البرمجية لكيفية استخدام إطار عمل
تعليمي عميق معين (على سبيل المثال ،كيفية إجراء الحوسبة الرقمية األساسية باستخدام
المصفوفاتيف )TensorFlowأو لتنفيذ تقنيات معينة (على سبيل المثال ،مقتطفات التعليمات
البرمجية لـ LeNetو AlexNetو ResNetوما إلى ذلك) المتناثرة عبر العديد من منشورات
المدونة ومستودعات .GitHubومع ذلك ،ركزت هذه األمثلة عادةً على كيفية تنفيذ نهج معين،
لكنها استبعدت مناقشة سبب اتخاذ قرارات خوارزمية معينة .بينما ظهرت بعض الموارد التفاعلية
بشكل متقطع لمعالجة موضوع معين ،على سبيل المثال ،منشورات المدونة الجذابة المنشورة
على موقع الويب Distillأو المدونات الشخصية ،فإنها تغطي فقط موضوعات محددةيف التعلم
العميق ،وغالبًا ما تفتقر إلى التعليمات البرمجية المرتبطة .من ناحية أخرى ،بينما ظهرت العديد
من كتب التعلم العميق -على سبيل المثال ،)2016 ،Goodfellow et al.( ،والتي تقدم
مسحًا شامالً ألساسيات التعلم العميق -فإن هذه الموارد ال تقرن األوصاف بإدراك المفاهيميف
الكود .وأحيانًا يترك القراء جاهلين بكيفية تنفيذها .عالوة على ذلك ،يتم إخفاء عدد كبير جدًا
من الموارد خلف جدران حظر االشتراك المدفوعة لمقدمي الدورات التدريبية التجارية.
شرعنايف إنشاء مورد يمكن ( )1أن يكون متاحًا للجميع؛ ( )2توفر عمقًا تقنيًا كافيًا لتوفير
نقطة انطالق على الطريق لتصبح بالفعل عالمًا تطبيقيًا للتعلم اآللي؛ ( )3تضمين التعليمات
البرمجية القابلة للتشغيل ،والتي توضح للقراء كيفية حل المشكالت عمليًا؛ ( )4السماح
بالتحديثات السريعة ،سواء من جانبنا أو من قبل المجتمع communityككل؛ و ( )5استكماله
بمنتدى للمناقشة التفاعلية للتفاصيل التقنية ولإلجابة على األسئلة.
كانت هذه األهدافيف كثير من األحيان متعارضة .من األفضل إدارة المعادالت والنظريات
واالستشهادات ووضعهايف .LaTeXأفضل وصف للكوديف بايثون .وصفحات الويب أصلية
بتنسيق HTMLو .JavaScriptعالوة على ذلك ،نريد أن يكون المحتوى متاحًا سواء أكان
رمزًا قابالً للتنفيذ أو كتابًا ماديًا أو ملف PDFقابل للتنزيل أو على اإلنترنت كموقع ويب .لم يبدُ
أي سير عمل مناسبًا لهذه المطالب ،لذلك قررنا تجميع مهامنا الخاصة (القسم .)20.6اتفقنا
على GitHubلمشاركة المصدر وتسهيل مساهمات المجتمع؛ دفاتر جوبيتر Jupyter
notebooksلخلط الكود والمعادالت والنص؛ Sphinxكمحرك تقديم؛ و Discourseكمنصة
مناقشة.يف حين أن نظامنا ليس مثاليًا ،إال أن هذه الخيارات تقدم حالً وسطًا بين االهتمامات
المتنافسة .نعتقد أن كتاب Dive into Deep Learningقد يكون الكتاب األول الذي يتم
نشره باستخدام سير العمل المتكامل integrated workflowهذا.
تقدم العديد من الكتب المدرسية المفاهيم على التوالي ،وتغطي كل منها بتفصيل شامل .على
سبيل المثال ،يُعلِّم الكتاب المدرسي الممتاز لكريس بيشوب Chris Bishop’s excellent
)2006 ،Bishop( textbookكل موضوع بدقة شديدة لدرجة أن الوصول إلى فصل االنحدار
الخطي يتطلب قدرً ا غير ضئيل من العمل .بينما يحب الخبراء هذا الكتاب على وجه التحديد
لشموله ،بالنسبة للمبتدئين الحقيقيين ،فإن هذه الخاصية تحد من فائدته كنص تمهيدي.
في هذا الكتاب ،نقوم بتدريس معظم المفاهيميف الوقت المناسب .بمعنى آخر ،سوف تتعلم
المفاهيميف نفس اللحظة التي تكون فيها ضرورية لتحقيق بعض األهداف العملية .بينما نأخذ
بعض الوقتيف البداية لتدريس المقدمات األساسية ،مثل الجبر الخطي linear algebra
واالحتمالية ،probabilityنريدك أن تتذوق الرضا بتدريب نموذجك األول قبل القلق بشأن
المزيد من المفاهيم الباطنية .esoteric concepts
بصرف النظر عن بعض النوتبوكس notebooksاألولية التي توفر دورة تدريبية مكثفةيف
الخلفية الرياضية األساسية ،يقدم كل فصل الحق عددًا معقولًا من المفاهيم الجديدة ويوفر
العديد من أمثلة العمل المستقلة ،باستخدام مجموعات بيانات حقيقية .قدم هذا تحديا تنظيميا.
قد يتم بشكل منطقي تجميع بعض الطرز معًايف دفتر مالحظات واحد .وأفضل طريقة لتدريس
بعض األفكار هي تنفيذ عدة نماذج متتالية .من ناحية أخرى ،هناك ميزة كبيرة لاللتزام بسياسة
مثال عملي واحد ،نوتبوك واحد :هذا يجعل األمر سهالً قدر اإلمكان بالنسبة لك لبدء مشاريع
البحث الخاصة بك من خالل االستفادة من التعليمات البرمجية الخاصة بنا .فقط انسخ النوتبوك
وابدأيف تعديله.
طوال الوقت ،نقوم بإدخال الكود القابل للتشغيل مع مواد الخلفية حسب الحاجة .بشكل عام،
نخطئيف جانب إتاحة األدوات قبل شرحها بالكامل (غالبًا ما يتم ملء الخلفية الحقًا) .على سبيل
المثال ،قد نستخدم التدرج االشتقاقي العشوائي stochastic gradient descentقبل شرح
سبب فائدته أو تقديم حدس حول سبب نجاحه .يساعد هذايف إعطاء الممارسين الذخيرة الالزمة
لحل المشكالت بسرعة ،على حساب مطالبة القارئ بالثقة بنايف بعض القرارات التنظيمية.
يعلم هذا الكتاب مفاهيم التعلم العميق من الصفر.يف بعض األحيان ،نتعمقيف التفاصيل
الدقيقة حول النماذج التي عادةً ما تكون مخفية عن المستخدمين بواسطة أطر التعلم العميق
الحديثة .يظهر هذا بشكل خاصيف البرامج التعليمية األساسية ،حيث نريد منك أن تفهم كل ما
يحدثيف طبقة أو مُحسِّن معين.يف هذه الحاالت ،غالبًا ما نقدم نسختين من المثال :أحدهما ننفذ
فيه كل شيء من البداية ،ونعتمد فقط على دوال تشبه NumPyوالتمايز التلقائي automatic
،differentiationومثال عملي أكثر ،حيث نكتب كودًا موجزًا باستخدام واجهات برمجة
التطبيقات عالية المستوى high-level APIلـ أطر التعلم العميق .بعد شرح كيفية عمل بعض
المكونات ،نعتمد على واجهة برمجة التطبيقات عالية المستوىيف البرامج التعليمية الالحقة.
يمكن تقسيم الكتاب إلى ثالثة أجزاء تقريبًا ،مع التركيز على المقدمات وتقنيات التعلم العميق
والموضوعات المتقدمة التي تركز على األنظمة والتطبيقات الحقيقية (الشكل .)1
الجزء األول :األساسيات والمقدمات .يقدم القسم االول مقدمة للتعلم العميق .بعد •
ذلك،يف القسم الثاني ،نطلعك بسرعة على المتطلبات األساسية الالزمة للتعلم العميق
العملي ،مثل كيفية تخزين البيانات ومعالجتها ،وكيفية تطبيق العمليات العددية
المختلفة بناءً على المفاهيم األساسية من الجبر الخطي ،وحساب التفاضل والتكامل،
واالحتمال .يغطي القسم الرابع والقسم والخامس المفاهيم والتقنيات األساسيةيف
التعلم العميق ،بمايف ذلك االنحدار regressionوالتصنيف classification؛ نماذج
خطية linear models؛ البيرسبيترون متعددة الطبقات .multilayer perceptron
وفرط التجهيز overfittingوالتنظيم regularization.
الجزء الثاني :تقنيات التعلم العميق الحديثة .يصف القسم السادس المكونات •
الحسابية الرئيسية ألنظمة التعلم العميق ويضع األساس لتطبيقاتنا الالحقة لنماذج أكثر
تعقيدًا .بعد ذلك ،يقدم القسم السابع والقسم الثامن الشبكات العصبية التالفيفية
) ،(CNNsوهي أدوات قوية تشكل العمود الفقري لمعظم أنظمة الرؤية الحاسوبية
الحديثة .وبالمثل ،يقدم القسم التاسع والقسم العاشر الشبكات العصبية المتكررة
) ،(RNNsوهي نماذج تستغل البنية المتسلسلة (على سبيل المثال ،الزمنية)يف
البيانات وتستخدم بشكل شائع لمعالجة اللغة الطبيعية والتنبؤ بالسالسل الزمنية.يف
القسم الحادي عشر ،قدمنا فئة جديدة نسبيًا من النماذج تعتمد على ما يسمى بآليات
االنتباه attention mechanismsالتي حلت محل RNNsباعتبارها البنية المهيمنة
لمعظم مهام معالجة اللغة الطبيعية .ستُطلعك هذه األقسام على أقوى األدوات
واألدوات العامة المستخدمة على نطاق واسع من قبل ممارسي التعلم العميق.
الجزء الثالث :قابلية التوسع والكفاءة والتطبيقات.يف القسم الثاني عشر ،نناقش العديد •
من خوارزميات التحسين الشائعة المستخدمة لتدريب نماذج التعلم العميق .بعد ذلك،
في القسم الثالث عشر ،ندرس العديد من العوامل الرئيسية التي تؤثر على األداء
الحسابي لكود التعلم العميق .بعد ذلك،يف القسم الرابع عشر ،نوضح التطبيقات
الرئيسية للتعلم العميقيف الرؤية الحاسوبية .أخيرًا،يف القسم الخامس عشر والقسم
السادس عشر ،نوضح كيفية التدريب المسبق لنماذج تمثيل اللغة وتطبيقها على مهام
معالجة اللغة الطبيعية .هذا الجزء متاح على اإلنترنت.
تتميز معظم أقسام هذا الكتاب بكود قابل للتنفيذ .نعتقد أن أفضل طريقة لتطوير بعض
البديهيات هي التجربة والخطأ ،trial and errorوتعديل الكود بطرق صغيرة ومراقبة النتائج.
من الناحية المثالية ،قد تخبرنا النظرية الرياضية األنيقة بدقة كيفية تعديل الكود الخاص بنا لتحقيق
النتيجة المرجوة .ومع ذلك ،يجب على ممارسي التعلم العميق اليوم أن يسيروايف كثير من األحيان
حيث ال توجد نظرية قوية توفر التوجيه .على الرغم من أفضل محاوالتنا ،ال تزال التفسيرات
الرسمية لفعالية التقنيات المختلفة غير متوفرة ،ألن الرياضيات لتوصيف هذه النماذج يمكن أن
تكون صعبة للغاية ،ألن التفسير يعتمد على األرجح على خصائص البيانات التي تفتقر حاليًا إلى
تعريفات واضحة ،وألن التحقيق الجاد حول هذه الموضوعات مؤخرًا إلى مستوى عالٍ .نأمل أنه
مع تقدم نظرية التعلم العميق ،ستوفر كل طبعة مستقبلية من هذا الكتاب رؤى تتفوق على تلك
المتاحة حاليًا.
لتجنب التكرار غير الضروري ،نقوم بتغليف بعض الدوال والفئات األكثر استخدامًا واستيرادًا
في حزمة .d2lطوال الوقت ،نقوم بتمييز كتل التعليمات البرمجية (مثل الدوال أو الفئات أو
مجموعة عبارات االستيراد) باستخدام #@saveلإلشارة إلى أنه سيتم الوصول إليها الحقًا عبر
حزمة .d2lنقدم نظرة عامة مفصلة عن هذه الدوال والفئاتيف القسم .20.8حزمة d2l
خفيفة الوزن وتتطلب فقط التبعيات التالية:
#@save
import collections
import hashlib
import inspect
import math
import os
import random
import re
import shutil
import sys
import tarfile
import time
import zipfile
from collections import defaultdict
import pandas as pd
import requests
from IPython import display
from matplotlib import pyplot as plt
from matplotlib_inline import backend_inline
]__d2l = sys.modules[__name
يعتمد معظم الكوديف هذا الكتاب على ،TensorFlowوهو إطار مفتوح المصدر للتعلم
العميق يتم اعتماده على نطاق واسعيف الصناعة ويحظى بشعبية بين الباحثين .اجتازت جميع
التعليمات البرمجية الموجودةيف هذا الكتاب االختبارات بموجب أحدث إصدار ثابت من
.TensorFlowومع ذلك ،نظرًا للتطور السريعيف التعلم العميق ،فقد ال تعمل بعض التعليمات
البرمجيةيف النسخة المطبوعة بشكل صحيحيف اإلصدارات المستقبلية من .TensorFlowنحن
نخطط لتحديث النسخة عبر اإلنترنت.يف حالة مواجهة أي مشاكل ،يرجى الرجوع إلى التثبيت
لتحديث التعليمات البرمجية وبيئة وقت التشغيل.
#@save
import numpy as np
import tensorflow as tf
مرتبطًا بهذا الكتاب ،أطلقنا منتدى للمناقشة ،يقعيف . discuss.d2l.aiعندما يكون لديك
أسئلة حول أي قسم من الكتاب ،يمكنك العثور على ارتباط إلى صفحة المناقشة المرتبطةيف نهاية
كل نوتبوك.
أحدث التعلم العميق ثورةيف التعرف على األنماط ،pattern recognitionحيث أدخل
التكنولوجيا التي تعمل اآلن على تشغيل مجموعة واسعة من التقنيات،يف مجاالت متنوعة مثل
الرؤية الحاسوبية ،ومعالجة اللغة الطبيعية ،والتعرف التلقائي على الكالم .لتطبيق التعلم العميق
بنجاح ،يجب أن تفهم كيفية طرح مشكلة ،والرياضيات األساسية للنمذجة ،والخوارزميات
لتناسب النماذج الخاصة بك مع البيانات ،والتقنيات الهندسية لتنفيذها جميعًا .يقدم هذا الكتاب
مورداً شامالً ،بمايف ذلك النثر واألرقام والرياضيات واالكواد ،كل ذلكيف مكان واحد .لطرح (أو
اإلجابة) أسئلة تتعلق بهذا الكتاب ،قم بزيارة منتدانا على . https://discuss.d2l.ai/جميع
النوتبوكس الخاصة بنا متاحة للتنزيل على موقع الويب D2L.ai websiteوعلى .GitHub
قم بتسجيل حسابيف منتدى المناقشة الخاص بهذا الكتاب .discuss.d2l.ai •
قم بتثبيت بايثون على جهاز الكمبيوتر الخاص بك. •
اتبع الروابط الموجودةيف الجزء السفلي من قسم المنتدى ،حيث ستتمكن من طلب •
المساعدة ومناقشة الكتاب والعثور على إجابات ألسئلتك من خالل إشراك المؤلفين
والمجتمع األوسع.
من أجل البدء والتشغيل ،سنحتاج إلى بيئة لتشغيل بايثون و Jupyter Notebookوالمكتبات
ذات الصلة والكود الالزم لتشغيل الكتاب نفسه.
Miniconda
أبسط خيار لك هو تثبيت .Minicondaالحظ أن إصدار Python 3.xمطلوب .يمكنك تخطي
الخطوات التالية إذا كان جهازك مثبتًا بالفعل على .conda
قم بزيارة موقع Minicondaعلى الويب وحدد اإلصدار المناسب لنظامك بناءً على إصدار
Python 3.xوبنية الجهاز .افترض أن إصدار بايثون الخاص بك هو ( 3.9اإلصدار الذي تم
اختباره) .إذا كنت تستخدم ،macOSفيمكنك تنزيل برنامج bashالنصي الذي يحتوي اسمه
على السالسل " ،”MacOSXوانتقل إلى موقع التنزيل ،وقم بتنفيذ التثبيت على النحو التالي
(مع أخذ Intel Macsكمثال):
~/miniconda3/bin/conda init
ثم أغلق وأعد فتح shellالحالي .يجب أن تكون قادرًا على إنشاء بيئة جديدة على النحو التالي:
d2l
قبل تثبيت أي إطار عمل للتعلم العميق ،يرجى أوالً التحقق مما إذا كان لديك وحدات معالجة
رسومات GPUمناسبة على جهازك أم ال (وحدات معالجة الرسومات التي تشغل الشاشة على
كمبيوتر محمول قياسي ليست ذات صلة بأغراضنا) .على سبيل المثال ،إذا كان جهاز الكمبيوتر
الخاص بك يحتوي على وحدات معالجة رسومات NVIDIAوقام بتثبيت ،CUDAفأنت
جاهز تمامًا .إذا كان جهازك ال يحتوي على أي وحدة معالجة رسومات ،فال داعي للقلق اآلن.
توفر وحدة المعالجة المركزية CPUالخاصة بك أكثر من قوة حصانية كافية لتصفح الفصول
القليلة األولى .فقط تذكر أنك سترغبيف الوصول إلى وحدات معالجة الرسومات قبل تشغيل
النماذج األكبر.
يمكنك تثبيت TensorFlowباستخدام دعم وحدة المعالجة المركزية CPUأو وحدة معالجة
الرسومات GPUعلى النحو التالي:
بعد ذلك ،ستحتاج إلى تنزيل النوتبوكس بحيث يمكنك تشغيل كل من كتل التعليمات البرمجية
للكتاب .ما عليك سوى النقر فوق عالمة التبويب " "Notebooksأعلى أي صفحة HTML
على موقع D2L.aiلتنزيل الرمز ثم فك ضغطه .بدالً من ذلك ،يمكنك جلب دفاتر المالحظات
من سطر األوامر على النحو التالي:
mkdir d2l-en && cd d2l-en
curl https://d2l.ai/d2l-en.zip -o d2l-en.zip
unzip d2l-en.zip && rm d2l-en.zip
cd tensorflow
إذا لم يكن لديك برنامج unzipمثبتًا بالفعل ،فقم أوالً بتشغيل .sudo apt-get install unzip
يمكننا اآلن بدء تشغيل خادم Jupyter Notebookمن خالل تشغيل:
jupyter notebook
مقد
مها
التعمق في التعلم العميق :األساسيات والمقدمات 28
1
حتى وقت قريب ،تم ترميز كل برنامج كمبيوتر تقريبًا قد تتفاعل معهيف يوم عادي كمجموعة
صارمة من القواعد التي تحدد بدقة كيف يجب أن يتصرف .لنفترض أننا أردنا كتابة تطبيق إلدارة
منصة التجارة اإللكترونية .e-commerce platformبعد االلتفاف حول السبورة لبضع
ساعات للتفكيريف المشكلة ،قد نستقر على الخطوط العريضة لحل عملي ،على سبيل المثال:
( ) 1يتفاعل المستخدمون مع التطبيق من خالل واجهة تعمليف متصفح الويب أو تطبيق الهاتف
المحمول؛ ( ) 2يتفاعل تطبيقنا مع محرك قاعدة بيانات من الدرجة التجارية لتتبع حالة كل
مستخدم واالحتفاظ بسجالت المعامالت التاريخية؛ و()3يف قلب تطبيقنا ،يوضح منطق العمل
(يمكنك القول ،العقول ) brainsلتطبيقنا مجموعة من القواعد التي تحدد كل ظرف يمكن
تصوره لإلجراء المقابل الذي يجب أن يتخذه برنامجنا.
لبناء عقول تطبيقنا ،قد نقوم بتعداد جميع األحداث المشتركة التي يجب أن يتعامل معها
برنامجنا .على سبيل المثال ،عندما ينقر أحد العمالء إلضافة عنصر إلى سلة التسوق الخاصة به،
يجب على برنامجنا إضافة إدخال إلى جدول قاعدة بيانات عربة التسوق ،مع ربط معرف
المستخدم بمعرف المنتج المطلوب .قد نحاول بعد ذلك مراجعة كل حالة ركنية محتملة ،واختبار
مدى مالءمة قواعدنا وإجراء أي تعديالت ضرورية .ماذا يحدث إذا بدأ المستخدم الشراء بسلة
تسوق فارغة؟يف حين أن عددًا قليالً من المطورين قد فهموا األمر بشكل صحيح تمامًايف المرة
األولى (قد يستغرق األمر بعض االختبارات التجريبية لحل الخلل)،يف الغالب ،يمكننا كتابة مثل
هذه البرامج وإطالقها بثقة قبل رؤية عميل حقيقي .إن قدرتنا على تصميم األنظمة اآللية التي
تقود المنتجات واألنظمة العاملة يدويًا ،غالبًايف المواقف الجديدة ،هي إنجاز معرفي رائع .وعندما
تكون قادرًا على ابتكار حلول تعمل %100يف ذلك الوقت ،فال داعي للقلق بشأن التعلم اآللي.
لحسن الحظ بالنسبة للمجتمع المتنامي لعلماء التعلم اآللي ،فإن العديد من المهام التي نرغب
في أتمتة ال تنحني بسهولة إلى براعة اإلنسان .تخيل أنك تتجمع حول السبورة البيضاء مع أذكى
العقول التي تعرفها ،لكنك هذه المرة تعالج إحدى المشكالت التالية:
اكتب برنامجًا يتنبأ بطقس الغد بناءً على المعلومات الجغرافية وصور القمر •
الصناعي ونافذة تتبع الطقس السابق.
اكتب برنامجًا يأخذ سؤاالً واقعيًا ،معبرًا عنه بنص حر ،واإلجابة عليه بشكل •
صحيح.
اكتب برنامجًا ،من خالل تقديم صورة ،يحدد جميع األشخاص الذين تم تصويرهم •
فيه ويرسم الخطوط العريضة حول كل منهم.
29 الفصل االول :المقدمة
اكتب برنامجًا يقدم للمستخدمين منتجات من المحتمل أن يستمتعوا بها ولكن من •
غير المحتمل أن يواجهوها في سياق التصفح الطبيعي.
بالنسبة لهذه المشكالت ،سيواجه حتى نخبة المبرمجين صعوبة في ترميز الحلول من الصفر.
يمكن أن تختلف األسباب .في بعض األحيان ،يتبع البرنامج الذي نبحث عنه نمطًا يتغير بمرور
الوقت ،لذلك ال توجد إجابة صحيحة ثابتة! في مثل هذه الحاالت ،يجب أن يتكيف أي حل
ناجح برشاقة مع عالم متغير .في أوقات أخرى ،قد تكون العالقة (على سبيل المثال بين وحدات
البكسل والفئات المجردة )abstract categoriesمعقدة للغاية ،وتتطلب آالف أو ماليين
الحسابات واتباع مبادئ غير معروفة .في حالة التعرف على الصور ،تكمن الخطوات الدقيقة
المطلوبة ألداء المهمة خارج فهمنا الواعي ،على الرغم من أن عمليات اإلدراك الالواعي لدينا
تنفذ المهمة دون عناء.
التعلم اآللي Machine learningهو دراسة الخوارزميات التي يمكن أن تتعلم من التجربة.
نظرًا ألن خوارزمية التعلم اآللي تجمع المزيد من الخبرة ،عادةً في شكل بيانات رصد أو تفاعالت
مع بيئة ،فإن أدائها يتحسن .قارن هذا بمنصة التجارة اإللكترونية الحتمية الخاصة بنا ،والتي تتبع
نفس منطق األعمال ،بغض النظر عن مقدار الخبرة المتراكمة ،حتى يتعلم المطورون أنفسهم
ويقررون أن الوقت قد حان لتحديث البرنامج .في هذا الكتاب ،سنعلمك أساسيات التعلم اآللي،
مع التركيز بشكل خاص على التعلم العميق ،ومجموعة قوية من التقنيات التي تقود االبتكارات
في مجاالت متنوعة مثل الرؤية الحاسوبية ،computer visionومعالجة اللغة الطبيعية
،natural language processingوالرعاية الصحية ،healthcareوعلم الجينوم
.genomics
1.1
قبل البدء في الكتابة ،كان على مؤلفي هذا الكتاب ،مثل الكثير من القوى العاملة ،أن يتناولوا
الكافيين .قفزنا في السيارة وبدأنا في القيادة .باستخدام جهاز ، iPhoneدعا أليكس "يا ، "Siri
لتنبيه نظام التعرف على الصوت في الهاتف .ثم أمر Muبـ "االتجاهات إلى مقهى Blue
." Bottleعرض الهاتف بسرعة نسخ أمره .كما أدركنا أننا كنا نطلب االتجاهات وأطلقنا تطبيق
الخرائط (التطبيق) لتلبية طلبنا .بمجرد إطالقه ،حدد تطبيق الخرائط عددًا من المسارات .بجانب
كل مسار ،عرض الهاتف وقت عبور متوقع .بينما قمنا بتلفيق هذه القصة لتوفير الراحة التربوية،
فإنها توضح أنه في غضون بضع ثوانٍ فقط ،يمكن أن تتفاعل تفاعالتنا اليومية مع الهاتف الذكي
مع العديد من نماذج التعلم اآللي.
تخيل مجرد كتابة برنامج للرد على كلمة تنبيه مثل " "Alexaو " "OK Googleو " Hey
."Siriجرب برمجتها في غرفة بمفردك باستخدام جهاز كمبيوتر ومحرر كود ،كما هو موضح
التعمق في التعلم العميق :األساسيات والمقدمات 30
في الشكل .1.1.1كيف تكتب مثل هذا البرنامج من المبادئ األولى؟ فكر في األمر ...المشكلة
صعبة .كل ثانية ،سيجمع الميكروفون ما يقرب من 44000عينة .كل عينة هي قياس لسعة
الموجة الصوتية .ما القاعدة التي يمكن تعيينها بشكل موثوق من مقتطف صوت خام إلى تنبؤات
واثقة حول ما إذا كان المقتطف يحتوي على كلمة التنبيه wake؟ إذا كنت عالقًا ،فال تقلق .نحن
ال نعرف كيف نكتب مثل هذا البرنامج من الصفر أيضًا .لهذا السبب نستخدم التعلم اآللي.
ها هي الحيلة .في كثير من األحيان ،حتى عندما ال نعرف كيفية إخبار الكمبيوتر بشكل صريح
بكيفية التعيين من المدخالت إلى المخرجات ،فإننا مع ذلك قادرون على أداء العمل الفذ
المعرفي بأنفسنا .بمعنى آخر ،حتى إذا كنت ال تعرف كيفية برمجة جهاز كمبيوتر للتعرف على
كلمة " ، "Alexaفأنت نفسك قادر على التعرف عليها .مسلحين بهذه اإلمكانية ،يمكننا جمع
مجموعة بيانات ضخمة تحتوي على أمثلة من المقتطفات الصوتية والتسميات المرتبطة بها ،
مما يشير إلى المقتطفات التي تحتوي على كلمة التنبيه .في النهج السائد للتعلم اآللي ،ال نحاول
تصميم نظام بشكل صريح للتعرف ع لى كلمات التنبيه .بدالً من ذلك ،نحدد برنامجًا مرنًا يتم
تحديد سلوكه من خالل عدد من المعلمات .ثم نستخدم مجموعة البيانات لتحديد أفضل قيم
المعلمات الممكنة ،أي تلك التي تعمل على تحسين أداء برنامجنا فيما يتعلق بمقياس األداء
المختار.
قبل أن نتمكن من المضي قدمًا وإشراك خوارزمية التعلم ،يتعين علينا تحديد المشكلة بدقة ،
وتحديد الطبيعة الدقيقة للمدخالت والمخرجات ،واختيار عائلة نموذجية مناسبة .في هذه
الحالة ،يتلقى نموذجنا مقتطفًا من الصوت كمدخالت ،ويقوم النموذج بإنشاء تحديد من بين
} {yes,noالمخرجات .إذا سارت األمور وفقًا للخطة ،فعادة ما تكون تخمينات النموذج
صحيحة فيما يتعلق بما إذا كان المقتطف يحتوي على كلمة .wake
31 الفصل االول :المقدمة
إذا اخترنا مجموعة النماذج المناسبة ،فيجب أن يكون هناك إعداد واحد للمقابض بحيث
يطلق النموذج "نعم" في كل مرة يسمع فيها كلمة " ."Alexaنظرًا ألن االختيار الدقيق لكلمة
االستيقاظ Wakeعشوائي ،فربما نحتاج إلى عائلة نموذجية غنية بما يكفي ،من خالل إعداد
آخر للمقابض ،يمكنها إطالق "نعم" فقط عند سماع كلمة "مشمش" .نتوقع أن تكون نفس العائلة
النموذجية مناسبة للتعرف على " "Alexaوتقدير "المشمش "Apricotألنهما يبدوان ،بشكل
حدسي ،مهمتين متشابه تين .ومع ذلك ،قد نحتاج إلى مجموعة مختلفة من النماذج تمامًا إذا
أردنا التعامل مع مدخالت أو مخرجات مختلفة اختالفًا جذريًا ،لنقل إذا أردنا التعيين من الصور
إلى التسميات التوضيحية ،أو من الجمل اإلنجليزية إلى الجمل الصينية.
كما قد تتخيل ،إذا قمنا بتعيين جميع المقابض بشكل عشوائي ،فمن غير المرجح أن يتعرف
نموذجنا على " "Alexaأو " " Apricotأو أي كلمة إنجليزية أخرى .في التعلم اآللي ،التعلم هو
العملية التي نكتشف من خاللها اإلعداد الصحيح للمقابض التي تفرض السلوك المطلوب من
نموذجنا .بمعنى آخر ،نقوم بتدريب نموذجنا بالبيانات .كما هو مبين في الشكل ، 1.1.2عادة ما
تبدو عملية التدريب كما يلي:
للتلخيص ،بدالً من ترميز أداة التعرف على كلمة التنبيه ، Wakeنقوم بترميز برنامج يمكنه
تعلم التعرف على كلمات التنبيه ،إذا تم تقديمها مع مجموعة بيانات كبيرة معنونة .يمكنك التفكير
في هذا الفعل المتمثل في تحديد سلوك البرنامج من خالل تقديمه مع مجموعة بيانات dataset
كبرمجة مع البيانات .programming with dataوهذا يعني أنه يمكننا "برمجة" جهاز الكشف
التعمق في التعلم العميق :األساسيات والمقدمات 32
عن القطط من خالل تزويد نظام التعلم اآللي الخاص بنا بالعديد من األمثلة على القطط والكالب.
بهذه الطريقة سيتعلم الكاشف في النهاية إصدار رقم موجب كبير جدًا إذا كان قطة ،ورقمًا سالبًا
كبيرًا جدًا إذا كان كلبًا ،وشيء أقرب إلى الصفر إذا لم يكن متأكدًا .هذا بالكاد يخدش سطح ما
يمكن أن يفعله التعلم اآللي .التعلم العميق ،Deep learningالذي سنشرحه بمزيد من التفصيل
الحقًا ،هو مجرد واحد من بين العديد من الطرق الشائعة لحل مشاكل التعلم اآللي.
1.2
في مثال كلمة التنبيه ،wakeوصفنا مجموعة بيانات تتكون من مقتطفات صوتية وتسميات
ثنائية ،وقدمنا إحساسًا مموجًا يدويًا لكيفية تدريب نموذج لتقريب الخرائط من المقتطفات إلى
التصنيفات .هذا النوع من المشاكل ،حيث نحاول التنبؤ بعالمة غير معروفة محددة بناءً على
المدخالت المعروفة بمجموعة بيانات تتكون من أمثلة معروفة تسمياتها ، labelsيسمى التعلم
الخاضع لإلشراف .supervised learningهذه مجرد واحدة من بين العديد من مشكالت
التعلم اآللي .قبل أن نستكشف أصنافًا أخرى ،نود أن نلقي مزيدًا من الضوء على بعض المكونات
األساسية التي ستتبعنا ،بغض النظر عن نوع مشكلة التعلم اآللي التي نتعامل معها:
Data 1.2.1
قد يكون من نافلة القول أنه ال يمكنك القيام بعلم البيانات data scienceبدون بيانات .قد
نفقد مئات الصفحات عند التفكير في ماهية البيانات بالضبط ،ولكن في الوقت الحالي ،سنركز
على الخصائص الرئيسية لمجموعات البيانات التي سنهتم بها .بشكل عام ،نحن مهتمون
بمجموعة من األمثلة .من أجل العمل مع البيانات بشكل مفيد ،نحتاج عادةً إلى التوصل إلى
تمثيل رقمي مناسب .يتكون كل مثال (أو نقطة بيانات ،data pointمثيل بيانات data
،instanceعينة )sampleعادةً من مجموعة من السمات تسمى الميزات ( featuresتسمى
أحيانًا المتغيرات المشتركة أو المدخالت) ،بناءً على النموذج الذي يجب أن يقوم بتنبؤاته .في
مشاكل التعلم الخاضعة لإلشراف ،هدفنا هو التنبؤ بقيمة سمة خاصة ،تسمى التسمية ( labelأو
الهدف ، )targetوالتي ليست جزءًا من مدخالت النموذج.
إذا كنا نعمل مع بيانات الصورة ،فقد يتكون كل مثال من صورة فردية (الميزات )features
ورقم يشير إلى الفئة التي تنتمي إليها الصورة (التسمية .)labelسيتم تمثيل الصورة عدديًا على
شكل ثالث شبكات من القيم الرقمية التي تمثل سطوع الضوء األحمر واألخضر واألزرق في كل
33 الفصل االول :المقدمة
موقع بكسل .على سبيل المثال ، 200 × 200قد تتكون الصورة الملونة من
200 × 200 × 3 = 120000قيم عددية.
بدالً من ذلك ،قد نعمل مع بيانات السجالت الصحية اإللكترونية ونتعامل مع مهمة التنبؤ
باحتمالية بقاء مريض معين على قيد الحياة خالل الثالثين يومًا القادمة .هنا ،قد تتكون ميزاتنا
من مجموعة من السمات المتاحة بسهولة والقياسات المسجلة بشكل متكرر ،بما في ذلك العمر
والعالمات الحيوية واألمراض المصاحبة واألدوية الحالية واإلجراءات الحديثة .سيكون التسمية
المتاحة labelللتدريب عبارة عن قيمة ثنائية تشير إلى ما إذا كان كل مريض في البيانات التاريخية
قد نجا خالل نافذة الثالثين يومًا.
في مثل هذه الحاالت ،عندما يتميز كل مثال بنفس عدد السمات العددية ،نقول إن المدخالت
عبارة عن متجهات ذات طول ثابت ونطلق على الطول (الثابت) للمتجهات أبعاد البيانات
.dimensionality of the dataكما قد تتخيل ،يمكن أن تكون المدخالت ذات الطول الثابت
مريحة ،مما يمنحنا تعقيدًا أقل للقلق .ومع ذلك ،ال يمكن بسهولة تمثيل جميع البيانات
كمتجهات ثابتة الطول .fixed-length vectorsبينما قد نتوقع أن تأتي الصور المجهرية من
معدات قياسية ،ال يمكننا أن نتوقع أن تظهر الصور الملغومة من اإلنترنت جميعها بنفس الدقة أو
الشكل .بالنسبة للصور ،قد نفكريف اقتصاصها جميعًا إلى الحجم القياسي ،لكن هذه اإلستراتيجية
تصلنا فقط حتى اآلن .نحن نجازف بفقدان المعلوماتيف األجزاء المقتطعة .عالوة على ذلك،
تقاوم البيانات النصية التمثيالت ذات الطول الثابت بشكل أكثر عنادًا .ضعيف اعتبارك تقييمات
العمالء المتبقية على مواقع التجارة اإللكترونية مثل Amazonو IMDbو.TripAdvisor
بعضها قصير" :ينتن! ."!it stinksيتجول آخرون للصفحات .تتمثل إحدى الميزات الرئيسية
للتعلم العميق على الطرق التقليديةيف النعمة المقارنة التي يمكن للنماذج الحديثة من خاللها
التعامل مع بيانات متفاوتة الطول .varying-length data
بشكل عام ،كلما زادت البيانات المتوفرة لدينا ،أصبحت مهمتنا أسهل .عندما يكون لدينا
المزيد من البيانات ،يمكننا تدريب نماذج أكثر قوة واالعتماد بشكل أقل على االفتراضات
المسبقة .يعد تغيير النظام من البيانات الصغيرة (نسبيًا) إلى البيانات الكبيرة مساهماً رئيسياًيف
نجاح التعلم العميق الحديث .لتوجيه هذه النقطة الرئيسية ،ال تعمل العديد من النماذج األكثر
إثارةيف التعلم العميق بدون مجموعات البيانات الكبيرة .يعمل البعض اآلخريف نظام البيانات
الصغيرة ،لكنها ليست أفضل من األساليب التقليدية.
أخيرًا ،ال يكفي وجود الكثير من البيانات ومعالجتها بذكاء .نحن بحاجة إلى البيانات
الصحيحة .إذا كانت البيانات مليئة باألخطاء ،أو إذا كانت الميزات المختارة ال تنبئ بالكمية
المستهدفة من االهتمام ،فإن التعلم سيفشل .يتم التقاط الموقف جيدًا من خالل الكليشيهات:
التعمق في التعلم العميق :األساسيات والمقدمات 34
القمامةيف الداخل ،والقمامة خارج .garbage in, garbage outعالوة على ذلك ،فإن ضعف
األداء التنبئي ليس هو النتيجة المحتملة الوحيدة.يف التطبيقات الحساسة للتعلم اآللي ،مثل
السياسة التنبؤية ،predictive policingواستئناف الفحص ،resume screeningونماذج
المخاطر risk modelsالمستخدمة لإلقراض ،lendingيجب أن نكون متيقظين بشكل خاص
لعواقب البيانات المهملة .garbage dataيحدث أحد أوضاع الفشل الشائعةيف مجموعات
البيانات حيث ال يتم تمثيل بعض مجموعات األشخاصيف بيانات التدريب .تخيل تطبيق نظام
التعرف على سرطان الجلديف البرية لم يسبق له مثيل من قبل .يمكن أن يحدث الفشل أيضًا عندما
ال تكون البيانات مجرد تمثيل ناقص لبعض المجموعات ولكنها تعكس التحيزات المجتمعية.
على سبيل المثال ،إذا تم استخدام قرارات التوظيف السابقة لتدريب نموذج تنبؤي سيتم
استخدامه لفحص السير الذاتية ،فيمكن لنماذج التعلم اآللي عن غير قصد التقاط المظالم
التاريخية التلقائيًا .automate historical injusticesالحظ أن كل هذا يمكن أن يحدث دون
أن يتآمر عالم البيانات بنشاط ،أو حتى أن يكون على علم.
Models 1.2.2
يتضمن معظم التعلم اآللي تحويل البيانات إلى حد ما .قد نرغبيف بناء نظام يستوعب الصور
ويتنبأ باالبتسامة .بدالً من ذلك ،قد نرغبيف استيعاب مجموعة من قراءات أجهزة االستشعار
والتنبؤ بمدى طبيعية مقارنة القراءات الشاذة .حسب النموذج ،نشير إلى اآللية الحسابية الستيعاب
البيانات من نوع واحد ،وإخراج تنبؤات من نوع مختلف محتمل .على وجه الخصوص ،نحن
مهتمون بالنماذج اإلحصائية التي يمكن تقديرها من البيانات.يف حين أن النماذج البسيطة قادرة
تمامًا على معالجة المشكالت البسيطة بشكل مناسب ،فإن المشكالت التي نركز عليهايف هذا
الكت اب تزيد من حدود الطرق الكالسيكية .يختلف التعلم العميق عن األساليب الكالسيكية
بشكل أساسي من خالل مجموعة النماذج القوية التي يركز عليها .تتكون هذه النماذج من العديد
من التحوالت المتتالية للبيانات التي يتم ربطها ببعضها البعض من أعلى إلى أسفل ،وبالتالي
يُطلق عليها اسم التعلم العميق .deep learningيف طريقنا لمناقشة النماذج العميقة ،سنناقش
أيضًا بعض األساليب التقليدية.
من أجل تطوير نظام رياضي رسمي آلالت التعلم ،نحتاج إلى مقاييس رسمية لمدى جودة
(أو سوء) نماذجنا .في التعلم اآللي والتحسين بشكل عام ،نسمي هذه دوال الهدف Objective
.Functionsحسب االصطالح ،نحدد عادة دوال الهدف بحيث يكون األقل أفضل .هذه مجرد
اتفاقية .يمكنك أن تأخذ أي دالة أعلى هو أفضل ،وتحويلها إلى دالة جديدة متطابقة نوعيا ولكن
األقل أفضل من خالل قلب العالمة .ألن األقل هو األفضل ،تسمى هذه الدوال أحيانًا دوال
الخسارة او الخطأ .loss functions
عند محاولة التنبؤ بالقيم العددية ،فإن دالة الخطأ األكثر شيوعًا هي الخطأ التربيعي squared
،errorأي مربع الفرق بين التنبؤ والهدف الحقيقي .ground truth targetبالنسبة للتصنيف،
فإن الهدف األكثر شيوعًا هو تقليل معدل الخطأ ،أي جزء من األمثلة التي ال تتفق توقعاتنا معها
مع الحقيقة األساسية .من السهل تحسين بعض األهداف (على سبيل المثال ،الخطأ التربيعي
، )squared errorبينما يصعب تحسين أهداف أخرى (على سبيل المثال ،معدل الخطأ error
) rateبشكل مباشر ،بسبب عدم التفاضل أو المضاعفات األخرى .في هذه الحاالت ،من الشائع
تحسين هدف بديل .surrogate objective
أثناء التحسين ،نفكر في الخطأ كدالة لمعلمات النموذج ،ونتعامل مع مجموعة بيانات
التدريب باعتبارها ثابتة .نتعلم أفضل القيم لمعلمات نموذجنا من خالل تقليل الخطأ المتكبد
على مجموعة تتكون من عدد من األمثلة التي تم جمعها للتدريب .ومع ذلك ،فإن األداء الجيد
في بيانات التدريب ال يضمن أننا سنعمل بشكل جيد على البيانات غير المرئية .لذلك سنريد عادةً
تقسيم البيانات المتاحة إلى قسمين :مجموعة بيانات التدريب ( training datasetأو مجموعة
التدريب ،)training setمن أجل معلمات نموذج التعلم ؛ ومجموعة بيانات االختبار test
( datasetأو مجموعة االختبار ،) test setوالتي تم تعليقها للتقييم .في نهاية اليوم ،نُبلغ عادةً
عن أداء نماذجنا على كال القسمين .يمكنك التفكير في األداء التدريبي باعتباره مشابهًا للدرجات
التي يحققها الطالب في امتحانات الممارسة المستخدمة للتحضير المتحان نهائي حقيقي .حتى
لو كانت النتائج مشجعة ،فهذا ال يضمن النجاح في االمتحان النهائي .خالل فترة الدراسة ،قد
يبدأ الطالب في حفظ أسئلة الممارسة ،ويبدو أنه يتقن الموضوع ولكنه يتعثر عند مواجهة أسئلة
لم تتم رؤيتها من قبل في االختبار النهائي الفعلي .عندما يكون أداء النموذج جيدًا في مجموعة
التدريب ولكنه يفشل في التعميم على البيانات غير المرئية ،فإننا نقول إنه يعاني من فرط التجهيز
او التعلم overfittingمع بيانات التدريب.
خوارزميات التحسين الشائعة للتعلم العميق على نهج يسمى التدرج االشتقاقي gradient
descentباختصار ،في كل خطوة ،تتحقق هذه الطريقة لترى ،لكل معلمة ،الطريقة التي
ستتحرك بها خطأ مجموعة التدريب إذا قمت بتشويش هذه المعلمة بمقدار صغير فقط .ثم يقوم
بتحديث المعلمة في االتجاه الذي يقلل من الخطأ.
1.3
مشكلة كلمة االستيقاظ Wakeفي مثالنا التحفيزي هي مجرد واحدة من بين العديد من
المشكالت التي يمكن أن يعالجها التعلم اآللي .لتحفيز القارئ بشكل أكبر وتزويدنا ببعض اللغة
المشتركة التي ستتبعنا في جميع أنحاء الكتاب ،نقدم اآلن نظرة عامة واسعة على مشهد تركيبات
مشكلة التعلم اآللي.
توقع اإلصابة بالسرطان مقابل ليس السرطان ،في ضوء صورة التصوير المقطعي •
بالكمبيوتر.
توقع الترجمة الصحيحة باللغة الفرنسية ،مع إعطاء جملة باإلنجليزية. •
توقع سعر السهم الشهر المقبل بناءً على بيانات التقارير المالية لهذا الشهر. •
بينما يتم التقاط جميع مشكالت التعلم الخاضع لإلشراف من خالل الوصف البسيط "التنبؤ
بالتسميات المقدمة لميزات اإلدخال" ،يمكن أن يتخذ التعلم تحت اإلشراف أشكالًا متنوعة
ويتطلب الكثير من قرارات النمذجة ،اعتمادًا على (من بين اعتبارات أخرى) نوع وحجم وكمية
المدخالت والمخرجات .على سبيل المثال ،نستخدم نماذج مختلفة لمعالجة متواليات أطوال
عشوائية sequences of arbitrary lengthsومعالجة تمثيالت المتجهات ذات الطول الثابت
37 الفصل االول :المقدمة
بشكل غير رسمي ،تبدو عملية التعلم كما يلي .أوالً ،احصل على مجموعة كبيرة من األمثلة
التي تُعرف بها الميزات واختر منها مجموعة فرعية عشوائية ،واكتسب تسميات الحقيقة
األساسية لكل منها .في بعض األحيان ،قد تكون هذه التسميات هي البيانات المتاحة التي تم
جمعها بالفعل (على سبيل المثال ،هل مات مريض خالل العام التالي؟) وفي أحيان أخرى قد
نحتاج إلى توظيف شروح بشرية لتسمية البيانات ( ،على سبيل المثال ،تعيين الصور للفئات).
تشكل هذه المدخالت والتسميات المقابلة معًا مجموعة التدريب .نقوم بتغذية مجموعة بيانات
التدريب في خوارزمية تعلم خاضعة لإلشراف ،وهي دالة تأخذ مجموعة بيانات كمدخالت
وتخرج دالة أخرى :النموذج الذي تم تعلمه .أخيرًا ،يمكننا تغذية المدخالت غير المرئية سابقًا
إلى النموذج الذي تم تعلمه ،باستخدام مخرجاته كتنبؤات للتسمية المقابلة .تم رسم العملية
الكاملة في الشكل .1.3.1
Regression 1.3.1.1
ربما يكون االنحدار هو أبسط مهمة تعليمية خاضعة لإلشراف لتلتف حولها .ضع في اعتبارك،
على سبيل المثال ،مجموعة من البيانات التي تم جمعها من قاعدة بيانات مبيعات المنازل .قد
نقوم ببناء جدول ،حيث يتوافق كل صف مع منزل مختلف ،وكل عمود يتوافق مع بعض
الس مات ذات الصلة ،مثل المساحة المربعة للمنزل ،وعدد غرف النوم ،وعدد الحمامات ،
وعدد الدقائق (المشي) ) إلى وسط المدينة .في مجموعة البيانات هذه ،سيكون كل مثال منزلًا
محددًا ،وسيكون متجه الميزة المقابل في صف واحد في الجدول .إذا كنت تعيش في نيويورك
أو سان فرانسيسكو ،ولم تكن الرئيس التنفيذي لشركة Amazonأو Googleأو Microsoft
أو ، Facebookفإن (لقطات مربعة ،عدد غرف النوم ،عدد الحمامات ،مسافة سير) ميزة
متجه لمنزلك قد يبدو مثل .[600,1,1,60] :ومع ذلك ،إذا كنت تعيش في بيتسبرغ ،فقد يبدو
التعمق في التعلم العميق :األساسيات والمقدمات 38
األمر أشبه ] .[3000,4,3,10تعد متجهات الميزات ذات الطول الثابت مثل هذه ضرورية لمعظم
خوارزميات التعلم اآللي الكالسيكية.
ما يجعل مشكلة ما هو االنحدار هو في الواقع شكل الهدف .قل أنك في السوق للحصول على
منزل جديد .قد ترغب في تقدير القيمة السوقية العادلة للمنزل ،مع األخذ في االعتبار بعض
الميزات مثل أعاله .قد تتكون البيانات هنا من قوائم المنازل التاريخية وقد تكون التسميات هي
أسعار المبيعات المرصودة .عندما تأخذ التسميات قيمًا رقمية عشوائية (حتى ضمن فترة زمنية
معينة) ،فإننا نسمي هذا مشكلة االنحدار .الهدف هو إنتاج نموذج تقارب تنبؤاته بشكل وثيق قيم
التسمية الفعلية.
الكثير من المشاكل العملية توصف بسهولة بأنها مشاكل انحدار .يمكن اعتبار توقع التصنيف
الذي سيخصصه المستخدم لفيلم ما مشكلة انحدار وإذا صممت خوارزمية رائعة إلنجاز هذا
العمل الفذ في عام ، 2009فربما تكون قد فزت بجائزة Netflixالبالغة مليون دوالر .توقع
طول إقامة المرضى في المستشفى هو أيضا مشكلة االنحدار .من القواعد األساسية الجيدة أن أي
كم؟ أو كم عددها؟ يجب أن تشير المشكلة إلى االنحدار ،على سبيل المثال:
حتى لو لم تكن قد عملت مع التعلم اآللي من قبل ،فمن المحتمل أنك عملت من خالل
مشكلة االنحدار بشكل غير رسمي .تخيل ،على سبيل المثال ،أنك قمت بإصالح البالوعات
الخاصة بك وأن السباك الخاص بك أمضى 3ساعات في إزالة األوساخ من أنابيب الصرف
الصحي الخاصة بك .ثم أرسل لك فاتورة بقيمة 350دوالرًا .تخيل اآلن أن صديقك استأجر
نفس السباك لمدة ساعتين وأنه تلقى فاتورة بقيمة 250دوالرًا .إذا سألك شخص ما بعد ذلك
عن المبلغ الذي تتوقعه في فاتورته القادمة إلزالة المواد غير المرغوب فيها ،فقد تضع بعض
االفتراضات المعقولة ،مثل زيادة ساعات العمل التي تكلف المزيد من الدوالرات .قد تفترض
أيضًا أن هناك بعض الرسوم األساسية وأن المقاول يتقاضى رسومًا في الساعة .إذا كانت هذه
االفتراضات صحيحة ،فبالنظر إلى هذين المثالين من البيانات ،يمكنك بالفعل تحديد هيكل
تسعير المقاول 100 :دوالر للساعة باإلضافة إلى 50دوالرًا لتظهر في منزلك .إذا اتبعت هذا
كثيرًا ،فأنت بالفعل تفهم الفكرة رفيعة المستوى وراء االنحدار الخطي .linear regression
في هذه الحالة ،يمكننا إنتاج المعلمات التي تتطابق تمامًا مع أسعار السباك .في بعض األحيان
ال يكون هذا ممكنًا ،على سبيل المثال ،إذا كان بعض التباين مدينًا بعدة عوامل إلى جانب
الميزتين .في هذه الحاالت ،سنحاول تعلم النماذج التي تقلل المسافة بين تنبؤاتنا والقيم
المرصودة .في معظم فصولنا ،سنركز على تقليل دالة الخطأ التربيعية squared error loss
39 الفصل االول :المقدمة
.functionكما سنرى الحقًا ،تتوافق هذه الخطأ مع االفتراض بأن بياناتنا قد تعرضت للتلف
بسبب الضوضاء الغاوسية .Gaussian noise
classification 1.3.1.2
بينما تعتبر نماذج االنحدار رائعة لمعالجة كم عدد؟ األسئلة ،الكثير من المشاكل ال تنحني
بشكل مريح لهذا القالب .ضع في اعتبارك ،على سبيل المثال ،بنكًا يريد تطوير ميزة مسح
الشيكات لتطبيقه على الهاتف المحمول .من الناحية المثالية ،يقوم العميل ببساطة بالتقاط صورة
للشيك وسيقوم التطبيق تلقائيًا بالتعرف على النص من الصورة .بافتراض أن لدينا بعض القدرة
على تجزئة تصحيحات الصور المقابلة لكل حرف مكتوب بخط اليد ،فإن المهمة األساسية
المتبقية ستكون تحديد أي حرف من بين مجموعة معروفة يتم تصويره في كل تصحيح صورة.
هذه األنواع من أي واحد؟ تسمى المشاكل التصنيف classificationوتتطلب مجموعة من
األدوات مختلفة عن تلك المستخدمة في االنحدار ،على الرغم من أن العديد من التقنيات
ستستمر.
في التصنيف ،نريد أن ينظر نموذجنا في الميزات ،على سبيل المثال ،قيم البكسل في صورة
ما ،ثم يتنبأ بالصنف ( categoryتسمى أحيانًا فئة )classمن بين مجموعة منفصلة من
الخيارات ،مثال ينتمي .بالنسبة لألرقام المكتوبة بخط اليد ،قد يكون لدينا عشر فئات ،مطابقة
لألرقام من 0إلى . 9أبسط شكل من أشكال التصنيف هو عندما يكون هناك فئتان فقط ،وهي
مشكلة نسميها التصنيف الثنائي .binary classificationعلى سبيل المثال ،يمكن أن تتكون
مجموعة البيانات الخاصة بنا من صور للحيوانات وقد تكون تسمياتنا هي الفئات }.{cat, dog
بينما في االنحدار ،سعينا إلى معادل إلخراج قيمة عددية ،في التصنيف ،نبحث عن مصنف
،classifierيكون ناتجه هو تعيين الفئة المتوقعة.
ألسباب سوف ندخل فيها عندما يصبح الكتاب أكثر تقنية ،قد يكون من الصعب تحسين
نموذج يمكن ه فقط إخراج مهمة فئوية صعبة ،على سبيل المثال ،إما "قطة" أو "كلب" .في هذه
الحاالت ،يكون من األسهل عادةً التعبير عن نموذجنا بلغة االحتماالت .بالنظر إلى ميزات أحد
األمثلة ،يقوم نموذجنا بتعيين احتمالية لكل فئة ممكنة .بالعودة إلى مثال تصنيف الحيوانات
الخاص ب نا حيث توجد الفئات ،قد يرى المصنف صورة ويخرج احتمالية أن الصورة قطة بقيمة
. 0.9يمكننا تفسير هذا الرقم بالقول إن المصنف متأكد بنسبة ٪90من أن الصورة تصور قطة.
ينقل حجم االحتمالية للفئة المتوقعة فكرة واحدة عن عدم اليقين .uncertaintyإنها ليست
الفكرة الوحيدة لعدم اليقين وسنناقش اآلخرين في فصول أكثر تقدمًا.
عندما يكون لدينا أكثر من فئتين محتملتين ،فإننا نسمي المشكلة تصنيف متعدد الفئات
.multiclass classificationتشمل األمثلة الشائعة التعرف على األحرف المكتوبة بخط اليد
التعمق في التعلم العميق :األساسيات والمقدمات 40
} … . {0,1,2, … 9, a, b, c,بينما هاجمنا مشاكل االنحدار من خالل محاولة تقليل دالة خسارة
الخطأ التربيعية ،فإن دالة الخسارة الشائعة لمشاكل التصنيف تسمى االنتروبيا المتقاطعة cross-
،entropyوالتي يمكن إزالة الغموض عن اسمها من خالل مقدمة لنظرية المعلومات في الفصول
الالحقة.
الحظ أن الفئ ة األكثر ترجيحًا ليست بالضرورة هي التي ستستخدمها التخاذ قرارك .افترض
أنك وجدت فطرًا جميلًا في الفناء الخلفي الخاص بك كما هو موضح في الشكل .1.3.2
اآلن ،افترض أنك قمت ببناء مصنف ودربته على التنبؤ بما إذا كان الفطر سامًا بناءً على صورة
فوتوغرافية .لنفترض أن مخرجات مصنف اكتشاف السموم لدينا تشير إلى أن احتمال احتواء
الشكل 1.3.2على فطر سام Death capهو .0.2بعبارة أخرى ،المصنف متأكد بنسبة ٪80
أن الفطر ليس ساماً .Death capومع ذلك ،يجب أن تكون أحمق لتأكله .وذلك ألن الفائدة
المؤكدة من تناول عشاء لذيذ ال تساوي ٪20خطر الموت منه .وبعبارة أخرى ،فإن تأثير المخاطر
غير المؤكدة يفوق المنفعة إلى حد بعيد .وبالتالي ،من أجل اتخاذ قرار بشأن تناول الفطر ،نحتاج
إلى حساب عدم االنتظام المتوقع المرتبط بكل إجراء والذي يعتمد على كل من النتائج المحتملة
والفوائد أو األضرار المرتبطة بكل منها .في هذه الحالة ،قد يكون الفقد الناتج عن تناول الفطر
∞ = ، 0.2 × ∞ + 0.8 × 0في حين أن فقدان التخلص منه هو = 0.2 × 0 + 0.8 × 1
. 0.8كان حذرنا مبررًا :كما يخبرنا أي اختصاصي فطريات ،فإن الفطر في الشكل 1.3.2هو في
الواقع .Death cap
يمكن أن يصبح التصنيف أكثر تعقيدًا من مجرد التصنيف الثنائي أو متعدد الفئات .على سبيل
المثال ،هناك بعض متغيرات التصنيف التي تتناول الفئات المهيكلة بشكل هرمي .في مثل هذه
الحاالت ،ليست كل األخطاء متساوية -إذا كان يجب علينا أن نخطئ ،فقد نفضل أن نخطئ
41 الفصل االول :المقدمة
في التصنيف إلى فئة ذات صلة بدالً من فئة بعيدة .عادة ،يشار إلى هذا التصنيف الهرمي
.hierarchical classificationلإللهام ،قد تفكر في ، Linnaeusالذي نظم الحيوانات في
تسلسل هرمي.
في حالة تصنيف الحيوانات ،قد ال يكون من السيئ جدًا الخلط بين كلب بودل وشنوزر ،لكن
نموذجنا سيدفع غرامة كبيرة إذا خلط بين كلب بودل وديناصور .قد يعتمد التسلسل الهرمي
المناسب على كيفية التخطيط الستخدام النموذج .على سبيل المثال ،قد تكون األفاعي الجرسية
والثعابين ذات األربطة قريبة من شجرة النشوء والتطور ،ولكن يمكن أن يكون الخلط بين أفعى
الجرذ وجرباب مميتًا.
Tagging 1.3.1.3
تتالءم بعض مشكالت التصنيف بدقة مع إعدادات التصنيف الثنائي أو متعدد الفئات .على
سبيل المثال ،يمكننا تدريب مصنف ثنائي عادي لتمييز القطط عن الكالب .نظرًا للحالة الحالية
للرؤية الحاسوبية ،يمكننا القيام بذلك بسهولة باستخدام أدوات جاهزة .ومع ذلك ،بغض النظر
عن مدى دقة نموذجنا ،فقد نجد أنفسنا في مأزق عندما يصادف المصنف صورة لموسيقي
المدينة في بريمن ، Town Musicians of Bremenوهي قصة خيالية ألمانية شهيرة تضم
أربعة حيوانات (الشكل .)1.3.3
كما ترى ،تظهر الصورة قطة وديك وكلب وحمار مع بعض األشجار في الخلفية .عندما نتوقع
مواجهة مثل هذه الصور ،قد ال يكون التصنيف متعدد الفئات هو الصيغة الصحيحة للمشكلة.
بدالً من ذلك ،قد نرغب في منح النموذج خيار قول أن الصورة تصور قطة وكلبًا وحمارًا وديكًا.
تسمى مشكلة تعلم التنبؤ بالفئات التي ال تستبعد بعضها البعض بالتصنيف متعدد التسميات
.multi-label classificationأفضل وصف لمشاكل وضع العالمات التلقائي هو مشاكل
التصنيف متعدد التصنيفات .multi-label classification problemsفكر في العالمات التي
قد يطبقها األشخاص على المنشورات في مدونة تقنية ،على سبيل المثال " ،التعلم اآللي" ،
"التكنولوجيا" " ،األدوات" " ،لغات البرمجة" " ، "Linux" ،الحوسبة السحابية" ."AWS" ،قد
يتم تطبيق 10-5عالمات على المقالة النموذجية .عادةً ،ستعرض العالمات بعض بنية االرتباط
.correlation structureمن المرجح أن تشير المنشورات حول "الحوسبة السحابية" إلى
" " AWSومن المرجح أن تشير المشاركات حول "التعلم اآللي" إلى "وحدات معالجة الرسومات
." GPUs
في بعض األحيان ،تعتمد مشاكل وضع العالمات هذه على مجموعات تصنيف هائلة .توظف
المكتبة الوطنية للطب العديد من المعلقين المحترفين الذين يربطون كل مقالة ليتم فهرستها في
PubMedبمجموعة من العالمات المستمدة من األنطولوجيا لعناوين الموضوعات الطبية
( ، )MeSHوهي مجموعة من 28000عالمة تقريبًا .يعد وضع عالمات على المقاالت بشكل
صحيح أمرًا مهمًا ألنه يسمح للباحثين بإجراء مراجعات شاملة لألدبيات .هذه عملية تستغرق
وقتًا طويالً وعادةً ما يكون للمضيفين فترة تأخير لمدة عام واحد بين األرشفة ووضع العالمات.
يمكن أن يوفر التعلم اآل لي عالمات مؤقتة حتى يمكن الحصول على مراجعة يدوية مناسبة لكل
مقالة .في الواقع ،لعدة سنوات ،استضافت منظمة BioASQمسابقات لهذه المهمة.
Search 1.3.1.4
في مجال استرجاع المعلومات ،information retrievalغالبًا ما نفرض تصنيفات على
مجموعات من العناصر .خذ بحث الويب على سبيل المثال .ال يتمثل الهدف في تحديد ما إذا
كانت صفحة معينة ذات صلة باستعالم ما ،ولكن بدالً من ذلك ،من بين مجموعة النتائج ذات
الصلة التي يجب عرضها بشكل بارز لمستخدم معين .قد يكون أحد الحلول الممكنة هو تعيين
درجة لكل عنصر في المجموعة أوالً ثم استرداد العناصر ذات التصنيف األعلى .كانت
، PageRankوهي الخلطة السرية األصلية وراء محرك بحث ، Googleمثالًا مبكرًا على نظام
التسجيل هذا .ومن الغريب أن الدرجات التي يوفرها نظام ترتيب الصفحات ال تعتمد على
االستعالم الفعلي .بدالً من ذلك ،اعتمدوا على عامل تصفية بسيط لألهمية لتحديد مجموعة
المرشحين ذوي الصلة ثم استخدموا نظام ترتيب الصفحات PageRankلتحديد أولويات
الصفحات األكثر موثوقية .في الوقت الحاضر ،تستخدم محركات البحث التعلم اآللي والنماذج
43 الفصل االول :المقدمة
السلوكية behavioral modelsللحصول على درجات ذات صلة تعتمد على االستعالم .هناك
مؤتمرات أكاديمية كاملة مخصصة لهذا الموضوع.
في بعض الحاالت ،يقدم العمالء مالحظات صريحة ،إلبالغهم بمدى إعجابهم بمنتج معين
(على سبيل المثال ،تقييمات المنتج والمراجعات على Amazonو IMDbو.)Goodreads
في حاالت أخرى ،يقدمون تعليقات ضمنية ،على سبيل المثال ،عن طريق تخطي العناوينيف
قائمة التشغيل ،مما قد يشير إلى عدم الرضا ،أو قد يشير فقط إلى أن األغنية كانت غير مناسبةيف
السياق.يف أبسط الصيغ ،يتم تدريب هذه األنظمة لتقدير بعض النقاط ،مثل التصنيف النجمي
المتوقع أو احتمال قيام مستخدم معين بشراء عنصر معين.
بالنظر إلى مثل هذا النموذج ،ألي مستخدم معين ،يمكننا استرداد مجموعة الكائنات ذات
الدرجات األكبر ،والتي يمكن بعد ذلك التوصية بها للمستخدم .تعد أنظمة اإلنتاج أكثر تقدمًا
بشكل كبير وتأخذيف االعتبار نشاط المستخدم المفصل وخصائص العنصر عند حساب مثل هذه
الدرجات .يعرض الشكل 1.3.4كتب التعلم العميق التي أوصت بها أمازون بناءً على خوارزميات
التخصيص التي تم ضبطها اللتقاط تفضيالت أستون .Aston’s preferences
على الرغم من قيمتها االقتصادية الهائلة ،فإن أنظمة التوصية المبنية بسذاجة على النماذج
التنبؤية تعاني من بعض العيوب المفاهيمية الخطيرة .للبدء ،نالحظ فقط التعليقات الخاضعة
للرقابة :يفضل المستخدمون تقييم األفالم التي يشعرون بقوة تجاهها .على سبيل المثال ،على
مقياس مكون من خمس نقاط ،قد تالحظ أن العناصر تتلقى العديد من التقييمات ذات النجمة
الواحدة والخمس نجوم ولكن هناك عددًا قليالً من التقييمات الثالث نجوم بشكل واضح .عالوة
على ذلك ،غالبًا ما تكون عادات الشراء الحالية نتيجة لخوارزمية التوصية المعمول بها حاليًا،
لكن خوارزميات التعلم ال تأخذ دائمًا هذه التفاصيليف االعتبار .وبالتالي ،من الممكن أن تتشكل
حلقات التغذية الراجعة حيث يدفع نظام التوصية بشكل تفضيلي عنصرًا يتم أخذه ليكون أفضل
(بسبب عمليات الشراء األكبر) وبالتالي يوصى به بشكل متكرر أكثر .العديد من هذه المشاكل
التعمق في التعلم العميق :األساسيات والمقدمات 44
المتعلقة بكيفية التعامل مع الرقابة والحوافز وحلقات التغذية الراجعة هي أسئلة بحثية مفتوحة
ومهمة.
ولكن كيف نتعامل مع مقاطع الفيديو video snippets؟ في هذه الحالة ،قد يتكون كل
مقطع snippetمن عدد مختلف من اإلطارات .وقد يكون تخميننا لما يحدث في كل إطار أقوى
بكثير إذا أخذنا في االعتبار اإلطارات السابقة أو الالحقة .الشيء نفسه ينطبق على اللغة .إحدى
مشكالت التعلم العميق الشائعة هي الترجمة اآللية :machine translationمهمة استيعاب
الجمل في بعض اللغات المصدر والتنبؤ بترجماتها بلغة أخرى.
45 الفصل االول :المقدمة
تحدث هذه المشاكل أيضًا في الطب .قد نرغب في نموذج لمراقبة المرضى في وحدة العناية
المركزة وإطالق التنبيهات عندما يتجاوز خطر الوفاة خالل الـ 24ساعة القادمة بعض العتبة .هنا،
لن نتخلص من كل ما نعرفه عن تاريخ المريض كل ساعة ،ونقوم بالتنبؤات بناءً على أحدث
القياسات فقط.
تعد هذه المشكالت من بين أكثر التطبيقات إثارة للتعلم اآللي وهي أمثلة على التعلم المتسلسل
.sequence learningإنها تتطلب نموذجًا إما الستيعاب تسلسالت من المدخالت أو إلصدار
تسلسالت من المخرجات (أو كليهما) .على وجه التحديد ،يأخذ التعلم من التسلسل إلى
التسلسل sequence-to-sequence learningفي االعتبار المشكالت التي تتكون فيها
المدخالت والمخرجات من متواليات متغيرة الطول .تشمل األمثلة الترجمة اآللية ونسخ الكالم
إلى نص .speech-to-text transcriptionفي حين أنه من المستحيل مراعاة جميع أنواع
تحويالت التسلسل ،فإن الحاالت الخاصة التالية تستحق الذكر.
العالمات والتحليل .Tagging and Parsingيتضمن هذا التعليق على تسلسل نصي
بالسمات .هنا ،تتم محاذاة المدخالت والمخرجات ،أي أنها من نفس العدد وتحدث بترتيب
مطابق .على سبيل المثال ،في وضع العالمات على جزء من الكالم )part-of-speech (PoS
، taggingنقوم بتعليق توضيحي لكل كلمة في جملة مع الجزء المقابل من الكالم ،أي "اسم"
أو "كائن مباشر" .بدالً من ذلك ،قد نرغب في معرفة مجموعات الكلمات المتجاورة التي تشير
إلى كيانات محددة ،مثل األشخاص أو األماكن أو المؤسسات .في المثال الكرتوني البسيط أدناه،
قد نرغب فقط في اإلشارة ،لكل كلمة في الجملة ،إلى ما إذا كانت جزءًا من كيان مسمى (يُشار
taggedإليه باسم ".) "Ent
النص إلى الكالم .Text to Speechهذا هو عكس التعرف التلقائي على الكالم .هنا،
اإلدخال عبارة عن نص والمخرج عبارة عن ملف صوتي .في هذه الحالة ،يكون اإلخراج أطول
بكثير من اإلدخال .في حين أن البشر بارعون بشكل ملحوظ في التعرف على الكالم ،حتى من
الصوت منخفض الجودة ،فإن جعل أجهزة الكمبيوتر تؤدي هذا العمل الفذ يمثل تحديًا هائالً.
الترجمة اآللية .Machine Translationعلى عكس حالة التعرف على الكالم ،حيث
تحدث المدخالت والمخرجات المقابلة بنفس الترتيب ،في الترجمة اآللية ،تشكل البيانات غير
المحاذاة تحديًا جديدًا .هنا يمكن أن يكون لتسلسل اإلدخال واإلخراج أطوال مختلفة ،وقد تظهر
المناطق المقابلة من التسلسالت المعنية في أوامر مختلفة .تأمل المثال التوضيحي التالي للميل
الغريب لأللمان لوضع األفعال في نهاية الجمل:
بالنظر إلى الموقف المعاكس ،قد يكون من المحبط العمل لدى رئيس ليس لديه فكرة عما
يريدون منك القيام به .ومع ذلك ،إذا كنت تخطط ألن تكون عالم بيانات ،فمن األفضل أن تعتاد
عليها .قد يقوم المدير بتسليمك كمية هائلة من البيانات ويخبرك بالقيام ببعض علوم البيانات
47 الفصل االول :المقدمة
باستخدامها! هذا يبدو غامضا ألنه كذلك .نحن نطلق على هذه الفئة من المشكالت اسم التعلم
غير الخاضع لإلشراف ،unsupervised learningونوع وعدد األسئلة التي يمكن أن نطرحها
يقتصر على إبداعنا فقط .سوف نتناول تقنيات التعلم غير الخاضعة لالشراف في فصول الحقة.
إلثارة شهيتك في الوقت الحالي ،نصف بعض األسئلة التالية التي قد تطرحها.
هل يمكننا العثور على عدد صغير من النماذج األولية التي تلخص البيانات بدقة؟ •
بالنظر إلى مجموعة من الصور ،هل يمكننا تجميعها في صور مناظر طبيعية وصور
للكالب والرضع والقطط وقمم الجبال؟ وبالمثل ،في ضوء مجموعة من أنشطة
تصفح المستخدمين ،هل يمكننا تجميعها في مستخدمين لديهم سلوك مشابه؟
تُعرف هذه المشكلة عادةً باسم التجميع .clustering
هل يمكننا العثور على عدد صغير من المعلمات التي تلتقط بدقة الخصائص ذات •
الصلة للبيانات؟ مسارات الكرة موصوفة جيدًا حسب سرعة الكرة وقطرها وكتلتها.
لقد طور الخياطون عددًا صغيرًا من المعلمات التي تصف شكل جسم اإلنسان بدقة
إلى حد ما لغرض مالءمة المالبس .يشار إلى هذه المشاكل باسم تقدير الفضاء
الجزئي .subspace estimationإذا كان االعتماد خطيًا ،linearفإنه يسمى
تحليل المكون األساسي ).Principal Component Analysis(PCA
هل هناك تمثيل للكائنات (منظم بشكل تعسفي )arbitrarily structuredفي •
الفضاء اإلقليدي بحيث يمكن مطابقة الخصائص الرمزية بشكل جيد؟ يمكن
استخدام هذا لوصف الكيانات وعالقاتها ،مثل "روما" " -إيطاليا" " +فرنسا" =
"باريس".
هل هناك وصف لألسباب الجذرية لكثير من البيانات التي نالحظها؟ على سبيل •
المثا ل ،إذا كانت لدينا بيانات ديموغرافية حول أسعار المنازل والتلوث والجريمة
والموقع والتعليم والرواتب ،فهل يمكننا اكتشاف كيفية ارتباطها بناءً على البيانات
التجريبية empirical data؟ المجاالت المعنية بالسببية causalityوالنماذج
الرسومية االحتمالية probabilistic graphical modelsتعالج مثل هذه األسئلة.
التطور األخير المهم والمثير في التعلم غير الخاضع لإلشراف هو ظهور النماذج •
التوليدية العميقة .deep generative modelsتقدر هذه النماذج كثافة البيانات،
سواء بشكل صريح أو ضمني .بمجرد التدريب ،يمكننا استخدام نموذج توليدي إما
لتسجيل األمثلة وفقًا لمدى احتمالية وجودها ،أو ألخذ عينات من األمثلة التركيبية
من التوزيع المكتسب .جاءت اختراقات التعلم العميق المبكرة في النمذجة التوليدية
مع اختراع المشفرات التلقائية المتنوعة variational autoencoders
( )2014 ،Kingma and Wellingواستمرت في تطوير شبكات الخصومة
التعمق في التعلم العميق :األساسيات والمقدمات 48
كان أحد التطورات الرئيسيةيف التعلم غير الخاضع لإلشراف هو ظهور التعلم تحت اإلشراف
الذاتي ،self-supervised learningوهي التقنيات التي تستفيد من بعض جوانب البيانات غير
المصنفة لتوفير اإلشراف .بالنسبة للنصوص ،يمكننا تدريب النماذج على "ملء الفراغات fill in
" the blanksمن خالل التنبؤ بالكلمات المقنعة عشوائيًا باستخدام الكلمات المحيطة بها
(السياقات ) contextsيف مجموعات كبيرة دون بذل أي جهديف وضع العالمات ( Devlin et
!)2018 ،al.بالنسبة للصور ،قد نقوم بتدريب النماذج إلخبار الموضع النسبي بين منطقتين تم
اقتصاصهما من نفس الصورة ( ،)2015 ،Doersch et al.للتنبؤ بجزء مغلق من الصورة بناءً
على األجزاء المتبقية من الصورة ،أو للتنبؤ بما إذا كان مثاالن هما إصدارات مضطربة من نفس
الصورة األساسية .غالبًا ما تتعلم النماذج الخاضعة لإلشراف الذاتي التمثيالت التي يتم االستفادة
منها الحقًا عن طريق ضبط النماذج الناتجةيف بعض المهام النهائية ذات األهمية.
إن بساطة التعلم االوفالين له سحره .الجانب اإليجابي هو أنه يمكننا القلق بشأن التعرف على
األنماط بشكل منفصل ،دون القلق بشأن المضاعفات الناشئة عن التفاعالت مع بيئة ديناميكية.
لكن صياغة هذه المشكلة محدودة .إذا نشأت في قراءة روايات روبوت ، Asimovفقد تتخيل
عمالء ذكاء اصطناعيًا ليسوا ف قط قادرين على التنبؤ ،ولكن أيضًا على اتخاذ اإلجراءات في
العالم .نريد أن نفكر في العوامل الذكية ،وليس فقط النماذج التنبؤية .هذا يعني أننا بحاجة إلى
التفكير في اختيار اإلجراءات ،وليس مجرد التنبؤ .على عكس مجرد التنبؤات ،تؤثر اإلجراءات
فعليًا على البيئة .إذا أردنا تدريب وكيل ذكي ،,intelligent agentيجب أن نحسب الطريقة
التي قد تؤثر بها أفعاله على المالحظات المستقبلية للوكيل .agent
إن التفكير في التفاعل مع البيئة يفتح مجموعة كاملة من أسئلة النمذجة الجديدة .ما يلي مجرد
أمثلة قليلة.
تثير هذه األسئلة مشكلة تحول التوزيع ،distribution shiftحيث تختلف بيانات التدريب
واالختبار .لقد واجه معظمنا هذه المشكلة عند إجراء اال ختبارات التي كتبها محاضر ،بينما كان
الواجب المنزلي مؤلفًا من قبل مساعديهم التدريسيين .بعد ذلك ،نصف بإيجاز التعلم المعزز
،reinforcement learningوهو إطار عمل ثري لطرح مشاكل التعلم التي يتفاعل فيها الوكيل
مع البيئة.
AlphaGoالذي فاز عالى بطل العالم في لعبة اللوحة )2016 ،.Silver et al( Goهما مثاالن
بارزان.
يقدم التعلم المعزز بيانًا عامًا جدًا للمشكلة ،حيث يتفاعل الوكيل agentمع بيئة عبر سلسلة
من الخطوات الزمنية .time stepsفي كل خطوة زمنية ،يتلقى الوكيل بعض المالحظات
observationمن البيئة ويجب عليه اختيار إجراء actionيتم نقله الحقًا إلى البيئة عبر آلية ما
(تسمى أحيانًا المشغل .)actuatorأخيرًا ،يتلقى الوكيل مكافأة rewardمن البيئة .هذه العملية
موضحة في الشكل .1.3.7ثم يتلقى الوكيل مالحظة الحقة ،subsequent observation
ويختار إجراءً الحقًا ،وما إلى ذلك .يخضع سلوك عامل التعلم المعزز لسياسة .policyباختصار،
السياسة هي مجرد دالة تقوم بالتخطيط من مالحظات البيئة إلى اإلجراءات .الهدف من التعلم
المعزز هو إنتاج سياسات جيدة.
من الصعب المبالغة في عمومية إطار التعلم المعزز .على سبيل المثال ،يمكننا أن نلقي
بمشاكل التعلم الخاضع ل إلشراف على أنها مشاكل تعلم معزز .لنفترض أن لدينا مشكلة في
التصنيف .يمكننا إنشاء عامل تعلم معزز بإجراء واحد يتوافق مع كل فئة .يمكننا بعد ذلك إنشاء
بيئة تمنح مكافأة تساوي تمامًا دالة الخطأ من مشكلة التعلم األصلية الخاضعة لإلشراف.
ومع ذلك ،يمكن أن يعالج التعلم المعزز أيضًا العديد من المشكالت التي ال يستطيع التعلم
الخاضع لإلشراف القيام بها .على سبيل المثال ،في التعلم الخاضع لإلشراف ،نتوقع دائمًا أن
تكون مدخالت التدريب مرتبطة بالتسمية الصحيحة .لكن في التعلم المعزز ،ال نفترض أنه بالنسبة
لكل مالحظة تخبرنا البيئة بالعمل األمثل .بشكل عام ،نحن فقط نحصل على بعض المكافآت.
عالوة على ذلك ،قد ال تخبرنا البيئة حتى عن اإلجراءات التي أدت إلى المكافأة.
51 الفصل االول :المقدمة
تأمل في لعبة الشطرنج .تأتي إشارة المكافأة الحقيقية الوحيدة في نهاية اللعبة عندما نفوز ،
ونكسب مكافأة ،على سبيل المثال ، 1 ،أو عندما نخسر ،نحصل على مكافأة ،على سبيل
المثال .-1 ،لذا يجب على المتعلمين المعززين Reinforcement learnersالتعامل مع
مشكلة تعيين االئتمان :credit assignment problemتحديد اإلجراءات التي يجب إلقاء
اللوم عليها في النتيجة .الشيء نفسه ينطبق على الموظف الذي حصل على ترقية في 11أكتوبر.
من المحتمل أن تعكس هذه الترقية عددًا كبيرًا من اإلجراءات المختارة جيدًا خالل العام السابق.
يتطلب الحصول على المزيد من الترقيات في المستقبل معرفة اإلجراءات التي أدت إلى الترقية.
قد يضطر المتعلمون المعززون أيضًا إلى التعامل مع مشكلة المالحظة الجزئية partial
.observabilityأي أن المالحظة الحالية قد ال تخبرك بكل شيء عن حالتك الحالية .لنفترض
أن روبوت التنظيف وجد نفسه محاصرًا في واحدة من العديد من الخزانات المماثلة في المنزل.
قد يتطلب استنتاج الموقع الدقيق للروبوت النظر في مالحظاته السابقة قبل دخول الخزانة.
أخيرًا ،في أي نقطة معينة ،قد يعرف متعلمو التعزيز سياسة جيدة واحدة ،ولكن قد يكون
هناك العديد من السياسات األفضل األخرى التي لم يجربها الوكيل مطلقًا .يجب على متعلم
التعزيز أن يختار باستمرار ما إذا كان سيستغل أفضل استراتيجية معروفة (حاليًا) كسياسة ،أو
استكشاف مساحة االستراتيجيات ،مما قد يتخلى عن بعض المكافآت قصيرة المدى في مقابل
المعرفة.
مشكلة التعلم المعزز العامة هي بيئة عامة للغاية .very general settingتؤثر اإلجراءات
على المالحظات الالحقة .يتم مالحظة المكافآت فقط وفقًا لإلجراءات المختارة .قد تتم مالحظة
البيئة بشكل كامل أو جزئي .قد يسأل الكثير من الباحثين عن تفسير كل هذا التعقيد دفعة واحدة.
عالوة على ذلك ،ال تظهر كل مشكلة عملية كل هذا التعقيد .نتيجة لذلك ،درس الباحثون عددًا
من الحاالت الخاصة لمشاكل التعلم المعزز.
عندما تتم مالحظة البيئة بالكامل ،فإننا نطلق على مشكلة التعلم المعزز عملية قرار ماركوف
.Markov decision processعندما ال تعتمد الحالة على اإلجراءات السابقة ،فإننا نطلق على
المشكلة اسم مشكلة قطاع الطرق السياقية .contextual bandit problemعندما ال تكون
هناك حالة ،فقط مجموعة من اإلجراءات المتاحة مع مكافآت غير معروفة في البداية ،فإن هذه
المشكلة هي مشكلة ماكينات األلعاب المتعددة الكالسيكية classic multi-armed bandit
.problem
Roots 1.4
لقد راجعنا للتو مجموعة فرعية صغيرة من المشكالت التي يمكن للتعلم اآللي معالجتها.
بالنسبة لمجموعة متنوعة من مشكالت التعلم اآللي ،يوفر التعلم العميق أدوات قوية لحلها .على
التعمق في التعلم العميق :األساسيات والمقدمات 52
الرغم من أن العديد من أساليب التعلم العميق هي اختراعات حديثة ،فقد تمت دراسة األفكار
األساسية وراء التعلم من البيانات لعدة قرون .في الواقع ،كان لدى البشر الرغبة في تحليل البيانات
والتنبؤ بالنتائج المستقبلية لفترة طويلة والكثير من العلوم الطبيعية لها جذورها في ذلك .على
سبيل المثال ،تمت تسمية توزيع برنولي Bernoulli distributionعلى اسم جاكوب برنولي
( ،)1655-1705واكتشف كارل فريدريش غاوس( )1855-1777التوزيع الغاوسي
.Gaussian distributionاخترع ،على سبيل المثال ،خوارزمية المربعات األقل متوسطًا least
، mean squares algorithmوالتي ال تزال تُستخدم حتى اليوم لمشاكل ال حصر لها من
حسابات التأمين إلى التشخيص الطبي .أدت هذه األدوات إلى ظهور نهج تجريبي في العلوم
الطبيعية -على سبيل المثال ،قانون أوم المتعلق بالتيار والجهد في المقاوم موصوفًا تمامًا
بواسطة نموذج خطي.
حتى في العصور الوسطى ،كان لدى علماء الرياضيات حدس شديد للتقديرات .على سبيل
المثال ،يوضح كتاب الهندسة لجاكوب كوبيل ( )1533-1460متوسط طول قدم الرجل البالغ
16لتقدير متوسط طول القدم في السكان (الشكل .)1.4.1
عندما خرجت مجموعة من األفراد من الكنيسة ،طُلب من 16رجالً بالغًا الوقوف في صف
واحد وقياس أقدامهم .ثم تم قسمة مجموع هذه القياسات على 16للحصول على تقدير لما
يصل اآلن إلى قدم واحدة .تم تحسين هذه "الخوارزمية" فيما بعد للتعامل مع األقدام المشوهة.
تم طرد الرجلين ذوي أقصر وأطول أقدام ،بمتوسط أكثر من الباقي فقط .هذا من بين األمثلة
المبكرة لتقدير المتوسط المقطوع .trimmed mean estimate
لقد انطلقت اإلحصائيات حقًا من خالل جمع البيانات وتوافرها .ساهم أحد روادها ،رونالد
فيشر ( ، )1962-1890بشكل كبير في نظريتها وتطبيقاتها أيضًا في علم الوراثة .ال تزال العديد
من خوارزمياته (مثل تحليل التمايز الخطي )linear discriminant analysisوالصيغ (مثل
مصفوفة معلومات فيشر )Fisher information matrixتحتل مكانة بارزة في أسس اإلحصاء
الحديث .حتى موارد البيانات الخاصة به كان لها تأثير دائم .ال تزال مجموعة بيانات Irisالتي
أصدرها فيشر في عام 1936مستخدمة أحيانًا إلثبات خوارزميات التعلم اآللي .كان فيشر أيضًا
مؤيدًا لعلم تحسين النسل ،eugenicsوالذي يجب أن يذكرنا بأن االستخدام المشكوك فيه
أخالقياً لعلم البيانات له تاريخ طويل ودائم مثل استخدامه المنتج في الصناعة والعلوم الطبيعية.
جاء التأثير الثاني للتعلم اآللي من نظرية المعلومات لكلود شانون ( )2001-1916ونظرية
الحساب عبر آالن تورينج ( .)1954-1912طرح تورينج السؤال "هل يمكن لآلالت أن تفكر؟"
في مقالته الشهيرة .)Turing, 1950( Computing Machinery and Intelligenceفي
ما وصفه باختبار تورينج ،Turing testيمكن اعتبار اآللة ذكية intelligentإذا كان من الصعب
على المقيم البشري التمييز بين الردود من اآللة واإلنسان بناءً على التفاعالت النصية.
يمكن العثور على تأثير آخر في علم األعصاب neuroscienceوعلم النفس .psychology
بعد كل شيء ،من الواضح أن البشر يظهرون سلوكًا ذكيًا .تساءل العديد من العلماء عما إذا كان
بإمكان المرء تفسير هذه القدرة وربما عكسها .أحد أقدم الخوارزميات المستوحاة من الناحية
البيولوجية صاغها دونالد هب ( .)1985-1904في كتابه الرائد تنظيم السلوك The
، )1949 ،Hebb and Hebb( Organization of Behaviorافترض أن الخاليا العصبية
تتعلم من خالل التعزيز اإليجابي .أصبح هذا معروفًا باسم قاعدة التعلم .Hebbianهذه األفكار
المستوحاة من أعمال الحقة مثل خوارزمية تعلم اإلدراك الحسي لروزنبالت Rosenblatt’s
perceptron learningووضعت األسس للعديد من خوارزميات التدرج االشتقاقي العشوائي
التي تدعم التعلم العميق اليوم :تعزيز السلوك المرغوب وتقليل السلوك غير المرغوب فيه
للحصول على إعدادات جيدة للمعلمات في الشبكة العصبية.
الباحثون تجميع دوائر حسابية تشبه شبكات الخاليا العصبية المتفاعلة .بمرور الوقت ،أصبح
تفسير علم األحياء أقل حرفية ،لكن االسم عالق .تكمن في جوهرها بعض المبادئ األساسية
التي يمكن العثور عليها في معظم الشبكات اليوم:
غالبًا ما يشار إلى تبديل وحدات المعالجة الخطية وغير الخطية باسم الطبقات •
.layers
استخدام قاعدة السلسلة ( chain ruleالمعروفة أيضًا باسم )backpropagation •
لضبط المعلمات في الشبكة بأكملها مرة واحدة.
بعد التقدم السريع األولي ،ضعفت األبحاث في الشبكات العصبية من حوالي عام 1995حتى
عام . 2005وهذا يرجع أساسًا إلى سببين .أوالً ،يعد تدريب شبكة ما مكلفًا للغاية من الناحية
الحسابية .بينما كانت ذاكرة الوصول العشوائي وفيرة في نهاية القرن الماضي ،كانت القوة
الح سابية نادرة .ثانيًا ،كانت مجموعات البيانات صغيرة نسبيًا .في الواقع ،كانت مجموعة بيانات
Fisher's Irisمن عام 1932أداة شائعة الختبار فاعلية الخوارزميات .اعتبرت مجموعة بيانات
MNISTبأرقامها المكتوبة بخط اليد البالغ عددها 60000ضخمة.
نظرًا لندرة البيانات والحسابات ،أثبتت األدوات اإلحصائية القوية مثل طرق النواة kernel
methodsوأشجار القرار decision treesوالنماذج الرسومية graphical modelsأنها
متفوقة تجريبيًا في العديد من التطبيقات .عالوة على ذلك ،على عكس الشبكات العصبية
، neural networksلم يحتاجوا إلى أسابيع للتدريب وقدموا نتائج يمكن التنبؤ بها مع ضمانات
نظرية قوية.
الحظ أن ذاكرة الوصول العشوائي لم تواكب نمو البيانات.يف الوقت نفسه ،فاقت الزياداتيف
القوة الحسابية النمويف مجموعات البيانات .هذا يعني أن النماذج اإلحصائية تحتاج إلى أن تصبح
أكثر كفاءةيف استخدام الذاكرة ،وأن تكون حرةيف إنفاق المزيد من دورات الكمبيوتر لتحسين
المعلمات ،بسبب زيادة ميزانية الحساب .وبالتالي ،انتقلت النقطة المثاليةيف التعلم اآللي
واإلحصاءات من النماذج الخطية (المعممة) وطرق النواة إلى الشبكات العصبية العميقة .هذا
أيضًا أحد األسباب التي تجعل العديد من الدعائم األساسية للتعلم العميق ،مثل البيرسيبترون
متعدد الطبقات ،)1943 ،McCulloch and Pitts( multilayer perceptronوالشبكات
العصبية التالفيفية ،)1998 ،LeCun et al.( convolutional neural networksوالذاكرة
طويلة قصيرة المدى Hochreiter and Schmidhuber, ( long short-term memory
،)1997و )1992 ،)1992 ،Watkins and Dayan(Q-Learningبشكل أساسي "أعيد
اكتشافهما"يف العقد الماضي ،بعد أن ظل خامدًا نسبيًا لفترة طويلة.
تم تشبيه التقدم األخيريف النماذج والتطبيقات والخوارزميات اإلحصائيةيف بعض األحيان
باالنفجار الكمبري :Cambrian explosionلحظة تقدم سريعيف تطور األنواع.يف الواقع،
ليست أحدث ما توصلت إليه التكنولوجيا مجرد نتيجة للموارد المتاحة ،المطبقة على خوارزميات
عمرها عقود .الحظ أن القائمة أدناه بالكاد تخدش سطح األفكار التي ساعدت الباحثين على
تحقيق تقدم هائل خالل العقد الماضي.
ساعدت األساليب الجديدة للتحكميف السعة ،مثل الحذف العشوائي dropout •
()2014 ،.Srivastava et alيف التخفيف من فرط التعلم .overfittingهنا ،يتم
حقن الضوضاء ()1995 ،Bishopيف جميع أنحاء الشبكة العصبية أثناء التدريب.
حلت آليات االنتباه Attention mechanismsمشكلة ثانية ابتليت بها •
اإلحصائيات ألكثر من قرن :كيفية زيادة الذاكرة وتعقيد النظام دون زيادة عدد
التعمق في التعلم العميق :األساسيات والمقدمات 56
المعلمات القابلة للتعلم .وجد الباحثون حالً أنيقًا باستخدام ما يمكن اعتباره هيكل
مؤشر قابل للتعلم ،Bahdanau et al.( learnable pointer structure
.)2014بدالً من االضطرار إلى تذكر تسلسل نصي كامل ،على سبيل المثال،
للترجمة اآلليةيف تمثيل ثابت األبعاد ،كان كل ما يلزم تخزينه هو مؤشر إلى الحالة
الوسيطة لعملية الترجمة .سمح ذلك بزيادة الدقة بشكل كبير للتسلسالت الطويلة،
حيث لم يعد النموذج بحاجة إلى تذكر التسلسل بالكامل قبل البدءيف إنشاء تسلسل
جديد .مبنية فقط على آليات االنتباه ،أظهرت بنية المحوالت transformer
( ) 2017 ،Vaswani et al.نجاحًا مقنعًايف مجموعة واسعة من المجاالت .على
سبيل المثال ،يمكن لمحول واحد تم اختباره مسبقًا على طرائق متنوعة مثل
النصوص والصور وعزم الدوران joint torquesالمشتركة والضغط على األزرار
تشغيل Atariوالصور التوضيحية والدردشة والتحكميف الروبوت (،Reed et al.
.)2022
سمحت التصاميم متعددة المراحل ، Multi-stage designsعلى سبيل المثال، •
عبر شبكات الذاكرة ( )2015 ،Sukhbaatar et al.والمبرمج العصبي -
المترجم ،Reed and De Freitas ( neural programmer-interpreter
)2015للمصممين اإلحصائيين لوصف األساليب التكرارية لالستدالل .تسمح
هذه األدوات بتعديل الحالة الداخلية للشبكة العصبية العميقة بشكل متكرر ،وبالتالي
تنفيذ خطوات الحقةيف سلسلة من التفكير ،على غرار الطريقة التي يمكن بها
للمعالج تعديل الذاكرة إلجراء عملية حسابية.
تطور رئيسي آخر كان اختراع شبكات الخصومة التوليدية Generative •
) .)2014 ،Goodfellow et al.( Adversarial Networks(GANتقليديا،
ركزت الطرق اإلحصائية لتقدير الكثافة والنماذج التوليدية على إيجاد توزيعات
احتمالية مناسبة وخوارزميات (تقريبية غالبًا) ألخذ العينات منها .نتيجة لذلك،
كانت هذه الخوارزميات محدودة إلى حد كبير بسبب االفتقار إلى المرونة الكامنةيف
النماذج اإلحصائية .كان االبتكار الحاسميف شبكات الخصومة التوليدية هو استبدال
جهاز أخذ العينات بخوارزمية تعسفية بمعلمات قابلة للتفاضل .ثم يتم تعديلها
بطريقة تجعل المميز ( discriminatorاختبار من عينتين فعليًا) ال يستطيع التمييز
بين البيانات المزيفة والحقيقية .من خالل القدرة على استخدام الخوارزميات
التعسفية لتوليد البيانات ،فقد فتح تقدير الكثافة لمجموعة متنوعة من التقنيات.
أمثلة على ركض الحمر الوحشية )2017 ،Zhu et al.( galloping Zebras
ووجوه المشاهير المزيفة ( )2017 ،Karras et al.دليل على هذا التقدم .يمكن
حتى لرسامي رسومات الشعار المبتكرة الهواة إنتاج صور واقعية استنادًا إلى
57 الفصل االول :المقدمة
الرسومات التخطيطية فقط التي تصف كيف يبدو تخطيط المشهد (،Park et al.
.)2019
في كثير من الحاالت ،ال تكفي وحدة معالجة الرسومات الواحدة لمعالجة الكميات •
الكبيرة من البيانات المتاحة للتدريب .على مدى العقد الماضي ،تحسنت القدرة
على بناء خوارزميات تدريب متوازية وموزعة بشكل كبير .أحد التحديات الرئيسية
في تصميم خوارزميات قابلة للتطوير هو أن العمود الفقري لتحسين التعلم العميق،
التدرج االشتقاقي العشوائي ،stochastic gradient descentيعتمد على دفعات
صغيرة minibatchesنسبيًا من البيانات المراد معالجتها.يف الوقت نفسه ،تحد
الدفعات الصغيرة من كفاءة وحدات معالجة الرسومات .وبالتالي ،فإن التدريب على
1024وحدة معالجة رسومات بحجم صغير يبلغ 32صورة على سبيل المثال لكل
دفعة يصل إلى مجموعة مصغرة مجمعة من حوالي 32000صورة .العمل األخير،
أوالً بواسطة ،)2017( Liوبعد ذلك بواسطة )2017( .You et alو ..Jia et al
( )2018دفع الحجم إلى 64000مالحظة ،مما قلل من وقت التدريب لنموذج
ResNet-50على مجموعة بيانات ImageNetإلى أقل من 7دقائق .للمقارنة
-تم قياس أوقات التدريبيف البداية بترتيب األيام.
ساهمت القدرة على موازاة الحساب أيضًا في التقدم في التعلم المعزز ،وقد أدى •
ذلك إلى تقدم كبير في أجهزة الكمبيوتر التي تحقق أداءً خارقًا في مهام مثل ، Go
وألعاب ، Atariو ، Starcraftوفي محاكاة الفيزياء (على سبيل المثال ،باستخدام
،) MuJoCoحيث توجد محاكيات البيئة متوفرة .انظر ،على سبيل المثال
)2016 .Silver et al(،للحصول على وصف لكيفية تحقيق ذلك في
.AlphaGoباختصار ،يعمل التعلم المعزز بشكل أفضل إذا توفر الكثير من
مجموعات (الحالة ،stateاإلجراء ، actionالمكافأة .)rewardالمحاكاة توفر
مثل هذا الطريق.
لعبت أطر التعلم العميق دورًا مهمًا في نشر األفكار .يتكون الجيل األول من األطر •
مفتوحة المصدر لنمذجة الشبكة العصبية من Caffeو Torchو .Theanoتمت
كتابة العديد من األوراق األساسية باستخدام هذه األدوات .حتى اآلن ،حلت محلها
( TensorFlowغالبًا ما تستخدم عبر API Kerasعالي المستوى) و CNTK
و Caffe 2و .Apache MXNetيتكون الجيل الثالث من األدوات مما يسمى
باألدوات اإللزامية imperative toolsللتعلم العميق ،وهو اتجاه أشعله تشينر
على األرجح ،والذي استخدم صيغة مشابهة لـ Python NumPyلوصف
النماذج .تم تبني هذه الفكرة من قبل كل من PyTorchو Gluon APIمن
MXNetو .Jax
التعمق في التعلم العميق :األساسيات والمقدمات 58
أدى تقسيم العمل بين الباحثين في النظام الذين يبنون أدوات أفضل والمصممين اإلحصائيين
لبناء شبكات عصبية أفضل إلى تبسيط األمور إلى حد كبير .على سبيل المثال ،كان تدريب نموذج
االنحدار اللوجستي الخطي linear logistic regressionيمثل مشكلة واجبات منزلية غير
بديهية ،تستحق أن تمنح لطالب دكتوراه التعلم اآللي الجدد في جامعة كارنيجي ميلون في
.2014حتى اآلن ،يمكن إنجاز هذه المهمة بأقل من 10أسطر من التعليمات البرمجية ،مما
يضعها بقوة في متناول المبرمجين.
في اآلونة األخيرة فقط ،أصبح الذكاء االصطناعي في دائرة الضوء ،ويرجع ذلك في الغالب
إلى حلول المشكالت التي كانت تعتبر مستعصية في السابق والتي تتعلق مباشرة بالمستهلكين.
يُعزى العديد من هذه التطورات إلى التعلم العميق.
هذا بالكاد يخدش السطح للتطبيقات المؤثرة للتعلم اآللي .على سبيل المثال ،تدين
الروبوتات واللوجستيات وعلم األحياء الحسابي وفيزياء الجسيمات وعلم الفلك ببعض
التطورات الحديثة األكثر إثارة لإلعجاب على األقل في أجزاء من التعلم اآللي .وهكذا أصبح
التعلم اآللي أداة منتشرة في كل مكان للمهندسين والعلماء.
في كثير من األحيان ،أثيرت أسئلة حول نهاية العالم القادمة للذكاء االصطناعي ومعقولية
التفرد في مقاالت غير تقنية عن الذكاء االصطناعي .الخوف هو أن أنظمة التعلم اآللي ستصبح
التعمق في التعلم العميق :األساسيات والمقدمات 60
بطر يقة ما واعية وتتخذ القرارات ،بشكل مستقل عن مبرمجيها الذين يؤثرون بشكل مباشر على
حياة البشر .إلى حد ما ،يؤثر الذكاء االصطناعي بالفعل على سبل عيش البشر بطرق مباشرة :يتم
تقييم الجدارة االئتمانية تلقائيًا ،ويتنقل الطيارون اآلليون في الغالب في المركبات ،واتخاذ
قرارات بشأن منح بيانات إحصائية الستخدام الكفالة كمدخالت .بشكل تافه ،يمكننا أن نطلب
من Alexaتشغيل آلة القهوة.
لحسن الحظ ،نحن بعيدون عن نظام ذكاء اصطناعي واعي sentient AI systemيمكنه
التالعب عمدا بمنشئيه البشريين .أوالً ،يتم تصميم أنظمة الذكاء االصطناعي وتدريبها ونشرها
بطريقة محددة وموجهة نحو الهدف .في حين أن سلوكهم قد يعطي وهم الذكاء العام ،إال أنه
مزيج من القواعد واالستدالل والنماذج اإلحصائية التي تكمن وراء التصميم .ثانيًا ،في الوقت
الحالي ،ال توجد أدوات للذكاء العام االصطناعي قادرة على تحسين نفسها ،والتفكير حول
نفسها ،والقادرة على تعديل بنيتها الخاصة وتوسيعها وتحسينها أثناء محاولة حل المهام العامة.
من أكثر األمور إلحاحًا كيفية استخدام الذكاء االصطناعي في حياتنا اليومية .من المحتمل أن
تتم أتمتة العديد من المهام الوضيعة التي ينجزها سائقي الشاحنات ومساعدو المتاجر .من
المحتمل أن تقلل روبوتات المزرعة من تكلفة الزراعة العضوية ولكنها ستعمل أيضًا على أتمتة
عمليات الحصاد .قد يكون لهذه المرحلة من الثورة الصناعية عواقب وخيمة على قطاعات واسعة
من المجتمع ،حيث أن سائقي الشاحنات ومساعدي المتاجر هم من أكثر الوظائف شيوعًا في
العديد من البلدان .عالوة على ذلك ،يمكن أن تؤدي النماذج اإلحصائية ،عند تطبيقها دون عناية،
إلى تحيز عرقي أو جنساني أو عمري وتثير مخاوف معقولة بشأن اإلنصاف اإلجرائي إذا كانت
مؤتمتة لقيادة القرارات الالحقة .من المهم التأكد من استخدام هذه الخوارزميات بعناية .مع ما
نعرفه اليوم ،فإن هذا يثير قلقنا أكثر إلحاحًا من قدرة الذكاء الخارق الخبيث على تدمير البشرية.
المشاكل التي ناقشناها حتى اآلن ،مثل التعلم من إشارة الصوت الخام ،أو قيم البكسل األولية
للصور ،أو التعيين بين الجمل ذات األطوال التعسفية ونظيراتها في اللغات األجنبية ،هي تلك
التي يتفوق فيها التعلم العميق وتعثر األساليب التقليدية .اتضح أن هذه النماذج متعددة الطبقات
قادرة على معالجة البيانات اإلدراكية منخفضة المستوى low-level perceptual data
بطريقة لم تستطع األدوات السابقة القيام بها .يمكن القول إن أهم عامل مشترك في أساليب التعلم
العميق هو التدريب الشامل .end-to-end trainingبمعنى ،بدالً من تجميع نظام يعتمد
على المكونات التي يتم ضبطها بشكل فردي ،يقوم المرء ببناء النظام ثم ضبط أدائه بشكل مشترك.
على سبيل المثال ،استخدم العلماء في رؤية الكمبيوتر لفصل عملية هندسة الميزات feature
engineeringعن عملية بناء نماذج التعلم اآللي .ساد كاشف الحواف ،Canny ( Canny
)1987ومستخرج ميزة SIFTمن )2004 ،Lowe (Loweألكثر من عقد من الزمن
كخوارزميات لتعيين الصور في متجهات الميزات .feature vectorsفي األيام الخوالي ،كان
الجزء األساسي من تطبيق التعلم اآللي على هذه المشكالت يتألف من التوصل إلى طرق مصممة
يدويًا لتحويل البيانات إلى شكل قابل للنماذج الضحلة .shallow modelsلسوء الحظ ،ال
يوجد سوى القليل جدًا الذي يمكن للبشر تحقيقه بالبراعة مقارنةً بالتقييم المتسق لماليين
الخيارات التي يتم تنفيذها تلقائيًا بواسطة خوارزمية .عندما تولى التعلم العميق زمام األمور ،تم
استبدال مستخلصات الميزات feature extractorsهذه بفالتر تم ضبطها تلقائيًا
،automatically tuned filtersمما أدى إلى الحصول على دقة فائقة.
وبالتالي ،فإن إحدى الميزات الرئيسية للتعلم العميق هي أنه ال يستبدل النماذج الضحلة في
نهاية خطوط التعلم التقليدية فحسب ،بل يستبدل أيضًا عملية هندسة الميزات كثيفة العمالة
.labor-intensiveعالوة على ذلك ،من خالل استبدال الكثير من المعالجة المسبقة الخاصة
بالمجال ،أزال التعلم العميق العديد من الحدود التي كانت تفصل سابقًا بين الرؤية الحاسوبية ،
والتعرف على الكالم ،ومعالجة اللغة الطبيعية ،والمعلوماتية الطبية ،ومجاالت التطبيق األخرى،
مما يوفر مجموعة موحدة من األدوات لمعالجة مشاكل متنوعة.
هناك اختالف آخر عن العمل السابق وهو قبول الحلول دون المثالية ، suboptimalوالتعامل
مع مشاكل التحسين غير الخطية غير المحدبة ، nonconvex nonlinear optimization
واالستعداد لتجربة األشياء قبل إثباتها .أدت هذه التجريبية empiricismالمكتشفة حديثًا في
التعامل مع المشكالت اإلحصائية ،جنبًا إلى جنب مع التدفق السريع للمواهب إلى تقدم سريع
في الخوارزميات العملية ،وإن كان ذلك في كثير من الحاالت على حساب تعديل وإعادة اختراع
األدوات التي كانت موجودة منذ عقود.
في النهاية ،يفخر مجتمع التعلم العميق بنفسه لمشاركة األدوات عبر الحدود األكاديمية
والشركات ،وإطالق العديد من المكتبات الممتازة ،والنماذج اإلحصائية ،والشبكات المدربة
كمصدر مفتوح .وبهذه الروح ،فإن النوتبوك notebooksالتي تشكل هذا الكتاب متاحة مجانًا
للتوزيع واالستخدام .لقد عملنا بجد لخفض حواجز الوصول للجميع للتعرف على التعلم العميق
ونأمل أن يستفيد قرائنا من ذلك.
1.8
يدرس التعلم اآللي كيف يمكن ألنظمة الكمبيوتر االستفادة من الخبرة (غالبًا البيانات)
لتحسين األداء في مهام محددة .فهو يجمع بين األفكار من اإلحصائيات ،واستخراج البيانات ،
والتحسين .في كثير من األحيان ،يتم استخدامه كوسيلة لتنفيذ حلول الذكاء االصطناعي .بصفته
فئة من فئات التعلم اآللي ،يركز التعلم التمثيلي representational learningعلى كيفية العثور
تلقائ يًا على الطريقة المناسبة لتمثيل البيانات .نظرًا ألن التعلم التمثيلي متعدد المستويات من
خالل تعلم العديد من طبقات التحوالت ،فإن التعلم العميق ال يحل محل النماذج الضحلة في
نهاية خطوط أنابيب التعلم اآللي التقليدية فحسب ،بل يستبدل أيضًا عملية هندسة الميزات كثيفة
العمالة .تم إطالق الكثير من التقدم األخير في التعلم العميق من خالل وفرة البيانات الناشئة عن
أجهزة االستشعار الرخيصة والتطبيقات على نطاق اإلنترنت ،والتقدم الكبير في الحساب ،في
الغالب من خالل وحدات معالجة الرسومات .إلى جانب ذلك ،فإن توافر أطر عمل التعلم العميق
الفعالة قد جعل تصميم وتنفيذ تحسين النظام بالكامل أسهل بشكل كبير ،وهو عنصر أساسي في
الحصول على أداء عالٍ.
1.9
.1أي أجزاء من التعليمات البرمجية التي تكتبها حاليًا يمكن "تعلمها" ،أي تحسينها
بالتعلم وتحديد خيارات التصميم تلقائيًا التي يتم إجراؤها في التعليمات البرمجية
الخاصة بك؟ هل تتضمن التعليمات البرمجية الخاصة بك خيارات تصميم
إرشادية؟ ما هي البيانات التي قد تحتاجها لتعلم السلوك المطلوب؟
63 الفصل االول :المقدمة
.2ما هي المشاكل التي تواجهها والتي لديها العديد من األمثلة على كيفية حلها ،ولكن
ال توجد طريقة محددة ألتمتتها؟ قد يكون هؤالء مرشحين رئيسيين الستخدام
التعلم العميق.
.3وصف العالقات بين الخوارزميات والبيانات والحساب .كيف تؤثر خصائص
البيانات والموارد الحسابية الحالية المتاحة على مالءمة الخوارزميات المختلفة؟
.4قم بتسمية بعض اإلعدادات حيث ال يكون التدريب الشامل end-to-end
trainingهو األسلوب االفتراضي حاليًا ولكنه قد يكون كذلك.
االساسيات 2
65 الفصل الثاني :االساسيات
Preliminaries 2
للتحضير للغوص (للتعمق)يف التعلم العميق ،ستحتاج إلى بعض مهارات البقاء )1( :تقنيات
تخزين البيانات ومعالجتها ؛ ( )2مكتبات الستيعاب ومعالجة البيانات من مجموعة متنوعة من
المصادر؛ ( ) 3معرفة العمليات الجبرية الخطية األساسية التي نطبقها على عناصر البيانات عالية
األبعاد ؛ ( )4ما يكفي من حساب التفاضل والتكامل لتحديد االتجاه الذي يضبط كل معلمة
لتقليل دالة الخطأ ؛ ( ) 5القدرة على حساب المشتقات تلقائيًا بحيث يمكنك نسيان الكثير من
حسابات التفاضل والتكامل التي تعلمتها للتو ؛ ( )6بعض الطالقة األساسيةيف االحتمالية ،لغتنا
األساسية لالستدالليف ظل عدم اليقين ؛ و ( )7بعض القدرة على العثور على إجاباتيف الوثائق
الرسمية عندما تتعثر.
باختصار ،يوفر هذا الفصل مقدمة سريعة لألساسيات التي ستحتاجها لمتابعة معظم المحتوى
الفنييف هذا الكتاب.
2.1.1
للبدء ،نستورد .Tensorflowلإليجاز ،غالبًا ما يقوم الممارسون بتعيين االسم المستعار .tf
يوفر TensorFlowمجموعة متنوعة من الدوال إلنشاء موترات جديدة معبأة مسبقًا بالقيم .على
سبيل المثال ،من خالل استدعاء النطاق ( ،)nيمكننا إنشاء متجه لقيم متباعدة بشكل متساوٍ،
بدءًا من ( 0مضمّن) وينتهي عند ( nغير مضمن) .بشكل افتراضي ،يكون حجم الفاصل الزمني
هو .1ما لم يتم تحديد خالف ذلك ،يتم تخزين الموترات الجديدةيف الذاكرة الرئيسية
وتخصيصها للحسابات المعتمدة على وحدة المعالجة المركزية .CPU
)tf.size(x
يمكننا الوصول إلى شكل الموتر ( tensor’s shapeالطول على طول كل محور) من خالل فحص
سمة الشكل الخاصة به .نظرًا ألننا نتعامل مع متجه هنا ،فإن الشكل shapeيحتوي على عنصر
واحد فقط وهو مطابق للحجم.
x.shape
)]TensorShape([12
يمكننا تغيير شكل الموتر دون تغيير حجمه أو قيمه ،عن طريق استدعاء إعادة الشكل .reshape
على سبيل المثال ،يمكننا تحويل المتجه xالذي شكله ( )12,إلى مصفوفة Xبالشكل (.)3, 4
يحتفظ هذا الموتر الجديد بجميع العناصر ولكنه يعيد تكوينهايف مصفوفة .الحظ أن عناصر
المتجه الخاصة بنا يتم وضعهايف صف واحديف كل مرة وبالتالي ].x[3] == X[0, 3
غالبًا ما يحتاج الممارسون إلى العمل مع الموترات المهيأة الحتواء جميع األصفار أو اآلحاد.
يمكننا بناء موتر مع ضبط جميع العناصر على الصفر وشكل ) (2, 3, 4عبر دالة األصفار .zeros
))tf.zeros((2, 3, 4
=<tf.Tensor: shape=(2, 3, 4), dtype=float32, numpy
array([[[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]],
))tf.ones((2, 3, 4
=<tf.Tensor: shape=(2, 3, 4), dtype=float32, numpy
array([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
)]tf.random.normal(shape=[3, 4
=<tf.Tensor: shape=(3, 4), dtype=float32, numpy
array([[ 1.5391479 , -1.7407725 , 0.44389075,
0.8466314 ],
[-0.486678 , -1.3573753 , 0.09524103, -1.758265
],
[ 0.7030494 , 1.1621033 , 0.98620087,
1.6612175 ]],
>)dtype=float32
التعمق في التعلم العميق :األساسيات والمقدمات 68
أخيرًا ،يمكننا إنشاء الموترات من خالل توفير القيم الدقيقة لكل عنصر من خالل توفير (ربما
تكون متداخلة) قائمة (قوائم) بايثون تحتوي على حرفية رقمية .هنا ،نقوم ببناء مصفوفة بقائمة
من القوائم ،حيث تتوافق القائمة الخارجية مع المحور ،0والقائمة الداخلية مع المحور .1
]X[-1], X[1:3
[((<tf.Tensor: shape=(4,), dtype=float32, numpy=array
8., 9., 10., 11.], dtype=float32)>,
=<tf.Tensor: shape=(2, 4), dtype=float32, numpy
array([[ 4., 5., 6., 7.],
)>)[ 8., 9., 10., 11.]], dtype=float32
الموترات Tensorsيف TensorFlowغير قابلة للتغيير immutableوال يمكن التخصيص
لها .المتغيرات Variablesفي TensorFlowعبارة عن حاويات قابلة للتغيير mutable
يف للحالة تدعم التعيينات .assignmentsضعيف اعتبارك أن التدرجات gradients
TensorFlowال تتدفق للخلف من خالل المهام المتغيرة.
باإلضافة إلى تعيين قيمة للمتغير بأكمله ،يمكننا كتابة عناصر المتغير Variableعن طريق
تحديد المؤشرات.
)X_var = tf.Variable(X
)X_var[1, 2].assign(9
X_var
<tf.Variable 'Variable:0' shape=(3, 4) dtype=float32,
=numpy
array([[ 0., 1., 2., 3.],
69 الفصل الثاني :االساسيات
)X_var = tf.Variable(X
X_var[:2, :].assign(tf.ones(X_var[:2,:].shape,
)dtype=tf.float32) * 12
X_var
<tf.Variable 'Variable:0' shape=(3, 4) dtype=float32,
=numpy
array([[12., 12., 12., 12.],
[12., 12., 12., 12.],
>)[ 8., 9., 10., 11.]], dtype=float32
Operations 2.1.3
اآلن بعد أن عرفنا كيفية بناء الموترات وكيفية القراءة من عناصرها والكتابة إليها ،يمكننا البدءيف
معالجتها بعمليات رياضية مختلفة .من بين األدوات األكثر فائدة هي عمليات العناصر
.elementwise operationsهذه تطبق عملية scalarقياسية على كل عنصر من عناصر
الموتر .بالنسبة للدوال التي تأخذ موترتين كمدخالت ،تطبق العمليات األولية بعض العوامل
الثنائية القياسية على كل زوج من العناصر المقابلة .يمكننا إنشاء دالة عنصرية elementwise
functionمن أي دالة تقوم بتعيينها من عددي إلى عددي.
في التدوين الرياضي ،mathematical notationنشير إلى هذه العوامل العددية األحادية (مع
إدخال مدخل واحد) من خالل التوقيع .𝑓: ℝ → ℝهذا يعني فقط أن الدالة ترسم من أي رقم
حقيقي إلى عدد حقيقي آخر .يمكن تطبيق معظم العوامل المعيارية بطريقة أساسية بمايف ذلك
المشغلين األحاديين مثل 𝑥 𝑒.
)tf.exp(x
=<tf.Tensor: shape=(12,), dtype=float32, numpy
array([1.0000000e+00, 2.7182817e+00, 7.3890562e+00,
2.0085537e+01,
5.4598148e+01, 1.4841316e+02, 4.0342877e+02,
1.0966332e+03,
2.9809580e+03, 8.1030840e+03, 2.2026465e+04,
5.9874141e+04],
>)dtype=float32
التعمق في التعلم العميق :األساسيات والمقدمات 70
وبالمثل ،فإننا نشير إلى العوامل العددية الثنائية ،والتي تقوم بتعيين أزواج من األرقام الحقيقية
إلى رقم حقيقي (واحد) عبر التوقيع .𝑓: ℝ, ℝ → ℝبالنظر إلى أي متجهين 𝐮 و𝐯 من نفس
الشكل ،وعامل ثنائي 𝑓 ،يمكننا إنتاج متجه )𝐯 𝐜 = 𝐹(𝐮,عن طريق تعيين عناصر المتجهات
) 𝑖𝑣 𝑐𝑖 ← 𝑓(𝑢𝑖 ,لكل 𝑖 ،وأين 𝑖𝑢 ،𝑐𝑖 ,و 𝑖 thعناصر المتجهات 𝐮 ،𝐜,و .هنا ،أنتجنا قيمة المتجه
𝑑 𝐹: ℝ𝑑 , ℝ𝑑 → ℝبرفع الدالة العددية إلى عملية متجه عنصري .تم رفع جميع العوامل
الحسابية القياسية الشائعة للجمع ( ،)+والطرح ( ،)-والضرب (*) ،والقسمة ( ،)/واألس
(**) إلى العمليات األولية لموترات متطابقة الشكل ذات شكل عشوائي.
يمكننا أيضًا ربط العديد من الموترات معًا ،وتكديسها من طرف إلى طرف لتشكيل موتر أكبر.
نحتاج فقط إلى تقديم قائمة بالموترات وإخبار النظام بالمحور المراد ربطه .يوضح المثال أدناه
ما يحدث عندما نجمع مصفوفتين على طول الصفوف (المحور )0مقابل األعمدة (المحور .)1
يمكننا أن نرى أن طول المحور 0للمخرج األول ( )6هو مجموع أطوال المحور 0لموتر اإلدخال
()3 + 3؛ بينما طول المحور 1للمخرج الثاني ( )8هو مجموع أطوال محور 1لموتر اإلدخال
(.)4 + 4
X == Y
=<tf.Tensor: shape=(3, 4), dtype=bool, numpy
array([[False, True, False, True],
[False, False, False, False],
>)]][False, False, False, False
يؤدي جمع كل العناصريف الموتر إلى إنتاج موتر بعنصر واحد فقط.
)tf.reduce_sum(X
><tf.Tensor: shape=(), dtype=float32, numpy=66.0
Broadcasting 2.1.4
اآلن ،أنت تعرف كيفية إجراء عمليات ثنائية العناصر على موترين من نفس الشكل.يف ظل ظروف
معينة ،حتى عندما تختلف األشكال ،ال يزال بإمكاننا إجراء عمليات ثنائية العناصر عن طريق
استدعاء آلية البث .Broadcastingيعمل البث وفقًا لإلجراء التالي المكون من خطوتين)1( :
توسيع أحد المصفوفتين أو كليهما عن طريق نسخ العناصر على طول المحاور بطول 1بحيث
يكون للموترين نفس الشكل بعد هذا التحويل؛ ( )2إجراء عملية عنصرية elementwise
operationعلى المصفوفات الناتجة.
a + b
=<tf.Tensor: shape=(3, 2), dtype=int32, numpy
array([[0, 1],
[1, 2],
>)[2, 3]], dtype=int32
Saving Memory 2.1.5
يمكن أن تؤدي العمليات الجارية إلى تخصيص ذاكرة جديدة لنتائج المضيف .على سبيل المثال،
إذا كتبنا ،Y = X + Yفإننا نلغي اإلشارة إلى الموتر الذي استخدمه Yلإلشارة إليه وبدالً من
ذلك نشير إلى Yيف الذاكرة المخصصة حديثًا .يمكننا توضيح هذه المشكلة باستخدام دالة )(id
في بايثون ،والتي تعطينا العنوان الدقيق للكائن المشار إليهيف الذاكرة .الحظ أنه بعد تشغيل
) ،Y = Y + X, id(Yيشير المعرف ( )Yإلى موقع مختلف .هذا ألن بايثون أول من يقيّم
،Y + Xويخصص ذاكرة جديدة للنتيجة ثم يشير Yإلى هذا الموقع الجديديف الذاكرة.
)before = id(Y
Y = Y + X
id(Y) == before
False
قد يكون هذا غير مرغوب فيه لسببين .أوالً ،ال نريد االلتفاف حول تخصيص الذاكرة دون داعٍ
طوال الوقت.يف التعلم اآللي ،غالبًا ما يكون لدينا مئات الميجابايت من المعلمات ونقوم بتحديثها
جميعًا عدة مراتيف الثانية .كلما كان ذلك ممكنًا ،نريد إجراء هذه التحديثاتيف مكانها الصحيح.
ثانيًا ،قد نشير إلى نفس المعلمات من متغيرات متعددة .إذا لم نقم بالتحديثيف مكانه الصحيح،
فيجب أن نكون حريصين على تحديث كل هذه المراجع ،لئال نتسببيف تسرب للذاكرة أو نشير
عن غير قصد إلى معلمات قديمة.
))Z = tf.Variable(tf.zeros_like(Y
))print('id(Z):', id(Z
73 الفصل الثاني :االساسيات
)Z.assign(X + Y
))print('id(Z):', id(Z
id(Z): 140011833215008
id(Z): 140011833215008
حتى بعد تخزين الحالة باستمراريف متغير ،Variableقد ترغبيف تقليل استخدام الذاكرة
بشكل أكبر عن طريق تجنب التخصيصات الزائدة لموترات ليست معلمات نموذجك .نظرًا ألن
موترات TensorFlowغير قابلة للتغيير immutableوال تتدفق التدرجات gradientsمن
خالل التعيينات المتغيرة ،ال يوفر TensorFlowطريقة واضحة لتشغيل عملية فرديةيف المكان.
@tf.function
def computation(X, Y):
Z = tf.zeros_like(Y) # This unused value will be
pruned out
A = X + Y # Allocations will be reused when no
longer needed
B = A + Y
C = B + Y
return C + Y
)computation(X, Y
=<tf.Tensor: shape=(3, 4), dtype=float32, numpy
array([[ 8., 9., 26., 27.],
[24., 33., 42., 51.],
>)[56., 57., 58., 59.]], dtype=float32
2.1.6
يعد التحويل إلى موتر ) NumPy (ndarrayأو العكس أمرًا سهالً .النتيجة المحولة ال تشترك
في الذاكرة .هذا اإلزعاج البسيط مهم جدًايف الواقع :عند إجراء عمليات على وحدة المعالجة
المركزية CPUأو على وحدات معالجة الرسومات ،GPUsفأنت ال تريد إيقاف الحساب،يف
انتظار معرفة ما إذا كانت حزمة NumPyمن بايثون قد ترغبيف القيام بشيء آخر بنفس جزء
الذاكرة.
)(A = X.numpy
)B = tf.constant(A
)type(A), type(B
التعمق في التعلم العميق :األساسيات والمقدمات 74
(numpy.ndarray,
)tensorflow.python.framework.ops.EagerTensor
لتحويل موتر بحجم 1إلى ،Python scalarيمكننا استدعاء دالة العنصر itemأو دوال بايثون
المضمنة.
)(a = tf.constant([3.5]).numpy
)a, a.item(), float(a), int(a
)(array([3.5], dtype=float32), 3.5, 3.5, 3
2.1.7
كالس الموتر tensor classهي الواجهة الرئيسية لتخزين البيانات ومعالجتها في •
مكتبات التعلم العميق.
توفر Tensorsمجموعة متنوعة من الدوال بما في ذلك إجراءات البناء •
construction routines؛ الفهرسة indexingوالتقطيع slicingالعمليات
الرياضيات األساسية ؛ البث .broadcastingالتخصيص الفعال للذاكرة memory-
efficient assignment؛ والتحويل من وإلى كائنات بايثون األخرى.
2.1.8
قم بتشغيل الكود في هذا القسم .قم بتغيير العبارة الشرطية X == Yإلى X < Y •
أو ، X > Yثم انظر إلى نوع الموتر الذي يمكنك الحصول عليه.
استبدل الموترتين اللتين تعمالن بواسطة عنصر في آلية البث بأشكال أخرى ،على •
سبيل المثال ،موترات ثالثية األبعاد .هل النتيجة هي نفسها كما هو متوقع؟
import os
)data = pd.read_csv(data_file
)print(data
NumRooms RoofType Price
0 NaN NaN 127500
1 2.0 NaN 106000
2 4.0 Slate 178100
3 NaN NaN 140000
Data Preparation 2.2.2
في التعلم الخاضع لإلشراف ،نقوم بتدريب النماذج للتنبؤ بقيمة مستهدفة معينة ،مع األخذيف
االعتبار مجموعة معينة من قيم اإلدخال .خطوتنا األولىيف معالجة مجموعة البيانات هي فصل
األعمدة المقابلة لإلدخال inputمقابل القيم المستهدفة .target valuesيمكننا تحديد األعمدة
إما باالسم أو عن طريق الفهرسة القائمة على الموقع الصحيح integer-location based
.)iloc( indexing
فيما يلي بعض أساليب التضمين الشائعة .بالنسبة لحقول اإلدخال الفئوية categorical input
،fieldsيمكننا التعامل مع NaNكفئة .نظرًا ألن العمود RoofTypeيأخذ القيم Slateو
،NaNيمكن للـ pandasتحويل هذا العمود إلى عمودين RoofType_Slateو
Slateقيم .RoofType_nanسيحدد الصف الذي يكون نوع زقاقه هو
RoofType_Slateو RoofType_nanعلى 1و 0على التوالي .يحمل العكس لصف
به قيمة RoofTypeمفقودة.
))(inputs = inputs.fillna(inputs.mean
)print(inputs
NumRooms RoofType_Slate RoofType_nan
0 3.0 0 1
1 2.0 0 1
2 4.0 1 0
3 3.0 0 1
Tensor 2.2.3
اآلن بعد أن أصبحت جميع اإلدخاالتيف المدخالت واألهداف رقمية ،يمكننا تحميلهايف موتر
(تذكر القسم .)2.1
X, y = tf.constant(inputs.values),
)tf.constant(targets.values
X, y
=(<tf.Tensor: shape=(4, 3), dtype=float64, numpy
array([[3., 0., 1.],
77 الفصل الثاني :االساسيات
2.2.5
.1حاول تحميل مجموعات البيانات ،datasetsعلى سبيل المثال Abalone ،من
مستودع UCI Machine Learning Repositoryوفحص خصائصها .أي جزء
منهم يحتوي على قيم مفقودة missing values؟ ما هو جزء المتغيرات العددية
numericalأو الفئوية categoricalأو النصية text؟
.2جرب فهرسة واختيار أعمدة البيانات باالسم بدالً من رقم العمود .تحتوي وثائق
Pandasالخاصة بالفهرسة على مزيد من التفاصيل حول كيفية القيام بذلك.
.3ما حجم مجموعة البيانات التي تعتقد أنه يمكنك تحميلها بهذه الطريقة؟ ما قد تكون
القيود؟ تلميح :ضع في اعتبارك الوقت الالزم لقراءة البيانات والتمثيل والمعالجة
التعمق في التعلم العميق :األساسيات والمقدمات 78
وبصمة الذاكرة .جرب هذا على الكمبيوتر المحمول الخاص بك .ما الذي يتغير إذا
جربته على الخادم؟
.4كيف ستتعامل مع البيانات التي تحتوي على عدد كبير جدًا من الفئات categories؟
ماذا لو كانت تسميات الفئات كلها فريدة unique؟ هل يجب عليك تضمين األخير؟
.5ما هي بدائل الباندا Pandasالتي يمكنك التفكير فيها؟ ماذا عن تحميل موترات
NumPyمن ملف؟ تحقق من ، Pillowمكتبة تصوير .Python
Scalars 2.3.1
تتكون معظم الرياضيات اليومية من معالجة األرقام واحدًا تلو اآلخر .رسميًا ،نسمي هذه القيم
الكميات القياسية .Scalarsعلى سبيل المثال ،درجة الحرارةيف بالو ألتو هي 72درجات
فهرنهايت معتدلة .إذا أردت تحويل درجة الحرارة إلى درجات سيليزية ،فعليك تقييم التعبير = 𝑐
5
) ، (𝑓 − 32وضبط 𝑓 على .72يف هذه المعادلة ،القيم 9 ، 5و 32هي كميات قياسية.
9
المتغيرات 𝑐 و𝑓 تمثل الكميات القياسية غير المعروفة .unknown scalars
نشير إلى الكميات القياسية scalarsبأحرف عادية صغيرة (على سبيل المثال 𝑥 ،و𝑦 و𝑧 ) ومساحة
جميع المقاييس ذات القيمة الحقيقية (المستمرة) بواسطة .ℝمن أجل المنفعة ،سوف نتخطى
التعريفات الصارمة للمساحات السابقة .spacesفقط تذكر أن التعبير 𝑥 ∈ ℝهو طريقة رسمية
للقول بأن هذا عدد حقيقي ذو قيمة 𝑥 .يشير الرمز ∈ (يُنطق " )"inإلى العضويةيف مجموعة .على
سبيل المثال 𝑥, 𝑦 ∈ {0,1}،يشير إلى أن والمتغيرات التي يمكن أن تأخذ فقط قي ًما 0أو. 1
)x = tf.constant(3.0
)y = tf.constant(2.0
x + y, x * y, x / y, x**y
(<tf.Tensor: shape=(), dtype=float32, numpy=5.0>,
<tf.Tensor: shape=(), dtype=float32, numpy=6.0>,
<tf.Tensor: shape=(), dtype=float32, numpy=1.5>,
79 الفصل الثاني :االساسيات
)x = tf.range(3
x
<tf.Tensor: shape=(3,), dtype=int32, numpy=array([0, 1,
>)2], dtype=int32
يمكننا اإلشارة إلى عنصر متجه باستخدام حرف منخفض .subscriptعلى سبيل المثال𝑥2 ،
يشير إلى العنصر الثاني من 𝐱 .نظرًا ألنه قيمة قياسية ،scalarفإننا ال نظهره بخط عريض .بشكل
افتراضي ،نحن نتخيل المتجهات عن طريق تكديس عناصرها عموديًا.
𝑥1
𝐱 = [ ⋮ ],
𝑛𝑥
فيما يلي عناصر المتجه 𝑛𝑥 .𝑥1 , … ,يف وقت الحق ،سوف نميز بين متجهات األعمدة column
vectorsومتجهات الصفوف row vectorsالتي يتم تكديس عناصرها أفقيًا .تذكر أننا نصل
إلى عناصر الموتر عبر الفهرسة .indexing
]x[2
><tf.Tensor: shape=(), dtype=int32, numpy=2
التعمق في التعلم العميق :األساسيات والمقدمات 80
لإلشارة إلى أن المتجه يحتوي على عناصر 𝑛 ،نكتب 𝑛 .𝐱 ∈ ℝبشكل رسمي ،نطلق 𝑛 على
أبعاد المتجه .dimensionality of the vectorيف الكود ،هذا يتوافق مع طول الموتر ،ويمكن
الوصول إليه عبر دالة lenالمدمجةيف بايثون.
)len(x
3
يمكننا أيضًا الوصول إلى الطول عبر سمة الشكل .shapeالشكل عبارة عن مجموعة تشير إلى
طول الموتر على طول كل محور .الموترات التي لها محور واحد فقط لها أشكال تحتوي على
عنصر واحد فقط.
x.shape
)]TensorShape([3
في كثير من األحيان ،يتم تحميل كلمة "بُعد " dimensionبشكل زائد لتعني كالً من عدد المحاور
والطول على طول محور معين .لتجنب هذا االلتباس ،نستخدم الترتيب orderلإلشارة إلى عدد
المحاور واألبعاد dimensionalityحصريًا لإلشارة إلى عدد المكونات.
Matrices 2.3.3
كما أن الكميات القياسية scalarsهي موترات الترتيب 0 -order tensorsوالمتجهات
th
array([[0, 1],
[2, 3],
>)[4, 5]], dtype=int32
في بعض األحيان ،نريد قلب المحاور .عندما نتبادل صفوف وأعمدة المصفوفة ،فإن النتيجة
تسمى تبديلها .transposeبشكل رسمي ،نشير إلى تبديل المصفوفة 𝐀 بواسطة ⊤𝐀 و اذا = 𝐁
⊤𝐀 ،ثم 𝑖𝑗𝑎 = 𝑗𝑖𝑏 لجميع 𝑖 و𝑗 .وبالتالي ،فإن تبديل المصفوفة 𝑛 × 𝑚 عبارة عن مصفوفة
𝑚 × 𝑛:
𝑎11 𝑎21 … 𝑎𝑚1
𝑎12 𝑎22 … 𝑎𝑚2
⋮ [ = ⊤𝐀 ⋮ ⋱ ⋮ ].
𝑛𝑎1 𝑛𝑎2 𝑛𝑚𝑎 …
في الكود ،يمكننا الوصول إلى تبديل أي مصفوفة matrix’s transposeعلى النحو التالي:
)tf.transpose(A
=<tf.Tensor: shape=(2, 3), dtype=int32, numpy
array([[0, 2, 4],
>)[1, 3, 5]], dtype=int32
المصفوفات المتماثلة Symmetric matricesهي مجموعة فرعية من المصفوفات المربعة
square matricesالتي تساوي التبادالت الخاصة بها .𝐀 = 𝐀⊤ :المصفوفة التالية متماثلة:
Tensors 2.3.4
بينما يمكنك الذهاب بعيدًايف رحلة التعلم اآللي الخاصة بك باستخدام الكميات القياسية
Scalarsوالمتجهات vectorsوالمصفوفات Matricesفقط ،فقد تحتاجيف النهاية إلى العمل
مع الموترات ذات الترتيب األعلى .higher-order tensorsتقدم لنا الموترات طريقة عامة
لوصف االمتدادات لمصفوفات الترتيب . nth-order arraysنحن نطلق على كالسات البرامج
من فئة الموتر "موترات " tensorsعلى وجه التحديد ألنها يمكن أن تحتوي أيضًا على أعداد
عشوائية من المحاور.يف حين أنه قد يكون من المربك استخدام كلمة موتر لكل من الكائن الرياضي
وإدراكهيف الكود ،يجب أن يكون معنانا واضحًا من السياق .نشير إلى الموترات العامة بأحرف
التعمق في التعلم العميق :األساسيات والمقدمات 82
كبيرة مع وجه خط خاص (على سبيل المثال 𝖸، 𝖷،و𝖹) وآلية الفهرسة الخاصة بهم (على سبيل
المثال 𝑥𝑖𝑗𝑘 ،و )[𝖷]1,2𝑖−1,3تتبع بشكل طبيعي من المصفوفات.
ستصبح الموترات أكثر أهمية عندما نبدأ العمل مع الصور .تصل كل صورة على هيئة موتر بترتيب
3rd-order tensorمع محاور مقابلة لالرتفاع والعرض والقناة .channelيف كل موقع مكاني،
تتراكم شدة كل لون (أحمر وأخضر وأزرق) على طول القناة .عالوة على ذلك ،يتم تمثيل مجموعة
من الصوريف رمز بواسطة موتر ترتيب ، 4th-order tensorحيث يتم فهرسة الصور المميزة
على طول المحور األول .يتم إنشاء الموترات ذات الترتيب األعلى بشكل مشابه للمتجهات
والمصفوفات ،من خالل زيادة عدد مكونات الشكل.
a = 2
))X = tf.reshape(tf.range(24), (2, 3, 4
a + X, (a * X).shape
=(<tf.Tensor: shape=(2, 3, 4), dtype=int32, numpy
array([[[ 2, 3, 4, 5],
[ 6, 7, 8, 9],
[10, 11, 12, 13]],
)A.shape, tf.reduce_sum(A
(TensorShape([2, 3]), <tf.Tensor: shape=(),
)>dtype=float32, numpy=15.0
التعمق في التعلم العميق :األساسيات والمقدمات 84
بشكل افتراضي ،يؤدي استدعاء دالة الجمع إلى تقليل الموتر على طول جميع محاوره ،مما
يؤدييف النهاية إلى إنتاج قيمة قياسية .scalarتتيح لنا مكتباتنا أيضًا تحديد المحاور التي يجب
أن يتم تقليل الموتر على طولها .لتجميع جميع العناصر على طول الصفوف (المحور ،)0نحدد
axis=0يف .sumنظرًا ألن مصفوفة اإلدخال تقلل على طول المحور 0لتوليد متجه اإلخراج،
فإن هذا المحور مفقود من شكل المخرجات.
A / sum_A
=<tf.Tensor: shape=(2, 3), dtype=float32, numpy
array([[0. , 0.33333334, 0.6666667 ],
[0.25 , 0.33333334, 0.41666666]],
>)dtype=float32
إذا أردنا حساب المجموع التراكمي cumulative sumلعناصر Aعلى طول بعض المحاور،
قل ( axis=0صف بصف) ،يمكننا استدعاء دالة .cumsumحسب التصميم ،ال تقلل هذه
الدالة من موتر اإلدخال على طول أي محور.
)tf.cumsum(A, axis=0
=<tf.Tensor: shape=(2, 3), dtype=float32, numpy
array([[0., 1., 2.],
>)[3., 5., 7.]], dtype=float32
Dot Products 2.3.8
حتى اآلن ،قمنا فقط بإجراء العمليات األولية ،والمجموع ،والمتوسطات .وإذا كان هذا هو كل ما
يمكننا فعله ،فلن يستحق الجبر الخطي قسمًا خاصًا به .لحسن الحظ ،هذا هو المكان الذي تصبح
فيه األشياء أكثر إثارة لالهتمام .يعد حاصل الضرب النقطي Dot Productsمن أهم العمليات
األساسية .بالنظر إلى متجهين 𝑑 ، 𝐱, 𝐲 ∈ ℝفإن حاصل الضرب النقطي 𝐲 ⊤ 𝐱 (او⟩𝐲 )⟨𝐱,هو
مجموع حاصل ضرب العناصريف نفس الموضع.𝐱 ⊤ 𝐲 = ∑𝑑𝑖=1 𝑥𝑖 𝑦𝑖 :
)tf.reduce_sum(x * y
><tf.Tensor: shape=(), dtype=float32, numpy=3.0
يعتبر الضرب النقطي مفيديف مجموعة واسعة من السياقات .على سبيل المثال ،بالنظر إلى
مجموعة من القيم ،يُشار إليها بالمتجه 𝑛 𝐰 ∈ ℝومجموعة من األوزان التي يُشار إليهايف 𝐱 ،
يمكن التعبير عن امجموع االوزان للقيم وفقًا لألوزان 𝐰 على أنها حاصل الضرب النقطي 𝐰 ⊤ 𝐱.
عندما تكون األوزان غير سالبة ومجموعها واحد ،مثل ) ،(∑𝑛𝑖=1 𝑤𝑖 = 1يعبر الضرب النقطي
عن مجموع االوزان .weighted averageبعد تسوية متجهين بحيث يكون لهما طول الوحدة
،unit lengthتعبر حاصل الضرب النقطي عن جيب التمام للزاوية بينهما .الحقًايف هذا القسم،
سنقدم رسميًا فكرة الطول lengthهذه.
Matrix-Vector 2.3.9
اآلن بعد أن عرفنا كيفية حساب حاصل الضرب النقطي ،يمكننا البدءيف فهم حاصل الضرب بين
𝑛 × 𝑚 مصفوفة 𝐀 ومتجه األبعاد 𝐱 .للبدء ،نتخيل المصفوفة matrixبداللة متجهات الصف
: row vectors
⊤𝐚1
⊤
𝐀 = 𝐚2 ,
⋮
⊤𝐚[
]𝑚
حاصل ضرب المصفوفة المتجه 𝐱𝐀 هو ببساطة متجه طول العمود 𝑚 ،الذي يكون عنصره
⊤𝐚:
𝑖 هو حاصل الضرب النقطي 𝐱 𝑖
th
⊤𝐚1 𝐱 ⊤𝐚1
⊤ ⊤
𝐀𝐱 = 𝐚2 𝐱 = 𝐚2 𝐱 .
⋮ ⋮
⊤ ⊤
] 𝑚𝐚[ ]𝐱 𝑚𝐚[
يمكننا أن نفكريف الضرب بمصفوفة 𝑛×𝑚 𝐀 ∈ ℝكتحويل يُسقط المتجهات منه 𝑛 ℝإلى 𝑚.ℝ
هذه التحوالت مفيدة بشكل ملحوظ .على سبيل المثال ،يمكننا تمثيل عمليات التدوير على أنها
عمليات ضرب بواسطة مصفوفات مربعة معينة .تصف حاصل ضرب Matrix-vectorأيضًا
الحساب األساسي المتضمنيف حساب مخرجات كل طبقةيف الشبكة العصبية بالنظر إلى
مخرجات الطبقة السابقة.
⊤𝐚 تشير إلى متجه الصف row vectorالذي يمثل 𝑖 thصف المصفوفة 𝐀
افترض 𝑖 ∈ ℝ
𝑘
⊤𝐚1
⊤
𝐀 = 𝐚2 , 𝐁 = [𝐛1 𝐛2 ⋯ 𝐛𝑚 ].
⋮
⊤𝐚[]𝑛
إليجاد حاصل ضرب المصفوفة 𝑚×𝑛 ،𝐂 ∈ ℝنقوم ببساطة بحساب كل عنصر 𝑗𝑖𝑐على أنه
⊤𝐚:
حاصل الضرب النقطي بين 𝑖 صف لـ 𝐀 وصف 𝑗 لـ 𝐁 ،أي 𝑗𝐛 𝑖
th th
يمكننا التفكيريف ضرب المصفوفة-المصفوفة 𝐁𝐀 على أنه حاصل ضرب مصفوفة متجهية أو
ضرب نقطي 𝑛 × 𝑚 وربط النتائج معًا لتشكيل مصفوفة 𝑚 × 𝑛.يف المقتطف التالي ،نقوم
بضرب المصفوفة على Aو .Bهنا A ،عبارة عن مصفوفة تتكون من صفين و 3أعمدة ،و Bعبارة
عن مصفوفة مكونة من 3صفوف و 4أعمدة .بعد الضرب ،نحصل على مصفوفة من صفين و4
أعمدة.
Norms 2.3.11
بعض العوامل األكثر فائدةيف الجبر الخطي هي المعيار .Normبشكل غير رسمي ،يخبرنا
المعيار المتجه عن حجمه .على سبيل المثال ،يقيس المعيار 𝑒𝑙𝑙2الطول (اإلقليدي) للمتجه.
هنا ،نحن نستخدم مفهوم الحجم sizeالذي يتعلق بحجم مكونات المتجه (وليس أبعاده).
المعيار هو دالة ‖⋅‖ تقوم بتعيين متجه vectorإلى رقمى scalarوتفي بالخصائص الثالث
التالية:
.1بالنظر إلى أي متجه 𝐱 ،إذا قمنا بقياس (جميع عناصر) المتجه بواسطة قيمية قياسية
،scalarفسيتم قياس معياره وفقًا لذلك:
‖𝛼𝐱‖ = |𝛼|‖𝐱‖.
العديد من الدوال هي معايير صالحة ومعايير مختلفة تقوم بترميز مفاهيم مختلفة الحجم .المعيار
اإلقليدية Euclidean normالتي تعلمناها جميعًايف هندسة المدرسة االبتدائية عند حساب وتر
المثلث األيمن هي الجذر التربيعي لمجموع مربعات عناصر المتجه .رسميًا ،هذا يسمى المعيار
ℓ2ويتم التعبير عنه كـ:
𝑛
𝑛
بالمقارنة مع المعيار ، ℓ2فهي أقل حساسية للقيم المتطرفة .outliersلحساب المعيار ،ℓ1
نقوم بتكوين القيمة المطلقة باستخدام عملية الجمع.
))tf.reduce_sum(tf.abs(u
><tf.Tensor: shape=(), dtype=float32, numpy=7.0
كل من المعيار ℓ2والمعيار ℓ1هي حاالت خاصة للمعايير األكثر عمومية 𝑝:ℓ
1
𝑛 𝑝
∑( = 𝑝‖𝐱‖ |𝑥𝑖 |𝑝 ) .
𝑖=1
في حالة المصفوفات ،تكون األمور أكثر تعقيدًا .بعد كل شيء ،يمكن النظر إلى المصفوفات
كمجموعات من اإلدخاالت الفردية وككائنات تعمل على المتجهات وتحولها إلى متجهات
أخرى .على سبيل المثال ،يمكننا أن نسأل إلى أي مدى يمكن أن يكون حاصل ضرب المصفوفة-
المتجه 𝐯𝐗 مرتبط بـ 𝐯 .هذا الخط الفكري يؤدي إلى معيار يسمى المعيار الطيفي spectral
.normيف الوقت الحالي ،نقدم معيار ،Frobeniusوالذي يسهل حسابه ويتم تعريفه على أنه
الجذر التربيعي لمجموع مربعات عناصر المصفوفة:
𝑚 𝑛
2
∑√ = 𝐹‖𝐗‖ ∑ 𝑗𝑖𝑥 .
𝑖=1 𝑗=1
يتصرف معيار Frobeniusكما لو كان معيارًا ℓ2لمتجه على شكل مصفوفة .سيؤدي استدعاء
الدالة التالية إلى حساب قاعدة Frobeniusللمصفوفة.
)))tf.norm(tf.ones((4, 9
><tf.Tensor: shape=(), dtype=float32, numpy=6.0
بينما ال نريد أن نتقدم كثيرًا على أنفسنا ،يمكننا زرع بعض الحدس بالفعل حول سبب فائدة هذه
المفاهيم.يف التعلم العميق ،نحاول غالبًا حل مشكالت التحسين :optimization problems
تعظيم maximizeاالحتمال المخصص للبيانات المرصودة observed data؛ تعظيم
اإليرادات المرتبطة بنموذج التوصية؛ تقليل المسافة بين التنبؤات وأرصاد القيم الحقيقية
ground-truth؛ تقليل minimizeالمسافة بين تمثيالت صور الشخص نفسه مع تعظيم
المسافة بين تمثيالت الصور ألشخاص مختلفين .غالبًا ما يتم التعبير عن هذه المسافات ،التي
تشكل أهداف خوارزميات التعلم العميق ،كمعايير .norms
التعمق في التعلم العميق :األساسيات والمقدمات 90
2.3.12
في هذا القسم ،راجعنا جميع الجبر الخطي الذي ستحتاجه لفهم جزء كبير من التعلم العميق
الحديث .هناك الكثير من الجبر الخطي والكثير منه مفيد للتعلم اآللي .على سبيل المثال ،يمكن
أن تتحلل المصفوفات إلى عوامل ،factorsويمكن أن تكشف هذه التحليالت عن بنية منخفضة
األبعاديف مجموعات البيانات الواقعية .هناك حقول فرعية كاملة للتعلم اآللي تركز على استخدام
تحليالت المصفوفة وتعميماتها على الموترات عالية الترتيب الكتشاف البنيةيف مجموعات
البيانات وحل مشاكل التنبؤ .لكن هذا الكتاب يركز على التعلم العميق .ونعتقد أنك ستكون أكثر
ميلًا لتعلم المزيد من الرياضيات بمجرد أن تتسخ يديك عند تطبيق التعلم اآللي على مجموعات
بيانات حقيقية .لذلك بينما نحتفظ بالحقيف تقديم المزيد من الرياضيات الحقًا ،فإننا نختتم هذا
القسم هنا.
إذا كنت حريصًا على تعلم المزيد من الجبر الخطي ،فهناك العديد من الكتب والموارد الممتازة
عبر اإلنترنت .للحصول على دورة مكثفة أكثر تقدمًا ،ضعيف اعتبارك التحقق (Kolter,
)2008, Petersen et al., 2008, Strang, 1993
الخالصة:
2.3.13
.1اثبت أن مدور transposeلمدور المصفوفة هو المصفوفة نفسها.(𝐀 ) = 𝐀 :
⊤ ⊤
Calculus 2.4
لفترة طويلة ،ظلت كيفية حساب مساحة الدائرة لغزاً .بعد ذلك ،جاء عالم الرياضيات اليوناني
القديم أرخميدس بفكرة ذكية لتسجيل سلسلة من المضلعات مع زيادة أعداد الرؤوس داخل
دائرة (الشكل .)2.4.1بالنسبة إلى المضلع ذي الرؤوس 𝑛 ،نحصل على مثلثات 𝑛 .يقترب
ارتفاع كل مثلث من نصف القطر 𝑟 ألننا نقسم الدائرة بشكل أكثر دقة.يف نفس الوقت ،تقترب
𝑟𝜋2
،ألن النسبة بين القوس والقاطع تقترب من 1لعدد كبير من الرؤوس .وبالتالي ،فإن 𝑛
قاعدتها
𝑟𝜋1 2
( ⋅ 𝑟 ⋅ 𝑛. ) مساحة المثلث تقترب = 𝜋𝑟 2
𝑛 2
يؤدي هذا اإلجراء المحدد إلى حساب التفاضل والتكامل التفاضلي (القسم .)19.5يمكن أن
يخبرنا األول عن كيفية زيادة قيمة دالة أو إنقاصها من خالل معالجة وسيطاتها .يكون هذا مفيدًا
لمشاكل التحسين التي نواجههايف التعلم العميق ،حيث نقوم بتحديث معلماتنا بشكل متكرر
لتقليل دالة الخطأ .يعالج التحسين كيفية مالءمة ( )fitنماذجنا لبيانات التدريب ،وحساب
التفاضل والتكامل calculusهو شرطه األساسي .ومع ذلك ،ال تنس أن هدفنا النهائي هو األداء
الجيد على البيانات غير المرئية من قبل .unseen dataهذه المشكلة تسمى التعميم
generalizationوستكون محور التركيز الرئيسي للفصول األخرى.
يسمى هذا المصطلح الموجود على الجانب األيمن بالغاية limitويخبرنا بما يحدث لقيمة
التعبير عندما يقترب المتغير المحدد من قيمة معينة .يخبرنا هذا الحد بما تتقارب فيه النسبة بين
االضطراب ℎوالتغيريف قيمة الدالة )𝑥(𝑓 𝑓(𝑥 + ℎ) −كلما قلصنا حجمها إلى الصفر.
عندما يكون )𝑥( 𝑓 ′موجودًا ،يُقال إنه قابل للتفاضل differentiableعند 𝑥؛ وعندما )𝑥( 𝑓 ′
يكون موجودًا لجميع 𝑥يف مجموعة ،على سبيل المثال ،الفترة ]𝑏 ، [𝑎,نقول أن 𝑓هذا قابل
للتفاضليف هذه المجموعة .ليست كل الدوال قابلة للتفاضل ،بمايف ذلك العديد من الدوال التي
نرغبيف تحسينها ،بمايف ذلك الدقة والمنطقة الواقعة تحت خاصية التشغيل المستقبلة (.)AUC
ومع ذلك ،نظرًا ألن حساب مشتق الخسارة يعد خطوة حاسمةيف جميع الخوارزميات تقريبًا
لتدريب الشبكات العصبية العميقة ،فإننا غالبًا ما نقوم بتحسين بديل قابل للتفاضل بدالً من ذلك.
يمكننا تفسير المشتق )𝑥( 𝑓 ′على أنه معدل اللحظي instantaneous rateللتغير بالنسبة لـ
)𝑥(𝑓 .دعونا نطور بعض الحدس بمثال .حدد 𝑥. 𝑢 = 𝑓(𝑥) = 3𝑥 2 − 4
%matplotlib inline
import numpy as np
from matplotlib_inline import backend_inline
from d2l import tensorflow as d2l
def f(x):
return 3 * x ** 2 - 4 * x
)𝑥(𝑓𝑓(𝑥+ℎ)−
،النهج 2كنهج .0بينما تفتقر هذه التجربة إلى صرامة إثبات رياضي ،سنرى ℎ
ضبط
ذلك قريبًا بالفعل .𝑓 ′ (1) = 2
𝑑
حيث الرموز 𝑥𝑑 و 𝐷 هم عوامل التفاضل .differentiation operatorsأدناه ،نقدم مشتقات
بعض الدوال الشائعة:
𝑑
𝐶 =0 𝐶 for any constant
𝑥𝑑
𝑛 𝑑
𝑥 = 𝑛𝑥 𝑛−1 for 𝑛 ≠ 0
𝑥𝑑
𝑥 𝑑
𝑒 𝑥𝑒 =
𝑥𝑑
𝑑
𝑥 ln = 𝑥 −1
𝑥𝑑
غالبًا ما تكون الدوال المكونة من دوال قابلة للتفاضل قابلة للتفاضل .القواعد التالية مفيدة للعمل
مع تراكيب أي دوال قابلة للتفاضل 𝑓 و 𝑔 وثابت 𝐶.
𝑑 𝑑
])𝑥(𝑓𝐶[ 𝐶= )𝑥(𝑓 Constant multiple rule
𝑥𝑑 𝑥𝑑
𝑑 𝑑 𝑑
])𝑥(𝑔 [𝑓(𝑥) + = 𝑓(𝑥) + )𝑥(𝑔 Sum rule
𝑥𝑑 𝑥𝑑 𝑥𝑑
𝑑 𝑑 𝑑
])𝑥(𝑔)𝑥(𝑓[ )𝑥(𝑓 )𝑥(𝑔 = 𝑓(𝑥) 𝑔(𝑥) + Product rule
𝑥𝑑 𝑥𝑑 𝑥𝑑
𝑑 𝑑
)𝑥(𝑓 𝑑 )𝑥(𝑔 )𝑥(𝑓 𝑔(𝑥) 𝑓(𝑥) −
= 𝑥𝑑 𝑥𝑑 Quotient rule
)𝑥(𝑔 𝑥𝑑 )𝑥( 𝑔2
#@save
def set_axes(axes, xlabel, ylabel, xlim, ylim, xscale,
yscale, legend):
"""Set the axes for matplotlib."""
axes.set_xlabel(xlabel), axes.set_ylabel(ylabel)
axes.set_xscale(xscale), axes.set_yscale(yscale)
axes.set_xlim(xlim), axes.set_ylim(ylim)
if legend:
axes.legend(legend)
axes.grid()
جزء. لتراكب منحنيات متعددةplot يمكننا تحديد دالة الرسم،باستخدام هذه الدوال الثالث
.كبير من الكود هنا هو مجرد ضمان تطابق أحجام وأشكال المدخالت
#@save
def plot(X, Y=None, xlabel=None, ylabel=None, legend=[],
xlim=None,
ylim=None, xscale='linear', yscale='linear',
fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5,
2.5), axes=None):
"""Plot data points."""
if has_one_axis(X): X = [X]
if Y is None:
X, Y = [[]] * len(X), X
elif has_one_axis(Y):
Y = [Y]
if len(X) != len(Y):
X = X * len(Y)
set_figsize(figsize)
if axes is None: axes = d2l.plt.gca()
axes.cla()
for x, y, fmt in zip(X, Y, fmts):
axes.plot(x,y,fmt) if len(x) else
axes.plot(y,fmt)
set_axes(axes, xlabel, ylabel, xlim, ylim, xscale,
yscale, legend)
= 𝑦 الخاص بها2𝑥 − 3 tangent line اآلن يمكننا رسم الدالة )𝑥(𝑓 = 𝑢 وخط المماس
.slope of the tangent line حيث المعامل هو ميل خط المماس،𝑥 = 1 عند
x = np.arange(0, 3, 0.1)
plot(x, [f(x), 2 * x - 3], 'x', 'f(x)', legend=['f(x)',
'Tangent line (x=1)'])
97 الفصل الثاني :االساسيات
𝑦𝜕 𝑓𝜕
= = 𝜕𝑥𝑖 𝑓 = 𝜕𝑖 𝑓 = 𝑓𝑥𝑖 = 𝑓𝑖 = 𝐷𝑖 𝑓 = 𝐷𝑥𝑖 𝑓.
𝑖𝑥𝜕 𝑖𝑥𝜕
عندما ال يكون هناك غموض ∇𝐱 𝑓(𝐱) ،no ambiguityعادة ما يتم استبداله بـ )𝐱(𝑓∇ .القواعد
التالية مفيدة للتمييز بين الدوال متعددة المتغيرات:
𝑢𝑑 𝑦𝑑 𝑦𝑑
= .
𝑥𝑑 𝑢𝑑 𝑥𝑑
بالعودة إلى الدوال متعددة المتغيرات ،multivariate functionsافترض أن )𝐮(𝑓 = 𝑦 لها
متغيرات 𝑚𝑢 ، 𝑢1 , 𝑢2 , … ,حيث لكل )𝐱( 𝑖𝑔 = 𝑖𝑢 منها متغيرات 𝑛𝑥 ، 𝑥1 , 𝑥2 , … ,أي .ثم
تنص قاعدة السلسلة على ذلك
حيث 𝑚×𝑛 𝐀 ∈ ℝهي مصفوفة تحتوي على مشتق المتجه 𝐮 فيما يتعلق بالمتجه 𝐱 .وبالتالي،
فإن تقييم التدرج يتطلب حساب ضرب المصفوفة-المتجه .هذا هو أحد األسباب الرئيسية التي
تجعل الجبر الخطي لبنة أساسيةيف بناء أنظمة التعلم العميق.
2.4.5
على الرغم من أننا قد خدشنا للتو سطح موضوع عميق ،فقد تم التركيز بالفعل على عدد من
المفاهيم :أوالً ،يمكن تطبيق قواعد تكوين التفاضل rules for differentiationبال تفكير،
مما يمكننا من حساب التدرجات gradientsتلقائيًا .ال تتطلب هذه المهمة إبداعًا ،وبالتالي
يمكننا تركيز قوتنا المعرفيةيف مكان آخر .ثانيًا ،يتطلب حساب مشتقات الدوال ذات القيمة
المتجهية vector-valued functionsمضاعفة المصفوفات بينما نتتبع الرسم البياني للتبعية
للمتغيرات من المخرجات إلى المدخالت .على وجه الخصوص ،يتم اجتياز هذا الرسم البياني
في اتجاه أمامي عندما نقوم بتقييم دالة وفي اتجاه عكسي عندما نحسب التدرجات .ستقدم
الفصول الالحقة بشكل رسمي االنتشار الخلفي ،backpropagationوهو إجراء حسابي لتطبيق
قاعدة السلسلة .chain rule
2.4.6
.1حتى اآلن أخذنا قواعد المشتقات كأمر مسلم به .باستخدام التعريف والغايات اثبت
خصائص 𝑐 = )𝑥(𝑓 ) (iو 𝑛 𝑥 = )𝑥(𝑓 ( )iiو 𝑥 𝑒 = )𝑥(𝑓 ( )iiiو = )𝑥(𝑓
𝑥 .)iv( log
.2على نفس المنوال ،قم بإثبات قاعدة الضرب ،المجموع ،وحاصل القسمة من المبادئ
األولى.
.3إثبت أن قاعدة المضاعفات الثابتة constant multiple ruleتتبع كحالة خاصة
لقاعدة حاصل الضرب.
.4احسب مشتق 𝑥 𝑥 = )𝑥(𝑓.
.5ماذا يعني ذلك 𝑓 ′ (𝑥) = 0بالنسبة لبعض 𝑥 ؟ أعط مثاالً عن دالة 𝑓 وموقع 𝑥 قد
يكون هذا مناسبًا لهما.
1
.6ارسم الدالة 𝑥 𝑦 = 𝑓(𝑥) = 𝑥 3 −وارسم خط المماس الخاص بها عند .𝑥 = 1
.7أوجد انحدار (تدرج) الدالة .𝑓(𝐱) = 3𝑥12 + 5𝑒 𝑥2
.8هل يمكنك كتابة قاعدة السلسلة chain ruleللحالة حيث )𝑧 𝑢 = 𝑓(𝑥, 𝑦,و = 𝑥
)𝑏 𝑥(𝑎,و )𝑏 𝑦 = 𝑦(𝑎,و )𝑏 𝑧 = 𝑧(𝑎,؟
.9بالنظر إلى دالة )𝑥(𝑓 قابلة للعكس ،invertibleاحسب مشتق معكوسها )𝑥( .𝑓 −1
هنا لدينا ذلك 𝑥 = ))𝑥(𝑓( 𝑓 −1والعكس 𝑦 = ))𝑦( .𝑓(𝑓 −1تلميح :استخدم هذه
الخصائصيف اشتقاقك.
لحسن الحظ ،تعمل جميع أطر التعلم العميق الحديثة على إخراج هذا العمل من لوحاتنا من
خالل تقديم التفاضل التلقائي ( Automatic Differentiationغالبًا ما يتم اختصاره إلى
.) autogradبينما نقوم بتمرير البيانات عبر كل دالة متتالية ،يقوم إطار العمل ببناء رسم بياني
حسابي يتتبع كيف تعتمد كل قيمة على اآلخرين .لحساب المشتقات ،تعمل حزم التفاضل
التلقائيةيف االتجاه المعاكس من خالل هذا الرسم البياني بتطبيق قاعدة السلسلة .الخوارزمية
الحسابية لتطبيق قاعدة السلسلة بهذه الطريقة تسمى االنتشار الخلفي .backpropagation
التعمق في التعلم العميق :األساسيات والمقدمات 100
بينما أصبحت مكتبات autogradمصدر قلق ساخن خالل العقد الماضي ،إال أنها تتمتع بتاريخ
طويل.يف الواقع ،تعود أقدم اإلشارات إلى autogradإلى أكثر من نصف قرن (،Wengert
.)1964تعود األفكار األساسية الكامنة وراء االنتشار الخلفي backpropagationالحديث إلى
أطروحة دكتوراه من عام )1980 ،Speelpenning( 1980وتم تطويرها بشكل أكبريف أواخر
الثمانينيات ( .)1989 ،Griewankبينما أصبح االنتشار الخلفي هو األسلوب االفتراضي
لحساب التدرجات ،gradientsفإنه ليس الخيار الوحيد .على سبيل المثال ،تستخدم لغة برمجة
جوليا Juliaاالنتشار األمامي ( .)2016 ،Revels et al.قبل استكشاف الطرق ،دعنا نتقن أوالً
استخدام حزمة .autograd
)x = tf.Variable(x
نحسب اآلن دالة xونحسب النتيجة لـ .y
نحن نعلم بالفعل أن تدرج الدالة 𝐱 ⊤ 𝐱 𝑦 = 2بالنسبة 𝐱 إلى يجب أن يكون 𝐱 .4يمكننا اآلن
التحقق من تطابق حساب التدرج والنتيجة المتوقعة.
x_grad == 4 * x
<tf.Tensor: shape=(4,), dtype=bool, numpy=array([ True,
>)]True, True, True
دعونا اآلن نحسب دالة أخرى لـ xونأخذ انحدارها .الحظ أن TensorFlowيعيد تعيين
المخزن المؤقت للتدرج كلما سجلنا تدرجًا جديدًا.
بينما يظهر Jacobianيف بعض تقنيات التعلم اآللي المتقدمة ،فإننا نريد بشكل أكثر شيوعًا
تلخيص تدرجات كل مكون من مكونات yفيما يتعلق بالمتجه الكامل ، xمما ينتج عنه متجه
من نفس الشكل مثل .xعلى سبيل المثال ،غالبًا ما يكون لدينا متجه يمثل قيمة دالة الخطأ لدينا
محسوبة بشكل منفصل لكل مجموعة من أمثلة التدريب .هنا ،نريد فقط تلخيص التدرجات
المحسوبة بشكل فردي لكل مثال.
بشكل افتراضي ،يُرجع TensorFlowتدرج المجموع .بمعنى آخر ،بدالً من إرجاع Jacobian
𝐲 𝐱𝜕 ،فإنه يُرجع تدرج المجموع 𝑖𝑦 𝑖∑ 𝐱𝜕.
def f(a):
b = a * 2
103 الفصل الثاني :االساسيات
أدناه ،نستدعي هذه الدالة ،ونمرر قيمة عشوائية كمدخالت .نظرًا ألن اإلدخال متغير عشوائي،
فإننا ال نعرف الشكل الذي سيتخذه الرسم البياني الحسابي .computational graphومع
ذلك ،عندما ننفذ ) f(aعلى إدخال معين ،فإننا ندرك رسمًا بيانيًا حسابيًا محددًا ويمكننا بعد
ذلك الذهاب للخلف .backward
)))(=a = tf.Variable(tf.random.normal(shape
with tf.GradientTape() as t:
)d = f(a
)d_grad = t.gradient(d, a
d_grad
><tf.Tensor: shape=(), dtype=float32, numpy=1024.0
على الرغم من أن دالتنا fمصممة قليالً ألغراض توضيحية ،إال أن اعتمادها على المدخالت
بسيط للغاية :إنها دالة خطية linear functionبمقياس محدد متعدد التعريف piecewise
.defined scaleعلى هذا النحو ،فإن f(a) / aعبارة عن متجه للمدخالت الثابتة ،عالوة
على ذلك ،تحتاج f(a) / aإلى مطابقة تدرج ) f(aفيما يتعلق بـ .a
d_grad == d / a
><tf.Tensor: shape=(), dtype=bool, numpy=True
تدفق التحكم الديناميكي Dynamic control flowشائع جدًايف التعلم العميق .على سبيل
المثال ،عند معالجة النص ،يعتمد الرسم البياني الحسابي على طول المدخالت.يف هذه الحاالت،
يصبح التفاضل التلقائي أمرًا حيويًا للنمذجة اإلحصائية ألنه من المستحيل حساب التدرج مسبقًا.
2.5.5
لقد اكتسبت اآلن طعمًا لقوة التفاضل التلقائي .لقد كان تطوير المكتبات لحساب المشتقات
تلقائيًا وفعالًا بمثابة معزز كبير لإلنتاجية لممارسي التعلم العميق ،مما أتاح لهم التركيز على
اهتمامات أعلى .عالوة على ذلك ،يسمح لنا برنامج autogradبتصميم نماذج ضخمة تكون
حسابات التدرج بالقلم والورق لها مضيعة للوقت .ومن المثير لالهتمام ،أنه بينما نستخدم
autogradلتحسين النماذج (بالمعنى اإلحصائي) ،فإن تحسين مكتبات autogradنفسها
التعمق في التعلم العميق :األساسيات والمقدمات 104
(بالمعنى الحسابي) يعد موضوعًا غنيًا ذا أهمية حيوية لمصممي إطار العمل .هنا ،يتم االستفادة
من األدوات من المجمعين ومعالجة الرسم البياني لحساب النتائج بالطريقة األكثر مالءمة وفعالية
للذاكرة.
في الوقت الحالي ،حاول أن تتذكر هذه األساسيات )1( :إرفاق التدرجات بتلك المتغيرات التي
نرغبيف المشتقات فيما يتعلق بها؛ ( )2تسجيل حساب القيمة المستهدفة؛ ( )3تنفيذ دالة
االنتشار الخلفي backpropagation؛ و ( )4الوصول إلى التدرج الناتج.
2.5.6
.1لماذا يكون حساب المشتق الثاني أكثر تكلفة بكثير من المشتق األول؟
.2بعد تشغيل دالة ،backpropagationقم بتشغيلها على الفور مرة أخرى وشاهد ما
سيحدث .لماذا؟
.3في مثال تدفق التحكم control flowحيث نحسب مشتق dبالنسبة إلى ،aماذا
سيحدث إذا غيرنا المتغير aإلى متجه عشوائي أو مصفوفة؟يف هذه المرحلة ،لم تعد
نتيجة الحساب ) f(aعددًا قياسيًا .ماذا يحدث للنتيجة؟ كيف نحلل هذا؟
.4لتكن )𝑥( .𝑓(𝑥) = sinارسم الرسم البياني لـ 𝑓 ومشتقاته .𝑓 ′ال تستغل حقيقة ذلك
)𝑥( 𝑓 ′ (𝑥) = cosبل استخدم التفاضل التلقائي للحصول على النتيجة.
.5لتكن .𝑓(𝑥) = ((log 𝑥 2 ) ⋅ sin 𝑥) + 𝑥 −1اكتب نتائج تتبع الرسم البياني للتبعية
من 𝑥 إلى )𝑥(𝑓.
𝑓𝑑
من الدالة المذكورة أعاله، 𝑥𝑑
.6استخدم قاعدة السلسلة chain ruleلحساب المشتق
مع وضع كل مصطلح على الرسم البياني للتبعية الذي قمت بإنشائه مسبقًا.
.7بالنظر إلى الرسم البياني ونتائج المشتقات الوسيطة ،لديك عدد من الخيارات عند
حساب التدرج .قم بتقييم النتيجة بمجرد البدء من 𝑥 إلى 𝑓 ومرة واحدة من 𝑓 التتبع
إلى الخلف 𝑥 .يُعرف المسار من 𝑥 إلى 𝑓 بشكل عام باسم التفاضل األمامي forward
،differentiationبينما يُعرف المسار من 𝑓 إلى 𝑥 باسم التمايز الخلفي backward
.differentiation
.8متى قد ترغبيف استخدام التفاضل األمامي ومتى التفاضل الخلفي؟ تلميح :ضعيف
اعتبارك مقدار البيانات الوسيطة المطلوبة ،والقدرة على موازاة الخطوات ،وحجم
المصفوفات والمتجهات المعنية.
.)featuresاعتمادًا على هدفنا ،قد نحاول توقع القيمة األكثر احتمالًا للهدف .أو قد نتوقع القيمة
بأقل مسافة متوقعة من الهدف .وأحيانًا ال نرغب فقطيف التنبؤ بقيمة معينة ولكن تحديد عدم
اليقين لدينا .quantify our uncertaintyعلى سبيل المثال ،بالنظر إلى بعض الميزات التي
تصف المريض ،قد نرغبيف معرفة مدى احتمالية تعرضه ألزمة قلبيةيف العام المقبل.يف التعلم
غير الخاضع لإلشراف ،غالبًا ما نهتم بعدم اليقين .لتحديد ما إذا كانت مجموعة القياسات شاذة
،anomalousمن المفيد معرفة مدى احتمالية مالحظة القيميف المجتمع محل االهتمام .عالوة
على ذلك،يف التعلم المعزز ،reinforcement learningنرغبيف تطوير عوامل تعمل بذكاءيف
بيئات مختلفة .يتطلب هذا التفكيريف كيفية توقع تغير البيئة والمكافآت التي قد يتوقع المرء
مواجهتها استجابة لكل من اإلجراءات المتاحة.
لنفترض أننا عثرنا على عملة حقيقية لم نكن نعرف حقيقة وجودها ) .𝑃(headsللتحقق من
هذه الكمية بالطرق اإلحصائية ،نحتاج إلى ( )1جمع بعض البيانات؛ و ( )2تصميم مقدر
.estimatorالحصول على البيانات هنا سهل؛ يمكننا رمي العملة عدة مرات وتسجيل جميع
النتائج .رسميًا ،يُطلق على استخالص اإلنجازات من بعض العمليات العشوائية األساسية أخذ
العينات .samplingكما قد تكون خمنت ،أحد المقدر الطبيعي natural estimatorهو الكسر
fractionبين عدد الرؤوس المرصودة observed headsبالعدد اإلجمالي للرمي number
.of tosses
%matplotlib inline
import random
import tensorflow as tf
from tensorflow_probability import distributions as tfd
from d2l import tensorflow as d2l
107 الفصل الثاني :االساسيات
اآلن ،افترض أن العملة كانتيف الواقع عادلة ،أي .𝑃(heads) = 0.5لمحاكاة رميات عملة
عادلة ،يمكننا استدعاء أي مولد أرقام عشوائي .بعض الطرق السهلة لرسم عينات من حدث ذي
احتمالية .على سبيل المثال ،ينتج random.randomفي بايثون أرقامًايف الفترة ] [0,1حيث
يكون احتمال الكذبيف أي فترة فرعية ] [𝑎, 𝑏] ⊂ [0,1مساويًا 𝑎 .𝑏 −وبالتالي يمكننا الخروج
من 0و 1باحتمال 0.5لكل منهما باختبار ما إذا كان الطفو المرتجع أكبر من 0.5
num_tosses = 100
)])heads = sum([random.random() > 0.5 for _ in range(100
tails = num_tosses - heads
)]print("heads, tails: ", [heads, tails
<tf.Tensor: shape=(2,), dtype=float32, numpy=array([45.,
>)55.], dtype=float32
هنا ،على الرغم من أن عملتنا المحاكاة عادلة (قمنا بتعيين االحتماالت ][0.5, 0.5
بأنفسنا) ،قد ال تكون تعدادات الرأس والذيول متطابقة .ذلك ألننا رسمنا عددًا محدودًا فقط من
العينات .إذا لم ننفذ المحاكاة بأنفسنا ،ورأينا النتيجة فقط ،فكيف لنا أن نعرف ما إذا كانت العملة
1
مجرد قطعة أثرية من حجم العينة 2
غير عادلة إلى حد ما أو إذا كان االنحراف المحتمل عنها
الصغير؟ دعونا نرى ما يحدث عندما نقوم بمحاكاة 10000رمية.
بشكل عام ،بالنسبة لمتوسطات األحداث المتكررة (مثل رمي العمالت المعدنية) ،مع تزايد عدد
التكرارات ،نضمن أن تتقارب تقديراتنا مع االحتماالت األساسية الحقيقية .يُطلق على الدليل
الرياضي لهذه الظاهرة اسم قانون األعداد الكبيرة law of large numbersوتخبرنا نظرية الحد
المركزي central limit theoremأنهيف العديد من المواقف ،مع نمو حجم العينة 𝑛 ،يجب أن
1
تنخفض هذه األخطاء بمعدل )𝑛 ( .دعنا نحصل على مزيد من الحدس من خالل دراسة كيفية
√
تطور تقديراتنا مع زيادة عدد الرميات من 1إلى .10000
))d2l.set_figsize((4.5, 3.5
التعمق في التعلم العميق :األساسيات والمقدمات 108
يتوافق كل منحنى صلب مع إحدى قيمتي العملة المعدنية ويعطي االحتمالية المقدرة لعملة العملة
هذه بعد كل مجموعة من التجارب .يعطي الخط األسود المتقطع االحتمال األساسي الحقيقي.
مع حصولنا على المزيد من البيانات من خالل إجراء المزيد من التجارب ،تتقارب المنحنيات
نحو االحتمال الحقيقي .قد تبدأ بالفعليف رؤية شكل بعض األسئلة األكثر تقدمًا التي تشغل بال
اإلحصائيين :ما مدى سرعة حدوث هذا التقارب convergence؟ إذا كنا قد اختبرنا بالفعل
العديد من العمالت المعدنية المصنعةيف نفس المصنع ،فكيف يمكننا دمج هذه المعلومات؟
عند التعامل مع العشوائية ،randomnessفإننا نشير إلى مجموعة النتائج المحتملة 𝒮 ونطلق
عليها مساحة العينة sample spaceأو مساحة النتيجة .outcome spaceهنا ،كل عنصر هو
109 الفصل الثاني :االساسيات
األحداث هي مجموعات فرعية من مساحة العينة .على سبيل المثال ،حدث "ظهور أول رمية
عملة على الرأس" يتوافق مع المجموعة }) .{(heads,heads), (heads,tailsكلما كانت نتيجة
𝑧التجربة العشوائية تحقق 𝒜 ∈ 𝑧 𝒜 ،حدث ذلك .بالنسبة إلى لفة واحدة من النرد ،يمكننا
تحديد األحداث "رؤية )𝒜 = {5}( "5و "رؤية رقم فردي" (}.)ℬ = {1,3,5يف هذه الحالة ،إذا
جاء النرد ،5فسنقول أن كالهما 𝐴 و 𝐵 حدث .من ناحية أخرى ،إذا ,𝑧 = 3اذن 𝒜 لم يحدث
بل ℬحدث.
تقوم دالة االحتمال بتعيين األحداث على قيم حقيقية ] .𝑃: 𝒜 ⊆ 𝒮 → [0,1يفي احتمال وقوع
حدث 𝒜يف مساحة العينة المحددة 𝒮𝑃(𝒜) ،بالخصائص التالية:
احتمال حدوث أي حدث 𝒜 هو رقم حقيقي غير سالب ،أي 𝑃(𝒜) ≥ 0؛ •
احتمال مساحة العينة بأكملها هو ، 1أي 𝑃(𝒮) = 1؛ •
بالنسبة ألي تسلسل قابل للعد من األحداث … 𝒜1 , 𝒜2 ,التي تكون متنافية •
𝒜𝑖 ∩ 𝒜𝑗 = ∅( mutually exclusiveلكل 𝑗 ≠ 𝑖) ،فإن احتمال حدوث أي منها
∞
.𝑃(⋃𝑖=1 ∞∑ = ) 𝑖𝒜
𝑖=1 يساوي مجموع احتماالتها الفردية ،أي ) 𝑖𝒜(𝑃
يمكن تطبيق بديهيات نظرية االحتماالت ،التي اقترحها كولموغوروف ) ،(1933الشتقاق عدد
من النتائج المهمة بسرعة .على سبيل المثال ،يترتب على ذلك على الفور أن احتمال حدوث أي
حدث 𝒜 أو مكمل حدوثه 𝒜 ′يحدثانيف وقت واحد هو .𝑃(𝒜 ∩ 𝒜 ′ ) = 0بشكل غير رسمي،
يخبرنا هذا أن األحداث المستحيلة ليس لها أي احتمال لحدوثها.
إذا كان إنذار منزلي ينطلق" و "ما إذا كان منزلي قد تعرض للسطو" كالهما متغيرين عشوائيين
يشتركانيف مساحة عينة أساسية .وبالتالي ،فإن معرفة القيمة المأخوذة بواسطة متغير عشوائي واحد
يمكن أن يخبرنا شيئًا عن القيمة المحتملة لمتغير عشوائي آخر .مع العلم أن جهاز اإلنذار قد
انطلق ،قد نشكيف احتمال تعرض المنزل للسطو.
تتوافق كل قيمة مأخوذة بواسطة متغير عشوائي مع مجموعة فرعية من مساحة العينة األساسية.
وبالتالي فإن الحدوث الذي يأخذ فيه المتغير العشوائي 𝑋 قيمة 𝑣 ،يُرمز إليه بـ )𝑣 = 𝑋(𝑃 ،هو
حدث ويشير إلى احتماله.يف بعض األحيان ،يمكن أن يصبح هذا الترميز غير مؤكد ،ويمكننا إساءة
استخدام التدوين عندما يكون السياق واضحًا .على سبيل المثال ،قد نستخدم )𝑋(𝑃 لإلشارة
على نطاق واسع إلى توزيع 𝑋 ،أي الدالة التي تخبرنا باالحتمال الذي 𝑋 يأخذ أي قيمة معينة.يف
أحيان أخرى نكتب تعبيرات مثل )𝑌(𝑃)𝑋(𝑃 = )𝑌 ،𝑃(𝑋,كاختصار للتعبير عن عبارة
صحيحة لجميع القيم التي يمكن أن تأخذها المتغيرات العشوائية 𝑋 و 𝑌 ،أي لكل 𝑗 𝑖,ما تحمله
)𝑗 = 𝑌(𝑃)𝑖 = 𝑋(𝑃 = )𝑗 = 𝑌 .𝑃(𝑋 = 𝑖 andيف أوقات أخرى ،نسيء استخدام التدوين
عن طريق الكتابة عندما يكون المتغير العشوائي واضحًا من السياق .نظرًا ألن الحدثيف نظرية
االحتماالت هو مجموعة من النتائج من مساحة العينة ،يمكننا تحديد نطاق من القيم لمتغير
عشوائي ليأخذها .على سبيل المثال ،يدل ) 𝑃(1 ≤ 𝑋 ≤ 3على احتمال وقوع الحدث
}.{1 ≤ 𝑋 ≤ 3
الحظ أن هناك فرقًا طفيفًا بين المتغيرات العشوائية المتقطعة ،discrete random variables
مثل تقليب عملة معدنية أو رمي نرد ،والمتغيرات المستمرة ،continuousمثل وزن وطول
الشخص المأخوذ عشوائيًا من السكان.يف هذه الحالة نادرًا ما نهتم حقًا بالطول الدقيق لشخص
ما .عالوة على ذلك ،إذا أخذنا قياسات دقيقة كافية ،فسنجد أنه ال يوجد شخصان على الكوكب
لهما نفس االرتفاع بالضبط.يف الواقع ،مع قياسات دقيقة كافية ،لن يكون لديك نفس االرتفاع
عند االستيقاظ وعندما تنام .ليس هناك فائدة تذكريف السؤال عن االحتمال الدقيق أن يبلغ طول
شخص ما 1.801392782910287192مترًا .بدالً من ذلك ،نهتم عادةً أكثر بالقدرة على
تحديد ما إذا كان ارتفاع شخص ما يقعيف فترة زمنية معينة ،لنقل بين 1.79و 1.81مترًا.يف هذه
الحاالت ،نتعامل مع كثافات االحتماالت .ال يوجد احتمال الرتفاع 1.80متر بالضبط ،لكن
كثافة غير صفرية .nonzero densityإلخراج االحتمال المخصص لفترة ما ،يجب أن نأخذ
جزءًا ال يتجزأ من الكثافة على تلك الفترة.
هذه العالقات .هنا ،ستكون مساحة العينة هي الفئة المستهدفة ،كما يقول العمالء الذين يتعاملون
مع شركة ،أو صور فوتوغرافية على اإلنترنت ،أو بروتينات معروفة لعلماء األحياء .يمثل كل متغير
عشوائي القيمة (غير المعروفة) لسمة مختلفة .عندما نقوم بأخذ عينة من فرد من السكان ،نالحظ
تحقيق كل من المتغيرات العشوائية .نظرًا ألن القيم المأخوذة بواسطة المتغيرات العشوائية تتوافق
مع مجموعات فرعية من مساحة العينة التي يمكن أن تكون متداخلة أو متداخلة جزئيًا أو منفصلة
تمامًا ،فإن معرفة القيمة المأخوذة بواسطة متغير عشوائي واحد يمكن أن تجعلنا نقوم بتحديث
معتقداتنا حول القيم المحتملة لمتغير عشوائي آخر .إذا دخل المريض إلى المستشفى والحظنا
أنه يعاني من صعوبةيف التنفس وفقد حاسة الشم ،فإننا نعتقد أنه من المرجح أن يكون مصابًا بـ
COVID-19أكثر مما قد يكون عليه الحال إذا لم يكن لديه مشكلةيف التنفس وكان عاديًا
تمامًا .حاسة الشم.
عند العمل مع متغيرات عشوائية متعددة ،يمكننا إنشاء أحداث تتوافق مع كل مجموعة من القيم
التي يمكن أن تأخذها المتغيرات بشكل مشترك .تسمى دالة االحتمال التي تعين االحتماالت لكل
من هذه المجموعات (على سبيل المثال 𝑎 = 𝐴 و 𝑏 = 𝐵) دالة االحتمال المشترك joint
probability functionوترجع ببساطة االحتمال المعين لتقاطع المجموعات الفرعية المقابلة
من مساحة العينة .االحتمال المشترك المخصص للحدث حيث يتم اإلشارة إلى المتغيرات
العشوائية 𝐴 و 𝐵 القيم 𝑎 و𝑏 ،على التوالي ،حيث تشير )𝑏 = 𝐵 𝑃(𝐴 = 𝑎,والفاصلة إلى
" ."andالحظ أنه بالنسبة ألية قيم 𝑎 و𝑏 ،فهي تحمل ذلك ≤ )𝑏 = 𝐵 𝑃(𝐴 = 𝑎,
)𝑎 = 𝐴(𝑃 ،ومنذ حدوث 𝑎 = 𝐴 و 𝑏 = 𝐵 𝐴 = 𝑎 ،يجب أن يحدث و𝑏 = 𝐵 يجب أن
يحدث أيضًا .ومن المثير لالهتمام أن االحتمال المشترك يخبرنا بكل ما يمكننا معرفته عن هذه
المتغيرات العشوائية بالمعنى االحتمالي ،ويمكن استخدامه الشتقاق العديد من الكميات المفيدة
األخرى ،بمايف ذلك استعادة التوزيعات الفردية )𝐴(𝑃 و )𝐵(𝑃 .السترداد )𝑎 = 𝐴(𝑃 ،نجمع
ببساطة )𝑣 = 𝐵 𝑃(𝐴 = 𝑎,جميع القيم 𝑣 التي يمكن أن يأخذها المتغير العشوائي 𝐵:
𝑣∑ = )𝑎 = 𝐴(𝑃. )𝑣 = 𝐵 𝑃(𝐴 = 𝑎,
)𝑏=𝐵𝑃(𝐴=𝑎,
تبين أنها مهمة للغاية .يطلق عليه االحتمال الشرطي conditional )𝑎=𝐴(𝑃
النسبة ≤ 1
,probabilityويُشار إليه بالرمز ”∣“ .يخبرنا االحتمال الجديد المرتبط بالحدث 𝑏 = 𝐵 ،بمجرد
أن نشتركيف حقيقة حدوثه 𝑎 = 𝐴 .يمكننا أن نفكريف هذا االحتمال الشرطي على أنه يقيد االنتباه
فقط إلى المجموعة الفرعية من مساحة العينة المرتبطة بـ 𝑎 = 𝐴 ثم إعادة التسوية
renormalizingبحيث تصل جميع االحتماالت إلى .1االحتماالت الشرطية هييف الواقع
احتماالت ،وبالتالي نحترم جميع البديهيات ،axiomsطالما أننا شرط جميع المصطلحاتيف
نفس الحدث وبالتالي قصر االنتباه على نفس مساحة العينة .على سبيل المثال ،بالنسبة لألحداث
التعمق في التعلم العميق :األساسيات والمقدمات 112
)𝐴(𝑃) 𝐴 ∣ 𝐵 (𝑃
= ) 𝐵 ∣ 𝐴 (𝑃 .
)𝐵(𝑃
هذه المعادلة البسيطة لها آثار عميقة ألنها تسمح لنا بعكس ترتيب الشرط .إذا عرفنا كيف نقدر
) 𝐴 ∣ 𝐵 (𝑃 ،ثم يمكننا أن نقدر ) 𝐵 ∣ 𝐴 (𝑃 .غالبًا ما نجد أنه من األسهل تقدير مصطلح واحد
بشكل مباشر ولكن ليس اآلخر ويمكن أن تنقذ نظرية بايز Bayes’ theoremهنا .على سبيل
المثال ،إذا عرفنا مدى انتشار أعراض مرض معين ،واالنتشار العام للمرض واألعراض ،على
التوالي ،يمكننا تحديد مدى احتمالية إصابة شخص ما بالمرض بناءً على أعراضه.يف بعض
الحاالت ،قد ال يكون لدينا وصول مباشر لـ )𝐵(𝑃 ،مثل انتشار األعراض.يف هذه الحالة ،تكون
النسخة المبسطة من نظرية بايز مفيدة:
𝑃( 𝐴 ∣ 𝐵 ) ∝ 𝑃( 𝐵 ∣ 𝐴 )𝑃(𝐴).
𝑎∑ يمكننا بما أننا نعلم أن ) 𝐵 ∣ 𝐴 (𝑃 يجب تسويته الى ، 1أي 𝑃( 𝐴 = 𝑎 ∣ 𝐵 ) = 1
استخدامه لحساب:
)𝐴(𝑃) 𝐴 ∣ 𝐵 (𝑃
= ) 𝐵 ∣ 𝐴 (𝑃 .
𝑏∑ )𝐴(𝑃) 𝐴 ∣ 𝑏 = 𝐵 (𝑃
االستقالل Independenceهو مفهوم آخر مهم بشكل أساسي يشكل العمود الفقري للعديد
من األفكار المهمةيف اإلحصاء .باختصار ،يكون متغيرين مستقلين إذا كان التكييف
conditioningعلى قيمة 𝐴 ال يسبب أي تغييريف توزيع االحتماالت المرتبط بـ 𝐵 والعكس
صحيح .بشكل رسمي أكثر ،االستقالل ،والمشار إليه 𝐵 ⊥ 𝐴 ،يتطلب ذلك = ) 𝐵 ∣ 𝐴 (𝑃
)𝐴(𝑃 ،وبالتالي ،ذلك )𝐵(𝑃)𝐴(𝑃 = )𝐵(𝑃) 𝐵 ∣ 𝐴 (𝑃 = )𝐵 .𝑃(𝐴,غالبًا ما يكون
االستقالل افتراضًا مناسبًا .على سبيل المثال ،إذا كان المتغير العشوائي 𝐴 يمثل النتيجة من رمي
عملة عادلة ويمثل المتغير العشوائي 𝐵 النتيجة من رمي عملة أخرى ،فإن معرفة ما إذا كان المتغير
العشوائي 𝐴 ال يجب أن يؤثر على احتمالية 𝐵 ظهور الرأس.
يكون االستقالل مفيدًا بشكل خاص عندما يكون بين السحوبات drawsالمتتالية لبياناتنا من
بعض التوزيعات األساسية (مما يسمح لنا بعمل استنتاجات إحصائية قوية) أو عندما يكون بين
المتغيرات المختلفةيف بياناتنا ،مما يسمح لنا بالعمل مع نماذج أبسط ترميز بنية االستقالل هذه.
من ناحية أخرى ،غالبًا ما يكون تقدير التبعيات بين المتغيرات العشوائية هو الهدف األساسي
للتعلم .نحن نهتم بتقدير احتمالية المرض نظرًا لألعراض على وجه التحديد ألننا نعتقد أن
األمراض واألعراض ليست مستقلة.
الحظ أنه نظرًا ألن االحتماالت الشرطية هي احتماالت مناسبة ،فإن مفاهيم االستقالل
independenceواالعتماد dependenceتنطبق عليها أيضًا .متغيرين عشوائيين 𝐴 و𝐵
مستقالن بشكل مشروط مع األخذيف االعتبار متغير ثالث 𝐶 إذا وفقط إذا = ) 𝐶 ∣ 𝐵 𝑃( 𝐴,
) 𝐶 ∣ 𝐵 (𝑃) 𝐶 ∣ 𝐴 (𝑃 .ومن المثير لالهتمام ،أن متغيرين يمكن أن يكونا مستقلين بشكل عام
ولكنهما يعتمدان عند التكييف على متغير ثالث .يحدث هذا غالبًا عندما يتوافق المتغيران
العشوائيان 𝐴 و𝐵 مع أسباب متغير ثالث 𝐶 .على سبيل المثال ،قد تكون العظام المكسورة
وسرطان الرئة مستقلينيف عموم السكان ،ولكن إذا شرطنا وجودنايف المستشفى ،فقد نجد أن
العظام المكسورة مرتبطة سلبًا بسرطان الرئة .وذلك ألن العظم المكسور يفسر سبب وجود شخص
مايف المستشفى وبالتالي يقلل من احتمالية إصابته بسرطان الرئة.
وعلى العكس من ذلك ،يمكن أن يصبح متغيرين عشوائيين مستقلين عند التكييف على متغير
ثالث .يحدث هذا غالبًا عندما يكون لحدثين غير مرتبطين سببًا مشتركًا .يرتبط حجم الحذاء
التعمق في التعلم العميق :األساسيات والمقدمات 114
ومستوى القراءة ارتباطًا وثيقًا بين طالب المدارس االبتدائية ،لكن هذا االرتباط يختفي إذا شرطنا
في العمر.
2.6.5
دعونا نختبر مهاراتنا .افترض أن الطبيب يقوم بإجراء اختبار فيروس نقص المناعة البشرية HIV
على المريض .هذا االختبار دقيق إلى حد ما وال يفشل إال مع احتمال ٪1إذا كان المريض يتمتع
بصحة جيدة ولكنه يبلغ عن إصابته بالمرض .عالوة على ذلك ،فإنه ال يفشل أبدًايف اكتشاف
فيروس نقص المناعة البشرية إذا كان المريض مصابًا به بالفعل .نستخدم } 𝐷1 ∈ {0,1لإلشارة
إلى التشخيص ( 0إذا كان سلبياً و 1إذا كان إيجابياً) و} 𝐻 ∈ {0,1لإلشارة إلى حالة فيروس
نقص المناعة البشرية.
الحظ أن مجاميع األعمدة كلها ( 1لكن مجاميع الصفوف ليست كذلك) ،ألنها احتماالت
مشروطة .دعونا نحسب احتمال إصابة المريض بفيروس نقص المناعة البشرية إذا كانت نتيجة
االختبار إيجابية ،أي ) .𝑃( 𝐻 = 1 ∣ 𝐷1 = 1حدسيًا ،سيعتمد هذا على مدى انتشار المرض،
ألنه يؤثر على عدد اإلنذارات الكاذبة .افترض أن السكان يتمتعون بصحة جيدة إلى حد ما ،على
سبيل المثال . 𝑃(𝐻 = 1) = 0.0015،لتطبيق نظرية بايز ،نحتاج إلى تطبيق التهميش
marginalizationلتحديد
بمعنى آخر ،هناك احتمال بنسبة ٪13.06فقط أن يكون المريض مصابًا بالفعل بفيروس نقص
المناعة البشرية ،على الرغم من استخدام اختبار دقيق للغاية .كما نرى ،يمكن أن يكون االحتمال
مخالفًا للحدس .ماذا يفعل المريض عند تلقي مثل هذه األخبار المرعبة؟ من المحتمل أن يطلب
115 الفصل الثاني :االساسيات
المريض من الطبيب إجراء اختبار آخر لتوضيح األمر .االختبار الثاني له خصائص مختلفة وهو
ليس بنفس جودة االختبار األول.
لسوء الحظ ،االختبار الثاني يأتي إيجابيًا أيضًا .دعونا نحسب االحتماالت المطلوبة الستدعاء
نظرية بايز بافتراض االستقالل الشرطي :conditional independence
يمكننا اآلن تطبيق التهميش marginalizationللحصول على احتمالية أن كال االختبارين يأتي
بنتائج إيجابية:
أخيرًا ،فإن احتمال إصابة المريض بفيروس نقص المناعة البشرية مع إعطاء كال االختبارين
إيجابيًا
أي أن االختبار الثاني سمح لنا باكتساب ثقة أعلى بكثير من أن ليس كل شيء على ما يرام .على
الرغم من أن االختبار الثاني أقل دقة بكثير من االختبار األول ،إال أنه ال يزال يحسن تقديرنا بشكل
كبير .كان افتراض أن كال االختبارين مستقلين عن بعضهما البعض مشروطًا أمرًا حاسمًا لقدرتنا
على إنشاء تقدير أكثر دقة .خذ الحالة القصوى حيث نجري نفس االختبار مرتين.يف هذه الحالة،
نتوقع نفس النتيجةيف كلتا المرتين ،وبالتالي ال يتم اكتساب رؤية إضافية من إجراء نفس االختبار
مرة أخرى .ربما الحظ القارئ الذكي أن التشخيص تصرف كمصنف يختبئ على مرأى من الجميع
حيث تزيد قدرتنا على تقرير ما إذا كان المريض يتمتع بصحة جيدة مع حصولنا على المزيد من
الميزات (نتائج االختبار).
التعمق في التعلم العميق :األساسيات والمقدمات 116
Expectations 2.6.6
في كثير من األحيان ،ال يتطلب اتخاذ القرارات مجرد النظر إلى االحتماالت المخصصة لألحداث
الفردية ،بل تجميعها معًايف مجاميع مفيدة يمكن أن تزودنا باإلرشادات .على سبيل المثال ،عندما
تأخذ المتغيرات العشوائية قيمًا عددية مستمرة ،فإننا غالبًا ما نهتم بمعرفة القيمة التي نتوقعهايف
المتوسط .تسمى هذه الكمية رسميًا بالتوقع .expectationإذا كنا نقوم باستثمارات ،فقد تكون
الكمية األولى من الفائدة هي العائد الذي يمكن أن نتوقعه ،بمتوسط جميع النتائج المحتملة
(والترجيح حسب االحتماالت المناسبة) .على سبيل المثال ،لنفترض أنه مع وجود احتمال بنسبة
،٪50قد يفشل االستثمار تمامًا ،مع احتمال ٪40أنه قد يوفر عائدًا × ،2ومع احتمال ٪10قد
يوفر عائد × .10لحساب العائد المتوقع ،نقوم بتجميع الكل العوائد ،وضرب كل منهايف احتمال
حدوثها .هذا ينتج التوقع .0.5 ⋅ 0 + 0.4 ⋅ 2 + 0.1 ⋅ 10 = 1.8ومن ثم فإن العائد المتوقع
هو .1.8
بشكل عام ،يتم تعريف توقع (أو متوسط) المتغير العشوائي 𝑋 على أنه
وبالمثل ،بالنسبة للكثافات التي نحصل عليها )𝑥(𝑝𝑑𝑥 ∫ = ]𝑋[𝐸.يف بعض األحيان نحن
مهتمون بالقيمة المتوقعة لبعض دوال 𝑥 .يمكننا حساب هذه التوقعات على أنها
لالحتماالت والكثافات المتقطعة ،على التوالي .بالعودة إلى مثال االستثمار أعاله ،قد تكون
المنفعة (السعادة) المرتبطة بالعائد .الحظ االقتصاديون السلوكيون منذ فترة طويلة أن الناس
يربطون بين عدم الكفاءة وخسارة األموال أكثر من المنفعة المكتسبة من كسب دوالر واحد مقارنة
بخط األساس .عالوة على ذلك ،تميل قيمة النقود إلى أن تكون دون خطية .sublinearيمكن
المتالك 100ألف دوالر مقابل صفر دوالر أن يحدث فرقًا بين دفع اإليجار وتناول الطعام الجيد
والتمتع بالرعاية الصحية الجيدة مقابل المعاناة من التشرد .من ناحية أخرى ،فإن المكاسب
الناتجة عن امتالك 200ألف مقابل 100ألف أقل دراماتيكية .مثل هذا االستدالل يحفز
الكليشيهات القائلة بأن "منفعة المال لوغاريتمية ." the utility of money is logarithmic
إذا كانت المنفعة المرتبطة بخسارة إجمالية هي ،-1وكانت المرافق المرتبطة بعائدات 1و 2و10
هي 1و 2و 4على التوالي ،فإن السعادة المتوقعة لالستثمار ستكون 0.5 ⋅ (−1) + 0.4 ⋅ 2 +
117 الفصل الثاني :االساسيات
( 0.1 ⋅ 4 = 0.7خسارة فائدة متوقعة قدرها .)٪ 30إذا كانت هذه هي بالفعل دالة المنفعة
utility functionالخاصة بك ،فقد يكون من األفضل لك االحتفاظ بالماليف البنك.
بالنسبة للقرارات المالية ،قد نرغب أيضًايف قياس مدى خطورة riskyاالستثمار .هنا ،ال نهتم
فقط بالقيمة المتوقعة ولكن إلى أي مدى تميل القيم الفعلية إلى االختالف بالنسبة إلى هذه القيمة.
الحظ أنه ال يمكننا أن نأخذ فقط توقع الفرق بين القيم الفعلية والمتوقعة .وذلك ألن توقع
االختالف هو اختالف التوقعات ،وبالتالي .𝐸[𝑋 − 𝐸[𝑋]] = 𝐸[𝑋] − 𝐸[𝐸[𝑋]] = 0ومع
ذلك ،يمكننا أن ننظر إلى توقع أي دالة غير سلبية لهذا االختالف .يتم حساب التباينيف المتغير
العشوائي من خالل النظر إلى القيمة المتوقعة لالنحرافات التربيعية :squared deviations
بالعودة إلى مثالنا االستثماري ،يمكننا اآلن حساب تباين االستثمار .أعطيت ⋅ 0.5 ⋅ 0 + 0.4
.22 + 0.1 ⋅ 102 − 1.82 = 8.36لجميع المقاصد واألغراض ،هذا استثمار محفوف
بالمخاطر .الحظ أنه من خالل االصطالح الرياضي ،غالبًا ما يشار إلى المتوسط والتباين كـ 𝜇 و
.𝜎 2هذا شائع بشكل خاص عندما نستخدمه لتحديد توزيع غاوسي.
بنفس الطريقة التي قدمنا بها التوقعات والتباين للمتغيرات العشوائية العددية ،يمكننا القيام بذلك
للمتغيرات ذات القيمة المتجهية .vector-valued onesالتوقعات سهلة ،حيث يمكننا
def
تطبيقها بطريقة أساسية .على سبيل المثال 𝝁 = 𝐸𝐱∼𝑃 [𝐱]،لديه إحداثيات ] 𝑖𝑥[ 𝑃∼𝐱𝐸 = 𝑖𝜇.
التغايرات Covariancesأكثر تعقيدًا .نقوم بحل المشكلة بأخذ توقعات الناتج الخارجي للفرق
بين المتغيرات العشوائية ومتوسطها.
def
𝚺 = Cov𝐱∼𝑃 [𝐱] = 𝐸𝐱∼𝑃 [(𝐱 − 𝝁)(𝐱 − 𝝁)⊤ ].
يشار إلى هذه المصفوفة بمصفوفة التغاير .covariance matrixطريقة سهلة لمعرفة تأثيرها
هي النظريف بعض المتجهات 𝐯 بنفس حجم 𝐱 .إنه يتبع هذا
التعمق في التعلم العميق :األساسيات والمقدمات 118
على هذا النحو 𝚺،يسمح لنا بحساب التباين ألي دالة خطية لـ 𝐱 من خالل ضرب مصفوفة بسيط.
تخبرنا العناصر خارج القطر عن مدى ارتباط اإلحداثيات :القيمة 0تعني عدم وجود ارتباط no
،correlationحيث تعني القيمة اإليجابية األكبر أنها أكثر ارتباطًا .strongly correlated
2.6.7
في التعلم اآللي ،هناك العديد من األشياء التي يجب عدم التأكد بشأنها! يمكن أن نكون غير
متأكدين من قيمة التسميةيف ضوء المدخالت .يمكن أن نكون غير متأكدين من القيمة المقدرة
للمعلمة .يمكننا حتى أن نكون غير متأكدين مما إذا كانت البيانات التي تصل إلى النشر هي حتى
من نفس التوزيع مثل بيانات التدريب.
من خالل عدم اليقين المتكرر ،aleatoric uncertaintyنشير إلى أن عدم اليقين المتأصليف
المشكلة ،وبسبب العشوائية الحقيقية التي ال تحسبها المتغيرات المرصودة .من خالل عدم اليقين
المعرفي ،epistemic uncertaintyنشير إلى عدم اليقين بشأن معلمات النموذج ،وهو نوع
عدم اليقين الذي نأمليف تقليله من خالل جمع المزيد من البيانات .قد يكون لدينا حالة من عدم
اليقين المعرفي فيما يتعلق باحتمالية ظهور عملة ما ،ولكن حتى بمجرد أن نعرف هذا االحتمال،
فإننا نشكيف عدم يقين دائم بشأن نتيجة أي رمية مستقبلية .بغض النظر عن المدة التي نشاهد
فيها شخصًا ما يرمي عملة عادلة ،فلن نكون أبدًا أكثر أو أقل من ٪50على يقين من أن القرعة
التالية ستظهر رأساً .تدين هذه المصطلحات إلى األدبياتيف النمذجة الميكانيكية mechanical
( modelingانظر على سبيل المثال Der Kiureghian ،و )2009( Ditlevsenلمراجعة هذا
الجانب من عدم اليقين الكمي .)uncertainty quantificationمن الجدير بالذكر أن هذه
المصطلحات تشكل إساءة طفيفة للغة .يشير المصطلح المعرفي إلى أي شيء يتعلق بالمعرفة
،knowledgeوبالتالي بالمعنى الفلسفي ،فإن كل عدم اليقين هو معرفي .epistemic
لقد رأينا أن أخذ العينات للبيانات من توزيع احتمالي غير معروف يمكن أن يزودنا بمعلومات
يمكن استخدامها لتقدير معلمات توزيع توليد البيانات .ومع ذلك ،فإن المعدل الذي يمكن به
هذا يمكن أن يكون بطيئًا للغاية.يف مثالنا لرمي العمالت (والعديد من األمثلة األخرى) ال يمكننا
أن نفعل أفضل من تصميم المقدّرات التي تتقارب بمعدل 𝑛√ 1/حيث 𝑛 حجم العينة (على
سبيل المثال ،عدد الرميات) .هذا يعني أنه باالنتقال من 10إلى 1000مالحظة (عادة ما تكون
مهمة قابلة للتحقيق للغاية) ،نرى انخفاضًا بمقدار عشرة أضعافيف عدم اليقين ،uncertainty
في حين أن المالحظات األلف التالية تساعد قليالً نسبيًا ،حيث تقدم فقط تقليلًا بمقدار 1.41
مرة .هذه ميزة دائمة للتعلم اآللي:يف حين أن هناك غالبًا مكاسب سهلة ،فإنها تتطلب قدرًا كبيرًا
جدًا من البيانات ،وغالبًا ما تكون معها قدرًا هائالً من الحسابات لتحقيق المزيد من المكاسب.
119 الفصل الثاني :االساسيات
للحصول على مراجعة تجريبية لهذه الحقيقة لنماذج اللغة واسعة النطاق ،انظر .Revels et al
(.)2016
كما شحذنا لغتنا وأدواتنا للنمذجة اإلحصائية.يف هذه العملية ،تعلمنا عن االحتماالت الشرطية
وحول واحدة من أهم المعادالتيف اإلحصاء -نظرية بايز .إنها أداة فعالة لفصل المعلومات التي
تنقلها البيانات من خالل مصطلح االحتمالية )𝐴 ∣ 𝐵(𝑃 الذي يتناول مدى مطابقة المالحظات
𝐵 مع اختيار المعلمات 𝐴 ،واالحتمال السابق )𝐴(𝑃 الذي يحكم مدى معقولية اختيار معين 𝐴
كانيف المقام األول .على وجه الخصوص ،رأينا كيف يمكن تطبيق هذه القاعدة لتعيين
االحتماالت للتشخيص ،بناءً على فعالية االختبار وانتشار المرض نفسه (أي سابقنا).
أخيرًا ،قدمنا مجموعة أولى من األسئلة غير التافهة حول تأثير توزيع احتمالي محدد ،وهي
التوقعات expectationsوالتباينات .variancesيف حين أن هناك أكثر من مجرد توقعات خطية
وتربيعية لتوزيع االحتماالت ،فإن هذين األمرين يوفران بالفعل قدرًا جيدًا من المعرفة حول
السلوك المحتمل للتوزيع .على سبيل المثال ،تنص عدم المساواة Chebyshev’s inequality
على 𝑃(|𝑋 − 𝜇| ≥ 𝑘𝜎) ≤ 1/𝑘 2حيث 𝜇 هو التوقع 𝜎 2 ،هو تباين التوزيع 𝑘 > 1،وهو
معيار ثقة من اختيارنا .يخبرنا أن السحب من التوزيع يكمنيف احتمال ٪50على األقل خالل
]𝜎 [−√2𝜎, √2فترة تتمحور حول التوقع.
2.6.8
.1أعط مثاالً حيث يمكن أن تؤدي مراقبة المزيد من البيانات إلى تقليل مقدار عدم اليقين
بشأن النتيجة إلى مستوى منخفض بشكل تعسفي.
.2أعط مثاالً حيث ستؤدي مراقبة المزيد من البيانات إلى تقليل مقدار عدم اليقين فقط
إلى حد ما ثم ال أكثر .اشرح سبب حدوث ذلك وأين تتوقع حدوث هذه النقطة.
.3لقد أثبتنا تجريبياً التقارب مع متوسط رمي عملة معدنية .احسب التباينيف تقدير
االحتمال الذي نراه بعد سحب 𝑛 من العينات.
.1كيف يتناسب التباين مع عدد المالحظات number of observations؟
.2استخدم عدم المساواةيف Chebyshevللحد من االنحراف عن التوقع.
.3كيف تتصل بنظرية الحد المركزي central limit theorem؟
التعمق في التعلم العميق :األساسيات والمقدمات 120
Documentation 2.7
بينما ال يمكننا تقديم كل دالة وفئة TensorFlowفردية (وقد تصبح المعلومات قديمة بسرعة)،
توفر وثائق APIوالبرامج التعليمية واألمثلة اإلضافية مثل هذا التوثيق .documentationيقدم
هذا القسم بعض اإلرشادات حول كيفية استكشاف .TensorFlow API
ones
121 االساسيات:الفصل الثاني
Args:
shape: A list of integers, a tuple of
integers, or
a 1-D Tensor of type int32.
dtype: Optional DType of an element in the
resulting Tensor. Default is
tf.float32.
name: Optional string. A name for the
operation.
Returns:
A Tensor with all elements set to one (1).
تنشئ موترًا جديدًا بالشكل المحددone يمكننا أن نرى أن الدالة،documentation من الوثائق
يجب عليك إجراء اختبار سريع لتأكيد التفسير، كلما أمكن.1 وتضبط جميع العناصر على القيمة
:الخاص بك
tf.ones(4)
<tf.Tensor: shape=(4,), dtype=float32, numpy=array([1.,
1., 1., 1.], dtype=float32)>
، على سبيل المثال. يمكننا استخدام ? لعرض المستنديف نافذة أخرى،Jupyter في نوتبوك
. ويعرضهيف نافذة متصفح جديدة،help(list) سيُنشئ محتوى مطابقًا تقريبًا لـlist?
التعمق في التعلم العميق :األساسيات والمقدمات 122
باإلضافة إلى ذلك ،إذا استخدمنا عالمتي استفهام ،مثل ?? ،listفسيتم أيضًا عرض كود بايثون
الذي ينفذ الدالة.
يوفر التوثيق الرسمي الكثير من األوصاف واألمثلة التي تتجاوز هذا الكتاب .ينصب تركيزنا على
تغطية حاالت االستخدام المهمة التي ستتيح لك البدء بسرعةيف المشكالت العملية ،بدالً من
اكتمال التغطية .نشجعك أيضًا على دراسة الكود المصدري للمكتبات لمشاهدة أمثلة على
تطبي قات عالية الجودة لكود اإلنتاج .من خالل القيام بذلك ،ستصبح مهندسًا أفضل باإلضافة
إلى أن تصبح عالماً أفضل.
الشبكات العصبية الخطية
لالنحدار
3
التعمق في التعلم العميق :األساسيات والمقدمات 124
كمثال جار ،لنفترض أننا نرغبيف تقدير أسعار المنازل (بالدوالر) بناءً على مساحتها (باألقدام
المربعة) والعمر (بالسنوات) .لتطوير نموذج للتنبؤ بأسعار المنازل ،نحتاج إلى الحصول على
بيانات تتكون من المبيعات ،بمايف ذلك سعر البيع والمساحة والعمر لكل منزل.يف مصطلحات
التعلم اآللي ،تسمى مجموعة البيانات datasetمجموعة بيانات التدريب training datasetأو
مجموعة التدريب ،training setويسمى كل صف (يحتوي على البيانات المقابلة لعملية بيع
واحدة) بمثال (أو نقطة بيانات ، data pointمثال ، instanceعينة .)sampleالشيء الذي
نحاول توقعه (السعر) يسمى التسمية ( labelأو الهدف .)targetتسمى المتغيرات (العمر
والمنطقة) التي تستند إليها التنبؤات الميزات (أو المتغيرات المشتركة .)covariates
125 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
Basics 3.1.1
قد يكون االنحدار الخطي Linear regressionهو األبسط واألكثر شيوعًا بين األدوات القياسية
لمعالجة مشاكل االنحدار .يعود تاريخ االنحدار الخطي إلى فجر القرن التاسع عشر (،Gauss
،)1805 ،Legendre ،1809ويتدفق االنحدار الخطي من بعض االفتراضات البسيطة .أوالً،
نفترض أن العالقة بين الميزات 𝐱 والهدف 𝑦 خطية تقريبًا ،أي أنه يمكن التعبير عن المتوسط
الشرطي ]𝐱 = 𝑋 ∣ 𝑌[𝐸 كمجموع وزني للسمات 𝐱 .يسمح هذا اإلعداد بأن القيمة المستهدفة
قد ال تزال تنحرف عن قيمتها المتوقعة بسبب ضوضاء المراقبة .observation noiseبعد ذلك،
يمكننا فرض افتراض أن أي ضوضاء من هذا القبيل حسن التصرف ،بعد توزيع غاوسي .عادة،
سنستخدم 𝑛 لإلشارة إلى عدد األمثلةيف مجموعة البيانات الخاصة بنا .نحن نستخدم النصوص
الفوقية superscriptsلتعداد العينات واألهداف ،والنصوص التحتية subscriptsلفهرسة
)𝑖(
اإلحداثيات .بشكل ملموس 𝐱 (𝑖) ،يشير إلى العينة 𝑖𝑡ℎو 𝑗𝑥 يدل على إحداثياتها .𝑗𝑡ℎ
Model 3.1.1.1
يوجديف قلب كل حل نموذج يصف كيف يمكن تحويل الميزات إلى تقدير للهدف .يعني افتراض
الخطية أنه يمكن التعبير عن القيمة المتوقعة للهدف ( targetالسعر) كمجموع اوزان للسمات
( featuresالمنطقة والعمر):
في التخصصات التي يكون من الشائع فيها التركيز على مجموعات البيانات مع بعض الميزات
فقط ،والتعبير الواضح عن النماذج طويلة الشكل ،كمايف ( ،)3.1.1أمر شائع.يف التعلم اآللي،
نعمل عادةً مع مجموعات البيانات عالية األبعاد ،high-dimensional datasetsحيث يكون
من المالئم استخدام تدوين الجبر الخطي المدمج .عندما تتكون مدخالتنا من 𝑑 ميزات ،يمكننا
التعمق في التعلم العميق :األساسيات والمقدمات 126
^
تعيين فهرس لكل منها (بين 1و 𝑑) والتعبير عن توقعاتنا 𝑦 (بشكل عام ،يشير رمز "القبعة "hat
إلى تقدير )estimate
^
𝑦 = 𝑤1 𝑥1 + ⋯ + 𝑤𝑑 𝑥𝑑 + 𝑏. 3.1.2
بتجميع كل الميزاتيف متجه 𝑑 𝐱 ∈ ℝوجميع األوزانيف متجه 𝑑 ،𝐰 ∈ ℝيمكننا التعبير عن
نموذجنا بشكل مضغوط عبر الضرب النقطي بين 𝐰 و 𝐱:
^
𝑦 = 𝐰 ⊤ 𝐱 + 𝑏. 3.1.3
في ( ،)3.1.3يتوافق المتجه 𝐱 مع ميزات مثال واحد .غالبًا ما نجد أنه من المالئم الرجوع إلى
ميزات مجموعة البيانات الكاملة لألمثلة 𝑛 عبر مصفوفة التصميم 𝑑×𝑛 .𝐗 ∈ ℝهنا 𝐗،يحتوي
^
على صف واحد لكل مثال وعمود واحد لكل ميزة .لمجموعة من الميزات 𝐗 والتنبؤات ∈ 𝐲
𝑛 ℝيمكن التعبير عنها عبر حاصل ضرب المصفوفة-المتجه :matrix-vector product
^
𝑦 = 𝐗𝐰 + 𝑏, 3.1.4
حيث يتم تطبيق البث ( broadcastingالقسم )2.1.4أثناء عملية الجمع .بالنظر إلى ميزات
مجموعة بيانات التدريب 𝐗 والتسميات المقابلة (المعروفة) 𝐲 ،فإن الهدف من االنحدار الخطي
هو العثور على متجه الوزن 𝐰 ومصطلح التحيز 𝑏 الذي يعطى ميزات لمثال بيانات جديد مأخوذ
من نفس التوزيع مثل 𝐗 ،فإن تسمية المثال الجديد سوف (في التوقع) يتوقع بأقل خطأ.
حتى إذا كنا نعتقد أن أفضل نموذج للتنبؤ بـ 𝑦 معطى 𝐱 هو خطي ،فإننا ال نتوقع العثور على
مجموعة بيانات حقيقية من األمثلة 𝑛 حيث )𝑖( 𝑦 تساوي تمامًا 𝑏 𝐰 ⊤ 𝐱 (𝑖) +لكل ≤ 𝑖 ≤ 1
𝑛 .على سبيل المثال ،أيا كانت األدوات التي نستخدمها لمراقبة الميزات 𝐗 والتسميات 𝐲 قد
تعاني من قدر ضئيل من أخطاء القياس .measurement errorوبالتالي ،حتى عندما نكون
واثقين من أن العالقة األساسية خطية ،فسنقوم بتضمين مصطلح ضوضاء noiseلتفسير مثل
هذه األخطاء.
المسافة بين القيم الحقيقية realوالمتوقعة predictedللهدف .ستكون الخسارة (الخطأ) عادةً
رقمًا غير سالب حيث تكون القيم األصغر أفضل وتتحمل التنبؤات الكاملة خسارة قدرها .0
بالنسبة لمشاكل االنحدار ،فإن دالة الخسارة األكثر شيوعًا هي الخطأ التربيعي .squared error
^
عندما يكون توقعنا للحصول على مثال 𝑖 هو )𝑖( 𝑦 والتسمية الحقيقية المقابلة هي )𝑖( 𝑦 ،الخطأ
التربيعي مُعطى بواسطة:
^ 1
𝑙 (𝑖) (𝐰, 𝑏) = (𝑦 (𝑖) − 𝑦 (𝑖) )2 .
2 3.1.5
1
ال يُحدث الثابت فرقًا حقيقيًا ولكنه يثبت أنه مالئم من الناحية المعيارية ،ألنه يُلغى عندما نأخذ
2
مشتق الخطأ .نظرًا ألن مجموعة بيانات التدريب تُمنح لنا ،وبالتالي فهي خارجة عن سيطرتنا،
فإن الخطأ التجريبي ليس سوى دالة لمعلمات النموذج .أدناه ،نتخيل مالءمة نموذج االنحدار
الخطييف مشكلة ذات مدخالت أحادية البعد (الشكل .)3.1.1
عند تدريب النموذج ،نريد العثور على المعلمات (∗ 𝑏 )𝐰 ∗ ,التي تقلل الخسارة اإلجمالية عبر
جميع أمثلة التدريب:
يوفر لنا حل 𝐰 الحل األمثل لمشكلة التحسين .optimization problemالحظ أن هذا الحل
𝐲 ⊤ 𝐗 𝐰 ∗ = (𝐗 ⊤ 𝐗)−1
ستكون فريدة فقط عندما تكون المصفوفة 𝐗 ⊤ 𝐗 قابلة للعكس ،invertibleأي عندما تكون
أعمدة مصفوفة التصميم مستقلة خطيًا (.)1996 ،Golub and Van Loan
في حين أن المشكالت البسيطة مثل االنحدار الخطي قد تقبل حلولًا تحليلية ،يجب أال تعتاد
على مثل هذا الحظ الجيد .على الرغم من أن الحلول التحليلية تسمح بتحليل رياضي لطيف ،إال
أن متطلبات الحل التحليلي مقيدة للغاية بحيث تستبعد تقريبًا جميع الجوانب المثيرة للتعلم
العميق.
تتمثل التقنية الرئيسية لتحسين أي نموذج تعلم عميق تقريبًا ،والتي سوف ندعو إليها خالل هذا
الكتاب،يف تقليل الخطأ بشكل متكرر عن طريق تحديث المعلماتيف االتجاه الذي يقلل بشكل
تدريجي من دالة الخسارة .هذه الخوارزمية تسمى التدرج االشتقاقي (االنحدار االشتقاقي)
.gradient descent
يتمثل التطبيق األكثر سذاجة للتدرج االشتقاقييف أخذ مشتق دالة الخسارة ،وهو متوسط الخسائر
المحسوبةيف كل مثال فردييف مجموعة البيانات .من الناحية العملية ،يمكن أن يكون هذا بطيئًا
للغاية :يجب أن نمرر مجموعة البيانات بأكملها قبل إجراء تحديث واحد ،حتى لو كانت خطوات
التحديث قوية جدًا ( .)1989 ،Liu and Nocedalواألسوأ من ذلك ،إذا كان هناك الكثير من
التكراريف بيانات التدريب ،فإن فائدة التحديث الكامل تكون أقل.
الطرف اآلخر هو النظريف مثال واحد فقطيف كل مرة واتخاذ خطوات التحديث بناءً على مالحظة
واحدةيف كل مرة .يمكن أن تكون الخوارزمية الناتجة ،التدرج االشتقاقي العشوائي stochastic
) gradient descent (SGDاستراتيجية فعالة ( ،)2010 ،Bottouحتى بالنسبة لمجموعات
البيانات الكبيرة .لسوء الحظ ،فإن SGDلها عيوب ،حسابية وإحصائية .تنشأ مشكلة واحدة من
حقيقة أن المعالجات تضرب وتضيف األرقام أسرع بكثير مما هي عليهيف نقل البيانات من
الذاكرة الرئيسية إلى ذاكرة التخزين المؤقت للمعالج .األمر الذي يصل إلى مرتبة المقدار order
of magnitudeهو أكثر كفاءة إلجراء عملية ضرب المصفوفة-المتجه مقارنة بعدد مماثل من
عمليات ضرب المتجه-المتجه .هذا يعني أن معالجة عينة واحدةيف كل مرة قد تستغرق وقتًا
أطول بكثير مقارنة بالدفعة الكاملة .المشكلة الثانية هي أن بعض الطبقات ،مثل تسوية الدُفعات
( batch normalizationسيتم وصفهايف القسم ،)8.5تعمل بشكل جيد فقط عندما يكون
لدينا وصول إلى أكثر من مالحظة واحدةيف كل مرة.
الحل لكلتا المشكلتين هو اختيار استراتيجية وسيطة :بدالً من أخذ دفعة كاملة أو عينة واحدة فقط
في كل مرة ،نأخذ دفعة صغيرة minibatchمن المالحظات ( .)2014 ،Li et al.يعتمد االختيار
المحدد لحجم الدفعة الصغيرة المذكور على العديد من العوامل ،مثل مقدار الذاكرة وعدد
المعجالت واختيار الطبقات وإجمالي حجم مجموعة البيانات .على الرغم من كل ذلك ،فإن
الرقم بين 32و ،256ويفضل أن يكون مضاعفًا لقوة كبيرة ،يعد بداية جيدة .هذا يقودنا إلى
االنحدار التدريجي العشوائي ذو الدفعات الصغيرة minibatch stochastic gradient
.descent
في أبسط أشكالها،يف كل تكرار 𝑡 ،نقوم أوالً بأخذ عينة عشوائية من الدفعات الصغيرة 𝑡 ℬيتكون
من عدد ثابت | |ℬمن أمثلة التدريب .نقوم بعد ذلك بحساب مشتق (التدرج او االنحدار
)gradientلمتوسط الخسارة على minibatchفيما يتعلق بمعلمات النموذج .أخيرًا ،نضرب
التعمق في التعلم العميق :األساسيات والمقدمات 130
التدرجيف قيمة موجبة صغيرة محددة مسبقًا 𝜂 ،تسمى معدل التعلم ،learning rateونطرح
المصطلح الناتج من قيم المعلمة الحالية .يمكننا التعبير عن التحديث على النحو التالي:
𝜂
𝑡(𝐰, 𝑏) ← (𝐰, 𝑏) − |ℬ| ∑𝑖∈ℬ 𝜕(𝐰,𝑏) 𝑙 (𝑖) (𝐰, 𝑏).
باختصار ،يتم تنفيذ minibatch SGDعلى النحو التالي )1( :تهيئة قيم معلمات النموذج،
عادةً بشكل عشوائي؛ ( )2أخذ عينات متكررة من الدفعات الصغيرة العشوائية من البيانات،
وتحديث المعلماتيف اتجاه التدرج السالب .بالنسبة للخسائر التربيعية والتحوالت المرتبطة ،فإن
هذا له توسع مغلق الشكل:
𝜂 𝜂
𝐰 ←𝐰− 𝑡∑𝑖∈ℬ )𝑏 𝜕𝐰 𝑙 (𝑖) (𝐰, =𝐰− 𝑡∑𝑖∈ℬ ) )𝑖( 𝑦 𝐱 (𝑖) (𝐰 ⊤ 𝐱 (𝑖) + 𝑏 −
||ℬ ||ℬ
𝜂 𝜂
𝑏 ←𝑏− 𝑡∑𝑖∈ℬ )𝑏 𝜕𝑏 𝑙 (𝑖) (𝐰, =𝑏− ∑𝑖∈ℬ (𝐰 ⊤ 𝐱 (𝑖) + 𝑏 − 𝑦 (𝑖) ) .
||ℬ ||ℬ 𝑡
نظرًا ألننا نختار دفعات صغيرة ،ℬفنحن بحاجة إلى التسوية normalizeمن خالل حجمه |.|ℬ
في كثير من األحيان يتم تحديد حجم الدفعات الصغيرة ومعدل التعلم من قبل المستخدم .تسمى
هذه المعلمات القابلة للضبط التي لم يتم تحديثهايف حلقة التدريب بالمعلمات الفائقة
.hyperparametersيمكن ضبطها تلقائيًا من خالل عدد من التقنيات ،مثل تحسين بايزي
)2018 ،Frazier( Bayesian optimizationيف النهاية ،يتم تقييم جودة الحل عادةً على
مجموعة بيانات تحقق منفصلة ( separate validation datasetأو مجموعة التحقق من
الصحة .)validation set
بعد التدريب على عدد محدد مسبقًا من التكرارات ( iterationsأو حتى يتم استيفاء معيار إيقاف
^ ^
آخر) ،نسجل معلمات النموذج المقدرة ،المشار إليها 𝑏 .𝐰,الحظ أنه حتى لو كانت دالتنا خطية
حقًا وبدون ضوضاء ،فلن تكون هذه المعلمات هي الحد األدنى الدقيق للخسارة ،أو حتى حتمية.
على الرغم من أن الخوارزمية تتقارب ببطء نحو المصغرات ،minimizersإال أنها ال تستطيع
تحقيقها بالضبطيف عدد محدود من الخطوات .عالوة على ذلك ،يتم اختيار الدفعات الصغيرة
ℬالمستخدمة لتحديث المعلمات عشوائيًا .هذا يكسر الحتمية .determinism
يحدث االنحدار الخطي ليكون مشكلة تعليمية بحد أدنى عالمي (كلما كانت 𝐗 ذات رتبة كاملة،
أو ما يعادلها ،كلما كان 𝐗 ⊤ 𝐗 قابالً للعكس) .ومع ذلك ،فإن األسطح الخاسرة للشبكات العميقة
تحتوي على العديد من نقاط السرج saddle pointsوالحد األدنى .minimaلحسن الحظ ،ال
نهتم عادةً بإيجاد مجموعة محددة من المعلمات ولكن فقط أي مجموعة من المعلمات تؤدي
إلى تنبؤات دقيقة (وبالتالي خطأ منخفض) .من الناحية العملية ،نادرًا ما يكافح ممارسو التعلم
العميق للعثور على معايير تقلل من الخطأيف مجموعات التدريب (،Frankle and Carbin
131 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
.)2018 ،Izmailov et al. ،2018المهمة األكثر صعوبة هي العثور على المعلمات التي تؤدي
إلى تنبؤات دقيقة حول البيانات غير المرئية من قبل ،unseen dataوهو تحد يسمى التعميم
.generalizationنعود إلى هذه المواضيعيف جميع أنحاء الكتاب.
Predictions 3.1.1.5
^ ^
بالنظر إلى النموذج 𝑏 ،𝐰 ⊤ 𝐱 +يمكننا اآلن عمل تنبؤات لمثال جديد ،على سبيل المثال ،للتنبؤ
بسعر بيع منزل لم يسبق رؤيتهيف ضوء مساحته وعمره .اعتاد ممارسو التعلم العميق على استدعاء
استدالل inferenceمرحلة التنبؤ ولكن هذا نوع من التسمية الخاطئة - misnomerيشير
االستدالل على نطاق واسع إلى أي استنتاج تم التوصل إليه على أساس األدلة ،بمايف ذلك قيم
المعلمات والتسمية المحتملة لمثيل غير مرئي .إذا كان هناك أي شيء،يف كثير من األحيان يشير
االستدالليف األدبيات اإلحصائية إلى استدالل المعلمات وهذا التحميل الزائد للمصطلحات
يخلق ارتباكًا غير ضروري عندما يتحدث ممارسو التعلم العميق إلى اإلحصائيين .فيما يلي سوف
نتمسك بالتنبؤ كلما أمكن ذلك.
%matplotlib inline
import math
import time
import numpy as np
import tensorflow as tf
from d2l import tensorflow as d2l
لتوضيح سبب أهمية هذا كثيرًا ،يمكننا التفكيريف طريقتين إلضافة المتجهات .للبدء ،نقوم بإنشاء
مثيل لمتجهين كل منهما 10,000بعد يحتويان على جميع المتجهات.يف إحدى الطرق ،نقوم
بعمل حلقة فوق المتجهات باستخدام .Python for-loopيف الطريقة األخرى ،نعتمد على
استدعاء واحد لـ .+
n = 10000
)a = tf.ones(n
)b = tf.ones(n
اآلن يمكننا قياس أعباء العمل .أوالً ،نضيفهم ،إحداثي واحديف كل مرة ،باستخدام حلقة for-
.loop
التعمق في التعلم العميق :األساسيات والمقدمات 132
))c = tf.Variable(tf.zeros(n
)(t = time.time
for i in range(n):
)]c[i].assign(a[i] + b[i
'f'{time.time() - t:.5f} sec
''9.45401 sec
بدالً من ذلك ،نعتمد على العامل +المعاد تحميله لحساب مجموع العناصر.
)(t = time.time
d = a + b
'f'{time.time() - t:.5f} sec
''0.00031 sec
الطريقة الثانية أسرع بشكل كبير من الطريقة األولى .غالبًا ما ينتج عن التعليمات البرمجية
الموجهية Vectorizing codeتسريع من حيث الحجم .عالوة على ذلك ،نقوم بدفع المزيد
من الرياضيات إلى المكتبة دون الحاجة إلى كتابة أكبر عدد من العمليات الحسابية بأنفسنا ،مما
يقلل من احتمالية حدوث أخطاء ويزيد من إمكانية نقل الشفرة.
تم اختراع االنحدار الخطييف مطلع القرن التاسع عشر .على الرغم من أنه قد نوقش منذ فترة
طويلة ما إذا كان Gaussأو Legendreقد فكريف الفكرة ألول مرة ،إال أن Gaussهو الذي
اكتشف أيضًا التوزيع الطبيعي ( normal distributionيسمى أيضًا .)Gaussianاتضح أن
التوزيع الطبيعي واالنحدار الخطي مع الخطأ التربيعي يشتركانيف اتصال أعمق من النسب الشائعة.
للبدء ،تذكر أنه يتم إعطاء التوزيع الطبيعي بمتوسط 𝜇 وتباين ( 𝜎 2االنحراف المعياري 𝜎)
1 1
= )𝑥(𝑝 exp (− (𝑥 − 𝜇)2 ).
√2𝜋𝜎 2 2𝜎 2
الحظ أن تغيير المتوسط يتوافق مع التحول على طول المحور 𝑥 ،وزيادة التباين يؤدي إلى انتشار
التوزيع ،مما يقلل من ذروته.
تتمثل إحدى طرق تحفيز االنحدار الخطي بخطأ مربعيف افتراض أن المالحظات تنشأ من
القياسات الصاخبة ،حيث يتم توزيع الضوضاء عادةً على النحو التالي:
على هذا النحو ،فإن االحتمالية عوامل .likelihood factorizesوفقًا لمبدأ الحد األقصى من
االحتمالية ،principle of maximum likelihoodفإن أفضل قيم المعلمات 𝐰 و 𝑏 هي
تلك التي تزيد من احتمالية مجموعة البيانات بأكملها:
التعمق في التعلم العميق :األساسيات والمقدمات 134
تتبع المساواة equalityمنذ أن تم رسم جميع األزواج ) )𝑖( 𝑦 (𝐱 (𝑖) ,بشكل مستقل عن بعضها
البعض .تسمى التقديرات المختارة وفقًا لمبدأ االحتمالية القصوى بمقدرات االحتمالية القصوى
.maximum likelihood estimatorsيف حين أن تكبير ناتج العديد من الدوال األسية قد يبدو
صعبًا ،يمكننا تبسيط األشياء بشكل كبير ،دون تغيير الهدف ،من خالل تعظيم لوغاريتم االحتمال
بدالً من ذلك .ألسباب تاريخية ،غالبًا ما يتم التعبير عن التحسينات على أنها تصغير
minimizationبدالً من تكبير .maximizationلذلك ،بدون تغيير أي شيء ،يمكننا تقليل
احتمالية السجل السلبية ،negative log-likelihoodوالتي يمكننا التعبير عنها على النحو
التالي:
1 1
−log 𝑃(𝐲 ∣ 𝐗) = ∑𝑛𝑖=1 )𝑖( 𝑦( log (2𝜋𝜎 2 ) + 2 − 𝐰 ⊤ 𝐱 (𝑖) − 𝑏)2 .
2 𝜎2
إذا افترضنا أن 𝜎 تم إصالحه ،فيمكننا تجاهل المصطلح األول ،ألنه ال يعتمد على 𝐰 أو 𝑏.
1
المصطلح الثاني مطابق لخطأ الخطأ التربيعي التي تم تقديمها سابقًا ،باستثناء ثابت الضرب .𝜎2
لحسن الحظ ،الحل ال يعتمد على أي منهما .ويترتب على ذلك أن التقليل من متوسط الخطأ
التربيعي يعادل الحد األقصى لتقدير االحتمالية لنموذج خطييف ظل افتراض الضوضاء الغاوسية
المضافة.
الشكل 3.1.2يصور االنحدار الخطي كشبكة عصبية .يبرز الرسم التخطيطي نمط االتصال مثل
كيفية توصيل كل مدخل بالمخرجات ،ولكن ليس القيم المحددة المأخوذة بواسطة األوزان أو
التحيزات.
135 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
المدخالت 𝑑𝑥 .𝑥1 , … ,نشير إلى عدد المدخالت number of inputsأو أبعاد الميزة
feature dimensionalityيف طبقة اإلدخال .ناتج الشبكة هو .𝑜1نظرًا ألننا نحاول فقط التنبؤ
بقيمة عددية واحدة ،فلدينا فقط خلية عصبية ناتجة واحدة .الحظ أن جميع قيم اإلدخال معطاة.
هناك فقط خلية عصبية واحدة محسوبة .باختصار ،يمكننا التفكيريف االنحدار الخطي كشبكة
عصبية أحادية الطبقة متصلة بالكامل .single-layer fully connected neural network
سنواجه شبكات ذات طبقات أكثر بكثيريف الفصول المستقبلية.
Biology 3.1.4.1
نظرًا ألن االنحدار الخطي يسبق علم األعصاب الحسابي ،computational neuroscience
فقد يبدو وصف االنحدار الخطي من حيث الشبكات العصبية مفارقة تاريخية .ومع ذلك ،فقد
كانت مكانًا طبيعيًا للبدء عندما بدأ علماء علم اإلنترنت وعلماء الفسيولوجيا العصبية وارين
ماكولوتش ووالتر بيتسيف تطوير نماذج من الخاليا العصبية االصطناعية .ضعيف اعتبارك الصورة
الكرتونية للخاليا العصبية البيولوجيةيف الشكل ،3.1.3والتي تتكون من التشعبات dendrites
(أطراف اإلدخال) ،والنواة ( nucleusوحدة المعالجة المركزية ،)CPUوالمحور العصبي
( axonسلك اإلخراج) ،والمحطات الطرفية ( axon terminalsأطراف اإلخراج) ،مما يتيح
التوصيالت بالخاليا العصبية األخرى عبر المشابك .synapses
يتم تلقي المعلومات 𝑖𝑥 الواردة من الخاليا العصبية األخرى (أو أجهزة االستشعار البيئية
)environmental sensorsيف التشعبات .dendritesعلى وجه الخصوص ،يتم اخذ اوزان
weightedهذه المعلومات من خالل األوزان المشبكية 𝑖𝑤 ( ،)synaptic weightsوتحديد
تأثير المدخالت ،على سبيل المثال ،التنشيط أو التثبيط عبر المنتج 𝑖𝑤 𝑖𝑥 .يتم تجميع المدخالت
𝑖∑ = 𝑦 ،وربما الموزونة الواردة من مصادر متعددةيف النواة كمجموع اوزان 𝑏 𝑥𝑖 𝑤𝑖 +
تخضع لبعض عمليات المعالجة الالحقة غير الخطية عبر )𝑦(𝜎 .ثم يتم إرسال هذه المعلومات
عبر المحور العصبي axonإلى المحاور الطرفية ،axon terminalsحيث تصل إلى وجهتها
(على سبيل المثال ،المشغل actuatorمثل العضالت )muscleأو يتم تغذيتهايف خلية عصبية
أخرى عبر التشعبات .dendrites
من المؤكد أن الفكرة رفيعة المستوى القائلة بإمكانية دمج العديد من هذه الوحدات مع االتصال
الصحيح وخوارزمية التعلم الصحيحة ،إلنتاج سلوك أكثر تعقيدًا وإثارة لالهتمام من أي خلية
عصبية واحدة وحدها يمكن أن تدين بدراستنا لألنظمة العصبية البيولوجية الحقيقية.يف الوقت
نفسه ،تستمد معظم األبحاثيف التعلم العميق اليوم اإللهام من مصدر أوسع بكثير .نستدعي
ستيوارت راسل وبيتر نورفيج (راسل ونورفيج )2016 ،اللذين أشاروا إلى أنه على الرغم من أن
الطائرات ربما كانت مستوحاة من الطيور ،إال أن علم الطيور لم يكن المحرك األساسي البتكار
الطيران لعدة قرون .وبالمثل ،يأتي اإللهاميف التعلم العميق هذه األيام على قدم المساواة أو أكبر
من الرياضيات واللغويات وعلم النفس واإلحصاء وعلوم الكمبيوتر والعديد من المجاالت
األخرى.
3.1.5
في هذا القسم ،قدمنا االنحدار الخطي التقليدي ،حيث يتم اختيار معلمات الدالة الخطية لتقليل
الخسارة التربيعيةيف مجموعة التدريب .لقد حفزنا أيضًا اختيار الهدف هذا من خالل بعض
االعتبارات العملية ومن خالل تفسير االنحدار الخطي باعتباره تقديرًا أقصى الحتماليةيف ظل
افتراض الخطية والضوضاء الغاوسية .بعد مناقشة كل من االعتبارات الحسابية واالرتباطات
باإلحصاءات ،أظهرنا كيف يمكن التعبير عن هذه النماذج الخطية كشبكات عصبية بسيطة حيث
يتم توصيل المدخالت مباشرة بالمخرجات (المخرجات) .على الرغم من أننا سننتقل قريبًا إلى
النماذج الخطية السابقة تمامًا ،إال أنها كافية لتقديم معظم المكونات التي تتطلبها جميع نماذجنا:
النماذج البارامترية ،parametric formsواألهداف القابلة للتفاضل differentiable
، objectivesوالتحسين عبر التدرج االشتقاقي العشوائي المصغر ،وفي النهاية ،التقييم على
البيانات غير المرئية سابقًا.
137 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
3.1.6
.1افترض أن لدينا بعض البيانات .𝑥1 , … , 𝑥𝑛 ∈ ℝهدفنا هو إيجاد ثابت 𝑏 يتم تصغير
∑𝑖(𝑥𝑖 − 𝑏)2إلى أدنى حد.
.1ابحث عن حل تحليلي للقيمة المثلى لـ 𝑏.
.2كيف ترتبط هذه المشكلة وحلها بالتوزيع الطبيعي؟
𝑖∑ إلى |𝑏 ∑𝑖 | 𝑥𝑖 −؟ هل يمكنك .3ماذا لو غيرنا الخسارة من (𝑥𝑖 − 𝑏)2
العثور على الحل األمثل لـ 𝑏؟
.2إثبت أن الدوال األفينية التي يمكن التعبير عنها بواسطة 𝑏 𝐱 𝐰 +تعادل الدوال
⊤
.1أظهر أن افتراض الضوضاء الغاوسية المضافة غير مناسب .تلميح :هل يمكننا
الحصول على أسعار سلبية؟ ماذا عن التقلبات fluctuations؟
.2لماذا يكون االنحدار إلى لوغاريتم السعر أفضل بكثير ،أي 𝑦 = log price؟
.3ما الذي يجب أن تقلق بشأنه عند التعامل مع ،pennystockأي األسهم ذات
األسعار المنخفضة جدًا؟ تلميح :هل يمكنك التداول بجميع األسعار الممكنة؟
لماذا هذه مشكلة أكبر لألسهم الرخيصة؟
.4لمزيد من المعلومات ،راجع نموذج Black-Scholesالشهير لتسعير
الخيارات). (Black and Scholes, 1973
.8لنفترض أننا نريد استخدام االنحدار لتقدير عدد التفاح المباعيف محل بقالة.
.1ما هي المشاكل مع نموذج الضوضاء الغاوسية المضافة؟ تلميح :أنت تبيع
التفاح وليس الزيت.
.2يلتقط توزيع بواسون Poisson distributionالتوزيعات على العد .أعطيت
من قبل !𝑘 𝜆 .𝑝(𝑘 ∣ 𝜆) = 𝜆𝑘 𝑒 −𝜆 /هي دالة المعدل و𝑘 هي عدد األحداث
التي تراها .إثبات أن 𝜆 هي القيمة المتوقعة للعد 𝑘.
.3صمم دالة خطأ مرتبطة بتوزيع بواسون.
.4صمم دالة خطأ لتقدير 𝜆 logبدالً من ذلك.
مستوحاة من مكتبات مفتوحة المصدر مثل ،PyTorch Lightningعلى مستوى عالٍ ،نرغب
في الحصول على ثالث فئات )1( :تحتوي الوحدة النمطية على نماذج وخسائر وطرق تحسين؛
( )2توفر DataModuleأدوات تحميل بيانات للتدريب والتحقق من الصحة؛ ( )3يتم الجمع
بين كال الفئتين باستخدام فئة ، Trainerمما يسمح لنا بتدريب النماذج على مجموعة متنوعة
من منصات األجهزة .تتكيف معظم التعليمات البرمجيةيف هذا الكتاب مع الوحدة النمطية
139 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
import time
import numpy as np
import tensorflow as tf
from d2l import torch as d2l
Utilities 3.2.1
نحتاج إلى بعض األدوات المساعدة Utilitiesلتبسيط البرمجة الموجهة للكائنات object-
oriented programmingيف نوتبوكس .Jupyterيتمثل أحد التحدياتيف أن تعريفات الفئات
تميل إلى أن تكون كتل طويلة إلى حد ما من التعليمات البرمجية .تتطلب قابلية قراءة النوتبوك
Notebookأجزاء قصيرة من التعليمات البرمجية ،تتخللها تفسيرات ،وهو مطلب ال يتوافق مع
أسلوب البرمجة الشائعيف مكتبات بايثون .تتيح لنا دالة األداة المساعدة األولى تسجيل الدوال
كطرقيف الكالس بعد إنشاء الكالس.يف الواقع ،يمكننا القيام بذلك حتى بعد إنشاء نسخ من
الكالس! يسمح لنا بتقسيم تنفيذ كالس إلى كتل تعليمات برمجية متعددة.
class A:
def __init__(self):
self.b = 1
)(a = A
بعد ذلك نحدد الطريقة doكما نفعل عادة ،ولكن ليسيف نطاق الكالس .Aبدالً من ذلك ،
نقوم بتزيين هذه الطريقة عن طريق add_to_classبالفئة Aكوسيطة لها .عند القيام بذلك،
تكون الطريقة قادرة على الوصول إلى متغيرات األعضاءيف Aكما نتوقع إذا تم تعريفها كجزء من
تعريف .Aدعونا نرى ما يحدث عندما نستدعيها للمثيل .a
)@add_to_class(A
def do(self):
األساسيات والمقدمات:التعمق في التعلم العميق 140
a.do()
Class attribute "b" is 1
__ كسماتinit__ التي تحفظ جميع الوسائطيف طريقةكالسutility الثاني هو كالس
ضمنيًا دون الحاجة إلىconstructor هذا يسمح لنا بتوسيع تواقيع استدعاء المُنشئ.للكالس
.تعليمات برمجية إضافية
)'board = d2l.ProgressBoard('x
for x in np.arange(0, 10, 0.1):
)board.draw(x, np.sin(x), 'sin', every_n=2
)board.draw(x, np.cos(x), 'cos', every_n=10
Models 3.2.2
كالس الوحدة النمطية Moduleهي الكالس األساسي لجميع النماذج التي سننفذها .كحد
أدنى نحتاج إلى تحديد ثالث طرق .تقوم طريقة __ __initبتخزين المعلمات القابلة للتعلم،
وتقبل طريقة training_stepمجموعة بيانات إلرجاع قيمة الخطأ ،وتعيد طريقة
configure_optimizersطريقة التحسين ،أو قائمة بها ،تُستخدم لتحديث المعلمات
القابلة للتعلم .اختياريا يمكننا تحديد validation_stepلإلبالغ عن تدابير التقييم.يف
بعض األحيان نضع الكود لحساب اإلخراجيف طريقة forwardمنفصلة لجعله أكثر قابلية
إلعادة االستخدام.
def configure_optimizers(self):
raise NotImplementedError
قد تالحظ أن Moduleهي فئة فرعية من ، tf.keras.Modelوهي الفئة األساسية
للشبكات العصبيةيف .TensorFlowيوفر ميزات مالئمة للتعامل مع الشبكات العصبية .على
سبيل المثال ،تستدعي طريقة callيف طريقة __ __callالمضمنة .هنا نعيد توجيه call
إلى دالة ، forwardوحفظ وسائطها كسمة فئة .نقوم بذلك لجعل الكود الخاص بنا أكثر
تشابهًا مع تطبيقات إطار العمل األخرى.
Data 3.2.3
فئة DataModuleهي الفئة األساسية للبيانات.يف كثير من األحيان يتم استخدام طريقة
__ __initإلعداد البيانات .يتضمن ذلك التنزيل والمعالجة المسبقة إذا لزم األمر .يُرجع
train_dataloaderأداة تحميل البيانات لمجموعة بيانات التدريب .أداة تحميل البيانات
هي منشئ ( generatorبايثون) ينتج دفعة بياناتيف كل مرة يتم استخدامها .يتم بعد ذلك إدخال
هذه الدُفعةيف طريقة training_stepللوحدة النمطية Moduleلحساب الخطأ .يوجد
val_dataloaderاختياري إلرجاع أداة تحميل مجموعة بيانات التحقق .يتصرف بنفس
الطريقة ،باستثناء أنه ينتج دفعات بيانات ألسلوب validation_stepيف .Module
def train_dataloader(self):
)return self.get_dataloader(train=True
def val_dataloader(self):
)return self.get_dataloader(train=False
Training 3.2.4
يقوم فئة Trainerبتدريب المعلمات القابلة للتعلميف فئة Moduleمع البيانات المحددةيف
.DataModuleالطريقة الرئيسية ، fitوالتي تقبل وسيطتين ، model :مثيل للوحدة النمطية
، Moduleوالبيانات ، dataمثيل .DataModuleثم يتكرر على مدار مجموعة البيانات
األساسيات والمقدمات:التعمق في التعلم العميق 144
سوف نؤجل تنفيذ هذه الدالة إلى، كمايف السابق. عدد مرات لتدريب النموذجmax_epochs
.فصول الحقة
def fit_epoch(self):
raise NotImplementedError
3.2.5
توضح الفئات،لتسليط الضوء على التصميم الموجه للكائنات لتنفيذ التعلم العميقيف المستقبل
سنستمريف إثراء.المذكورة أعاله فقط كيف تخزن كائناتها البيانات وتتفاعل مع بعضها البعض
يتم حفظ، عالوة على ذلك.يف بقية الكتاب،@add_to_class مثل،تطبيقات هذه الفئات
وهي مجموعة أدوات خفيفة الوزن،)d2l library(d2l هذه الفئات المنفذة بالكامليف مكتبة
145 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
تجعل النمذجة المنظمة للتعلم العميق أمرًا سهالً .على وجه الخصوص ،فإنه يسهل إعادة استخدام
العديد من المكونات بين المشاريع دون تغيير الكثير على اإلطالق .على سبيل المثال ،يمكننا
استبدال المُحسِّن optimizerفقط ،والنموذج modelفقط ،ومجموعة البيانات datasetفقط،
وما إلى ذلك؛ هذه الدرجة من النمطية modularityتؤتي ثمارهايف جميع أنحاء الكتاب من
حيث اإليجاز والبساطة (وهذا هو سبب إضافتها) ويمكنها أن تفعل الشيء نفسه لمشاريعك
الخاصة.
3.2.6
.1حدد موقع عمليات التنفيذ الكاملة للفئات المذكورة أعاله المحفوظةيف مكتبة .d2l
نوصي بشدة أن تنظر إلى التنفيذ بالتفصيل بمجرد أن تكتسب مزيدًا من اإللمام بنمذجة
التعلم العميق.
.2قم بإزالة عبارة save_hyperparametersيف الفئة .Bهل ال يزال بإمكانك
طباعة self.aو self.b؟ اختياري :إذا كنت قد تعمقتيف التنفيذ الكامل لفئة
، HyperParametersفهل يمكنك توضيح السبب؟
%matplotlib inline
import random
import tensorflow as tf
from d2l import tensorflow as d2l
Generating the Dataset 3.3.1
في هذا المثال ،سنعمل األبعاد المنخفضة low-dimensionalلإليجاز .يُنشئ مقتطف الشفرة
التالي 1000مثال بميزات ثنائية األبعاد مستمدة من التوزيع العادي القياسي .تنتمي مصفوفة
التصميم 𝐗 الناتجة إلى .ℝ1000×2نقوم بإنشاء كل تسمية من خالل تطبيق دالة خطية للقيم
الحقيقية ، ground truthوأفسدتها عن طريق الضوضاء المضافة 𝜖 ،مرسومة بشكل مستقل
ومتطابق لكل مثال:
التعمق في التعلم العميق :األساسيات والمقدمات 146
𝐲 = 𝐗𝐰 + 𝑏 + 𝜖.
النحو ،يتكون كل minibatchمن مجموعة من الميزات والتسميات .الحظ أننا بحاجة إلى أن
نضعيف اعتبارنا ما إذا كنايف وضع التدريب trainingأو التحقق من الصحة :validationيف
السابق ،سنرغبيف قراءة البيانات بترتيب عشوائي،يف حين أن القدرة على قراءة البيانات بترتيب
محدد مسبقًا قد تكون مهمة ألغراض التصحيح.
)@d2l.add_to_class(SyntheticRegressionData
def get_dataloader(self, train):
if train:
))indices = list(range(0, self.num_train
# The examples are read in random order
)random.shuffle(indices
else:
indices = list(range(self.num_train,
))self.num_train+self.num_val
for i in range(0, len(indices), self.batch_size):
)]j = tf.constant(indices[i : i+self.batch_size
)yield tf.gather(self.X, j), tf.gather(self.y, j
لبناء بعض الحدس ،دعنا نفحص الدفعة األولى من البيانات .توفر لنا كل دفعة صغيرة من الميزات
حجمها وأبعاد ميزات اإلدخال .وبالمثل ،سيكون لمجموعة التسميات الصغيرة الخاصة بنا شكل
مطابق تم تحديده بواسطة .batch_size
)))(X, y = next(iter(data.train_dataloader
)print('X shape:', X.shape, '\ny shape:', y.shape
)X shape: (32, 2
)y shape: (32, 1
استدعاء فإن ،innocuous ضار غير يبدو بينما
))( iter(data.train_dataloaderيوضح قوة تصميم بايثون الموجه للكائنات.
الحظ أننا أضفنا طريقة إلى فئة SyntheticRegressionDataبعد إنشاء كائن البيانات.
ومع ذلك ،فإن الكائن يستفيد من إضافة الدالة بأثر رجعي إلى الفئة.
خالل التكرار نحصل على دفعات صغيرة مميزة حتى يتم استنفاد مجموعة البيانات بالكامل
(جرب هذا).يف حين أن التكرار الذي تم تنفيذه أعاله مفيد لألغراض التعليمية ،إال أنه غير فعال
في الطرق التي قد تسبب لنا المشاكليف مشاكل حقيقية .على سبيل المثال ،يتطلب األمر أن نقوم
بتحميل جميع البيانات الموجودةيف الذاكرة وأن نقوم بالكثير من الوصول العشوائي إلى الذاكرة.
تعد أجهزة التكرار المضمنة built-in iteratorsالتي يتم تنفيذهايف إطار عمل التعلم العميق
أكثر كفاءة إلى حد كبير ويمكنها التعامل مع مصادر مثل البيانات المخزنةيف الملفات ،والبيانات
األساسيات والمقدمات:التعمق في التعلم العميق 148
دعونا نحاول، بعد ذلك. والبيانات التي يتم إنشاؤها أو معالجتها أثناء التنقل،المستلمة عبر التدفق
.تنفيذ نفس الدالة باستخدام التكرارات المضمنة
@d2l.add_to_class(d2l.DataModule) #@save
def get_tensorloader(self, tensors, train,
indices=slice(0, None)):
tensors = tuple(a[indices] for a in tensors)
shuffle_buffer = tensors[0].shape[0] if train else 1
return
tf.data.Dataset.from_tensor_slices(tensors).shuffle(
buffer_size=shuffle_buffer).batch(self.batch_size)
@d2l.add_to_class(SyntheticRegressionData) #@save
def get_dataloader(self, train):
i = slice(0, self.num_train) if train else
slice(self.num_train, None)
return self.get_tensorloader((self.X, self.y),
train, i)
باستثناء أنها أكثر كفاءة ولديها بعض،تعمل أداة تحميل البيانات الجديدة تمامًا مثل السابقة
.الدوال اإلضافية
X, y = next(iter(data.train_dataloader()))
print('X shape:', X.shape, '\ny shape:', y.shape)
X shape: (32, 2)
y shape: (32, 1)
الخاصة بإطارAPI أداة تحميل البيانات التي توفرها واجهة برمجة التطبيقات،على سبيل المثال
أي عدد، حتى نتمكن من االستعالم عن طولها، __ المضمنةlen__ العمل تدعم طريقة
.number of batches الدُفعات
len(data.train_dataloader())
32
149 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
.3.3.4الملخص
تُعد برامج تحميل البيانات Data loadersطريقة مالئمة الستخراج عملية تحميل البيانات
ومعالجتها .وبهذه الطريقة ،فإن خوارزمية التعلم اآللي نفسها قادرة على معالجة العديد من أنواع
ومصادر البيانات المختلفة دون الحاجة إلى تعديل .أحد األشياء الرائعة حول برامج تحميل
البيانات هو أنه يمكن تكوينها .على سبيل المثال ،قد نقوم بتحميل الصور ومن ثم يكون لدينا
مرشح ما بعد المعالجة يقوم بقصها أو تعديلها بطريقة أخرى .على هذا النحو ،يمكن استخدام
برامج تحميل البيانات لوصف خط أنابيب معالجة البيانات بالكامل.
بالنسبة للنموذج نفسه ،فإن النموذج الخطي ثنائي األبعاد هو نموذج بسيط كما قد نواجهه .يتيح
لنا اختبار دقة نماذج االنحدار دون القلق بشأن عدم وجود كميات كافية من البيانات أو نظام
معادالت غير محدد بشكل كافٍ .سنستخدم هذا بشكل جيديف القسم التالي.
3.3.5
.1ماذا سيحدث إذا كان عدد األمثلة ال يمكن تقسيمه على حجم الدُفعة .كيف يمكن تغيير
هذا السلوك من خالل تحديد وسيطة مختلفة باستخدام واجهة برمجة التطبيقات
الخاصة APIبإطار العمل Framework؟
.2ماذا لو أردنا إنشاء مجموعة بيانات ضخمة ،حيث يكون حجم متجه المعلمة wوعدد
األمثلة num_examplesعددًا كبيرًا؟
.1ماذا يحدث إذا لم نتمكن من االحتفاظ بجميع البياناتيف الذاكرة؟
.2كيف يمكنك تبديل البيانات إذا تم االحتفاظ بالبيانات على القرص؟ مهمتك
هي تصميم خوارزمية فعالة ال تتطلب الكثير من القراءة أو الكتابة العشوائية.
تلميح :مولدات التقليب العشوائية الزائفة pseudorandom permutation
generatorsتسمح لك بتصميم التعديل دون الحاجة إلى تخزين جدول
التقليب permutation tableبشكل صريح ( ،Naor and Reingold
.)1999
.3قم بتنفيذ منشئ البيانات data generatorالذي ينتج بيانات جديدة بسرعة،يف كل
مرة يتم استدعاء المكرر.
.4كيف يمكنك تصميم منشئ بيانات عشوائي random data generatorيقوم بإنشاء
نفس البياناتيف كل مرة يتم استدعاؤها؟
التعمق في التعلم العميق :األساسيات والمقدمات 150
%matplotlib inline
import tensorflow as tf
from d2l import tensorflow as d2l
Defining the Model 3.4.1
قبل أن نبدأيف تحسين معلمات نموذجنا عن طريق ،minibatch SGDنحتاج إلى بعض
المعلمات parametersيف المقام األول .فيما يلي نقوم بتهيئة األوزان عن طريق سحب أرقام
عشوائية من التوزيع الطبيعي بمتوسط 0وانحراف معياري 0.01غالبًا ما يعمل الرقم السحري
0.01جيدًايف الممارسة ،ولكن يمكنك تحديد قيمة مختلفة من خالل وسيطة .sigmaعالوة
على ذلك ،قمنا بتعيين االنحياز إلى .0الحظ أنه بالنسبة للتصميم الموجه للكائنات ،نضيف
الكود إلى طريقة __ __initلفئة فرعية من وحدة ( d2l.Moduleالمقدمةيف القسم
.)3.2.2
بعد ذلك ،يجب علينا تحديد نموذجنا ،وربط مدخالته ومعلماته بمخرجاته .بالنسبة لنموذجنا
الخطي ،نأخذ ببساطة منتج متجه المصفوفة لميزات اإلدخال 𝐗 وأوزان النموذج 𝐰 ،ونضيف
اإلزاحة( 𝑏 )offsetإلى كل مثال 𝐗𝐰.هو متجه و𝑏 هو قيمة قياسية .scalarنظرًا آللية البث
(انظر القسم ،)2.1.4عندما نضيف متجهًا وقيمة قياسية ،تُضاف القيمة القياسية إلى كل مكون
فئة الناتجة كطريقةيف forward دالة تسجيل يتم المتجه. مكونات من
LinearRegressionScratchعبر ( add_to_classتم تقديمهيف القسم .)3.2.1
)@d2l.add_to_class(LinearRegressionScratch #@save
def forward(self, X):
""""""The linear regression model.
return tf.matmul(X, self.w) + self.b
Defining the Loss Function 3.4.2
نظرًا ألن تحديث نموذجنا يتطلب أخذ التدرج gradientلدالة الخطأ ، loss functionفيجب
علينا تحديد دالة الخطأ أوالً .هنا نستخدم دالة الخطأ التربيعية squared loss functionيف
(.)3.1.5يف التنفيذ ،نحتاج إلى تحويل القيمة الحقيقية yإلى شكل القيمة المتوقعة .y_hat
النتيجة التي تم إرجاعها بواسطة الدالة التالية سيكون لها أيضًا نفس شكل .y_hatنعيد أيضًا
قيمة الخطأ المتوسطة بين جميع األمثلةيف .minibatch
@d2l.add_to_class(LinearRegressionScratch) #@save
def loss(self, y_hat, y):
l = (y_hat - tf.reshape(y, y_hat.shape)) ** 2 / 2
)return tf.reduce_mean(l
Defining the Optimization 3.4.3
Algorithm
كما نوقشيف القسم ،3.1فإن االنحدار الخطي له حل مغلق الشكل .closed-form solution
ومع ذلك ،فإن هدفنا هنا هو توضيح كيفية تدريب شبكات عصبية أكثر عمومية ،وهذا يتطلب أن
نعلمك كيفية استخدام .minibatch SGDومن ثم سننتهز هذه الفرصة لتقديم مثالك العملي
األول لـ .SGDيف كل خطوة ،باستخدام minibatchمأخوذ عشوائيًا من مجموعة البيانات
الخاصة بنا ،نقدر تدرج الخطأ فيما يتعلق بالمعلمات .بعد ذلك ،نقوم بتحديث المعلماتيف
االتجاه الذي قد يقلل من الخطأ.
الكود التالي يطبق التحديث ،بالنظر إلى مجموعة من المعلمات ،معدل التعلم .lrنظرًا ألن
خسارتنا يتم حسابها كمتوسط على ،minibatchال نحتاج إلى ضبط معدل التعلم مقابل حجم
الدُفعة.يف فصول الحقة سنبحثيف كيفية تعديل معدالت التعلم للدفعات الصغيرة minibatch
التعمق في التعلم العميق :األساسيات والمقدمات 152
الكبيرة جدًا عند ظهورهايف التعلم الموزع على نطاق واسع.يف الوقت الحالي ،يمكننا تجاهل هذه
التبعية.
)@d2l.add_to_class(LinearRegressionScratch #@save
def configure_optimizers(self):
)return SGD(self.lr
Training 3.4.4
اآلن بعد أن أصبح لدينا جميع األجزاءيف مكانها (المعلمات ،دالة الخسارة (الخطأ) ،النموذج،
والمحسن) ،نحن جاهزون لتنفيذ حلقة التدريب الرئيسية .من األهمية بمكان أن تفهم هذا الرمز
جيدًا ألنك ستستخدم حلقات تدريب مماثلة لكل نموذج تعليم عميق آخر مغطىيف هذا الكتاب.
في كل فترة ،epochنكرر مجموعة بيانات التدريب بأكملها ،ونمرر مرة واحدةيف كل مثال
(بافتراض أن عدد األمثلة قابل للقسمة على حجم الدُفعة).يف كل تكرار ،نحصل على دفعة مصغرة
من أمثلة التدريب ،ونحسب خسارتها من خالل طريقة training_stepللنموذج .بعد
ذلك ،نحسب التدرجات فيما يتعلق بكل معلمة .أخيرًا ،سنقوم باستدعاء خوارزمية التحسين
لتحديث معلمات النموذج .باختصار ،سنقوم بتنفيذ الحلقة التالية:
@d2l.add_to_class(d2l.Trainer) #@save
def prepare_batch(self, batch):
return batch
@d2l.add_to_class(d2l.Trainer) #@save
def fit_epoch(self):
self.model.training = True
for batch in self.train_dataloader:
with tf.GradientTape() as tape:
loss =
self.model.training_step(self.prepare_batch(batch))
grads = tape.gradient(loss,
self.model.trainable_variables)
if self.gradient_clip_val > 0:
grads =
self.clip_gradients(self.gradient_clip_val, grads)
self.optim.apply_gradients(zip(grads,
self.model.trainable_variables))
self.train_batch_idx += 1
if self.val_dataloader is None:
return
self.model.training = False
for batch in self.val_dataloader:
self.model.validation_step(self.prepare_batch(batch))
self.val_batch_idx += 1
هنا. لكننا نحتاج أوالً إلى بعض البيانات للتدرب عليها،نحن جاهزون تقريبًا لتدريب النموذج
ground- ونمرر بعض المعلمات الحقيقةSyntheticRegressionData نستخدم فئة
وتعيينlr=0.03 نقوم بتدريب نموذجنا بمعدل التعلم، بعد ذلك. األساسيةtruth
كل من عدد الفترات ومعدل التعلم عبارة عن معلمات، الحظ أنه بشكل عام.max_epochs=3
ً يعد إعداد المعلمات الفائقة أمرًا صعبًا وسنرغب عادة، بشكل عام.hyperparameters فائقة
وثانية لقسم، ومجموعة واحدة للتدريب، way split-3 في استخدام تقسيم ثالثي االتجاهات
التعمق في التعلم العميق :األساسيات والمقدمات 154
المعلمات الفائقة ،والثالثة مخصصة للتقييم النهائي .نحن نتجاهل هذه التفاصيليف الوقت الحالي
ولكننا سنراجعها الحقًا.
نظرًا ألننا قمنا بتجميع مجموعة البيانات بأنفسنا ،فإننا نعرف بالضبط ما هي المعلمات الحقيقية.
وبالتالي ،يمكننا تقييم نجاحنايف التدريب من خالل مقارنة المعلمات الحقيقية بتلك التي تعلمناها
من خالل حلقة التدريب الخاصة بنا.يف الواقع ،تبين أنهم قريبون جدًا من بعضهم البعض.
ذلك جزئيًا إلى حقيقة أنه ،بالنسبة للشبكات العميقة ،توجد العديد من تكوينات المعلمات التي
تؤدي إلى تنبؤ عالي الدقة.
3.4.5
في هذا القسم ،اتخذنا خطوة مهمة نحو تصميم أنظمة التعلم العميق من خالل تنفيذ نموذج
شبكة عصبية يعمل بكامل طاقته وحلقة تدريب.يف هذه العملية ،قمنا ببناء أداة تحميل البيانات،
ونموذج ،ودالة الخطأ ،وإجراء التحسين ،وأداة الرسم والمراقبة .لقد فعلنا ذلك من خالل تكوين
كائن بايثون يحتوي على جميع المكونات ذات الصلة لتدريب النموذج .على الرغم من أن هذا
ليس تطبيقًا احترافيًا بعد ،إال أنه يعمل بشكل مثالي ويمكن أن يساعدك رمز مثل هذا بالفعليف
حل المشكالت الصغيرة بسرعة.يف األقسام التالية ،سنرى كيفية القيام بذلك بشكل أكثر إيجازًا
(تجنب الكود المعياري )avoiding boilerplate codeوبكفاءة أكبر (استخدم وحدات
معالجة الرسومات GPUsالخاصة بنا إلى أقصى إمكاناتها).
3.4.6
.1ماذا سيحدث إذا قمنا بتهيئة األوزان إلى الصفر .هل ستظل الخوارزمية تعمل؟ ماذا لو
قمنا بتهيئة المعلمات مع التباين 1,000بدالً من 0.01؟
.2افترض أنك جورج سيمون أوم تحاول ابتكار نموذج للمقاومات التي تربط الجهد
والتيار .هل يمكنك استخدام التفاضل التلقائي automatic differentiation
لمعرفة معلمات نموذجك؟
.3هل يمكنك استخدام قانون بالنك Planck’s Lawلتحديد درجة حرارة جسم ما
باستخدام كثافة الطاقة الطيفية؟ كمرجع ،فإن الكثافة الطيفية 𝐵 لإلشعاع المنبعث من
2ℎ𝑐 2 𝑐ℎ
= )𝑇 𝜆 .𝐵(𝜆,هو الطول الموجي ،و𝑇 𝜆5
⋅ (exp 𝑇𝑘𝜆
جسم أسود هي − 1)−1
درجة الحرارة ،و𝑐 سرعة الضوء ،و ℎكمية بالنك ،و𝑘 ثابت بولتزمان .تقيس الطاقة
ألطوال موجية مختلفة وتحتاج اآلن لمواءمة منحنى الكثافة الطيفية مع قانون بالنك.
.4ما هي المشاكل التي قد تواجهها إذا أردت حساب المشتقات الثانية للخطأ؟ كيف
تصلحهم؟
.5لماذا طريقة إعادة التشكيل reshapeمطلوبةيف دالة الخطأ loss function؟
.6جرب استخدام معدالت تعلم مختلفة لمعرفة مدى سرعة انخفاض قيمة دالة الخطأ.
هل يمكنك تقليل الخطأ عن طريق زيادة عدد فترات التدريب number of epochs
of training؟
.7إذا كان عدد األمثلة ال يمكن تقسيمه على حجم الدُفعة ،فماذا يحدث لـ data_iter
في نهاية الفترة epoch؟
التعمق في التعلم العميق :األساسيات والمقدمات 156
.8حاول تنفيذ دالة خطأ مختلفة ،مثل خطأ القيمة المطلقة absolute value loss
)(. (y_hat - d2l.reshape(y, y_hat.shape)).abs().sum
.1تحقق مما يحدث للبيانات العادية.
.2تحقق مما إذا كان هناك اختالفيف السلوك إذا قمت بتشويش بعض إدخاالت
𝐲 مثل .𝑦5 = 10,000
.3هل يمكنك التفكيريف حل رخيص للجمع بين أفضل جوانب الخسارة التربيعية
وخسارة القيمة المطلقة؟ تلميح :كيف يمكنك تجنب قيم التدرج الكبيرة حقًا؟
.9لماذا نحتاج إلى تعديل مجموعة البيانات؟ هل يمكنك تصميم حالة تؤدي فيها
مجموعة بيانات ضارة إلى كسر خوارزمية التحسين بطريقة أخرى؟
في القسم ،3.4اعتمدنا فقط على ( )1الموترات لتخزين البيانات والجبر الخطي؛ و ()2
التفاضل التلقائي لحساب التدرجات.يف الممارسة العملية ،نظرًا ألن مكررات البيانات ودوال
الخطأ والمحسّنات وطبقات الشبكة العصبية شائعة جدًا ،فإن المكتبات الحديثة تنفذ هذه
المكونات لنا أيضًا.يف هذا القسم ،سنوضح لك كيفية تنفيذ نموذج االنحدار الخطي من القسم
3.4بإيجاز باستخدام واجهات برمجة التطبيقات APIعالية المستوى ألطر التعلم العميق.
بالنسبة للعمليات القياسية ،يمكننا استخدام الطبقات المحددة مسبقًا إلطار العمل ،والتي تسمح
لنا بالتركيز على الطبقات المستخدمة لبناء النموذج بدالً من القلق بشأن تنفيذها .أذكر معمارية
شبكة أحادية الطبقة على النحو الموصوفيف الشكل .2.1.3تسمى الطبقة متصلة بالكامل fully
،,connectedنظرًا ألن كل مدخل من مدخالتها متصل بكل من مخرجاتها عن طريق ضرب
المصفوفة-المتجه .matrix-vector multiplication
في ،Kerasيتم تحديد الطبقة المتصلة بالكامليف فئة .Denseنظرًا ألننا نريد فقط إنشاء ناتج
قيمة قياسية واحده ،Scalarفقد قمنا بتعيين هذا الرقم على .1وتجدر اإلشارة إلى أنه ،للسهولة،
ال يتطلب منا Kerasتحديد شكل اإلدخال لكل طبقة .ال نحتاج إلى إخبار Kerasبعدد
المدخالت التي تدخليف هذه الطبقة الخطية .عندما نحاول ألول مرة تمرير البيانات من خالل
نموذجنا ،على سبيل المثال ،عندما ننفذ ) net(Xالحقًا ،ستستنتج Kerasتلقائيًا عدد
المدخالت لكل طبقة .سنصف كيف يعمل هذا بمزيد من التفصيل الحقًا.
@d2l.add_to_class(LinearRegression) #@save
def forward(self, X):
""""""The linear regression model.
)return self.net(X
التعمق في التعلم العميق :األساسيات والمقدمات 158
@d2l.add_to_class(LinearRegression) #@save
def loss(self, y_hat, y):
)(fn = tf.keras.losses.MeanSquaredError
)return fn(y, y_hat
Defining the Optimization 3.5.3
Algorithm
Minibatch SGDهي أداة قياسية لتحسين الشبكات العصبية ،وبالتالي تدعمها Kerasجنبًا
إلى جنب مع عدد من االختالفاتيف هذه الخوارزميةيف وحدة .optimizers
@d2l.add_to_class(LinearRegression) #@save
def configure_optimizers(self):
)return tf.keras.optimizers.SGD(self.lr
Training 3.5.4
ربما الحظت أن التعبير عن نموذجنا من خالل واجهات برمجة التطبيقات APIعالية المستوى
إلطار عمل التعلم العميق يتطلب عددًا أقل من أسطر التعليمات البرمجية .لم يكن علينا تخصيص
المعلمات بشكل فردي أو تحديد دالة الخطأ أو تنفيذ .minibatch SGDبمجرد أن نبدأ العمل
مع نماذج أكثر تعقيدًا ،فإن مزايا واجهة برمجة التطبيقات عالية المستوى ستنمو بشكل كبير .اآلن
بعد أن أصبح لدينا جميع األجزاء األساسيةيف مكانها الصحيح ،فإن حلقة التدريب نفسها هي
نفسها التي طبقناها من البداية .لذلك نحن فقط نستدعي طريقة ( fitالمقدمةيف القسم
،)3.2.4والتي تعتمد على تنفيذ طريقة fit_epochيف القسم ، 3.4لتدريب نموذجنا.
)model = LinearRegression(lr=0.03
data = d2l.SyntheticRegressionData(w=tf.constant([2, -
)3.4]), b=4.2
)trainer = d2l.Trainer(max_epochs=3
)trainer.fit(model, data
159 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
أدناه ،نقارن معلمات النموذج التي تم تعلمها من خالل التدريب على البيانات المحدودة
والمعلمات الفعلية التي أنشأت مجموعة البيانات الخاصة بنا .للوصول إلى المعلمات ،نصل إلى
أوزان وانحياز الطبقة التي نحتاجها .كما هو الحاليف تنفيذنا من البداية ،الحظ أن معلماتنا المقدرة
قريبة من نظيراتها الحقيقية.
)@d2l.add_to_class(LinearRegression #@save
def get_w_b(self):
return (self.get_weights()[0],
)]self.get_weights()[1
)(w, b = model.get_w_b
print(f'error in estimating w: {data.w - tf.reshape(w,
)'})data.w.shape
)'}print(f'error in estimating b: {data.b - b
] error in estimating w: [ 0.00565076 -0.0058403
]error in estimating b: [0.01354933
3.5.5
يحتوي هذا القسم على أول تطبيق لشبكة عميقة (في هذا الكتاب) لالستفادة من وسائل الراحة
التي توفرها أطر التعلم العميق الحديثة ،مثل .Tensorflow ، PyTorch ،JAX ، Gluon
استخدمنا اإلعدادات االفتراضية إلطار العمل لتحميل البيانات ،وتحديد الطبقة ،ودالة الخطأ،
والمحسن ،وحلقة التدريب .عندما يوفر إطار العمل جميع الميزات الضرورية ،فمن الجيد عمومًا
استخدامها ،نظرًا ألن تطبيقات المكتبة لهذه المكونات تميل إلى تحسين األداء بشكل كبير
واختبارها بشكل صحيح من أجل الموثوقية.يف نفس الوقت ،حاول أال تنسى أنه يمكن تنفيذ هذه
التعمق في التعلم العميق :األساسيات والمقدمات 160
الوحدات مباشرة .هذا مهم بشكل خاص للباحثين الطموحين الذين يرغبونيف العيش على حافة
النزف لتطوير النموذج ،حيث ستبتكر مكونات جديدة ال يمكن أن توجديف أي مكتبة حالية.
3.5.6
.1كيف ستحتاج إلى تغيير معدل التعلم إذا قمت باستبدال الخطأ اإلجمالي على
minibatchبمتوسط فوق الخطأيف minibatch؟
.2راجع وثائق إطار العمل لمعرفة دوال الخطأ المتوفرة .على وجه الخصوص ،استبدل
الخطأ التربيعية بدالة الخطأ القوية لهوبر .Huber’s robust loss functionأي،
استخدم دالة الخطأ:
𝜎
|𝑦 − 𝑦 ′ | − 𝜎 > | if |𝑦 − 𝑦 ′
2
𝑙(𝑦, 𝑦 ′ ) = { 1
(𝑦 − 𝑦 ′ )2 otherwise
𝜎2
.3كيف يمكنك الوصول إلى التدرج ألوزان النموذج؟
.4كيف يتغير الحل إذا قمت بتغيير معدل التعلم وعدد الفترات؟ هل تستمريف التحسن؟
.5كيف يتغير الحل عندما تقوم بتغيير كمية البيانات التي يتم إنشاؤها؟
^ ^
.1ارسم خطأ التقدير لـ 𝐰 𝐰 −و 𝑏 𝑏 −كدالة لمقدار البيانات .تلميح :قم بزيادة
كمية البيانات لوغاريتميًا وليس خطيًا ،أي 10000 ، ... ، 50 ، 20 ، 10 ، 5بدالً
من .10000 ، ... ، 2000 ، 1000
.2لماذا االقتراحيف التلميح مناسب؟
Generalization 3.6
ضعيف اعتبارك أن اثنين من طالب الكلية يستعدان بجد لالمتحان النهائي .بشكل عام ،سيتألف
هذا اإلعداد من ممارسة واختبار قدراتهم من خالل إجراء االختبارات التي أجريتيف السنوات
السابقة .ومع ذلك ،فإن األداء الجيديف االختبارات السابقة ال يضمن تفوقهم عندما يكون األمر
مهمًا .على سبيل المثال ،تخيل طالبًا ،تدعى إليفنتين إيلي ،Elephantine Ellieتألف إعدادها
بالكامل من حفظ إجابات أسئلة امتحان السنوات السابقة .حتى لو كانت إيلي تتمتع بذاكرة فيل،
وبالتالي تمكنت تمامًا من تذكر إجابة أي سؤال سبق رؤيته ،فقد تتجمد مع ذلك عندما تواجه
161 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
سؤالًا جديدًا (لم يسبق رؤيته) .بالمقارنة ،تخيل أن تلميذة أخرى ،إيرين االستقرائية Inductive
،Ireneلديها مهارات حفظ ضعيفة نسبيًا ،ولكنها موهوبةيف التقاط األنماط .الحظ أنه إذا كان
االختبار يتألف حقًا من أسئلة معاد تدويرها من عام سابق ،فستتفوق إيلي بسهولة على إيرين.
حتى لو أسفرت أنماط إيرين المستنبطة عن تنبؤات دقيقة بنسبة ،٪90فال يمكنها أبدًا منافسة
استدعاء إيلي بنسبة .٪100ومع ذلك ،حتى لو كان االختبار يتكون بالكامل من أسئلة جديدة،
فقد تحافظ إيرين على متوسطها البالغ .٪90
كعلماءيف التعلم اآللي ،هدفنا هو اكتشاف األنماط .discover patternsولكن كيف يمكننا
التأكد من أننا اكتشفنا حقًا نمطًا عامًا ولم نحفظ بياناتنا ببساطة؟يف معظم األحيان ،تكون تنبؤاتنا
مفيدة فقط إذا اكتشف نموذجنا مثل هذا النمط .ال نريد توقع أسعار األسهميف األمس ،ولكن
أسعار الغد .ال نحتاج إلى التعرف على األمراض التي تم تشخيصها بالفعل للمرضى الذين تمت
رؤيتهم سابقًا ،ولكن باألحرى األمراض التي لم يتم تشخيصها من قبليف المرضى الذين لم يتم
رؤيتهم من قبل .هذه المشكلة -كيفية اكتشاف األنماط التي تعمم how to discover
-patterns that generalizeهي المشكلة األساسية للتعلم اآللي ،ويمكن القول إنها مشكلة
جميع اإلحصائيات .قد نعتبر هذه المشكلة مجرد شريحة واحدة من سؤال أعظم بكثير يبتلع العلم
كله :متى يكون لدينا ما يبرر قيامنا بالقفزة من مالحظات معينة إلى عبارات أكثر عمومية
()Popper, 2005؟
في الحياة الواقعية ،يجب علينا مالئمة fitالنماذج باستخدام مجموعة محدودة من البيانات.
تختلف المقاييس النموذجية لتلك البيانات بشكل كبير عبر المجاالت .بالنسبة للعديد من
المشكالت الطبية المهمة ،ال يمكننا الوصول إال إلى بضعة آالف من نقاط البيانات .عند دراسة
األمراض النادرة ،قد نكون محظوظين للوصول إلى المئات .على النقيض من ذلك ،تحتوي أكبر
مجموعات البيانات العامة التي تتكون من صور فوتوغرافية مصنفة (على سبيل المثال،
،)2009,Deng et al.( )ImageNetعلى ماليين الصور .وبعض مجموعات الصور غير
المسماة unlabeled imageمثل مجموعة بيانات Flickr YFC100Mيمكن أن تكون أكبر،
حيث تحتوي على أكثر من 100مليون صورة ( .)2016 ،Thomee et al.ومع ذلك ،حتىيف
هذا النطاق األقصى ،يظل عدد نقاط البيانات المتاحة صغيرًا بشكل ال نهائي مقارنة بمساحة
جميع الصور الممكنة بدقة 1ميجابكسل .عندما نعمل مع عينات محدودة ،يجب أن نضعيف
اعتبارنا المخاطر التي قد نالئمها مع بيانات التدريب الخاصة بنا ،فقط لنكتشف أننا فشلنايف
اكتشاف نمط قابل للتعميم.
تسمى ظاهرة االقتراب من بيانات التدريب الخاصة بنا أكثر من التوزيع األساسي بفرط التجهيز
او التعلم ،overfittingوغالبًا ما تسمى تقنيات مكافحة فرط التعلم بأساليب التنظيم
التعمق في التعلم العميق :األساسيات والمقدمات 162
بادئ ذي بدء ،نحتاج إلى التفريق بين خطأ التدريب ،𝑅empوهو إحصاء محسوب على مجموعة
بيانات التدريب ،وخطأ التعميم 𝑅 ،وهو توقع يتم إجراؤه فيما يتعلق بالتوزيع األساسي .يمكنك
التفكيريف خطأ التعميم كما تراه إذا قمت بتطبيق النموذج الخاص بك على دفق ال نهائي infinite
streamمن أمثلة البيانات اإلضافية المستمدة من نفس توزيع البيانات األساسي .رسميًا ،يتم
التعبير عن خطأ التدريب كمجموع (بنفس الترميزيف القسم :)3.1
𝑛
1
∑ = ]𝑓 𝑅emp [𝐗, 𝐲, 𝑙(𝐱 (𝑖) , 𝑦 (𝑖) , 𝑓(𝐱 (𝑖) )),
𝑛
𝑖=1
من الناحية اإلشكالية ،ال يمكننا أبدًا حساب خطأ التعميم تمامًا .ال أحد يخبرنا أبدًا عن الشكل
الدقيق لدالة الكثافة )𝑦 .𝑝(𝐱,عالوة على ذلك ،ال يمكننا أخذ عينة من دفق ال نهائي من نقاط
البيانات .وبالتالي ،من الناحية العملية ،يجب علينا تقدير خطأ التعميم من خالل تطبيق نموذجنا
على مجموعة اختبار مستقلة تتكون من اختيار عشوائي 𝐗 ′لألمثلة والتسميات 𝐲 ′التي تم حجبها
163 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
من مجموعة التدريب الخاصة بنا .يتكون هذا من تطبيق نفس الصيغة المستخدمة لحساب خطأ
التدريب التجريبي ولكن على مجموعة اختبار .𝐗 ′ , 𝐲 ′
بشكل حاسم ،عندما نقوم بتقييم المصنف الخاص بنا على مجموعة االختبار ،فإننا نعمل مع
مصنف ثابت ( fixed classifierال يعتمد على عينة مجموعة االختبار) ،وبالتالي فإن تقدير
الخطأ هو ببساطة مشكلة تقدير المتوسط .problem of mean estimationومع ذلك ال
يمكن قول الشيء نفسه بالنسبة لمجموعة التدريب .الحظ أن النموذج الذي انتهينا إليه يعتمد
بشكل صريح على اختيار مجموعة التدريب ،وبالتالي فإن خطأ التدريب سيكون بشكل عام تقديرًا
متحيزًا للخطأ الحقيقي على السكان األساسيين .السؤال المركزي للتعميم هو متى يجب أن نتوقع
أن يكون خطأ التدريب لدينا قريبًا من الخطأ السكاني ( population errorوبالتالي خطأ
التعميم).
بشكل عام،يف حالة عدم وجود أي قيود على فئة النموذج لدينا ،ال يمكننا االستنتاج بناءً على
مالءمة بيانات التدريب وحدها أن نموذجنا قد اكتشف أي نمط قابل للتعميم (،Vapnik et al.
.)1994من ناحية أخرى ،إذا كانت فئة النموذج الخاصة بنا غير قادرة على مالءمة تسميات
عشوائية ،فال بد أنها اكتشفت نمطًا .استمدت األفكار النظرية التعليمية حول تعقيد النموذج
بعض اإللهام من أفكار كارل بوبر ،فيلسوف العلم المؤثر ،الذي صاغ معيار القابلية للتزييف
.criterion of falsifiabilityوفقًا لبوبر ،النظرية التي يمكن أن تشرح أي وجميع المالحظات
ليست نظرية علمية على اإلطالق! بعد كل شيء ،ماذا قال لنا عن العالم إذا لم يستبعد أي احتمال؟
باختصار ،ما نريده هو فرضية ال يمكن أن تفسر أي مالحظات قد نتصورها ومع ذلك تصادف
أنها متوافقة مع تلك المالحظات التي نقوم بهايف الواقع.
اآلن ما يشكل بدقة فكرة مناسبة لتعقيد النموذج هو مسألة معقدة.يف كثير من األحيان ،تكون
النماذج التي تحتوي على المزيد من المعلمات قادرة على مالءمة عدد أكبر من التسميات المعينة
بشكل تعسفي .ومع ذلك ،هذا ليس صحيحا بالضرورة .على سبيل المثال ،تعمل طرق النواة
التعمق في التعلم العميق :األساسيات والمقدمات 164
kernel methodsيف مساحات ذات أعداد ال حصر لها من المعلمات ،ومع ذلك يتم التحكميف
تعقيدها بوسائل أخرى ( .)2002 ،Scholkopf and Smolaأحد المفاهيم التي غالبًا ما تكون
مفيدة عن التعقيد هو نطاق القيم التي يمكن أن تتخذها المعلمات .هنا ،سيكون النموذج الذي
يُسمح لمعلماته بأخذ قيم عشوائية أكثر تعقيدًا .سنعيد النظريف هذه الفكرةيف القسم التالي ،عندما
نقدم تناقص او اضمحالل الوزن ،weight decayوهو أول أسلوب عملي لتنظيم األمور.
والجدير بالذكر أنه قد يكون من الصعب مقارنة التعقيد بين أعضاء فئات النماذج المختلفة إلى
حد كبير (على سبيل المثال ،أشجار القرار decision treesمقابل الشبكات العصبية neural
.)networks
في هذه المرحلة ،يجب أن نؤكد على نقطة مهمة أخرى سنعيد النظر فيها عند إدخال الشبكات
العصبية العميقة .عندما يكون النموذج قادرًا على تركيب تسميات عشوائية ،فإن خطأ التدريب
المنخفض ال يعني بالضرورة خطأ تعميم منخفض .ومع ذلك ،فإنه ال يعني بالضرورة خطأ التعميم
العالي أيضًا! كل ما يمكننا قوله بثقة هو أن خطأ التدريب المنخفض وحده ال يكفي للتصديق
على خطأ التعميم المنخفض .تبين أن الشبكات العصبية العميقة هي مجرد نماذج من هذا القبيل:
فبينما يتم تعميمها جيدًايف الممارسة العملية ،فهي قوية جدًا بحيث ال تسمح لنا باستنتاج الكثير
على أساس خطأ التدريب وحده.يف هذه الحاالت ،يجب أن نعتمد بشكل أكبر على بياناتنا
المؤجلة للمصادقة على التعميم بعد وقوع الحقيقة .يسمى الخطأيف بيانات االنتظار ،أي مجموعة
التحقق من الصحة ،validation setخطأ التحقق من الصحة .validation error
من ناحية أخرى ،كما ناقشنا أعاله ،نريد أن ننتبه للحاالت التي يكون فيها خطأ التدريب لدينا أقل
بكثير من خطأ التحقق من الصحة ،مما يشير إلى الضبط الزائد (فرط التجهيز) overfitting
الشديد .الحظ أن فرط التجهيز ليس دائمًا أمرًا سيئًا.يف التعلم العميق على وجه الخصوص ،غالبًا
ما يكون أداء أفضل النماذج التنبؤية أفضل بكثير على بيانات التدريب مقارنةً بالبيانات الرافضة
.holdout dataيف النهاية ،نحن نهتم عادةً بتوجيه خطأ التعميم إلى األسفل ،وال نهتم إال بالفجوة
165 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
بقدر ما تصبح عقبةيف طريق تحقيق هذه الغاية .الحظ أنه إذا كان خطأ التدريب صفرًا ،فإن فجوة
التعميم تساوي تمامًا خطأ التعميم وال يمكننا إحراز تقدم إال من خالل تقليل الفجوة.
لتقدير التسمية 𝑦 .هذه مجرد مشكلة انحدار خطي حيث يتم إعطاء ميزاتنا من خالل قوى 𝑥،
وتعطي أوزان النموذج من قبل 𝑖𝑤 ،ويتم إعطاء التحيز 𝑤0منذ 𝑥 0 = 1الحين لكل𝑥 .نظرًا ألن
هذه مجرد مشكلة انحدار خطي ،فيمكننا استخدام الخطأ التربيعي كدالة للخطأ.
تعتبر دالة كثيرة الحدود ذات الترتيب األعلى higher-order polynomial functionأكثر
تعقيدًا من دالة كثيرة الحدود ذات الترتيب األدنى ،lower-order polynomial function
نظرًا ألن كثير الحدود ذو الترتيب األعلى يحتوي على معلمات أكثر ونطاق اختيار دالة النموذج
أوسع .عند إصالح مجموعة بيانات التدريب ،يجب أن تحقق الدوال متعددة الحدود ذات
الترتيب األعلى دائمًا خطأ تدريب أقل (في أسوأ األحوال ،متساوٍ) بالنسبة إلى كثيرات الحدود من
الدرجة األدنى.يف الواقع ،كلما كان لكل مثال بيانات قيمة مميزة لـ 𝑥 ،فإن دالة متعددة الحدود
بدرجة مساوية لعدد أمثلة البيانات يمكن أن تالئم fitمجموعة التدريب تمامًا .نحن نتخيل العالقة
بين درجة متعددة الحدود (تعقيد النموذج) والضبط الناقص مقابل الضبط الزائديف الشكل
.3.6.1
من حيث المبدأ ،ال ينبغي أن نلمس مجموعة االختبار الخاصة بنا إال بعد أن نختار جميع معلماتنا
الفائقة .إذا استخدمنا بيانات االختباريف عملية اختيار النموذج ،فهناك خطر أننا قد نفرط overfit
في بيانات االختبار .عندها سنكونيف مشكلة خطيرة .إذا قمنا بزيادة بيانات التدريب الخاصة بنا،
فهناك دائمًا تقييم لبيانات االختبار إلبقائنا صادقين .ولكن إذا تجاوزنا بيانات االختبار ،فكيف
لنا أن نعرف ذلك؟ انظر )2005( .Ong et alعلى سبيل المثال كيف يمكن أن يؤدي ذلك إلى
نتائج سخيفة حتى بالنسبة للنماذج التي يمكن التحكم فيها بإحكاميف التعقيد.
وبالتالي ،ال ينبغي لنا أبدًا االعتماد على بيانات االختبار الختيار النموذج .ومع ذلك ال يمكننا
االعتماد فقط على بيانات التدريب الختيار النموذج إما ألننا ال نستطيع تقدير خطأ التعميم على
نفس البيانات التي نستخدمها لتدريب النموذج.
في التطبيقات العملية ،تصبح الصورة أكثر تعكيرًا.يف حين أننا من الناحية المثالية لن نلمس بيانات
االختبار إال مرة واحدة ،لتقييم أفضل نموذج أو لمقارنة عدد صغير من النماذج مع بعضها البعض،
نادرًا ما يتم تجاهل بيانات االختبار الواقعية بعد استخدام واحد فقط .نادرًا ما يمكننا تحمل
مجموعة اختبار جديدة لكل جولة من التجارب.يف الواقع ،يمكن أن يكون إلعادة تدوير البيانات
المعيارية لعقود تأثير كبير على تطوير الخوارزميات ،على سبيل المثال ،لتصنيف الصور image
classificationوالتعرف البصري على األحرف .optical character recognition
167 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
تتمثل الممارسة الشائعة لمعالجة مشكلة التدريب على مجموعة االختباريف تقسيم بياناتنا بثالث
طرق ،بمايف ذلك مجموعة التحقق من الصحة باإلضافة إلى مجموعات بيانات التدريب
واالختبار .والنتيجة هي ممارسة غامضة حيث تكون الحدود بين التحقق من الصحة وبيانات
االختبار غامضة بشكل مثير للقلق .ما لم ينص صراحة على خالف ذلك،يف التجاربيف هذا
الكتاب ،نحن نعمل حقًا مع ما ينبغي أن يُطلق عليه حقًا بيانات التدريب وبيانات التحقق من
الصحة ،بدون مجموعات اختبار حقيقية .لذلك ،فإن الدقة المبلغ عنهايف كل تجربة للكتاب هي
في الحقيقة دقة التحقق وليست دقة مجموعة اختبار حقيقية.
Cross-Validation 3.6.3.1
عندما تكون بيانات التدريب نادرة ،فقد ال نتمكن حتى من تحمل بيانات كافية لتشكيل مجموعة
تحقق مناسبة .أحد الحلول الشائعة لهذه المشكلة هو استخدام التحقق المتبادل k-fold
.Cross-Validationهنا ،يتم تقسيم بيانات التدريب األصلية إلى 𝐾 مجموعات فرعية غير
متداخلة .ثم يتم تنفيذ تدريب النموذج والتحقق من الصحة 𝐾 مرات،يف كل مرة يتم فيها التدريب
على مجموعات فرعية والتحقق من صحة 𝐾 − 1مجموعة فرعية مختلفة (المجموعة التي لم
يتم استخدامها للتدريبيف تلك الجولة) .أخيرًا ،يتم تقدير أخطاء التدريب والتحقق من الصحة
من خالل حساب متوسط النتائج من 𝐾 التجارب.
3.6.4
استكشف هذا القسم بعض أسس التعميميف التعلم اآللي .تصبح بعض هذه األفكار معقدة وغير
بديهية عندما نصل إلى نماذج أعمق ،فهناك ،تكون النماذج قادرة على الضبط الزائد overfitting
للبيانات بشكل سيئ ،ويمكن أن تكون مفاهيم التعقيد ذات الصلة ضمنية وغير بديهية (على
سبيل المثال ،البنى األكبر مع المزيد من المعلمات المعممة بشكل أفضل) .نترك لك بعض
القواعد األساسية:
.5كل هذا الحديث عن التعميم مبني على افتراض .IIDإذا قمنا بتخفيف هذا االفتراض،
والسماح للتوزيعات باالنتقال بين فترات التدريب واالختبار ،فال يمكننا قول أي شيء
عن التعميميف غياب افتراض آخر (ربما أكثر اعتدالًا).
3.6.5
.1متى يمكنك حل مشكلة االنحدار متعدد الحدود polynomial regression
بالضبط؟
.2أعط ما ال يقل عن خمسة أمثلة حيث المتغيرات العشوائية التابعة تجعل معالجة
المشكلة على أنها بيانات IIDغير مستحسنة.
.3هل يمكن أن تتوقع أال ترى أي خطأيف التدريب؟ ما هي الظروف التي سترى فيها خطأ
التعميم الصفري؟
.4لماذا يعد التحقق من الصحة المتبادل ذو الطيات k-fold Cross-Validation
مكلفًا جدًا للحساب؟
.5لماذا يكون تقدير خطأ التحقق المتبادل ذو أضعاف منحازة؟
.6يتم تعريف بُعد VCعلى أنه الحد األقصى لعدد النقاط التي يمكن تصنيفها باستخدام
تسميات عشوائية } {±1بواسطة دالة لفئة من الدوال .لماذا قد ال تكون هذه فكرة جيدة
لقياس مدى تعقيد فئة الدوال؟ تلميح :ماذا عن حجم الدوال؟
.7يمنحك مديرك مجموعة بيانات صعبة ال تعمل فيها الخوارزمية الحالية بشكل جيد.
كيف تبرر له أنك بحاجة إلى مزيد من البيانات؟ تلميح :ال يمكنك زيادة البيانات ولكن
يمكنك تقليلها.
تذكر أنهيف مثال االنحدار متعدد الحدود polynomial regressionالخاص بنا (القسم
،)3.6.2.1يمكننا تحديد سعة نموذجنا عن طريق تعديل درجة كثير الحدود المتوافقة.يف الواقع،
يعد الحد من عدد الميزات أسلوبًا شائ1عًا للتخفيف من الضبط الزائد .ومع ذلك ،فإن مجرد
169 الفصل الثالث :الشبكات العصبية الخطية لالنحدار
إهمال الميزات جانباً يمكن أن يكون أداة حادة للغاية .بالتمسك بمثال االنحدار متعدد الحدود،
ضعيف اعتبارك ما يمكن أن يحدث مع المدخالت عالية األبعاد .high-dimensional input
تسمى االمتدادات الطبيعية لكثيرات الحدود للبيانات متعددة المتغيرات باحادية الحد
،monomialsوالتي هي ببساطة نتاج قوى المتغيرات .درجة المتغيرات أحادية الحد هي
مجموع القوى .فمثال 𝑥12 𝑥2 ،و 𝑥3 𝑥52كالهما أحادي الحد من الدرجة الثالثة.
الحظ أن عدد الحدود مع الدرجة 𝑑 يتضخم بسرعة كلما زاد حجم 𝑑 .بالنظر إلى المتغيرات 𝑘 ،
𝑑 .(𝑘−1+حتى التغييرات
𝑘−1
يكون عدد احاديات الحد من الدرجة 𝑑 (أي 𝑘 متعدد الخيوط 𝑑) هو )
الصغيرةيف الدرجة ،لنقل من 2إلى ، 3تزيد بشكل كبير من تعقيد نموذجنا .وبالتالي نحتاج غالبًا
إلى أداة أكثر دقة لتعديل تعقيد الدالة.
قد يكون أحد التفسيرات البسيطة هو قياس مدى تعقيد دالة خطية 𝐱 ⊤ 𝐰 = )𝐱(𝑓 من خالل
معيار normمعين لمتجه وزنها ،على سبيل المثال .‖𝐰‖2تذكر أننا قدمنا المعيار ℓ2والمعيار
، ℓ1وهما حاالت خاصة للمعيار األكثر عمومية 𝑝ℓيف القسم .2.3.11الطريقة األكثر شيوعًا
لضمان متجه وزن صغير هي إضافة معياره كمصطلح جزائي لمشكلة تقليل الخطأ .وهكذا نستبدل
هدفنا األصلي ،وهو تقليل خطأ التنبؤ prediction lossعلى تسميات التدريب training
،labelsبهدف جديد ،وتقليل مجموع خطأ التنبؤ sum of the prediction lossومدة العقوبة
.penalty termاآلن ،إذا نما متجه الوزن بشكل كبير جدًا ،فقد تركز خوارزمية التعلم الخاصة
بنا على تقليل معيار الوزن ‖𝐰‖2إلى الحد األدنى مقابل تقليل خطأ التدريب .هذا هو بالضبط
ما نريده .لتوضيح األشياءيف الكود ،نعيد إحياء مثالنا السابق من القسم 3.1لالنحدار الخطي.
هناك ،خطأنا:
التعمق في التعلم العميق :األساسيات والمقدمات 170
𝑛
1 )𝑖( ⊤ 1
∑ = )𝑏 𝐿(𝐰, (𝐰 𝐱 + 𝑏 − 𝑦 (𝑖) )2 .
𝑛 2
𝑖=1
تذكر أن )𝑖( 𝐱 هي الميزات 𝑦 (𝑖) ،هي التسمية ألي مثال بيانات 𝑖 (𝐰, 𝑏)،وهي معلمات الوزن
والتحيز ،على التوالي .لمعاقبة حجم متجه الوزن ،weight vectorيجب أن نضيف ‖𝐰‖2
بطريقة ما إلى دالة الخطأ ،ولكن كيف يجب أن يقايض النموذج الخطأ القياسي لهذه العقوبة
المضافة الجديدة؟يف الممارسة العملية ،نميز هذه المقايضة من خالل ثابت التنظيم 𝜆 ،وهو
معلمة فائقة غير سلبية نالئمها باستخدام بيانات التحقق من الصحة :validation data
𝜆
𝐿(𝐰, 𝑏) + ‖𝐰‖2 .
2
بالنسبة لـ ، 𝜆 = 0نستعيد دالة الخسارة األصلية الخاصة بنا .لـ ، 𝜆 > 0نحن نقيد حجم ‖𝐰‖.
نقسم على 2حسب االصطالح :عندما نأخذ مشتق دالة تربيعية ،نلغي 2ونلغي ، 1/2مما يضمن
أن تعبير التحديث يبدو لطيفًا وبسيطًا .قد يتساءل القارئ الذكي عن سبب تعاملنا مع المعيار
التربيعي squared normوليس المعيار القياسي ( standard normأي المسافة اإلقليدية).
نحن نفعل هذا للراحة الحسابية .بتربيع المعيار ، ℓ2نزيل الجذر التربيعي ،ونترك مجموع مربعات
كل مكون من متجه الوزن .هذا يجعل من السهل حساب مشتق العقوبة :مجموع المشتقات
يساوي مشتق المجموع.
عالوة على ذلك ،قد تسأل لماذا نتعامل مع المعيار ℓ2يف المقام األول وليس ،على سبيل المثال،
المعيار .ℓ1يف الواقع ،الخيارات األخرى صالحة وشائعةيف جميع اإلحصاءات.يف حين أن النماذج
الخطية المنتظمة ℓ2تشكل خوارزمية انحدار ريدج ،ridge regression algorithmفإن
االنحدار الخطي المنتظم ℓ1هو طريقة أساسية مماثلةيف اإلحصاء ،والمعروفة باسم انحدار السو
( .)lasso regressionأحد أسباب العمل مع المعيار ℓ2هو أنه يفرض عقوبة كبيرة على
المكونات الكبيرة لمتجه الوزن .يؤدي هذا إلى تحيز خوارزمية التعلم الخاصة بنا نحو النماذج
التي توزع الوزن بالتساوي عبر عدد أكبر من الميزات.يف الممارسة العملية ،قد يجعلهم ذلك أكثر
قوةيف مواجهة خطأ القياسيف متغير واحد .على النقيض من ذلك ،تؤدي العقوبات ℓ1إلى نماذج
تركز األوزان على مجموعة صغيرة من الميزات عن طريق إزالة األوزان األخرى إلى الصفر .يمنحنا
هذا طريقة فعالة الختيار الميزة ،والتي قد تكون مرغوبة ألسباب أخرى .على سبيل المثال ،إذا
كان نموذجنا يعتمد فقط على بعض الميزات ،فقد ال نحتاج إلى جمع البيانات أو تخزينها أو
نقلها للميزات األخرى (التي تم إسقاطها .)dropped
𝜂
𝐰 ← (1 − 𝜂𝜆)𝐰 − ∑ 𝐱 (𝑖) (𝐰 ⊤ 𝐱 (𝑖) + 𝑏 − 𝑦 (𝑖) ).
||ℬ
𝑖∈ℬ
كمايف السابق ،نقوم بتحديث 𝐰 بناءً على المقدار الذي يختلف به تقديرنا عن المالحظة .ومع
ذلك ،فإننا نقوم أيضًا بتقليص حجم 𝐰 باتجاه الصفر .هذا هو السببيف أن الطريقة تسمى أحيانًا
"تضاؤل او تناقص الوزن :" weight decayنظرًا لمصطلح العقوبة وحده ،فإن خوارزمية
التحسين الخاصة بنا تنقص الوزنيف كل خطوة من خطوات التدريب .على عكس اختيار الميزة
،feature selectionيوفر لنا تناقص الوزن آلية مستمرة لضبط تعقيد الدالة .تتوافق القيم األصغر
لـ 𝜆 ألقل تقييدًا لـ 𝐰 ،يف حين أن القيم األكبر 𝜆 تقيد 𝐰 أكثر وضوحًا .ما إذا كنا نقوم بتضمين
عقوبة التحيز 𝑏 2المقابلة يمكن أن تختلف عبر التطبيقات ،وقد تختلف عبر طبقات الشبكة
العصبية.يف كثير من األحيان ،ال نقوم بتنظيم مصطلح التحيز .إلى جانب ذلك ،على الرغم من أن
التنظيم قد ال يكون مكافئًا لتناقص الوزن بالنسبة لخوارزميات التحسين األخرى ،إال أن فكرة
التنظيم من خالل تقليص حجم األوزان ال تزال صحيحة.
%matplotlib inline
import tensorflow as tf
from d2l import tensorflow as d2l
أوالً ،نقوم بإنشاء بعض البيانات كمايف السابق:
𝑑
في مجموعة البيانات التركيبية synthetic datasetهذه ،يتم إعطاء التسمية الخاصة بنا من
خالل دالة خطية أساسية لمدخالتنا ،تالفة بسبب الضوضاء الغاوسية مع متوسط الصفر
واالنحراف المعياري .0.01ألغراض توضيحية ،يمكننا أن نجعل تأثيرات الضبط الزائد واضحة،
من خالل زيادة أبعاد مشكلتنا لـ 𝑑 = 200والعمل مع مجموعة تدريب صغيرة مع 20مثالًا
فقط.
class Data(d2l.DataModule):
def __init__(self, num_train, num_val, num_inputs,
batch_size):
)(self.save_hyperparameters
n = num_train + num_val
األساسيات والمقدمات:التعمق في التعلم العميق 172
def l2_penalty(w):
return tf.reduce_sum(w**2) / 2
Defining the Model 3.7.3.2
لذلك سنقوم،3.4 لم يتغير االنحدار الخطي والخطأ التربيعي منذ القسم،في النموذج النهائي
التغيير الوحيد هنا هو أن.d2l.LinearRegressionScratch فقط بتعريف فئة فرعية من
.خطأنا تشمل اآلن مصطلح العقوبة
class WeightDecayScratch(d2l.LinearRegressionScratch):
def __init__(self, num_inputs, lambd, lr,
sigma=0.01):
super().__init__(num_inputs, lr, sigma)
self.save_hyperparameters()
)trainer = d2l.Trainer(max_epochs=10
def train_scratch(lambd):
model = WeightDecayScratch(num_inputs=200,
)lambd=lambd, lr=0.01
'model.board.yscale='log
)trainer.fit(model, data
)))print('L2 norm of w:', float(l2_penalty(model.w
Training without Regularization 3.7.3.3
نقوم اآلن بتشغيل هذا الكود مع ،lambd = 0مما يؤدي إلى تعطيل تناقص الوزن weight
.decayالحظ أننا نفرطيف التجهيز بشكل سيئ ،مما يقلل من خطأ التدريب ولكن ليس خطأ
التحقق من الصحة -وهي حالة كتابية من الضبط الزائد .overfitting
)train_scratch(0
L2 norm of w: 0.010603310540318489
)train_scratch(3
L2 norm of w: 0.0014634879771620035
التعمق في التعلم العميق :األساسيات والمقدمات 174
في الكود التالي ،أنشأنا منظم ℓ2باستخدام المعامل التشعبي لتناقص الوزن ونطبقه على أوزان
الطبقة من خالل وسيطة .kernel_regularizer
class WeightDecay(d2l.LinearRegression):
def __init__(self, wd, lr):
)super().__init__(lr
)(self.save_hyperparameters
(self.net = tf.keras.layers.Dense
1,
kernel_regularizer=tf.keras.regularizers.l2(wd),
kernel_initializer=tf.keras.initializers.RandomNormal(0,
)0.01
)
تبدو الحبكة مشابهة لتلك التي حدثت عندما نفذنا عملية تناقص الوزن من نقطة الصفر .ومع
ذلك ،يعمل هذا اإلصدار بشكل أسرع وأسهليف التنفيذ ،وستصبح الفوائد أكثر وضوحًا عندما
تعالج مشاكل أكبر ويصبح هذا العمل روتينيًا بشكل أكبر.
حتى اآلن ،تطرقنا فقط إلى فكرة واحدة عما يشكل دالة خطية بسيطة .عالوة على ذلك ،ما الذي
يشكل دالة غير خطية بسيطة يمكن أن يكون سؤالًا أكثر تعقيدًا .على سبيل المثال ،يسمح
) reproducing kernel Hilbert space (RKHSللمرء بتطبيق األدوات المقدمة للدوال
الخطيةيف سياق غير خطي .لسوء الحظ ،تميل الخوارزميات المستندة إلى RKHSإلى التوسع
بشكل سيئيف البيانات الكبيرة عالية األبعاد.يف هذا الكتاب ،غالبًا ما نعتمد االستدالل المشترك
حيث يتم تطبيق انحالل (تناقص) الوزن على جميع طبقات الشبكة العميقة.
3.7.5
التنظيم Regularizationهو طريقة شائعة للتعامل مع فرط التجهيز .overfitting •
تضيف تقنيات التنظيم الكالسيكية مصطلحًا جزائيًا penalty termلدالة الخطأ (عند
التدريب) لتقليل تعقيد النموذج الذي تم تعلمه.
أحد الخيارات المحددة للحفاظ على النموذج بسيطًا هو استخدام عقوبة .ℓ2هذا •
يؤدي إلى تناقص الوزنيف خطوات التحديث لخوارزمية التدرج االشتقاقي العشوائي
المصغر.
يتم توفير دالة تناقص الوزنيف المُحسِّنون من أطر التعلم العميق. •
التعمق في التعلم العميق :األساسيات والمقدمات 176
3.7.6
.1جرب قيمة 𝜆يف مسألة التقديريف هذا القسم .ارسم دقة التدريب ودقة التحقق من الصحة
كدالة .ماذا تالحظ؟
.2استخدم مجموعة التحقق validation setللعثور على القيمة المثلى لـ 𝜆 .هل هي
حقا القيمة المثلى؟ هل هذا مهم؟
.3كيف ستبدو معادالت التحديث إذا استخدمنا | 𝑖𝑤 | 𝑖∑ بدالً من ‖𝐰‖ كعقوبة اختيار
2
(تنظيم )ℓ1؟
.4نحن نعلم 𝐰 𝐰 = ‖𝐰‖ .هل يمكنك العثور على معادلة مماثلة للمصفوفات
2 ⊤
Softmax 4.1
في القسم ،3.1قدمنا االنحدار الخطي ،والعمل من خالل عمليات التنفيذ من البدايةيف القسم
3.4ومرة أخرى باستخدام واجهات برمجة التطبيقات APIعالية المستوى إلطار عمل التعلم
العميقيف القسم 3.5للقيام بالرفع الثقيل.
االنحدار Regressionهو المطرقة التي نصل إليها عندما نريد أن نجيب إلى أي مدى؟ أو كم
عددها؟ أسئلة .إذا كنت ترغبيف التنبؤ بعدد الدوالرات (السعر) التي سيتم بيع منزل بها ،أو عدد
مرات الفوز التي قد يحققها فريق البيسبول ،أو عدد األيام التي سيبقى فيها المريضيف المستشفى
قبل الخروج من المستشفى ،فمن المحتمل أنك تبحث عن نموذج االنحدار .ومع ذلك ،حتىيف
نماذج االنحدار ،هناك فروق مهمة .على سبيل المثال ،لن يكون سعر المنزل سالبًا أبدًا وقد تكون
التغييراتيف الغالب مرتبطة بسعره األساسي .على هذا النحو ،قد يكون التراجع عن لوغاريتم
السعر أكثر فاعلية .وبالمثل ،فإن عدد األيام التي يقضيها المريضيف المستشفى هو متغير عشوائي
منفصل غير سلبي .على هذا النحو ،قد ال تكون المربعات األقل داللة نهجًا مثاليًا أيضًا .يأتي هذا
النوع من النمذجة من وقت إلى حدث time-to-event modelingمع مجموعة من
المضاعفات األخرى التي يتم التعامل معهايف حقل فرعي متخصص يسمى نمذجة البقاء
.survival modeling
وجهة النظر هنا ليست إرباكك ولكن فقط إلعالمك بأن هناك الكثير من التقدير أكثر من مجرد
تقليل األخطاء التربيعية .وعلى نطاق أوسع ،هناك الكثير للتعلم الخاضع لإلشراف أكثر من
االنحدار.يف هذا القسم نركز على مشاكل التصنيف classification problemsحيث نضع
جانبا كم؟ األسئلة وبدالً من ذلك التركيز على أي فئة؟ أسئلة.
هل ينتمي هذا البريد اإللكتروني إلى مجلد البريد العشوائي أو صندوق البريد الوارد؟ •
هل من المرجح أن يقوم هذا العميل بالتسجيل أو عدم االشتراكيف خدمة االشتراك؟ •
هل تصور هذه الصورة حمارًا أو كلبًا أو قطة أو ديكًا؟ •
179 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
بالعامية ،يثقل ممارسو التعلم اآللي كلمة التصنيف classificationلوصف مشكلتين مختلفتين
تمامًا )1( :تلك التي نهتم فيها فقط بالتخصيصات الصعبة لألمثلة للفئات ( categoriesالفئات
)classes؛ و( )2تلك التي نرغبيف إجراء تخصيصات بسيطة ،أي لتقييم احتمالية تطبيق كل فئة.
يميل التمييز إلى التعتيم جزئيًا ،ألنهيف كثير من األحيان ،حتى عندما نهتم فقط بالمهام الصعبة،
ما زلنا نستخدم النماذج التي تقوم بمهام بسيطة.
أكثر من ذلك ،هناك حاالت يكون فيها أكثر من تسمية labelواحدة صحيحة .على سبيل المثال،
قد تغطي مقالة إخباريةيف نفس الوقت موضوعات الترفيه واألعمال ورحالت الفضاء ،ولكن ال
تغطي موضوعات الطب أو الرياضة .وبالتالي ،فإن تصنيفها إلى إحدى الفئات المذكورة أعاله
بمفردها لن يكون مفيدًا للغاية .تُعرف هذه المشكلة عمومًا باسم التصنيف متعدد التسميات
.multi-label classificationانظر )2007( Tsoumakas and Katakisللحصول على
نظرة عامة و )2015( .Huang et alلخوارزمية فعالة عند وضع عالمات taggingعلى الصور.
Classification 4.1.1
لتبليل أقدامنا ،لنبدأ بمشكلة بسيطةيف تصنيف الصور .image classificationهنا ،يتكون كل
إدخال من 2 × 2صورة ذات تدرج رمادي .يمكننا تمثيل كل قيمة بكسل باستخدام عدد قياسي
واحد ،مما يعطينا أربع ميزات .𝑥1 , 𝑥2 , 𝑥3 , 𝑥4عالوة على ذلك ،لنفترض أن كل صورة تنتمي
إلى واحدة من بين الفئات "قطة" و "دجاج" و "كلب".
بعد ذلك ،علينا أن نختار كيفية تمثيل التسميات .labelsلدينا خياران واضحان .ربما يكون
الدافع األكثر طبيعية هو اختيار } ، 𝑦 ∈ {1,2,3حيث تمثل األعداد الصحيحة
} {dog,cat,chickenعلى التوالي .هذه طريقة رائعة لتخزين مثل هذه المعلومات على جهاز
الكمبيوتر .إذا كان للفئات بعض الترتيب الطبيعي فيما بينها ،على سبيل المثال إذا كنا نحاول
التنبؤ بـ } ،{baby,toddler,adolescent,young adult,adult,geriatricفقد يكون من
المنطقي اعتبار ذلك مشكلة انحدار ترتيبية واالحتفاظ بالتسميات بهذا التنسيق .انظر Moon
)2010( .et alللحصول على نظرة عامة على أنواع مختلفة من دوال فقدان الترتيب و Beutel
)2014( .et alلنهج بايزي Bayesian approachالذي يعالج االستجابات بأكثر من وضع.
بشكل عام ،ال تأتي مشاكل التصنيف مع الترتيب الطبيعي بين الفئات .classesلحسن الحظ،
ابتكر اإلحصائيون منذ فترة طويلة طريقة بسيطة لتمثيل البيانات الفئوية :categorical data
التشفير الواحد الساخن .one-hot encodingالترميز الواحد الساخن هو متجه يحتوي على
التعمق في التعلم العميق :األساسيات والمقدمات 180
العديد من المكونات مثل الفئات الموجودة لدينا .يتم تعيين المكون المقابل لفئة مثيل معين
على 1ويتم تعيين جميع المكونات األخرى على .0يف حالتنا ،سيكون التسمية 𝑦 متجهًا ثالثي
األبعاد ،مع ) (1,0,0المقابل لـ "قطة" و)" (0,1,0دجاجة" و) " (0,0,1كلب":
يظهر مخطط الشبكة العصبية المقابليف الشكل .4.1.1كما هو الحاليف االنحدار الخطي،
نستخدم شبكة عصبية أحادية الطبقة .single-layer neural networkونظرًا ألن حساب كل
ناتج ،𝑜1 , 𝑜2ويعتمد على جميع المدخالت 𝑥1 ،و 𝑥3 ، 𝑥2و ، 𝑥4يمكن أيضًا وصف طبقة
المخرجات بأنها طبقة متصلة بالكامل .fully connected layer
للحصول على تدوين أكثر إيجازًا ،نستخدم المتجهات والمصفوفات 𝐨 = 𝐖𝐱 + 𝐛:وهي أكثر
مالءمة للرياضيات والرموز .الحظ أننا جمعنا كل أوزاننايف مصفوفة 3 × 4وجميع التحيزاتيف
متجه .𝐛 ∈ ℝ3
Softmax 4.1.1.2
بافتراض دالة خطأ مناسبة ،يمكننا أن نحاول ،مباشرة ،تقليل االختالف بين 𝐨 والتسميات 𝐲.
بينما اتضح أن معالجة التصنيف على أنه مشكلة انحدار ذات قيمة متجهية vector-valued
regressionتعمل بشكل جيد بشكل مدهش ،إال أنها مع ذلك تفتقر إلى الطرق التالية:
ليس هناك ما يضمن أن مجموع المخرجات 𝑖𝑜يصل إلى 1بالطريقة التي نتوقع أن •
تتصرف بها االحتماالت.
ليس هناك ما يضمن أن النواتج 𝑖𝑜 هي حتى غير سالبة ،حتى لو كانت مخرجاتها تصل •
إلى ،1أو أنها ال تتجاوز .1
كال الجانبين يجعل مشكلة التقدير صعبة الحل والحل هش للغاية للقيم المتطرفة .outliers
على سبيل المثال ،إذا افترضنا أن هناك تبعية خطية linear dependencyموجبة بين عدد غرف
النوم واحتمال قيام شخص ما بشراء منزل ،فقد يتجاوز االحتمال 1عندما يتعلق األمر بشراء
قصر! على هذا النحو ،نحن بحاجة إلى آلية "لسحق "squishالمخرجات.
هناك العديد من الطرق التي يمكننا من خاللها تحقيق هذا الهدف .على سبيل المثال ،يمكننا أن
نفترض أن المخرجات 𝐨 هي إصدارات تالفة من 𝐲 ،حيث يحدث التلف عن طريق إضافة
ضوضاء مستمدة من التوزيع الطبيعي .بمعنى آخر 𝐲 = 𝐨 + 𝜖 ،حيث ) .𝜖𝑖 ∼ 𝒩(0, 𝜎 2هذا
هو ما يسمى بنموذج االختبار ،probit modelالذي قدمه Fechnerألول مرة (.)1860يف
حين أنها جذابة ،فإنها ال تعمل بشكل جيد أو تؤدي إلى مشكلة تحسين لطيفة بشكل خاص ،عند
مقارنتها بـ .softmax
هناك طريقة أخرى لتحقيق هذا الهدف (ولضمان الالسلبية )nonnegativityوهي استخدام
دالة أسية 𝑖𝑜 .𝑃(𝑦 = 𝑖) ∝ expهذا بالفعل يفي بمتطلبات زيادة احتمال الطبقة الشرطية مع
زيادة 𝑖𝑜 ،وهو رتيب ،monotonicوجميع االحتماالت غير سالبة .يمكننا بعد ذلك تحويل
هذه القيم بحيث يتم جمعها الى 1بقسمة كل منها على مجموعها .هذه العملية تسمى التسوية
.normalizationيمنحنا وضع هاتين القطعتين معًا دالة :softmax
^
الحظ أن أكبر إحداثي لـ 𝐨 يتوافق مع الفئة األكثر احتمالًا وفقًا لـ 𝐲 .عالوة على ذلك ،نظرًا ألن
عملية softmaxتحافظ على الترتيب بين وسيطاتها ،فإننا ال نحتاج إلى حساب softmax
لتحديد الفئة التي تم تخصيص أعلى احتمالية لها.
^
argmax𝑦𝑗 = argmax𝑜𝑗 .
𝑗 𝑗
تعود فكرة softmaxإلى جيبس ،Gibbsالذي قام بتكييف األفكار من الفيزياء (،Gibbs
.)1902منذ زمن بعيد ،استخدم بولتزمان ،والد الديناميكا الحرارية الحديثة ،هذه الحيلة لنمذجة
التوزيع على حاالت الطاقةيف جزيئات الغاز .على وجه الخصوص ،اكتشف أن انتشار حالة من
الطاقةيف مجموعة ديناميكية حرارية ،مثل الجزيئاتيف الغاز ،يتناسب مع )𝑇𝑘 .exp (−𝐸/هنا،
𝐸طاقة الحالة 𝑇،هي درجة الحرارة ،و𝑘 ثابت بولتزمان .عندما يتحدث اإلحصائيون عن زيادة
أو خفض "درجة حرارة" نظام إحصائي ،فإنهم يشيرون إلى التغيير لصالح حاالت الطاقة
المنخفضة أو األعلى .باتباع فكرة جيبس ،الطاقة تساوي الخطأ .تستخدم النماذج القائمة على
الطاقة ( )2007 ،Ranzato et al.وجهة النظر هذه عند وصف المشكالتيف التعلم العميق.
Vectorization 4.1.1.3
لتحسين الكفاءة الحسابية ،نقوم بتوجيه الحساباتيف الدفعات الصغيرة من البيانات .افترض أننا
حصلنا على دفعات صغيرة 𝑑×𝑛 𝐗 ∈ ℝمن 𝑛 من الميزات ذات األبعاد (عدد المدخالت) 𝑑.
عالوة على ذلك ،افترض أن لدينا 𝑞 فئاتيف المخرجات .ثم األوزان تحقق 𝑞×𝑑 𝐖 ∈ ℝوالتحيز
يحقق 𝑞×.𝐛 ∈ ℝ1
يؤدي هذا إلى تسريع العملية السائدةيف ضرب المصفوفة-المصفوفة 𝐖𝐗 .عالوة على ذلك،
نظرًا ألن كل صفيف 𝐗 يمثل مثالًا للبيانات ،يمكن حساب عملية softmaxنفسهايف اتجاه
الصف :rowwiseلكل صف من 𝐎 ،ثم قم بتسويتها بالمجموع .الحظ ،مع ذلك ،أنه يجب
توخي الحذر لتجنب األس وأخذ اللوغاريتمات ذات األعداد الكبيرة ،ألن هذا يمكن أن يسبب
تجاوزًا رقميًا أو تدنيًا .تعتني أطر التعلم العميق بهذا األمر تلقائيًا.
،estimationوهو نفس المفهوم الذي واجهناه عند تقديم تبرير احتمالي لمتوسط خسارة الخطأ
التربيعييف القسم .3.1.3
Log-Likelihood 4.1.2.1
^
تعطينا دالة softmaxمتجهًا 𝐲 ،والتي يمكننا تفسيرها على أنها احتماالت مشروطة (مقدرة)
^
لكل فئة ،مع األخذيف االعتبار أي مدخالت 𝐱 ،مثل )𝐱 ∣ .𝑦1 = 𝑃(𝑦 = catفيما يلي نفترض
أنه بالنسبة لمجموعة البيانات ذات الميزات 𝐗 ،يتم تمثيل التسميات 𝐘 باستخدام متجه تسمية
ترميز واحد ساخن .one-hot encodingيمكننا مقارنة التقديرات بالواقع من خالل التحقق
من مدى احتمالية أن تكون الفئات الفعلية وفقًا لنموذجنا ،مع مراعاة الميزات:
𝑛
يُسمح لنا باستخدام التحليل إلى عوامل factorizationألننا نفترض أن كل تسمية مرسومة
بشكل مستقل عن التوزيع ) )𝑖( 𝐱 ∣ 𝐲(𝑃 الخاص به .نظرًا ألن تعظيم منتج المصطلحات أمر غير
مالئم ،فإننا نأخذ اللوغاريتم السالب للحصول على المشكلة المكافئة لتقليل :log-likelihood
𝑛 𝑛
)𝑖( )𝑖( ^
∑ = )𝐗 ∣ 𝐘(𝑃 −log 𝐲(𝑃 − log ∑=) 𝐱∣ 𝑙(𝐲 (𝑖) , 𝐲 (𝑖) ),
𝑖=1 𝑖=1
^
أين ألي زوج من التسمية 𝐲 والتنبؤ 𝐲 بالنموذج على الفئات 𝑞 ،فإن دالة الخطأ 𝑙 هي
𝑞
^ ^
∑ 𝑙(𝐲, 𝐲) = − 𝑦𝑗 log 𝑦𝑗 .
𝑗=1
ألسباب تم توضيحها الحقًا ،فإن دالة الخطأيف ( )4.1.8تسمى عادةً خطأ االنتروبيا المتقاطعة
.cross-entropy lossنظرًا ألن 𝐲 متجه واحد ساخن للطول 𝑞 ،فإن المجموع على جميع
^
اإلحداثيات 𝑗 يختفي لجميع المصطلحات باستثناء مصطلح واحد .الحظ أن الخطأ )𝐲 𝑙(𝐲,
^
يحدها من األسفل بواسطة 0حيث 𝑦 هو متجه احتمالي :ال يوجد إدخال واحد أكبر من ،1
^
وبالتالي ال يمكن أن يكون اللوغاريتم السالب أقل من 0؛ فقط إذا 𝑙(𝐲, 𝐲) = 0توقعنا التسمية
الفعلي على وجه اليقين .certaintyال يمكن أن يحدث هذا أبدًا ألي إعداد محدود لألوزان ألن
أخذ إخراج softmaxنحو 1يتطلب أخذ المدخالت المقابلة 𝑖𝑜 إلى ما ال نهاية (أو جميع
المخرجات 𝑗𝑜 األخرى لكل 𝑖 ≠ 𝑗 إلى الالنهاية السالبة) .حتى إذا كان بإمكان نموذجنا تعيين
التعمق في التعلم العميق :األساسيات والمقدمات 184
احتمال إخراج ،0فإن أي خطأ يرتكب عند تعيين مثل هذه الثقة العالية سيؤدي إلى خطأ ال نهائي
(∞ = .)−log 0
لفهم ما يجري بشكل أفضل قليالً ،ضعيف االعتبار المشتق فيما يتعلق بأي لوغاريتم 𝑗𝑜 .نحن
نحصل
بمعنى آخر ،المشتق derivativeهو الفرق بين االحتمال المحدد بواسطة نموذجنا ،كما يعبر عنه
عملية ،SoftMaxوما حدث بالفعل ،على النحو المعبر عنه بالعناصر الموجودةيف متجه التسمية
الساخنة الواحدة .بهذا المعنى ،فهو مشابه جدًا لما رأيناهيف االنحدار ،حيث كان التدرج هو الفرق
^
بين المالحظة 𝑦 والتقدير 𝑦 .هذه ليست صدفة.يف أي نموذج عائلي أسي ،يتم إعطاء تدرجات
احتمالية السجل من خالل هذا المصطلح على وجه التحديد .هذه الحقيقة تجعل حوسبة
التدرجات سهلةيف الممارسة.
اآلن ضعيف اعتبارك الحالة التي نالحظ فيها ليس فقط نتيجة واحدة ولكن توزيعًا كامالً على
النتائج .يمكننا استخدام نفس التمثيل السابق للتسمية 𝐲 .االختالف الوحيد هو أنه بدالً من المتجه
الذي يحتوي على مدخالت ثنائية فقط ،على سبيل المثال ) ،(0,0,1لدينا اآلن متجه احتمالي
عام ،على سبيل المثال ) .(0.1,0.2,0.7الرياضيات التي استخدمناها سابقًا لتحديد الخطأيف
( )4.1.8ال تزال تعمل بشكل جيد ،فقط أن التفسير أكثر عمومية .إنها القيمة المتوقعة للخطأ
توزيع على التسميات .يسمى هذه الخطأ بخطأ االنتروبيا المتقاطعة cross-entropy lossوهو
185 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
واحد من أكثر االخطاء استخدامًا لمشاكل التصنيف .يمكننا إزالة الغموض عن االسم من خالل
تقديم أساسيات نظرية المعلومات فقط .باختصار ،إنه يقيس عدد البتات لترميز ما نراه 𝐲 بالنسبة
^
لما نتوقع حدوثه 𝐲 .نقدم شرحًا أساسيًا جدًا فيما يلي .لمزيد من التفاصيل حول نظرية المعلومات
انظر ( )1999 ،Cover and Thomasأو (.)2003 ،MacKay and Mac Kay
Entropy 4.1.3.1
الفكرة المركزيةيف نظرية المعلومات هي تحديد كمية المعلومات الواردةيف البيانات .هذا يضع
حدًا لقدرتنا على ضغط البيانات .بالنسبة للتوزيع 𝑃 ،يتم تعريف االنتروبيا على النحو التالي:
تنص إحدى النظريات األساسية لنظرية المعلومات على أنه من أجل ترميز البيانات المستمدة
عشوائيًا من التوزيع 𝑃 ،نحتاج على األقل ]𝑃[𝐻 إلى " "natsلتشفيرها (.)1948 ،Shannon
إذا كنت تتساءل ما هو " ،”natفهو مكافئ للبت ولكن عند استخدام رمز مع األساس 𝑒 بدالً من
1
واحد مع األساس .2وبالتالي ،فإن natواحد هو log (2) ≈ 1.44بت
Surprisal 4.1.3.2
قد تتساءل ما عالقة الضغط بالتنبؤ .تخيل أن لدينا دفقًا من البيانات التي نريد ضغطها .إذا كان
من السهل علينا دائمًا توقع الرمز المميز التالي ،فمن السهل ضغط هذه البيانات .خذ المثال حيث
يأخذ كل رمز مميزيف الدفق نفس القيمة دائمًا .هذا دفق بيانات ممل للغاية! وهو ليس مملًا
فحسب ،بل يسهل توقعه أيضًا .نظرًا ألنهما دائمًا متماثالن ،فال يتعين علينا نقل أي معلومات
لتوصيل محتويات الدفق .سهل التنبؤ ،سهل الضغط.
ومع ذلك ،إذا لم نتمكن من التنبؤ بكل حدث تمامًا ،فقد نتفاجأ أحيانًا .تكون دهشتنا أكبر عندما
1
logلتقدير مفاجأة خصصنا حدثًا احتمالية أقل .استقر كلود شانون على )𝑗(𝑃 = −log
)𝑗(𝑃
المرءيف مراقبة حدث ما 𝑗 بعد أن منحه احتمالًا )𝑗(𝑃 .إن االنتروبيا المحددةيف ( )4.1.11هي
التعمق في التعلم العميق :األساسيات والمقدمات 186
إذن المفاجأة المتوقعة عندما يقوم أحدهم بتعيين االحتماالت الصحيحة التي تتطابق بالفعل مع
عملية توليد البيانات.
باختصار ،يمكننا التفكيريف هدف التصنيف عبر االنتروبيا بطريقتين )1( :تعظيم احتمالية البيانات
المرصودة؛ و ( )2لتقليل مفاجأتنا (وبالتالي عدد البتات) المطلوبة لتوصيل التسميات .labels
4.1.4
في هذا القسم ،واجهنا أول دالة خطأ غير بديهية ،مما يسمح لنا بتحسين مساحات اإلخراج
المنفصلة .كان المفتاحيف تصميمه هو أننا اتخذنا نهجًا احتماليًا ،حيث تعاملنا مع الفئات
المنفصلة على أنها حاالت سحب من توزيع احتمالي .كأثر جانبي ،واجهنا ،softmaxوهي دالة
تنشيط مريحة تحول مخرجات طبقة الشبكة العصبية العادية إلى توزيعات احتمالية منفصلة
صالحة .لقد رأينا أن مشتق خطأ االنتروبيا المتقاطعة عندما يقترن بـ softmaxيتصرف بشكل
مشابه جدًا لمشتق الخطأ التربيعي ،أي عن طريق أخذ الفرق بين السلوك المتوقع والتنبؤ به .وبينما
كنا قادرين فقط على خدش السطح ذاته ،واجهنا روابط مثيرة للفيزياء اإلحصائية ونظرية
المعلومات.
في حين أن هذا كافٍ ليأخذكيف طريقك ،ونأمل أن يكون كافيًا إلثارة شهيتك ،إال أننا بالكاد نغوص
بعمق هنا .من بين أمور أخرى ،تخطينا االعتبارات الحسابية .على وجه التحديد ،بالنسبة ألي
طبقة متصلة بالكامل بها 𝑑 مدخالت و 𝑞 مخرجات ،المعلمات والتكلفة الحسابية هي )𝑞𝑑(𝒪،
والتي يمكن أن تكون باهظةيف الممارسة العملية .لحسن الحظ ،يمكن تقليل تكلفة تحويل
المدخالت 𝑑 إلى مخرجات 𝑞 من خالل التقريب approximationوالضغط .compression
على سبيل المثال ،يستخدم )2015 ،.Yang et al(،Deep Fried Convnetsمجموعة من
التباديل وتحويالت فورييه والقياس لتقليل التكلفة من التربيعية إلى اللوغاريتمية الخطية .تعمل
تقنيات مماثلة من أجل تقريب مصفوفة هيكلية أكثر تقدمًا ( .)2015 ،Sindhwani et al.
𝑞𝑑
أخيرًا ،يمكننا استخدام تحليالت تشبه Quaternionلتقليل التكلفة الى ) 𝑛 (𝒪 ،مرة أخرى،
187 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
إذا كنا على استعداد لمقايضة قدر ضئيل من الدقة بتكلفة الحساب والتخزين (،Zhang et al.
)2021بناءً على عامل الضغط 𝑛 .هذا مجال نشط للبحث .ما يجعل األمر صعبًا هو أننا ال نسعى
بالضرورة إلى التمثيل األكثر إحكاما أو أصغر عدد من عمليات الفاصلة العائمة floating point
ولكن باألحرى للحل الذي يمكن تنفيذه بكفاءة أكبر على وحدات معالجة الرسومات الحديثة
.GPUs
4.1.5
.1يمكننا استكشاف العالقة بين العائالت األسية و softmaxبعمق أكبر.
^
.1احسب المشتق الثاني لخطأ االنتروبيا )𝐲 𝑙(𝐲,من أجل .softmax
.2احسب تباين التوزيع الذي قدمه )𝐨( softmaxوأظهر أنه يطابق المشتق الثاني
المحسوب أعاله.
.2افترض أن لدينا ثالث فئات تحدث باحتمالية متساوية ،أي متجه االحتمال هو
1 1 1
)(3 , 3 , 3
.1ما هي المشكلة إذا حاولنا تصميم كود ثنائي لها؟
.2هل يمكنك تصميم كود أفضل؟ تلميح :ماذا يحدث إذا حاولنا ترميز مالحظتين
مستقلتين؟ ماذا لو قمنا بترميز 𝑛 مالحظات بشكل مشترك؟
.3عند إرسال إشارات ترميز عبر سلك مادي ،ال يستخدم المهندسون دائمًا رموزًا ثنائية.
على سبيل المثال ،يستخدم PAM-3ثالثة مستويات لإلشارة } {−1,0,1بدالً من
مستويين } .{0,1كم عدد الوحدات الثالثية ternary unitsالتي تحتاجها إلرسال عدد
صحيحيف النطاق }{0, … ,7؟ لماذا قد تكون هذه فكرة أفضل من حيث اإللكترونيات؟
.4يستخدم نموذج برادلي تيري Bradley-Terry modelنموذجًا لوجستيًا logistic
modelاللتقاط التفضيالت .لكي يختار المستخدم بين التفاح والبرتقال ،يفترض
المرء أن الدرجات 𝑜appleو .𝑜orangeمتطلباتنا هي أن الدرجات األكبر يجب أن تؤدي
إلى احتمالية أعلىيف اختيار العنصر المرتبط وأن العنصر الحاصل على أكبر درجة هو
العنصر األكثر احتمالية الختياره (.)1952 ،Bradley and Terry
.1إثبت أن softmaxيلبي هذا المطلب.
.2ماذا يحدث إذا كنت تريد السماح بخيار افتراضي ال يختار فيه التفاح وال
البرتقال؟ تلميح :اآلن لدى المستخدم 3اختيارات.
= )𝑏 RealSoftMax(𝑎, التالي: التعيين من اسمها Softmax .5تشتق
))𝑏( .log (exp (𝑎) + exp
.1اثبت )𝑏 .RealSoftMax(𝑎, 𝑏) > max(𝑎,
التعمق في التعلم العميق :األساسيات والمقدمات 188
.2ما مدى صغر حجم الفرق بين الدالتين؟ تلميح :بدون فقدان التعميم يمكنك
ضبط 𝑏 = 0و𝑏 ≥ 𝑎.
.3إثبت أن )𝑏𝜆 ،𝜆 RealSoftMax(𝜆𝑎,بشرط .𝜆 > 0
−1
ألكثر من عقد من الزمان ،عملت MNISTكنقطة مرجعية لمقارنة خوارزميات التعلم اآللي.
على الرغم من أنه كان يعمل بشكل جيد كمجموعة بيانات معيارية ،إال أن النماذج البسيطة وفقًا
لمعايير اليوم تحقق دقة تصنيف تزيد عن ،٪95مما يجعلها غير مناسبة للتمييز بين النماذج
األقوى والنماذج األضعف .أكثر من ذلك ،تسمح مجموعة البيانات بمستويات عالية جدًا من
الدقة ،ال تُرى عادةًيف العديد من مشكالت التصنيف .هذا التطوير الخوارزمي المنحرف نحو
عائالت معينة من الخوارزميات التي يمكن أن تستفيد من مجموعات البيانات النظيفة clean
،datasetsمثل أساليب المجموعة النشطة وخوارزميات المجموعة النشطة التي تسعى للحد من
الحدود .اليوم ،تعمل MNISTبمثابة فحوصات سالمة أكثر من كونها معيارًا .تشكّل شبكة
)2009 ،Denget al.(،ImageNetتحديًا أكثر صلة بالموضوع .لسوء الحظ ،تعد
ImageNetكبيرة جدًا بالنسبة للعديد من األمثلة والرسوم التوضيحيةيف هذا الكتاب ،حيث
سيستغرق التدريب وقتًا طويالً لجعل األمثلة تفاعلية .كبديل ،سنركز مناقشتنايف األقسام القادمة
على مجموعة بيانات Fashion-MNISTالمتشابهة نوعياً ،ولكن األصغر بكثير ( Xiao et
،)2017 ،al.والتي تم إصدارهايف عام .2017وهي تحتوي على صور لعشر فئات من المالبس
بدقة 28 × 28بكسل.
%matplotlib inline
import time
import tensorflow as tf
from d2l import tensorflow as d2l
)(d2l.use_svg_display
Loading the Dataset 4.2.1
نظرًا ألنها مجموعة بيانات مستخدمة بشكل متكرر ،فإن جميع األطر الرئيسية توفر إصدارات
مُعالجة مسبقًا منها .يمكننا تنزيل مجموعة بيانات Fashion-MNISTوقراءتهايف الذاكرة
باستخدام دوال إطار العمل المضمنة.
data.train[0][0].shape
)(28, 28
فئات Fashion-MNISTلها أسماء مفهومة من قبل اإلنسان .يتم تحويل دالة المالئمة
convenience functionالتالية بين التسميات الرقمية وأسمائها.
@d2l.add_to_class(FashionMNIST) #@save
def text_labels(self, indices):
""""""Return text labels.
labels = ['t-shirt', 'trouser', 'pullover', 'dress',
'coat',
'sandal', 'shirt', 'sneaker', 'bag',
]''ankle boot
]return [labels[int(i)] for i in indices
Reading a Minibatch 4.2.2
لجعل حياتنا أسهل عند القراءة من مجموعات التدريب واالختبار ،نستخدم مكرر البيانات
المدمج built-in data iteratorبدالً من إنشاء واحد من البداية .تذكر أنهيف كل تكرار ،يقرأ
مكرر البيانات دفعة صغيرة من البيانات ذات الحجم .batch_sizeنقوم أيضًا بترتيب األمثلة
عشوائيًا لمكرر بيانات التدريب.
@d2l.add_to_class(FashionMNIST) #@save
def get_dataloader(self, train):
data = self.train if train else self.val
process = lambda X, y: (tf.expand_dims(X, axis=3) /
255,
191 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
))'tf.cast(y, dtype='int32
resize_fn = lambda X, y:
)(tf.image.resize_with_pad(X, *self.resize), y
shuffle_buf = len(data[0]) if train else 1
return
tf.data.Dataset.from_tensor_slices(process(*data)).batch
(
)self.batch_size).map(resize_fn).shuffle(shuffle_buf
لمعرفة كيفية عمل ذلك ،دعنا نحمل مجموعة صغيرة minibatchمن الصور عن طريق استدعاء
طريقة train_dataloaderالمضافة حديثًا .يحتوي على 64صورة.
)))(X, y = next(iter(data.train_dataloader
)print(X.shape, X.dtype, y.shape, y.dtype
(64, 32, 32, 1) <dtype: 'float32'> (64,) <dtype:
>''int32
دعونا نلقي نظرة على الوقت المستغرق لقراءة الصور .على الرغم من أنه محمل مدمج built-
،in loaderإال أنه ليس سريعًا للغاية .ومع ذلك ،يعد هذا كافيًا ألن معالجة الصور باستخدام
شبكة عميقة تستغرق وقتًا أطول قليالً .ومن ثم ،فمن الجيد بما يكفي أال يكون تدريب الشبكة
مقيدًا بإدخال معلومات.
)(tic = time.time
for X, y in data.train_dataloader():
continue
'f'{time.time() - tic:.2f} sec
''0.82 sec
Visualization 4.2.3
سنستخدم مجموعة بيانات Fashion-MNISTكثيرًا .يمكن استخدام دالة مالئمة
show_imagesلتمثيل البياني ل لصور والتسميات المرتبطة بها .تفاصيل تنفيذه مؤجلة إلى
الملحق.
إضافية ضد األخطاءيف تصميم التجارب .فيما يلي الصور والتسميات المقابلة لها (في النص)
لألمثلة القليلة األولىيف مجموعة بيانات التدريب.
@d2l.add_to_class(FashionMNIST) #@save
def visualize(self, batch, nrows=1, ncols=8, labels=[]):
X, y = batch
if not labels:
)labels = self.text_labels(y
d2l.show_images(tf.squeeze(X), nrows, ncols,
)titles=labels
)))(batch = next(iter(data.val_dataloader
)data.visualize(batch
4.2.4
لدينا اآلن مجموعة بيانات أكثر واقعية الستخدامهايف التصنيف Fashion-MNIST .هي
مجموعة بيانات لتصنيف المالبس تتكون من صور تمثل 10فئات .سنستخدم مجموعة البيانات
هذهيف األقسام والفصول الالحقة لتقييم تصميمات الشبكات المختلفة ،من نموذج خطي بسيط
إلى شبكات متبقية متقدمة .كما نفعل عادةً مع الصور ،نقرأها كموتّر للشكل (حجم الدفعة ،عدد
القنوات ،االرتفاع ،العرض).يف الوقت الحالي ،لدينا قناة واحدة فقط ألن الصور ذات تدرج
رمادي (يستخدم التمثيل البياني أعاله لوحة ألوان زائفة لتحسين الرؤية).
أخيرًا ،تعد أجهزة تكرار البيانات data iteratorsمكونًا رئيسيًا لألداء الفعال .على سبيل المثال،
قد نستخدم وحدات معالجة الرسومات GPUإللغاء ضغط الصورة بكفاءة ،أو تحويل ترميز
الفيديو ،أو غير ذلك من عمليات المعالجة المسبقة .كلما كان ذلك ممكنًا ،يجب أن تعتمد على
مكررات البيانات التي تم تنفيذها جيدًا والتي تستغل الحوسبة عالية األداء لتجنب إبطاء حلقة
التدريب الخاصة بك.
4.2.5
.1هل تقليل حجم الدفعة ( batch_sizeعلى سبيل المثال ،إلى )1يؤثر على أداء
القراءة؟
193 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
.2أداء مكرر البيانات data iteratorمهم .هل تعتقد أن التنفيذ الحالي سريع بما فيه
الكفاية؟ استكشف الخيارات المختلفة لتحسينها .استخدم ملف تعريف النظام لمعرفة
مكان االختناقات .bottlenecks
.3تحقق من وثائق APIعلى اإلنترنت الخاصة بإطار العمل .ما هي مجموعات البيانات
األخرى المتوفرة؟
@d2l.add_to_class(d2l.Module) #@save
def configure_optimizers(self):
)return tf.keras.optimizers.SGD(self.lr
التعمق في التعلم العميق :األساسيات والمقدمات 194
Accuracy 4.3.2
بالنظر إلى التوزيع االحتمالي المتوقع ،y_hatفإننا عادةً ما نختار الفئة ذات أعلى احتمالية
متوقعة عندما يتعين علينا إخراج تنبؤ صعب.يف الواقع ،تتطلب العديد من التطبيقات أن نقوم
باالختيار .على سبيل المثال ،يجب أن يصنف Gmailبريدًا إلكترونيًا إلى "أساسي" أو "اجتماعي"
أو "تحديثات" أو "منتديات" أو "بريد عشوائي" .قد يقدر االحتماالت داخليًا ،ولكنيف نهاية اليوم،
يجب عليه اختيار واحد من بين الفئات.
عندما تتوافق التنبؤات مع فئة التسمية ،yفإنها صحيحة .دقة التصنيف هي جزء من كل التوقعات
الصحيحة .على الرغم من أنه قد يكون من الصعب تحسين الدقة بشكل مباشر (ال يمكن التمييز
بينها) ،إال أنه غالبًا ما يكون مقياس األداء الذي نهتم به كثيرًا .غالبًا ما تكون الكمية ذات الصلةيف
المعايير .على هذا النحو ،سنقوم دائمًا باإلبالغ عن ذلك عند تدريب المصنفات.
يتم حساب الدقة على النحو التالي .أوالً ،إذا كانت y_hatعبارة عن مصفوفة ،فإننا نفترض أن
البعد الثاني يخزن درجات التنبؤ لكل فئة .نستخدم argmaxللحصول على الفئة المتوقعة
بواسطة الفهرس ألكبر إدخاليف كل صف .ثم نقارن الفئة المتنبأ بها مع الحقيقة األساسية y
بشكل عنصري .elementwiseنظرًا ألن عامل المساواة == حساس ألنواع البيانات ،فإننا نقوم
بتحويل نوع بيانات y_hatلمطابقة نوع بيانات .yوالنتيجة هي موتر يحتوي على إدخاالت من
( 0خطأ) و( 1صواب) .أخذ المجموع ينتج عنه عدد التنبؤات الصحيحة.
@d2l.add_to_class(Classifier) #@save
def accuracy(self, Y_hat, Y, averaged=True):
""""""Compute the number of correct predictions.
))]Y_hat = tf.reshape(Y_hat, (-1, Y_hat.shape[-1
)preds = tf.cast(tf.argmax(Y_hat, axis=1), Y.dtype
compare = tf.cast(preds == tf.reshape(Y, -1),
)tf.float32
return tf.reduce_mean(compare) if averaged else
compare
4.3.3
التصنيف مشكلة شائعة بما فيه الكفاية لدرجة أنه يضمن دوال المالئمة convenience
functionsالخاصة به .من األهمية بمكانيف التصنيف دقة المصنف .الحظ أنه بينما نهتم غالبًا
بالدقة ،فإننا ندرب المصنفين لتحسين مجموعة متنوعة من األهداف األخرى ألسباب إحصائية
وحسابية .ومع ذلك ،بغض النظر عن دالة الخطأ التي تم تقليلها أثناء التدريب ،فمن المفيد أن
يكون لديك طريقة مالئمة لتقييم دقة المصنف تجريبيًا.
195 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
4.3.4
𝑞
تقديرها السريع والقذر 𝑣𝐿 .1قم باإلشارة إلى خطأ التحقق من الصحة 𝑣𝐿 ،وليكن
محسوبًا بواسطة دالة الخطأيف المتوسطيف هذا القسم .أخيرًا ،قم باإلشارة بواسطة
𝑞
𝑏𝑣𝑙الخطأيف آخر .minibatchقم بالتعبير عن 𝑣𝐿 من حيث 𝑣𝐿 و 𝑏𝑣𝑙 وأحجام العينة و
.minibatch
𝑞
غير متحيز .unbiasedهذا هو ،أظهر ذلك 𝑣𝐿 .2أظهر أن التقدير السريع والقذر
𝑞
] 𝑣𝐿[𝐸 = ] 𝑣𝐿[𝐸 .لماذا ال تزال ترغبيف استخدام 𝑣𝐿 بدال من ذلك؟
.3بالنظر إلى خطأ التصنيف متعدد الطبقات ،multiclass classification loss
) 𝑙(𝑦, 𝑦 ′التي تدل على عقوبة التقدير 𝑦 ′عندما نرى 𝑦 واالحتمالية المعطاة ∣ 𝑦(𝑝
)𝑥 ،قم بصياغة القاعدة لالختيار األمثل لـ .𝑦 ′تلميح :عبر عن الخطأ المتوقع باستخدام
𝑙 و )𝑥 ∣ 𝑦(𝑝.
يتطلب حساب softmaxثالث خطوات )1( :األس لكل مصطلح؛ ( )2مجموع كل صف
لحساب ثابت التسوية لكل مثال؛ ( )3قسمة كل صف على ثابت التسوية الخاص به ،مع التأكد
من أن النتيجة تصل إلى .1
) 𝑗𝑖 𝐗( exp
= 𝑗𝑖)𝐗(softmax .
) 𝑘𝑖 𝐗( ∑𝑘 exp
يسمى (لوغاريتم) المقام بدالة القسم (اللوغارتم) .(log) partition functionتم تقديمهيف
الفيزياء اإلحصائية statistical physicsلتلخيص جميع الحاالت الممكنةيف مجموعة الديناميكا
الحرارية .التنفيذ مباشر:
def softmax(X):
)X_exp = tf.exp(X
)partition = tf.reduce_sum(X_exp, 1, keepdims=True
return X_exp / partition # The broadcasting
mechanism is applied here
ألي إدخال ،Xنحول كل عنصر إلى رقم غير سالب .يلخص كل صف ما يصل إلى ،1كما هو
مطلوب لالحتمال .تحذير :الكود أعاله ليس قويًا ضد المدخالت الكبيرة جدًا أو الصغيرة جدًا.
في حين أن هذا كافٍ لتوضيح ما يحدث ،يجب أال تستخدم هذا الرمز حرفيًا ألي غرض جاد.
تحتوي أطر التعلم العميق على مثل هذه الحماية المضمنة وسنستخدم softmaxالمدمجيف
المستقبل.
في فصول الحقة ،سنقدم الشبكات العصبية التالفيفية ،convolutional neural networks
والتي تستغل البنية المكانية بطريقة أكثر إرضاءً.
في انحدار ،softmaxيجب أن يكون عدد المخرجات من شبكتنا مساويًا لعدد الفئات .نظرًا ألن
مجموعة البيانات الخاصة بنا تتكون من 10فئات ،فإن بُعد إخراج شبكتنا هو .10وبالتالي،
تشكل أوزاننا مصفوفة 784 × 10باإلضافة إلى متجه صف 1 × 10أبعاد للتحيزات .كما هو
الحال مع االنحدار الخطي ،نقوم بتهيئة األوزان Wبضوضاء غاوسي .تتم تهيئة التحيزات
كأصفار.
class SoftmaxRegressionScratch(d2l.Classifier):
def __init__(self, num_inputs, num_outputs, lr,
sigma=0.01):
)(__super().__init
)(self.save_hyperparameters
self.W = tf.random.normal((num_inputs,
)num_outputs), 0, sigma
)self.b = tf.zeros(num_outputs
)self.W = tf.Variable(self.W
)self.b = tf.Variable(self.b
يحدد الكود أدناه كيف تقوم الشبكة بتعيين كل إدخال إلى أحد المخرجات .الحظ أننا نقوم بتسوية
كل صورة 28 × 28بكسليف الدُفعة إلى متجه باستخدام إعادة التشكيل reshapeقبل تمرير
البيانات عبر نموذجنا.
)@d2l.add_to_class(SoftmaxRegressionScratch
def forward(self, X):
(return softmax(tf.matmul(tf.reshape
)X, (-1, self.W.shape[0])), self.W) + self.b
The Cross-Entropy Loss 4.4.3
بعد ذلك نحتاج إلى تنفيذ دالة الخطأ عبر االنتروبيا (المقدمةيف القسم .)4.1.2قد تكون هذه
هي دالة الخطأ األكثر شيوعًايف كل التعلم العميق.يف الوقت الحالي ،فإن تطبيقات التعلم العميق
تلقي بسهولة مشاكل التصنيف التي تفوق بكثير تلك التي يتم التعامل معها بشكل أفضل على
أنها مشاكل انحدار.
لرؤية هذا عمليًا ،قمنا بإنشاء عينة بيانات y_hatمع مثالين لالحتماالت المتوقعة عبر 3فئات
والتسميات المقابلة لها .yالتسميات الصحيحة هي 1و 2على التوالي .باستخدام yكمؤشرات
لالحتماالتيف ،y_hatيمكننا اختيار الحدود بكفاءة.
)cross_entropy(y_hat, y
><tf.Tensor: shape=(), dtype=float32, numpy=1.4978662
)@d2l.add_to_class(SoftmaxRegressionScratch
def loss(self, y_hat, y):
)return cross_entropy(y_hat, y
Training 4.4.4
نعيد استخدام طريقة المالءمة المحددةيف القسم 3.4لتدريب النموذج على 10فترات .الحظ أن
كالً من عدد الفترات ( ،)max_epochsوحجم الدفعات الصغيرة ( ،)batch_sizeومعدل
التعلم ( )lrهي معلمات فائقة قابلة للتعديل .adjustable hyperparametersهذا يعني أنه
على الرغم من عدم تعلم هذه القيم خالل حلقة التدريب األولية لدينا ،إال أنها ال تزال تؤثر على
أداء نموذجنا ،والبوت مقابل التدريب وأداء التعميم .من الناحية العملية ،سترغبيف اختيار هذه
القيم بناءً على تقسيم التحقق من صحة البيانات ثم تقييم نموذجك النهائييف نهاية المطافيف
قسم االختبار .كما تمت مناقشتهيف القسم ،3.6.3سوف نتعامل مع بيانات اختبار Fashion-
MNISTباعتبارها مجموعة التحقق من الصحة ،وبالتالي اإلبالغ عن خطأ التحقق من الصحة
ودقة التحقق من الصحة على هذا التقسيم.
)data = d2l.FashionMNIST(batch_size=256
model = SoftmaxRegressionScratch(num_inputs=784,
)num_outputs=10, lr=0.1
)trainer = d2l.Trainer(max_epochs=10
)trainer.fit(model, data
199 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
Prediction 4.4.5
اآلن بعد اكتمال التدريب ،أصبح نموذجنا جاهزًا لتصنيف بعض الصور.
)))(X, y = next(iter(data.val_dataloader
)preds = tf.argmax(model(X), axis=1
preds.shape
)]TensorShape([256
نحن مهتمون أكثر بالصور التي نسميها labelبشكل غير صحيح .نتخيلها من خالل مقارنة
تسمياتها الفعلية (السطر األول من إخراج النص) مع التنبؤات من النموذج (السطر الثاني من
إخراج النص)
4.4.6
لقد بدأنا اآلنيف اكتساب بعض الخبرةيف حل مشاكل االنحدار الخطي والتصنيف .بواسطته،
وصلنا إلى ما يمكن القول إنه حالة فن النمذجة اإلحصائيةيف الستينيات والسبعينيات من القرن
التعمق في التعلم العميق :األساسيات والمقدمات 200
الماضي.يف القسم التالي ،سنوضح لك كيفية االستفادة من أطر التعلم العميق لتنفيذ هذا النموذج
بشكل أكثر كفاءة.
4.4.7
.1في هذا القسم ،قمنا بتنفيذ دالة softmaxبشكل مباشر بناءً على التعريف الرياضي
لعملية .softmaxكما نوقشيف القسم ،4.1يمكن أن يتسبب هذايف عدم استقرار رقمي
.numerical instabilities
.1اختبر ما إذا كان softmaxال يزال يعمل بشكل صحيح إذا كانت قيمة اإلدخال
100؟
.2اختبر ما إذا كان softmaxال يزال يعمل بشكل صحيح إذا كان أكبر المدخالت
أصغر من −100؟
.3قم بتنفيذ اإلصالح بالنظر إلى القيمة المتعلقة بأكبر إدخاليف الوسيطة.
.2تنفيذ دالة عبر_انتروبيا cross_entropyتتبع تعريف دالة الخطأ عبر االنتروبيا
^
𝑖𝑦 ∑𝑖 𝑦𝑖 log
.1جربهيف مثال الكود أعاله.
.2لماذا تعتقد أنه يعمل بشكل أبطأ؟
.3هل يجب عليك استخدامه؟يف أي الحاالت يكون له معنى؟
.4ما الذي تحتاج إلى توخي الحذر منه؟ تلميح :ضعيف اعتبارك مجال اللوغاريتم.
.3هل من الجيد دائمًا إرجاع التسمية األكثر احتماالً؟ على سبيل المثال ،هل ستفعل هذا
من أجل التشخيص الطبي؟ كيف ستحاول معالجة هذا؟
.4افترض أننا نريد استخدام انحدار softmaxللتنبؤ بالكلمة التالية بناءً على بعض
الميزات .ما هي بعض المشاكل التي قد تنشأ من المفردات الكبيرة؟
.5جرب المعلمات الفائقة hyperparametersللشفرة أعاله .خاصه:
.1ارسم كيف يتغير خطأ التحقق أثناء تغيير معدل التعلم.
.2هل يتغير التحقق من الصحة وخطأ التدريب كلما قمت بتغيير حجم الدفعات
الصغيرة؟ إلى أي مدى يجب أن تذهب قبل أن ترى تأثيرًا كبيرًا أم صغيرًا؟
Softmax 4.5
مثلما سهّلت أطر التعلم العميق عالية المستوى تنفيذ االنحدار الخطي (انظر القسم ،)3.5فهي
مناسبة أيضًا هنا.
class SoftmaxRegression(d2l.Classifier):
def __init__(self, num_outputs, lr):
)(__super().__init
)(self.save_hyperparameters
)(self.net = tf.keras.models.Sequential
))(self.net.add(tf.keras.layers.Flatten
))self.net.add(tf.keras.layers.Dense(num_outputs
^ 𝑗𝑜 exp 𝑜 exp (𝑜𝑗 − 𝑜)exp )𝑜 exp (𝑜𝑗 −
= 𝑗𝑦 = = .
)𝑜 ∑𝑘 exp 𝑜𝑘 ∑𝑘 exp (𝑜𝑘 − 𝑜)exp 𝑜 ∑𝑘 exp (𝑜𝑘 −
من خالل البناء نعرف 𝑜𝑗 − 𝑜 ≤ 0لكل 𝑗 .على هذا النحو ،بالنسبة لمشكلة تصنيف فئة 𝑞 ،يتم
احتواء المقاميف الفاصل الزمني ]𝑞 .[1,عالوة على ذلك ،ال يتجاوز البسط أبدًا ، 1وبالتالي يمنع
التدفق العددي .numerical overflowيحدث التدفق العددي فقط عندما )𝑜 exp (𝑜𝑗 −
تُقيم عدديًا كـ .0ومع ذلك ،على بعد خطوات قليلة على الطريق ،قد نجد أنفسنايف مأزق عندما
^
كما .log 0على وجه الخصوص،يف االنتشار الخلفي نريد حساب 𝑗𝑦 log
التعمق في التعلم العميق :األساسيات والمقدمات 202
لحسن الحظ ،يتم إنقاذنا من حقيقة أنه على الرغم من أننا نحسب الدوال األسية ،فإننا نعتزميف
النهاية أخذ ( logعند حساب خطأ االنتروبيا المتقاطعة) .من خالل الجمع بين softmaxو
،cross-entropyيمكننا الهروب من مشكالت االستقرار العددي تمامًا .نملك:
@d2l.add_to_class(d2l.Classifier) #@save
def loss(self, Y_hat, Y, averaged=True):
))]Y_hat = tf.reshape(Y_hat, (-1, Y_hat.shape[-1
))Y = tf.reshape(Y, (-1,
= fn
tf.keras.losses.SparseCategoricalCrossentropy(from_logit
)s=True
)return fn(Y, Y_hat
Training 4.5.3
بعد ذلك نقوم بتدريب نموذجنا .كما كان من قبل ،نستخدم صور ،Fashion-MNISTتسطح
flattenedإلى 784متجهًا للميزات ذات األبعاد.
)data = d2l.FashionMNIST(batch_size=256
)model = SoftmaxRegression(num_outputs=10, lr=0.1
)trainer = d2l.Trainer(max_epochs=10
)trainer.fit(model, data
203 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
كمايف السابق ،تتقارب هذه الخوارزمية مع حل يحقق دقة الئقة ،وإن كان هذا الوقت يحتوي على
عدد أقل من سطور التعليمات البرمجية عن ذي قبل.
4.5.4
تعد واجهات برمجة التطبيقات APIsعالية المستوى مالئمة للغايةيف إخفاء الجوانب التي يحتمل
أن تكون خطرة عن مستخدميها ،مثل االستقرار العددي .numerical stabilityعالوة على
ذلك ،فهي تسمح للمستخدمين بتصميم النماذج بإيجاز مع عدد قليل جدًا من أسطر التعليمات
البرمجية .هذا هو بمثابة نعمة ونقمة .الفائدة الواضحة هي أنه يجعل األشياء سهلة الوصول ،حتى
للمهندسين الذين لم يأخذوا فئة واحدة من اإلحصائياتيف حياتهم (في الواقع ،هذا هو أحد
الجماهير المستهدفة للكتاب) .لكن إخفاء الحواف الحادة يأتي أيضًا مع ثمن :عامل مثبط إلضافة
مكونات جديدة ومختلفة بمفردك ،نظرًا لوجود ذاكرة عضلية قليلة للقيام بذلك .عالوة على ذلك،
فإنه يجعل من الصعب إصالح األشياء كلما فشلت الحشوة الحامية protective padding
إلطار العمليف تغطية جميع حاالت الزاوية بالكامل .مرة أخرى ،هذا يرجع إلى عدم اإللمام.
على هذا النحو ،نحثك بشدة على مراجعة كل من العظام المجردة واإلصدارات األنيقة للعديد
من التطبيقات التالية .بينما نؤكد على سهولة الفهم ،فإن التطبيقات عادة ما تكون عالية األداء
(التالفيف convolutionsهي االستثناء الكبير هنا) .نعتزم السماح لك بالبناء عليها عندما
تخترع شيئًا جديدًا ال يمكن ألي إطار عمل أن يمنحك إياه.
4.5.5
.1يستخدم التعلم العميق العديد من تنسيقات األرقام المختلفة ،بمايف ذلك الدقة
المزدوجة لـ ( FP64نادرًا جدًا) ،الدقة الفردية ( BFLOAT16 ،FP32جيدة
للتمثيالت المضغوطة) ( FP16 ،غير مستقر جدًا) ( TF32 ،تنسيق جديد من
التعمق في التعلم العميق :األساسيات والمقدمات 204
يتطلب عدد من األسئلة الملحة اهتمامًا فوريًا .1 :كم عدد أمثلة االختبار التي نحتاجها لتقدير دقة
المصنفات الخاصة بنا على السكان األساسيين؟ .2ماذا يحدث إذا واصلنا تقييم النماذجيف نفس
االختبار بشكل متكرر؟ . 3لماذا يجب أن نتوقع أن مالءمة نماذجنا الخطية لمجموعة التدريب
يجب أن تكون أفضل من مخطط الحفظ الساذج لدينا؟
التعلم اإلحصائي .اتضح أنه يمكننايف كثير من األحيان ضمان التعميم بشكل مسبق :بالنسبة للعديد
من النماذج ،وألي حد أعلى مرغوب فيه على فجوة التعميم 𝜖 ،يمكننايف كثير من األحيان تحديد
عدد معين من العينات 𝑛 المطلوبة مثل إذا كانت مجموعة التدريب لدينا تحتوي على عينات 𝑛
على األقل ،ثم يقع خطأنا التجريبييف نطاق 𝜖 للخطأ الحقيقي ،ألي توزيع لتوليد البيانات data
.generating distributionلسوء الحظ ،اتضح أيضًا أنه بينما توفر هذه األنواع من الضمانات
مجموعة عميقة من اللبنات الفكرية ،إال أنها ذات فائدة عملية محدودة لممارسي التعلم العميق.
باختصار ،تشير هذه الضمانات إلى أن ضمان تعميم الشبكات العصبية العميقة بشكل مسبق
يتطلب عددًا سخيفًا من األمثلة (ربما تريليونات أو أكثر) ،حتى عندما نجد أنهيف المهام التي نهتم
بها تلك الشبكات العصبية العميقة عادةً ما يتم تعميمها جيدًا بشكل ملحوظ مع بعيد .عدد أقل
من األمثلة (باآلالف) .وبالتالي ،غالبًا ما يتخلى ممارسو التعلم العميق عن الضمانات المسبقة
تمامًا ،وبدالً من ذلك يستخدمون األساليب على أساس أنهم قد تعمموا جيدًا على مشكالت
مماثلةيف الماضي ،ويصادقون على التعميم بعد ذلك من خالل التقييمات التجريبية .عندما نصل
إلى القسم ،5سنعيد النظريف التعميم ونقدم مقدمة خفيفة لألدبيات العلمية الواسعة التي نشأت
في محاوالت لشرح سبب تعميم الشبكات العصبية العميقةيف الممارسة.
على النقيض من ذلك ،فإن الخطأ السكاني population errorهو الجزء المتوقع من األمثلة
في المجموعة األساسية (بعض التوزيعات )𝑌 𝑃(𝑋,التي تتميز بدالة كثافة االحتمال )𝑦 𝑝(𝐱,
التي ال يتفق المصنف لدينا مع التسمية الحقيقية :true label
بينما )𝑓(𝜖 هي الكمية التي نهتم بها بالفعل ،ال يمكننا مالحظتها مباشرة ،تمامًا كما ال يمكننا أن
نالحظ بشكل مباشر متوسط الطوليف عدد كبير من السكان دون قياس كل شخص .يمكننا فقط
التعمق في التعلم العميق :األساسيات والمقدمات 206
تقدير هذه الكمية بناءً على العينات .نظرًا ألن مجموعة االختبار 𝒟 الخاصة بنا ممثلة إحصائيًا
للسكان األساسيين ،فيمكننا عرض )𝑓( 𝒟𝜖 كمقدر إحصائي للخطأ السكاني )𝑓(𝜖 .عالوة على
ذلك ،نظرًا ألن كمية االهتمام )𝑓(𝜖 لدينا هي توقع (للمتغير العشوائي )𝑌 ≠ )𝑋(𝑓(𝟏) والمقدر
المقابل )𝑓( 𝒟𝜖 هو متوسط العينة ،فإن تقدير خطأ السكان هو ببساطة المشكلة الكالسيكية لتقدير
المتوسط ،والتي قد تتذكرها من القسم .2.6
هناك نتيجة كالسيكية مهمة من نظرية االحتماالت تسمى نظرية الحد المركزي central limit
theoremتضمن أنه كلما امتلكنا 𝑛 عينات عشوائية مأخوذة من أي توزيع بمتوسط 𝜇 وانحراف
^
معياري 𝜎 ،حيث يقترب عدد العينات 𝑛 من الالنهاية ،فإن متوسط العينة 𝜇 يميل تقريبًا نحو
التوزيع الطبيعي المتمحور حول الوسط الحقيقي واالنحراف المعياري 𝑛√ .𝜎/بالفعل ،هذا
يخبرنا بشيء مهم :مع تزايد عدد األمثلة ،يجب أن يقترب خطأ االختبار )𝑓( 𝒟𝜖 لدينا من الخطأ
الحقيقي )𝑓(𝜖 بمعدل )𝑛√ .𝒪(1/وبالتالي ،لتقدير خطأ االختبار لدينا مرتين بدقة ،يجب أن
نجمع مجموعة اختبار أكبر بأربعة أضعاف .لتقليل خطأ االختبار لدينا بعامل مائة ،يجب أن نجمع
مجموعة اختبار أكبر بعشرة آالف مرة .بشكل عام ،غالبًا ما يكون هذا المعدل )𝑛√ 𝒪(1/هو
أفضل ما يمكن أن نأملهيف اإلحصائيات.
اآلن بعد أن عرفنا شيئًا عن المعدل المقارب asymptotic rateالذي يتقارب عنده خطأ االختبار
)𝑓( 𝒟𝜖 لدينا مع الخطأ الحقيقي )𝑓(𝜖 ،يمكننا تكبير بعض التفاصيل المهمة .تذكر أن المتغير
العشوائي محل االهتمام )𝑌 ≠ )𝑋(𝑓(𝟏 يمكن أن يأخذ القيم 0و 1فقط ،وبالتالي فهو متغير
برنولي العشوائي ،Bernoulli random variableيتميز بمعامل يشير إلى احتمال أن يأخذ
قيمة .1هنا 1 ،يعني أن المصنف الخاص بنا قد ارتكب خطأ ،وبالتالي فإن معلمة متغيرنا
العشوائي هييف الواقع معدل الخطأ الحقيقي )𝑓(𝜖 .يعتمد تباين 𝜎 2برنولي على معاملته (هنا
)𝑓(𝜖) وفقًا للتعبير ))𝑓(𝜖 .𝜖(𝑓)(1 −بينما )𝑓(𝜖 غير معروفيف البداية ،نعلم أنه ال يمكن أن
يكون أكبر من .1يكشف القليل من االستقصاء عن هذه الدالة أن تبايننا يكون أعلى عندما يكون
معدل الخطأ الحقيقي قريبًا من 0ويمكن أن يكون أقل بكثير عندما يكون قريبًا من 0أو قريبًا من
.1يخبرنا هذا أن االنحراف المعياري المقارب لتقديرنا )𝑓( 𝒟𝜖 للخطأ )𝑓(𝜖 (على اختيار عينات
االختبار) ال يمكن أن يكون أكبر من 𝑛.√0.25/
إذا تجاهلنا حقيقة أن هذا المعدل يميز السلوك حيث يقترب حجم مجموعة االختبار من الالنهاية
وليس عندما نمتلك عينات محدودة ،فهذا يخبرنا أنه إذا أردنا أن يقترب خطأ االختبار )𝑓( 𝒟𝜖
الخاص بنا من الخطأ السكاني )𝑓(𝜖 بحيث يتوافق االنحراف المعياري مع فترة زمنية قدرها
،±0.01ثم يجب أن نجمع ما يقرب من 2500عينة .إذا أردنا احتواء انحرافين معياريينيف هذا
النطاق وبالتالي يكون ٪95من ذلك ،𝜖𝒟 (𝑓) ∈ 𝜖(𝑓) ± 0.01فسنحتاج إلى 10000عينة!
207 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
اتضح أن هذا هو حجم مجموعات االختبار للعديد من المعايير الشائعةيف التعلم اآللي .قد تندهش
عندما تكتشف أنه يتم نشر اآلالف من أوراق التعلم العميق التطبيقية كل عام مما يجعل قدرًا كبيرًا
من التحسيناتيف معدل الخطأ 0.01أو أقل .بالطبع ،عندما تكون معدالت الخطأ أقرب بكثير لـ
،0فإن تحسين 0.01يمكن أن يكون بالفعل مشكلة كبيرة.
إحدى السمات المزعجة لتحليلنا حتى اآلن هي أنه يخبرنا فقط عن التقارب ،asymptoticsأي
كيف تتطور العالقة بين 𝒟𝜖 و 𝜖 تتطور كحجم العينة وتذهب إلى ما ال نهاية .لحسن الحظ ،نظرًا
ألن متغيرنا العشوائي محدود ،يمكننا الحصول على حدود عينة محدودة صالحة من خالل تطبيق
متباينة طبقاً لـ :)1963( Hoeffding
إن حل أصغر حجم لمجموعة بيانات من شأنه أن يسمح لنا باالستنتاج بثقة ٪95أن المسافة 𝑡
بين تقديرنا )𝑓( 𝒟𝜖 ومعدل الخطأ الحقيقي )𝑓(𝜖 ال تتجاوز ،0.01ستجد أن األمثلة 15000
تقريبًا مطلوبة مقارنة باألمثلة 10000التي اقترحها التحليل المقارب أعاله .إذا تعمقتيف
اإلحصائيات ستجد أن هذا االتجاه ثابت بشكل عام .عادةً ما تكون الضمانات التي يتم االحتفاظ
بها حتىيف العينات المحدودة أكثر تحفظًا قليالً .الحظ أنهيف مخطط األشياء ،هذه األرقام ليست
متباعدة كثيرًا ،مما يعكس الفائدة العامة للتحليل المقارب إلعطائنا أرقام الملعب حتى لو لم يكن
هناك ضمانات يمكننا تقديمها إلى المحكمة.
فلنفترض أنك تأخذ هذه المعرفة وتستعد لتدريب نموذجك األول .𝑓1بمعرفة مدى الثقة التي
تحتاجها لتكون على ثقة من أداء معدل الخطأ الخاص بالمصنف ،يمكنك تطبيق تحليلنا أعاله
لتحديد عدد مناسب من األمثلة لتخصيصها لمجموعة االختبار .عالوة على ذلك ،لنفترض أنك
أخذت الدروس من القسم 3.6إلى القلب وتأكدت من الحفاظ على قدسية مجموعة االختبار
من خالل إجراء جميع تحليلك األولي ،وضبط المعلمة الفائقة ،وحتى االختيار من بين العديد
من هياكل النماذج المتنافسة على مجموعة التحقق من الصحة .أخيرًا تقوم بتقييم النموذج 𝑓1
الخاص بك على مجموعة االختبار واإلبالغ عن تقدير غير متحيز unbiased estimateلخطأ
السكان مع فاصل ثقة مرتبط.
التعمق في التعلم العميق :األساسيات والمقدمات 208
حتى اآلن يبدو أن كل شيء يسير على ما يرام .ومع ذلك،يف تلك الليلة ،تستيقظيف الثالثة صباحًا
بفكرة رائعة لنهج جديد للنمذجة.يف اليوم التالي ،تقوم بترميز نموذجك الجديد ،𝑓2وضبط
المعلمات الفائقة الخاصة به على مجموعة التحقق من الصحة ،validation setوال تجعل
نموذجك الجديد يعمل فحسب ،بل يبدو أن معدل الخطأ فيه أقل بكثير من معدل الخطأ للنموذج
األول .𝑓1ومع ذلك ،فإن إثارة االكتشاف تتالشى فجأة بينما تستعد للتقييم النهائي .ليس لديك
مجموعة اختبار!
على الرغم من أن مجموعة االختبار األصلية 𝒟 ال تزال موجودة على الخادم الخاص بك ،فإنك
تواجه اآلن مشكلتين هائلتين .أوالً ،عندما جمعت مجموعة االختبار الخاصة بك ،قمت بتحديد
مستوى الدقة المطلوب على افتراض أنك كنت تقيم مصنفًا واحدًا 𝑓 .ومع ذلك ،إذا دخلتيف
مجال تقييم المصنفات المتعددة 𝑘𝑓 𝑓1 , . . . ,يف نفس مجموعة االختبار ،فيجب أن تفكريف مشكلة
االكتشاف الخاطئ .من قبل ،ربما كنت متأكدًا بنسبة ٪95من أنه 𝜖𝒟 (𝑓) ∈ 𝜖(𝑓) ± 0.01
بالنسبة لمصنف واحد 𝑓 ،وبالتالي فإن احتمال وجود نتيجة مضللة كان ٪5فقط .مع وجود 𝑘
من المصنفاتيف المزيج ،قد يكون من الصعب ضمان عدم وجود حتى واحد منهم يكون أداء
مجموعة االختبار مضلالً .مع وجود 20مصنفًا قيد الدراسة ،قد ال يكون لديك أي سلطة على
اإلطالق الستبعاد احتمال حصول واحد منهم على األقل على درجة مضللة .تتعلق هذه المشكلة
باختبار الفرضيات المتعددة ،multiple hypothesis testingوالتي على الرغم من األدبيات
الكثيرةيف اإلحصاء ،ال تزال مشكلة مستمرة تعصف بالبحث العلمي.
إذا لم يكن ذلك كافيًا للقلق ،فهناك سبب خاص لعدم الثقةيف النتائج التي تحصل عليهايف
التقييمات الالحقة .تذكر أن تحليلنا ألداء مجموعة االختبار استند إلى افتراض أن المصنف قد
تم اختياره بدون أي اتصال بمجموعة االختبار ،وبالتالي يمكننا عرض مجموعة االختبار على أنها
مستمدة عشوائيًا من السكان األساسيين .هنا ،ال تختبر دوال متعددة فحسب ،بل تم اختيار الدالة
الالحقة 𝑓2بعد مالحظة أداء مجموعة االختبار لـ .𝑓1بمجرد تسرب المعلومات من مجموعة
االختبار إلى مصمم النماذج ،ال يمكن أن تكون مجموعة اختبار حقيقية مرة أخرى بالمعنى الدقيق
للكلمة .تسمى هذه المشكلة فرط التجهيز التكيفي ،adaptive overfittingوقد ظهرت مؤخرًا
كموضوع يثير اهتمامًا شديدًا لمنظري التعلم واإلحصائيين ( .)2015 ،Dwork et al.لحسن
الحظ،يف حين أنه من الممكن تسريب جميع المعلومات من مجموعة االنتظار ،holdout set
والسيناريوهات النظرية لألسوأ قاتمة ،فقد تكون هذه التحليالت متحفظة للغاية .من الناحية
العملية ،احرص على إنشاء مجموعات اختبار حقيقية ،واستشرها بشكل غير متكرر قدر اإلمكان،
ولمراعاة اختبار الفرضيات المتعددة عند اإلبالغ عن فترات الثقة ،ولزيادة يقظتك بشكل أكثر
قوة عندما تكون المخاطر عالية وحجم مجموعة البيانات الخاصة بك صغيرًا .عند تشغيل سلسلة
من التحديات المعيارية ،غالبًا ما يكون من الممارسات الجيدة االحتفاظ بالعديد من مجموعات
209 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
االختبار بحيث يمكن بعد كل جولة تخفيض مجموعة االختبار القديمة إلى مجموعة التحقق من
الصحة.
مع وضع هذه الهواجسيف االعتبار ،قد تكون اآلن مستعدًا بشكل كافٍ لرؤية جاذبية نظرية التعلم
اإلحصائي ،statistical learningالحقل الفرعي الرياضي للتعلم اآللي الذي يهدف ممارسوه
إلى توضيح المبادئ األساسية التي تشرح لماذا /متى يمكن للنماذج المدربة على البيانات
التجريبية التعميم على بيانات غير مرئية .unseen dataكان أحد األهداف األساسية لعدة عقود
من الباحثينيف التعلم اإلحصائي هو تقييد فجوة التعميم ،generalization gapفيما يتعلق
بخصائص فئة النموذج ،وعدد العيناتيف مجموعة البيانات.
يهدف منظرو التعلم Learning theoristsإلى ربط الفرق بين الخطأ التجريبي ) 𝒮𝑓( 𝒮𝜖
للمصنف المتعلم 𝒮𝑓 ،سواء تم تدريبه أو تقييمه على مجموعة التدريب 𝒮 ،والخطأ الحقيقي
لنفس المصنف على السكان األساسيين .قد يبدو هذا مشابهًا لمشكلة التقييم التي تناولناها للتو
ولكن هناك فرق كبير .من قبل ،تم إصالح المصنف وكنا بحاجة إلى مجموعة بيانات فقط
ألغراض التقييم .وبالفعل ،فإن أي مصنف ثابت 𝑓 ال يعمم :خطأهيف مجموعة بيانات (غير مرئية
سابقًا) هو تقدير غير متحيز لخطأ السكان .ولكن ماذا يمكننا أن نقول عندما يتم تدريب المصنف
وتقييمه على نفس مجموعة البيانات؟ هل يمكننا أن نكون على ثقة من أن خطأ التدريب سيكون
قريبًا من خطأ االختبار؟
افترض أنه يجب اختيار المصنف 𝒮𝑓 الذي تعلمناه من بين مجموعة دوال محددة مسبقًا .ℱتذكر
من مناقشتنا لمجموعات االختبار أنهيف حين أنه من السهل تقدير خطأ مصنف واحد ،فإن األشياء
تصبح صعبة عندما نبدأيف التفكيريف مجموعات المصنفات .حتى إذا كان الخطأ التجريبي ألي
مصنف واحد (ثابت) قريبًا من خطأه الحقيقي مع احتمال كبير ،بمجرد أن نفكريف مجموعة من
المصنفات ،نحتاج إلى القلق بشأن احتمال أن يتلقى مصنف واحد فقطيف المجموعة خطاً سيئًا
التعمق في التعلم العميق :األساسيات والمقدمات 210
في التقدير خطأ .القلق هو أنه إذا تلقى مصنف واحد فقطيف مجموعتنا خطأ منخفضًا مضللًا،
فقد نختاره وبالتالي نقلل بشكل كبير من الخطأ السكاني .عالوة على ذلك ،حتى بالنسبة للنماذج
الخطية ،نظرًا لتقييم معلماتها باستمرار ،فإننا نختار عادةً من بين فئة ال حصر لها من الدوال
(∞ = |.)|ℱ
يتمثل أحد الحلول الطموحة للمشكلةيف تطوير أدوات تحليلية إلثبات التقارب المنتظم
،uniform convergenceأي أنه مع وجود احتمال كبير ،فإن معدل الخطأ التجريبي لكل
مصنفيف الفئة 𝑓 ∈ ℱسوف يتقاربيف نفس الوقت مع معدل الخطأ الحقيقي .بعبارة أخرى،
نسعى إلى مبدأ نظري من شأنه أن يسمح لنا أن نذكر أنه مع وجود احتمال على األقل 𝛿 1 −
(بالنسبة للبعض الصغير 𝛿) ،لن يتم تقدير معدل خطأ المصنف )𝑓(𝜖 (من بين جميع المصنفات
في الفئة )ℱبأكثر من مقدار ضئيل 𝛼 .من الواضح أنه ال يمكننا إصدار مثل هذه العبارات لجميع
فئات النموذج .ℱتذكر فئة آالت الحفظ التي تحقق دائمًا خطأ تجريبيًا ولكنها ال تتفوق أبدًا على
التخمين العشوائي على المجتمع األساسي.
بمعنى أن طبقة الحفظ مرنة للغاية .ال يمكن لنتيجة تقارب موحدة كهذه أن تصمد .من ناحية
أخرى ،المصنف الثابت عديم الفائدة -فهو معمم تمامًا ،لكنه ال يناسب بيانات التدريب وال
بيانات االختبار .وهكذا تم تأطير السؤال المركزي للتعلم تاريخيًا كمقايضة بين فئات نموذج أكثر
مرونة (تباين أعلى) تتالءم بشكل أفضل مع بيانات التدريب ولكنها تنطوي على مخاطر أكثر من
الالزم ،مقابل فئات نموذجية أكثر صرامة (تحيز أعلى) تتعمم جيدًا ولكنها تنطوي على مخاطر
غير مناسبة .كان السؤال المركزييف نظرية التعلم هو تطوير التحليل الرياضي المناسب لتحديد
مكان وجود نموذج على طول هذا الطيف ،وتقديم الضمانات المرتبطة به.
في سلسلة من األوراق البحثية األساسية ،وسع فابنيك وشيرفونينكيس نظرية تقارب الترددات
النسبية إلى فئات دوال أكثر عمومية (Vapnik ، 1964 ، Vapnik and Chervonenkis
Vapnik and ، 1971 ، Vapnik and Chervonenkis ، 1968 ، and Chervonenkis
Vapnik and ، 1991 ،Vapnik and Chervonenkis ، 1981 ، Chervonenkis
.)1974 ،Chervonenkisأحد المساهمات الرئيسية لهذا النوع من العمل هو بُعد Vapnik-
) ،Chervonenkis (VCوالذي يقيس (فكرة واحدة عن) مدى تعقيد (المرونة) لفئة النموذج.
عالوة على ذلك ،فإن إحدى نتائجهم الرئيسية تحدد الفرق بين الخطأ التجريبي وخطأ السكان
كدالة لبعد VCوعدد العينات:
𝛿 > 0هو احتمال انتهاك الحد ،و 𝛼 هو الحد األعلى لفجوة التعميم ،و𝑛 هو حجم مجموعة
البيانات .أخيرًا 𝑐 > 0،هو ثابت يعتمد فقط على حجم الخسارة التي يمكن تكبدها .قد يكون
أحد استخدامات الحد هو توصيل القيم المرغوبة لـ 𝛿 و 𝛼 وتحديد عدد العينات المراد جمعها.
يحدد بُعد VCأكبر عدد من نقاط البيانات التي يمكننا تعيين أي تصنيف عشوائي (ثنائي) لها
ولكل منها تجد نموذجًا 𝑓 مايف الفئة يتوافق مع هذا التصنيف .على سبيل المثال ،النماذج الخطية
على المدخالت ذات األبعاد لها أبعاد 𝑑 .VCمن السهل مالحظة أن الخط يمكنه تعيين أي
تصنيف ممكن لثالث نقاطيف بعدين ،ولكن ليس ألربع .لسوء الحظ ،تميل النظرية إلى التشاؤم
المفرط بالنسبة للنماذج األكثر تعقيدًا والحصول على هذا الضمان يتطلب عادةً أمثلة أكثر بكثير
مما هو مطلوب بالفعل لتحقيق معدل الخطأ المطلوب .الحظ أيضًا أن تحديد فئة النموذج و 𝛿 .
معدل الخطأ لدينا يتحلل مرة أخرى مع المعدل المعتاد )𝑛√ .𝒪(1/يبدو من غير المحتمل أن
نتمكن من القيام بعمل أفضل من حيث .ومع ذلك ،نظرًا ألننا نغير فئة النموذج ،يمكن أن يقدم
بُعد VCصورة متشائمة لفجوة التعميم.
4.6.4
الطريقة األكثر مباشرة لتقييم النموذج هي الرجوع إلى مجموعة اختبار تتألف من بيانات غير
مرئية من قبل .توفر تقييمات مجموعة االختبار تقديرًا غير متحيز للخطأ الحقيقي وتتقارب مع
المعدل المطلوب )𝑛√ 𝒪(1/مع نمو مجموعة االختبار .يمكننا تقديم فترات ثقة تقريبية بناءً
على توزيعات مقاربة دقيقة أو فترات ثقة محدودة صالحة للعينة بناءً على ضمانات عينة محدودة
(أكثر تحفظًا) .إن تقييم مجموعة االختباراتيف الواقع هو حجر األساس ألبحاث التعلم اآللي
الحديثة .ومع ذلك ،نادرًا ما تكون مجموعات االختبار مجموعات اختبار حقيقية (يستخدمها
باحثون متعددون مرارًا وتكرارًا) .بمجرد استخدام نفس مجموعة االختبار لتقييم نماذج متعددة،
قد يكون من الصعب التحكميف االكتشاف الخاطئ .هذا يمكن أن يسبب مشاكل ضخمة من
الناحية النظرية .من الناحية العملية ،تعتمد أهمية المشكلة على حجم مجموعات االنتظار المعنية
وما إذا كانت تستخدم فقط الختيار المعلمات الفائقة أو ما إذا كانت تقوم بتسريب المعلومات
بشكل مباشر أكثر .ومع ذلك ،فمن الممارسات الجيدة تنظيم مجموعات اختبار حقيقية (أو
متعددة) وأن تكون متحفظًا قدر اإلمكان بشأن عدد مرات استخدامها.
على أمل تقديم حل أكثر إرضاءً ،طور منظرو التعلم اإلحصائي طرقًا لضمان التقارب المنتظم
على فئة النموذج .إذا اقترب خطأ تجريبي لكل نموذج بالفعل مع خطأه الحقيقييف وقت واحد،
فعندئذٍ لنا الحريةيف اختيار النموذج األفضل أداءً ،وتقليل خطأ التدريب ،مع العلم أنه سيؤدي
أيضًا أداءً جيدًا بالمثل على بيانات االنتظار .بشكل حاسم ،يجب أن تعتمد أي من هذه النتائج
على بعض خصائص فئة النموذج .قدم فالديمير فابنيك وأليكسي تشيرنوفينكيس بُعد ،VC
وقدموا نتائج تقارب موحدة تنطبق على جميع الطرزيف فئة .VCإن أخطاء التدريب لجميع
التعمق في التعلم العميق :األساسيات والمقدمات 212
النماذجيف الفصل مضمونة (في نفس الوقت) لتكون قريبة من أخطائهم الحقيقية ،ومضمونة
لتقترب من معدالتها )𝑛√ .𝒪(1/بعد االكتشاف الثوري لبعد ،VCتم اقتراح العديد من تدابير
التعقيد البديلة ،كل منها يسهل ضمان التعميم المماثل .analogous generalizationانظر
)2005( .Boucheron et alلمناقشة تفصيلية للعديد من الطرق المتقدمة لقياس تعقيد الدالة.
لسوء الحظ ،بينما أصبحت مقاييس التعقيد هذه أدوات مفيدة على نطاق واسعيف النظرية
اإلحصائية ،فقد تبين أنها عاجزة (كما تم تطبيقها بشكل مباشر) لشرح سبب تعميم الشبكات
العصبية العميقة .غالبًا ما تحتوي الشبكات العصبية العميقة على ماليين المعلمات (أو أكثر)،
ويمكنها بسهولة تعيين تسميات عشوائية لمجموعات كبيرة من النقاط .ومع ذلك ،فإنها تعمم
جيدًا على المشكالت العملية ،ومن المدهش أنها غالبًا ما تعمم بشكل أفضل ،عندما تكون أكبر
وأعمق ،على الرغم من تكبدها أبعادًا أكبر لـ .VCيف الفصل التالي ،سوف نعيد النظريف التعميميف
سياق التعلم العميق.
4.6.5
.1إذا كنا نرغبيف تقدير الخطأ لنموذج ثابت 𝑓 مع 0.0001واحتمال أكبر من ،٪99.9
فكم عدد العينات التي نحتاجها؟
.2افترض أن شخصًا آخر يمتلك مجموعة اختبار معنونة 𝒟 وال يوفر سوى المدخالت
(الميزات) غير المسماة .unlabeledافترض اآلن أنه ال يمكنك الوصول إلى تسميات
مجموعة االختبار إال عن طريق تشغيل نموذج 𝑓 (ال توجد قيود مفروضة على فئة
النموذج) على كل من المدخالت غير المسماة وتلقي الخطأ المقابل )𝑓( 𝒟𝜖 .كم عدد
النماذج التي تحتاج إلى تقييمها قبل تسريب مجموعة االختبار بأكملها وبالتالي قد
يبدو أنها تحتوي على خطأ ،0بغض النظر عن خطأك الحقيقي؟
الخامسة الدرجة من الحدود كثيرات لفئة VC بُعد هو .3ما
5؟ th
-order polynomials
.4ما هو بُعد VCللمستطيالت المحاذية للمحور axis-aligned rectanglesفي
البيانات ثنائية األبعاد؟
يمكن إرجاع العديد من عمليات نشر التعلم اآللي الفاشلة إلى هذا النمط.يف بعض األحيان ،يبدو
أن النماذج تعمل بشكل رائع كما تم قياسها من خالل دقة مجموعة االختبار ولكنها تفشل بشكل
كارثييف النشر عندما يتغير توزيع البيانات فجأة .بشكل أكثر مكرًا،يف بعض األحيان ،يمكن أن
يكون نشر نموذج ما هو العامل المحفز الذي يزعج توزيع البيانات .لنفترض ،على سبيل المثال،
أننا دربنا نموذجًا للتنبؤ بمن سيسدد مقابل التخلف عن سداد القرض ،ووجدنا أن اختيار مقدم
الطلب لألحذية كان مرتبطًا بمخاطر التخلف عن السداد (تشير أوكسفورد إلى السداد ،وتشير
األحذية الرياضية إلى التقصير) .قد نميل بعد ذلك إلى منح قروض لجميع المتقدمين الذين
يرتدون أحذية أوكسفورد ورفض ارتداء جميع المتقدمين لألحذية الرياضية.
في هذه الحالة ،قد يكون لقفزة غير مدروسة من التعرف على األنماط إلى اتخاذ القرار وفشلنايف
التفكير النقدييف البيئة عواقب وخيمة .بالنسبة للمبتدئين ،بمجرد أن بدأنايف اتخاذ القرارات بناءً
على األحذية ،سيتعرف العمالء على سلوكهم ويغيرونه .قبل مضي وقت طويل ،كان جميع
المتقدمين يرتدون أحذية أوكسفورد ،دون أي تحسن متزامنيف الجدارة االئتمانية .يستغرق األمر
دقيقة الستيعاب هذا ألن مشكالت مماثلة تكثريف العديد من تطبيقات التعلم اآللي :من خالل
تقديم قراراتنا المستندة إلى النموذج للبيئة ،قد نكسر النموذج.
بينما ال يمكننا إعطاء هذه الموضوعات معالجة كاملةيف قسم واحد ،فإننا نهدف هنا إلى الكشف
عن بعض االهتمامات المشتركة ،وتحفيز التفكير النقدي المطلوب الكتشاف هذه المواقف
مبكرًا ،وتخفيف الضرر ،واستخدام التعلم اآللي بمسؤولية .بعض الحلول بسيطة (اسأل عن
البيانات "الصحيحة") ،وبعضها صعب تقنيًا (تنفيذ نظام التعلم المعزز reinforcement
،)learning systemوالبعض اآلخر يتطلب أن نتخطى مجال التنبؤ اإلحصائي تمامًا ونكافح
األسئلة الفلسفية الصعبة المتعلقة باألخالق .تطبيق الخوارزميات.
النظريف مشكلة التصنيف الثنائي ،binary classification problemحيث نرغبيف التمييز بين
الكالب والقطط .إذا كان التوزيع يمكن أن يتغير بطرق عشوائية ،فإن إعدادنا يسمح بالحالة
المرضية التي يظل فيها التوزيع على المدخالت ثابتًا 𝑝𝑆 (𝐱) = 𝑝𝑇 (𝐱) :ولكن جميع التسميات
التعمق في التعلم العميق :األساسيات والمقدمات 214
مقلوبة .𝑝𝑆 (𝑦 ∣ 𝐱) = 1 − 𝑝𝑇 (𝑦 ∣ 𝐱) :بعبارة أخرى ،إذا استطاع الله أن يقرر فجأة أن كل
"القطط" أصبحت اآلن كالبًا وأن ما نطلق عليه سابقًا "كالب" أصبح اآلن قططًا -دون أي تغيير
في توزيع المدخالت )𝐱(𝑝 ،فال يمكننا تمييز هذا اإلعداد عن واحد التي لم يتغير فيها التوزيع
على اإلطالق.
لحسن الحظ،يف ظل بعض االفتراضات المقيدة حول الطرق التي قد تتغير بها بياناتنايف المستقبل،
يمكن للخوارزميات المبدئية أن تكتشف التحول shiftوأحيانًا تتكيف بشكل سريع ،مما يحسن
دقة المصنف األصلي.
ضعيف اعتبارك التحدي المتمثليف التمييز بين القطط والكالب .قد تتكون بيانات التدريب
الخاصة بنا من صور من النوع الموضحيف الشكل .4.7.1
تتكون مجموعة التدريب من صور ،photosبينما تحتوي مجموعة االختبار على رسوم متحركة
cartoonsفقط .يمكن أن يؤدي التدريب على مجموعة بيانات ذات خصائص مختلفة إلى حد
كبير عن مجموعة االختبار إلى حدوث مشكلةيف غياب خطة متماسكة لكيفية التكيف مع المجال
الجديد.
إذا أردنا بناء نظام ترجمة آلية ،machine translation systemفقد يختلف التوزيع ∣ 𝑦(𝑃
)𝐱 حسب موقعنا .قد يكون من الصعب اكتشاف هذه المشكلة .قد نأمليف استغالل المعرفة التي
ال تحدث إال بشكل تدريجي إما بالمعنى الزمني أو الجغرافي.
التعمق في التعلم العميق :األساسيات والمقدمات 216
قد تختلف التوزيعات التي أدت إلى بيانات التدريب وتلك التي ستواجههايف البرية اختالفًا كبيرًا.
حدث هذا لشركة ناشئة مؤسفة عمل معها بعضنا (المؤلفون) منذ سنوات .كانوا يطورون اختبارًا
للدم لمرض يصيبيف الغالب كبار السن من الرجال ويأملونيف دراسته باستخدام عينات الدم التي
جمعوها من المرضى .ومع ذلك ،فإن الحصول على عينات دم من الرجال األصحاء أكثر صعوبة
بكثير من المرضى الموجودين بالفعليف النظام .للتعويض ،طلبت الشركة الناشئة التبرع بالدم من
الطالبيف الحرم الجامعي لتكون بمثابة ضوابط صحيةيف تطوير اختباراتهم .ثم سألوا عما إذا كان
بإمكاننا مساعدتهميف بناء مصنف الكتشاف المرض.
كما أوضحنا لهم ،سيكون من السهل بالفعل التمييز بين األفواج الصحية والمريضة بدقة شبه
كاملة .ومع ذلك ،هذا ألن األشخاص الخاضعين لالختبار اختلفوايف العمر ومستويات الهرمونات
والنشاط البدني والنظام الغذائي واستهالك الكحول والعديد من العوامل األخرى غير المرتبطة
217 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
بالمرض .لم يكن هذا هو الحال مع المرضى الحقيقيين .نظرًا إلجراءات أخذ العينات الخاصة
بهم ،يمكننا أن نتوقع مواجهة تحول متغير شديد .عالوة على ذلك ،من غير المحتمل أن تكون
هذه الحالة قابلة للتصحيح بالطرق التقليدية .باختصار ،لقد أهدروا مبلغًا كبيرًا من المال.
حدث شيء مشابه للجيش األمريكي عندما حاولوا اكتشاف الدباباتيف الغابة ألول مرة .التقطوا
صورًا جوية للغابة بدون دبابات ،ثم قادوا الدبابات إلى الغابة والتقطوا مجموعة أخرى من الصور.
يبدو أن المصنف يعمل بشكل مثالي .لسوء الحظ ،فقد تعلمت فقط كيفية التمييز بين األشجار
ذات الظالل من األشجار التي ليس لها ظالل -تم التقاط المجموعة األولى من الصوريف الصباح
الباكر ،والمجموعة الثانية عند الظهر.
نقوم بتدريب نموذج إعالن حسابي ثم نفشليف تحديثه بشكل متكرر (على سبيل •
المثال ،ننسى أن ندمج جهازًا جديدًا غامضًا يسمى iPadتم إطالقه للتو).
نحن نبني عامل تصفية البريد العشوائي .spam filterإنه يعمل جيدًايف اكتشاف جميع •
الرسائل غير المرغوب فيها التي رأيناها حتى اآلن .ولكن بعد ذلك ،يستيقظ مرسلو
البريد العشوائي ويصنعون رسائل جديدة تبدو مختلفة عن أي شيء رأيناه من قبل.
نحن نبني نظام توصية المنتج .product recommendation systemإنه يعمل •
طوال فصل الشتاء ولكنه يستمر بعد ذلكيف التوصية بقبعات سانتا لفترة طويلة بعد عيد
الميالد.
التعمق في التعلم العميق :األساسيات والمقدمات 218
حيث 𝑙 هي دالة الخطأ التي تقيس "مدى سوء" التنبؤ ) 𝑖𝐱(𝑓 الذي يُعطى التسمية المرتبطة به 𝑖𝑦.
يسمي اإلحصائيون المصطلحيف ( )4.7.1الخطر التجريبية .empirical riskالخطر التجريبي
هو متوسط الخطأ على بيانات التدريب لتقريب الخطر ،وهو توقع الخسارة على مجموعة البيانات
بأكملها المستمدة من توزيعها الحقيقي )𝑦 :𝑝(𝐱,
ومع ذلك ،من الناحية العملية ،ال يمكننا عادةً الحصول على مجموعة البيانات بالكامل .وبالتالي،
فإن تقليل الخطر التجريبي ،empirical risk minimizationوالذي يقلل من المخاطر
التجريبيةيف ( ،)4.7.1هو استراتيجية عملية للتعلم اآللي ،على أمل التقريب من تقليل المخاطر.
)𝐱(𝑝
)𝐱(𝑞)𝐱 ∣ 𝑦(𝑞)𝑦 ∫ ∫ 𝑙(𝑓(𝐱), 𝑦)𝑝(𝑦 ∣ 𝐱)𝑝(𝐱)𝑑𝐱𝑑𝑦 = ∫ ∫ 𝑙(𝑓(𝐱), 𝑑𝐱𝑑𝑦.
)𝐱(𝑞
بعبارة أخرى ،نحتاج إلى إعادة وزن reweighكل مثال من البيانات بنسبة احتمالية استخالصه
من التوزيع الصحيح إلى التوزيع الخطأ:
def ) 𝑖 𝐱(𝑝
= 𝑖𝛽 .
) 𝑖 𝐱(𝑞
بتوصيل الوزن 𝑖𝛽 لكل مثال بيانات ) 𝑖𝑦 (𝐱 𝑖 ,يمكننا تدريب نموذجنا باستخدام تقليل المخاطر
التجريبية الموزونة :weighted empirical risk minimization
𝑛
1
∑ minimize 𝛽𝑖 𝑙(𝑓(𝐱𝑖 ), 𝑦𝑖 ).
𝑓 𝑛
𝑖=1
لألسف ،ال نعرف هذه النسبة ،لذا قبل أن نتمكن من فعل أي شيء مفيد نحتاج إلى تقديرها.
تتوفر العديد من الطرق ،بمايف ذلك بعض األساليب النظرية المشغلة التي تحاول إعادة معايرة
عامل التوقع مباشرة باستخدام الحد األدنى من المعايير أو الحد األقصى لمبدأ االنتروبيا .الحظ
أنه ألي نهج من هذا القبيل ،نحتاج إلى عينات مأخوذة من كال التوزيعين " -صحيح" 𝑝 ،على
سبيل المثال ،من خالل الوصول إلى بيانات االختبار ،وتلك المستخدمة إلنشاء مجموعة التدريب
𝑞 (األخير متاح بشكل ضئيل) .الحظ مع ذلك ،أننا نحتاج فقط إلى ميزات )𝐱(𝑝 ∼ 𝐱؛ ال نحتاج
للوصول إلى التسميات )𝑦(𝑝 ∼ 𝑦.
في هذه الحالة ،يوجد نهج فعال للغاية سيعطي نتائج جيدة تقريبًا مثل األصل :االنحدار اللوجستي
،logistic regressionوهو حالة خاصة من انحدار ( softmaxانظر القسم )4.1للتصنيف
الثنائي .هذا هو كل ما هو مطلوب لحساب نسب االحتمال المقدرة .نتعلم المصنف للتمييز بين
التعمق في التعلم العميق :األساسيات والمقدمات 220
البيانات المستمدة من )𝐱(𝑝 والبيانات المستمدة من )𝐱(𝑞 .إذا كان من المستحيل التمييز بين
التوزيعين ،فهذا يعني أن الحاالت المرتبطة من المرجح أن تأتي من أحد التوزيعين .من ناحية
أخرى ،فإن أي حاالت يمكن تمييزها بشكل جيد يجب أن يكون لها وزن زائد أو ناقص بشكل
كبير وفقًا لذلك.
من أجل التبسيط ،افترض أن لدينا عددًا متساويًا من المثيالت من كال التوزيعين )𝐱(𝑝 و)𝐱(𝑞
على التوالي .قم اآلن باإلشارة إلى التسميات 𝑧 الى 1للبيانات المستمدة من 𝑝 للبيانات المستمدة
من 𝑞 .ثم يتم إعطاء االحتماليف مجموعة بيانات مختلطة بواسطة
نتيجة لذلك ،نحتاج إلى حل مشكلتين :األولى للتمييز بين البيانات المستمدة من كال التوزيعين،
ثم مشكلة تقليل المخاطر التجريبية الموزونةيف ( )4.7.5حيث نزن المصطلحات حسب 𝑖𝛽.
اآلن نحن جاهزون لوصف خوارزمية التصحيح .افترض أن لدينا مجموعة تدريب
}) 𝑛𝑦 {(𝐱1 , 𝑦1 ), … , (𝐱𝑛 ,ومجموعة اختبار غير مسماة } 𝑚𝐮 .{𝐮1 , … ,بالنسبة إلى تحول
المتغير ،covariate shiftنفترض أن يتم استخالص 𝑖𝐱 لكل من 𝑛 ≤ 𝑖 ≤ 1بعض توزيعات
المصدر و 𝑖𝐮 لكل 𝑚 ≤ 𝑖 ≤ 1مستمدون من التوزيع المستهدف .فيما يلي خوارزمية نموذجية
لتصحيح التحول المتغير:
.2تدريب مصنف ثنائي باستخدام االنحدار اللوجستي للحصول على دالة .ℎ
.3وزن بيانات التدريب باستخدام )) 𝑖𝐱( 𝛽𝑖 = exp (ℎأو أفضل = 𝑖𝛽
)𝑐 𝑚𝑖𝑛(exp (ℎ(𝐱𝑖 )),لبعض ثابت 𝑐.
.4استخدام األوزان 𝑖𝛽 للتدريب على }) 𝑛𝑦 {(𝐱1 , 𝑦1 ), … , (𝐱𝑛 ,يف (.)4.7.5
الحظ أن الخوارزمية أعاله تعتمد على افتراض حاسم .لكي يعمل هذا المخطط ،نحتاج إلى أن
يكون لكل مثال بياناتيف الهدف (على سبيل المثال ،وقت االختبار) احتمالية غير صفرية
221 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
لحدوثهايف وقت التدريب .إذا وجدنا نقطة حيث 𝑝(𝐱) > 0ولكن ، 𝑞(𝐱) = 0فإن وزن
األهمية المقابل يجب أن يكون النهائي.
)𝑦(𝑝
)𝑦(𝑞)𝑦 ∣ 𝐱(𝑞)𝑦 ∫ ∫ 𝑙(𝑓(𝐱), 𝑦)𝑝(𝐱 ∣ 𝑦)𝑝(𝑦)𝑑𝐱𝑑𝑦 = ∫ ∫ 𝑙(𝑓(𝐱), 𝑑𝐱𝑑𝑦.
)𝑦(𝑞
هنا ،سوف تتوافق أوزان األهمية الخاصة بنا مع نسب احتمالية التسمية
def ) 𝑖𝑦(𝑝
= 𝑖𝛽 .
) 𝑖𝑦(𝑞
أحد األشياء اللطيفة حول تحول التسمية label shiftهو أنه إذا كان لدينا نموذج جيد بشكل
معقول لتوزيع المصدر ،فيمكننا الحصول على تقديرات متسقة لهذه األوزان دون الحاجة إلى
التعامل مع البعد المحيط.يف التعلم العميق ،تميل المدخالت إلى أن تكون كائنات عالية األبعاد
مثل الصور،يف حين أن التسميات غالبًا ما تكون كائنات أبسط مثل الفئات.
لتقدير توزيع التسمية المستهدف ،نأخذ أوالً المصنف الجيد الجاهز لدينا (عادةً ما يتم تدريبه
على بيانات التدريب) ونحسب مصفوفة االرتباك confusion matrixالخاصة به باستخدام
مجموعة التحقق من الصحة (أيضًا من توزيع التدريب) .مصفوفة االرتباك ( confusion
،𝐂 )matrixهي مجرد مصفوفة ،حيث يتوافق كل عمود مع فئة التسمية (الحقيقة األساسية)
ويتوافق كل صف مع الفئة المتوقعة لنموذجنا .تمثل قيمة كل خلية 𝑗𝑖𝑐 جزءًا من إجمالي التوقعات
في مجموعة التحقق حيث كان التسمية الحقيقية كانت 𝑗 وتوقع نموذجنا 𝑖.
اآلن ،ال يمكننا حساب مصفوفة االرتباك على البيانات الهدف مباشرةً ،ألننا ال نرى تسميات
األمثلة التي نراهايف البرية ،إال إذا استثمرنايف خط أنابيب معقد للتعليقات التوضيحيةيف الوقت
الفعلي .ومع ذلك ،ما يمكننا القيام به هو متوسط جميع تنبؤاتنايف وقت االختبار معًا ،مما يؤدي
^ ^
إلى متوسط مخرجات النموذج 𝑘 𝜇(𝐲) ∈ ℝالذي 𝑖 thعنصر ) 𝑖𝑦(𝜇 هو جزء من التوقعات
اإلجماليةيف مجموعة االختبار حيث توقع نموذجنا.
التعمق في التعلم العميق :األساسيات والمقدمات 222
اتضح أنهيف ظل بعض الظروف المعتدلة -إذا كان المصنف لدينا دقيقًا بشكل معقوليف المقام
األول ،وإذا كانت البيانات المستهدفة تحتوي فقط على الفئات التي رأيناها من قبل ،وإذا كان
افتراض تحول التسمية ثابتًايف المقام األول (أقوى افتراض هنا) ،ثم يمكننا تقدير توزيع تسمية
مجموعة االختبار عن طريق حل نظام خطي بسيط
^
𝐂𝑝(𝐲) = 𝜇(𝐲),
^
∑𝑘𝑗=1يحمل لكل 𝑘 ≤ 𝑖 ≤ ، 1حيث ) 𝑗𝑦(𝑝 هو ألنه كتقدير ) 𝑖𝑦(𝜇 = ) 𝑗𝑦(𝑝 𝑗𝑖𝑐
𝑗 thعنصر متجه توزيع التسمية ذي 𝑘أبعاد )𝐲(𝑝 .إذا كان المصنف لدينا دقيقًا بما يكفي لتبدأ به،
^
فستكون مصفوفة االرتباك 𝐂 قابلة للعكس ،وسنحصل على حل )𝐲(𝜇 𝑝(𝐲) = 𝐂 −1
نظرًا ألننا نالحظ التسميات على بيانات المصدر ،فمن السهل تقدير التوزيع )𝑦(𝑞 .ثم بالنسبة
ألي مثال تدريبي 𝑖 مع التسمية 𝑖𝑦 ،يمكننا أن نأخذ النسبة المقدرة لدينا ) 𝑖𝑦(𝑞 𝑝(𝑦𝑖 )/لحساب
الوزن 𝑖𝛽 ،ونعوض هذايف تقليل المخاطر التجريبية الموزونةيف (.)4.7.5
في اإلعالنات الحاسوبية ،يتم إطالق منتجات جديدة ،وتصبح المنتجات القديمة أقل •
شعبية .هذا يعني أن التوزيع على اإلعالنات وشعبيتها يتغيران تدريجيًا وأي متنبئ بنسبة
النقر إلى الظهور يجب أن يتغير تدريجيًا معه.
تتدهور عدسات كاميرات المرور تدريجيًا بسبب التآ كل البيئي ،مما يؤثر على جودة •
الصورة بشكل تدريجي.
يتغير محتوى األخبار تدريجيًا (على سبيل المثال ،تظل معظم األخبار دون تغيير ولكن •
تظهر قصص جديدة).
في مثل هذه الحاالت ،يمكننا استخدام نفس النهج الذي استخدمناه لشبكات التدريب لجعلها
تتكيف مع التغييريف البيانات .بمعنى آخر ،نستخدم أوزان الشبكة الحالية ونقوم ببساطة ببعض
خطوات التحديث باستخدام البيانات الجديدة بدالً من التدريب من البداية.
223 الفصل الرابع :الشبكات العصبية الخطية للتصنيف
Bandits 4.7.4.3
Banditsهي حالة خاصة للمشكلة المذكورة أعاله .بينمايف معظم مشاكل التعلم لدينا دالة 𝑓ذات
معلمات باستمرار حيث نريد معرفة معلماتها (على سبيل المثال ،شبكة عميقة)،يف مشكلة
Banditsلدينا فقط عدد محدود من األسلحة التي يمكننا سحبها ،أي عدد محدود من اإلجراءات
يمكننا أخذه .ليس من المستغرب جدًا أنه يمكن الحصول على ضمانات نظرية أقوى من حيث
األمثلية لهذه المشكلة األبسط .ندرجها بشكل أساسي ألن هذه المشكلة غال ًبا ما يتم التعامل معها
(بشكل مربك) كما لو كانت بيئة تعليمية مميزة.
التعمق في التعلم العميق :األساسيات والمقدمات 224
Control 4.7.4.4
في كثير من الحاالت تتذكر البيئة ما فعلناه .ليس بالضرورة بطريقة عدائية ولكنها ستتذكر فقط
وستعتمد االستجابة على ما حدث من قبل .على سبيل المثال ،ستالحظ وحدة التحكميف غالية
القهوة درجات حرارة مختلفة اعتمادًا على ما إذا كانت تسخن الغالية مسبقًا .تعد خوارزميات
وحدة التحكم ( PIDتناسبي تكاملي تفاضلي )proportional-integral-derivativeخيارًا
شائعًا هناك .وبالمثل ،سيعتمد سلوك المستخدم على موقع األخبار على ما أظهرناه له سابقًا (على
سبيل المثال ،سيقرأ معظم األخبار مرة واحدة فقط) .تشكل العديد من هذه الخوارزميات نموذجًا
للبيئة التي تعمل فيها بحيث تجعل قراراتها تبدو أقل عشوائية.يف اآلونة األخيرة ،تم أيضًا استخدام
نظرية التحكم (على سبيل المثال ،متغيرات )PIDلضبط المعلمات الفائقة تلقائيًا لتحقيق جودة
أفضل لفك التشابك وإعادة البناء ،وتحسين تنوع النص الذي تم إنشاؤه وجودة إعادة بناء الصور
التي تم إنشاؤها (.)2020 ،Shao et al.
Fairness, 4.7.5
Accountability, and Transparency in Machine Learning
أخيرًا ،من المهم أن تتذكر أنه عند نشر أنظمة التعلم اآللي ،فأنت ال تقوم فقط بتحسين نموذج
تنبؤي -فأنت تقدم عادةً أداة ستُستخدم (جزئيًا أو كليًا) ألتمتة القرارات .يمكن أن تؤثر هذه
األ نظمة التقنية على حياة األفراد الخاضعين للقرارات الناتجة .ال تثير القفزة من التفكيريف
التنبؤات إلى القرارات أسئلة فنية جديدة فحسب ،بل تثير أيضًا عددًا كبيرًا من األسئلة األخالقية
التي يجب مراعاتها بعناية .إذا كنا ننشر نظامًا تشخيصيًا طبيًا ،فنحن بحاجة إلى معرفة الفئات
السكانية التي قد يعمل بها وأيها قد ال يعمل .قد يؤدي التغاضي عن المخاطر المتوقعة على رفاهية
مجموعة سكانية فرعية إلى تقديم رعاية أدنى .عالوة على ذلك ،بمجرد التفكيريف أنظمة صنع
القرار ،يجب أن نتراجع ونعيد النظريف كيفية تقييمنا لتقنيتنا .من بين النتائج األخرى لهذا التغيير
في النطاق ،سنجد أن الدقة نادراً ما تكون المقياس الصحيح .على سبيل المثال ،عند ترجمة
التنبؤات إلى أفعال ،غالبًا ما نرغبيف مراعاة حساسية التكلفة المحتملة للخطأ بطرق مختلفة .إذا
كان من الممكن النظر إلى إحدى طرق سوء تصنيف صورة ما على أنها خفة عرقية،يف حين أن
التصنيف الخاطئ إلى فئة مختلفة سيكون غير ضار ،فقد نرغبيف تعديل عتباتنا وفقًا لذلك ،مع
مراعاة القيم المجتمعيةيف تصميم بروتوكول اتخاذ القرار .نريد أيضًا توخي الحذر بشأن الكيفية
التي يمكن أن تؤدي بها أنظمة التنبؤ إلى حلقات التغذية الراجعة .على سبيل المثال ،ضعيف
اعتبارك أنظمة الشرطة التنبؤية ،predictive policing systemsالتي تخصص ضباط
الدورياتيف المناطق التي ترتفع فيها معدالت الجريمة المتوقعة .من السهل أن ترى كيف يمكن
أن يظهر نمط مقلق:
في كثير من األحيان ،ال يتم احتساب اآلليات المختلفة التي يتم من خاللها اقتران تنبؤات النموذج
ببيانات التدريب الخاصة بهيف عملية النمذجة .يمكن أن يؤدي هذا إلى ما يسميه الباحثون حلقات
التغذية الراجعة الجامحة .runaway feedback loopsباإلضافة إلى ذلك ،نريد توخي الحذر
بشأن ما إذا كنا نعالج المشكلة الصحيحةيف المقام األول .تلعب الخوارزميات التنبؤية اآلن دورًا
كبيرًايف التوسطيف نشر المعلومات .هل يجب أن يتم تحديد األخبار التي يواجهها الفرد من خالل
التعمق في التعلم العميق :األساسيات والمقدمات 226
مجموعة صفحات Facebookالتي أعجبتهم؟ هذه مجرد أمثلة قليلة من بين العديد من
المعضالت األخالقية الملحة التي قد تواجههايف مهنة تعلم اآللة.
4.7.6
في كثير من الحاالت ال تأتي مجموعات التدريب واالختبار من نفس التوزيع .وهذا ما •
يسمى تحول التوزيع .distribution shift
الخطر riskهو توقع الخسارة على مجموع البيانات المستمدة من توزيعها الحقيقي. •
ومع ذلك ،عادة ما تكون هذه المجموعة بأكملها غير متوفرة .الخطر التجريبي
Empirical riskهو متوسط الخسارة على بيانات التدريب لتقريب المخاطر.يف
الممارسة العملية ،نقوم بتقليل المخاطر التجريبية .empirical risk minimization
وفقًا لالفتراضات المقابلة ،يمكن اكتشاف تحول المتغير covariate shiftوتحول •
التسمية label shiftوتصحيحهمايف وقت االختبار .يمكن أن يصبح الفشليف تفسير
هذا التحيز مشكلةيف وقت االختبار.
في بعض الحاالت ،قد تتذكر البيئة اإلجراءات اآللية وتستجيب بطرق مفاجئة .يجب •
أن نأخذيف الحسبان هذا االحتمال عند بناء النماذج واالستمراريف مراقبة األنظمة الحية،
واالنفتاح على احتمال أن تصبح نماذجنا والبيئة متشابكة بطرق غير متوقعة.
4.7.7
.1ماذا يمكن أن يحدث عندما نغير سلوك محرك البحث؟ ماذا يمكن أن يفعل
المستخدمون؟ ماذا عن المعلنين؟
.2نفذ كاشف التحول المتغير .covariate shift detectorتلميح :بناء مصنف.
.3استخدم مصحح تحول المتغير .covariate shift corrector
.4إلى جانب تحول التوزيع ،distribution shiftما الذي يمكن أن يؤثر أيضًا على كيفية
تقريب المخاطر التجريبية للمخاطر؟
البيرسيبترون متعدد
الطبقات 5
التعمق في التعلم العميق :األساسيات والمقدمات 228
Multilayer 5
Perceptrons
في هذا الفصل ،سوف نقدم لك أول شبكة عميقة حقًا .تُعرف أبسط الشبكات العميقة باسم
البيرسيبترون متعدد الطبقات ،Multilayer Perceptronsوهي تتكون من طبقات متعددة من
الخاليا العصبية ،كل منها مرتبطة تمامًا بتلك الموجودةيف الطبقة أدناه (التي تتلقى منها
المدخالت) وتلك الموجودة أعاله (والتي بدورها تؤثر عليها) .على الرغم من أن التمايز التلقائي
يبسط بشكل كبير تنفيذ خوارزميات التعلم العميق ،إال أننا سنتعمقيف كيفية حساب هذه التدرجات
gradientsيف الشبكات العميقة .بعد ذلك سنكون مستعدين لمناقشة القضايا المتعلقة باالستقرار
العددي وتهيئة المعلمات التي تعتبر أساسية لتدريب الشبكات العميقة بنجاح .عندما نقوم
بتدريب مثل هذه النماذج عالية السعة ،فإننا نخاطر بالضبط الزائد .overfittingوبالتالي ،سنعيد
النظريف التنظيم regularizationوالتعميم generalizationللشبكات العميقة .طوال الوقت،
نهدف إلى منحك فهمًا قويًا ليس فقط للمفاهيم ولكن أيضًا لممارسة استخدام الشبكات العميقة.
في نهاية هذا الفصل ،نطبق ما قدمناه حتى اآلن على حالة حقيقية :التنبؤ بأسعار المنزل .نرسل
األمور المتعلقة باألداء الحسابي وقابلية التوسع وكفاءة نماذجنا إلى الفصول الالحقة.
الحظ أنه يمكننا بسهولة التوصل إلى أمثلة تنتهك الرتابة .monotonicityقل على سبيل المثال
أننا نريد التنبؤ بالصحة كدالةيف درجة حرارة الجسم .بالنسبة لألفراد الذين تزيد درجة حرارة الجسم
عن 37درجة مئوية ( 98.6درجة فهرنهايت) ،تشير درجات الحرارة المرتفعة إلى مخاطر أكبر.
ومع ذلك ،بالنسبة لألفراد الذين تقل درجة حرارة أجسامهم عن 37درجة مئوية ،فإن درجات
الحرارة المنخفضة تشير إلى مخاطر أكبر! مرة أخرى ،قد نحل المشكلة ببعض المعالجة المسبقة
الذكية ،مثل استخدام المسافة من 37درجة مئوية كميزة.
ولكن ماذا عن تصنيف صور القطط والكالب؟ هل يجب أن تؤدي زيادة كثافة البكسليف الموقع
( ) 17 ،13دائمًا إلى زيادة (أو تقليل دائمًا) احتمالية أن الصورة تصور كلبًا؟ يتوافق االعتماد على
نموذج خطي مع االفتراض الضمني بأن المطلب الوحيد للتمييز بين القطط والكالب هو تقييم
سطوع وحدات البكسل الفردية .هذا النهج محكوم عليه بالفشليف عالم يحافظ فيه عكس الصورة
على الفئة.
ومع ذلك ،على الرغم من العبث الواضح للخطية هنا ،مقارنةً بأمثلتنا السابقة ،فمن غير الواضح
أنه يمكننا معالجة المشكلة بإصالح بسيط للمعالجة المسبقة .وذلك ألن أهمية أي بكسل تعتمد
بطرق معقدة على سياقها (قيم وحدات البكسل المحيطة).يف حين أنه قد يكون هناك تمثيل
لبياناتنا يأخذيف االعتبار التفاعالت ذات الصلة بين ميزاتنا ،وعلى رأسها سيكون النموذج الخطي
مناسبًا ،فنحن ببساطة ال نعرف كيفية حسابه يدويًا .مع الشبكات العصبية العميقة ،استخدمنا
بيانات المراقبة لتعلم بشكل مشترك كال من التمثيل عبر الطبقات المخفية والمتنبئ الخطي الذي
يعمل على هذا التمثيل.
التعمق في التعلم العميق :األساسيات والمقدمات 230
تمت دراسة مشكلة الالخطية nonlinearityهذه لمدة قرن على األقل ( .)1928 ،Fisherعلى
سبيل المثال ،تستخدم أشجار القرار decision treesيف أبسط أشكالها سلسلة من القرارات
الثنائية التخاذ قرار بشأن عضوية الفئة ( .)2014 ،Quinlanوبالمثل ،تم استخدام طرق النواة
kernel methodsلعقود عديدة لنمذجة التبعيات غير الخطية ( .)1950 ،Aronszajnوقد
وجد هذا طريقه ،على سبيل المثال،يف نماذج الخيوط الالمعلمية nonparametric spline
)1990 ،Wahba( modelsوطرق النواة .)2002 ، Schölkopf and Smola( ،إنه أيضًا
شيء يحله الدماغ بشكل طبيعي تمامًا .بعد كل شيء ،تتغذى الخاليا العصبيةيف الخاليا العصبية
األخرى التي بدورها تغذي الخاليا العصبية األخرى مرة أخرى (،y Cajal and Azoulay
.)1894وبالتالي لدينا سلسلة من التحوالت البسيطة نسبيًا.
يحتوي MLPهذا على 4مدخالت و 3مخرجات ،وتحتوي طبقته المخفية على 5وحدات
مخفية .نظرًا ألن طبقة اإلدخال input layerال تتضمن أي حسابات ،فإن إنتاج مخرجات بهذه
الشبكة يتطلب تنفيذ الحسابات لكل من الطبقات المخفية والمخرجات؛ وبالتالي ،فإن عدد
231 الفصل الخامس :البيرسيبترون متعدد الطبقات
لرؤية هذا بشكل رسمي ،يمكننا فقط طي الطبقة المخفيةيف التعريف أعاله ،مما ينتج عنه نموذج
طبقة واحدة مكافئ مع معلمات ) 𝐖 = 𝐖 (1) 𝐖 (2و ):𝐛 = 𝐛 (1) 𝐖 (2) + 𝐛 (2
𝐎 = (𝐗𝐖 (1) + 𝐛 (1) )𝐖 (2) + 𝐛 (2) = 𝐗𝐖 (1) 𝐖 (2) + 𝐛 (1) 𝐖 (2) + 𝐛 (2) = 𝐗𝐖 + 𝐛.
من أجل إدراك إمكانات البنى متعددة الطبقات ،نحتاج إلى عنصر رئيسي آخر :دالة تنشيط غير
خطية 𝜎 ( )nonlinear activation functionيتم تطبيقها على كل وحدة مخفية بعد التحويل
األفيني .affine transformationعلى سبيل المثال ،الخيار الشائع هو دالة التنشيط ReLU
( 𝜎(𝑥) = max(0, 𝑥) )2010 ،Nair and Hinton( )Rectified Linear Unitالتي
تعمل على عناصرها من حيث العناصر .element-wiseتسمى مخرجات دوال التنشيط)⋅(𝜎
عمليات التنشيط .activationsبشكل عام ،مع وجود دوال التنشيطيف مكانها الصحيح ،لم يعد
من الممكن طي MLPالخاص بنا يف نموذج خطي:
التعمق في التعلم العميق :األساسيات والمقدمات 232
لبناء MLPsأكثر عمومية ،يمكننا االستمراريف تكديس هذه الطبقات المخفية ،على سبيل المثال
) ) ،𝐇 (1) = 𝜎1 (𝐗𝐖 (1) + 𝐛 (1و) ) 𝐇 (2) = 𝜎2 (𝐇 (1) 𝐖 (2) + 𝐛 (2إحداها فوق األخرى،
مما يؤدي إلى إنتاج المزيد من النماذج التعبيرية.
عالوة على ذلك ،لمجرد أن شبكة الطبقة الواحدة المخفية يمكن أن تتعلم أي دالة ال يعني أنه
يجب عليك محاولة حل جميع مشاكلك مع شبكات الطبقة المفردة المخفية.يف الواقع ،تعتبر
طرق النواة kernel methodsيف هذه الحالة أكثر فاعلية ،ألنها قادرة على حل المشكلة تمامًا
حتىيف المساحات ذات األبعاد الالنهائية (Schölkopf ،1971 ،Kimeldorf and Wahba
.)2001 ،et al.يف الواقع ،يمكننا تقريب العديد من الدوال بشكل أكثر إحكاما باستخدام شبكات
أعمق (مقابل شبكات أوسع) ( .)2014 ،Simonyan and Zissermanسنتطرق إلى حجج
أكثر صرامةيف الفصول الالحقة.
233 الفصل الخامس :البيرسيبترون متعدد الطبقات
%matplotlib inline
import tensorflow as tf
from d2l import tensorflow as d2l
ReLU 5.1.2.1
الخيار األكثر شيوعًا ،نظرًا لبساطة التنفيذ وأدائه الجيديف مجموعة متنوعة من المهام التنبؤية ،هو
الوحدة الخطية المصححة ) .)2010 ،Nair and Hinton( ،(ReLUيوفر ReLUعملية
تحويل غير خطية بسيطة للغاية .بالنظر لعنصر ما 𝑥 ،يتم تعريف الدالة على أنها الحد األقصى
لهذا العنصر و :0
بشكل غير رسمي ،تحتفظ دالة ReLUبالعناصر اإليجابية فقط وتتجاهل جميع العناصر السلبية
عن طريق ضبط التنشيطات المقابلة على .0الكتساب بعض الحدس ،يمكننا رسم الدالة .كما
ترى ،فإن دالة التنشيط خطية متعددة التعريف .activation function is piecewise linear
عندما يكون اإلدخال سالبًا ،يكون مشتق الدالة ReLUهو ،0وعندما يكون اإلدخال موجبًا،
يكون مشتق دالة ReLUهو .1الحظ أن دالة ReLUغير قابلة لالشتقاق not
differentiableعندما يأخذ اإلدخال قيمة تساوي بالضبط .0يف هذه الحاالت ،نستخدم مشتق
الجانب األيسر افتراضيًا ونقول إن المشتق يساوي 0عندما يكون اإلدخال .0يمكننا التخلص
من هذا ألن المدخالت قد ال تكون أبدًا صفرًا (قد يقول علماء الرياضيات أنه ال يمكن تمييزها
التعمق في التعلم العميق :األساسيات والمقدمات 234
في مجموعة من قياس الصفر) .هناك قول مأثور قديم مفاده أنه إذا كانت الظروف الحدودية
الدقيقة مهمة ،فربما نقوم بعمل رياضيات (حقيقية) ،وليس هندسة.
قد تنطبق هذه الحكمة التقليدية هنا ،أو على األقل ،حقيقة أننا ال نقوم بإجراء تحسين مقيد
( .)1970 ،Rockafellar ، 1965 ،Mangasarianنرسم مشتق دالة ReLUالموضحة
أدناه.
سبب استخدام ReLUهو أن مشتقاته حسنة التصرف بشكل خاص :إما أنها تتالشى أو تترك
المدخل تمر .هذا يجعل التحسين يتصرف بشكل أفضل ويخفف من المشكلة الموثقة جيدًا
المتمثلةيف اختفاء التدرجات vanishing gradientsالتي ابتليت بها اإلصدارات السابقة من
الشبكات العصبية (المزيد حول هذا الحقًا).
الحظ أن هناك العديد من المتغيرات لدالة ،ReLUبمايف ذلك دالة ) ReLU (pReLUذات
المعلمات ( .)2015 ،He et al.( )parameterized ReLUيضيف هذا االختالف مصطلحًا
خطيًا إلى ،ReLUلذلك ال تزال بعض المعلومات تصل ،حتى عندما تكون الوسيطة سلبية:
1
= )𝑥(sigmoid .
)𝑥1 + exp (−
في أقدم الشبكات العصبية ،كان العلماء مهتمين بنمذجة الخاليا العصبية البيولوجية التي إما تطلق
fireأو ال تطلق .not fireوهكذا ركز رواد هذا المجال ،بالعودة إلى McCullochو،Pitts
مخترعي الخاليا العصبية االصطناعية ،على وحدات العتبة thresholding units
( .)1943 ،McCulloch and Pittsيأخذ تنشيط العتبة القيمة 0عندما يكون إدخاله أقل من
بعض العتبة والقيمة 1عندما يتجاوز اإلدخال الحد.
عندما تحول االنتباه إلى التعلم القائم على التدرج ،gradient based learningكانت دالة
Sigmoidاختيارًا طبيعيًا ألنها تقريب سلس وقابل للتفاضل لوحدة العتبة .ال تزال Sigmoid
تستخدم على نطاق واسع كدوال تنشيطيف وحدات اإلخراج ،عندما نريد تفسير المخرجات على
أنها احتماالت لمشاكل التصنيف الثنائي :يمكنك التفكيريف Sigmoidكحالة خاصة من
.softmaxومع ذلك ،تم استبدال Sigmoidيف الغالب بـ ReLUاألبسط واألكثر سهولةيف
التدريب لمعظم االستخداماتيف الطبقات المخفية .يتعلق الكثير من هذا بحقيقة أن Sigmoid
يفرض تحديات على التحسين ( )1998 ،LeCun et al.نظرًا ألن تدرجه يتالشى بسبب
المدخالت اإليجابية والسلبية الكبيرة .هذا يمكن أن يؤدي إلى الهضاب plateausالتي يصعب
الهروب منها .ومع ذلك ،فإن Sigmoidمهمة.يف الفصول الالحقة (على سبيل المثال ،القسم
)10.1حول الشبكات العصبية المتكررة ،سنصف البنى التي تستفيد من وحدات Sigmoid
للتحكميف تدفق المعلومات عبر الوقت.
أدناه ،نرسم دالة .Sigmoidالحظ أنه عندما يكون اإلدخال قريبًا من ،0تقترب دالة Sigmoid
من التحويل الخطي .linear transformation
)y = tf.nn.sigmoid(x
d2l.plot(x.numpy(), y.numpy(), 'x', 'sigmoid(x)',
))figsize=(5, 2.5
التعمق في التعلم العميق :األساسيات والمقدمات 236
تم رسم مشتق دالة Sigmoidأدناه .الحظ أنه عندما يكون اإلدخال ،0فإن مشتق دالة Sigmoid
يصل إلى 0.25كحد أقصى .عندما ينحرف المدخل عن 0يف أي اتجاه ،يقترب المشتق من .0
Tanh 5.1.2.3
مثل الدالة ،sigmoidتقوم دالة ( tanhالظل الزائدي )hyperbolic tangentأيضًا بسحق
مدخالتها ،وتحويلها إلى عناصريف الفترة بين 1-و:1
نرسم دالة tanhأدناه .الحظ أنه عندما يقترب اإلدخال من الصفر ،تقترب الدالة tanhمن
التحويل الخطي .على الرغم من أن شكل الدالة مشابه لشكل دالة ،Sigmoidإال أن دالة tanh
تُظهر تناظرًا نقطيًا حول أصل نظام اإلحداثيات (.)1992 ،Kalman and Kwasny
)y = tf.nn.tanh(x
d2l.plot(x.numpy(), y.numpy(), 'x', 'tanh(x)',
))figsize=(5, 2.5
𝑑
tanh(𝑥) = 1 − tanh2 (𝑥).
𝑥𝑑
تم رسمه أدناه .عندما يقترب المدخل من الصفر ،يقترب مشتق الدالة tanhمن 1كحد أقصى.
وكما رأينا مع دالة ،Sigmoidحيث يتحرك اإلدخال بعيدًا عن الصفريف أي من االتجاهين،
يقترب مشتق الدالة tanhمن الصفر.
. 5.1.3
نحن نعرف اآلن كيفية دمج الالخطية لبناء بنيات شبكة عصبية معبرة متعددة الطبقات .كمالحظة
جانبية ،فإن معرفتك تضعك بالفعليف قيادة مجموعة أدوات مماثلة للممارس حوالي عام .1990
في بعض النواحي ،لديك ميزة على أي شخص يعمليف التسعينيات ،ألنه يمكنك االستفادة من
أطر التعلم العميق القوية مفتوحة المصدر لبناء النماذج بسرعة ،باستخدام بضعة أسطر فقط من
التعليمات البرمجية.يف السابق ،كان تدريب هذه الشبكات يتطلب من الباحثين ترميز الطبقات
والمشتقات بشكل صريحيف Cأو Fortranأو حتى ( Lispفي حالة .)LeNet
فائدة ثانوية هي أن ReLUأكثر قابلية للتحسين بشكل ملحوظ من Sigmoidأو دالة .tanh
يمكن للمرء أن يجادليف أن هذا كان أحد االبتكارات الرئيسية التي ساعدت على عودة التعلم
العميق خالل العقد الماضي .الحظ ،مع ذلك ،أن البحثيف دوال التنشيط لم يتوقف .على سبيل
المثال ،يمكن أن تؤدي دالة تنشيط 𝜎(𝑥) = 𝑥sigmoid(𝛽𝑥) Swishكما هو مقترحيف
( )2017 ،Ramachandran et al.إلى دقة أفضليف كثير من الحاالت.
5.1.4
.1أظهر أن إضافة طبقات إلى شبكة عميقة خطية ،linear deep networkأي شبكة
بدون الالخطية ال يمكنها أبدًا زيادة القوة التعبيرية للشبكة .أعط مثاال حيث يقلل ذلك
بنشاط.
.2احسب مشتق من دالة التنشيط .pReLU
.3احسب مشتق من دالة التنشيط .𝑥sigmoid(𝛽𝑥) Swish
.4أظهر أن MLPباستخدام ReLUفقط (أو )pReLUيبني دالة خطية مستمرة
متعددة التعريفات .continuous piecewise linear function
Sigmoid .5و tanhمتشابهان جدا.
239 الفصل الخامس :البيرسيبترون متعدد الطبقات
self.b1 = tf.Variable(tf.zeros(num_hiddens))
self.W2 = tf.Variable(
tf.random.normal((num_hiddens, num_outputs)) *
sigma)
self.b2 = tf.Variable(tf.zeros(num_outputs))
Model 5.2.1.2
بأنفسنا بدالً منReLU سنقوم بتنفيذ تنشيط،للتأكد من أننا نعرف كيف يعمل كل شيء
.ً المدمجة مباشرةrelu استدعاء دالة
def relu(X):
return tf.math.maximum(X, 0)
فنحن نعيد تشكيل كل صورة ثنائية األبعاد إلى متجه مسطح،نظرًا ألننا نتجاهل البنية المكانية
نطبق نموذجنا ببضعة أسطر من التعليمات، أخيرًا.num_inputs بطول عدد المدخالت
. فهذا كل ما يتطلبه األمر، المدمجautograd نظرًا ألننا نستخدم إطار عمل.البرمجية
@d2l.add_to_class(MLPScratch)
def forward(self, X):
X = tf.reshape(X, (-1, self.num_inputs))
H = relu(tf.matmul(X, self.W1) + self.b1)
return tf.matmul(H, self.W2) + self.b2
Training 5.2.1.3
نحدد النموذج.softmax هي نفسها تمامًا النحدارMLPs فإن حلقة التدريب لـ،لحسن الحظ
.يف النموذج والبياناتfit والبيانات والمدرب وأخيراً نستدعي الدالة
model = MLPScratch(num_inputs=784, num_outputs=10,
num_hiddens=256, lr=0.1)
data = d2l.FashionMNIST(batch_size=256)
trainer = d2l.Trainer(max_epochs=10)
trainer.fit(model, data)
241 الفصل الخامس :البيرسيبترون متعدد الطبقات
5.2.3
اآلن بعد أن أصبح لدينا مزيد من الممارسةيف تصميم الشبكات العميقة ،فإن الخطوة من طبقة
واحدة إلى طبقات متعددة من الشبكات العميقة لم تعد تشكل تحديًا كبيرًا بعد اآلن .على وجه
الخصوص ،يمكننا إعادة استخدام خوارزمية التدريب ومحمل البيانات .الحظ ،على الرغم من
ذلك ،أن تنفيذ MLPsمن الصفر مع ذلك فوضوي :تسمية معلمات النموذج وتتبعها تجعل من
الصعب توسيع النماذج .على سبيل المثال ،تخيل أنك ترغبيف إدراج طبقة أخرى بين الطبقتين
42و .43قد تكون هذه اآلن طبقة ،42bإال إذا كنا على استعداد إلجراء إعادة تسمية متسلسلة.
عالوة على ذلك ،إذا قمنا بتنفيذ الشبكة من البداية ،فسيكون من الصعب جدًا على إطار العمل
إجراء تحسينات مفيدةيف األداء.
ومع ذلك ،فقد وصلت اآلن إلى أحدث ما توصلت إليه التكنولوجيايف أواخر الثمانينيات عندما
كانت الشبكات العميقة المتصلة بالكامل هي الطريقة المفضلة لنمذجة الشبكة العصبية .ستكون
خطوتنا المفاهيمية التالية هي النظريف الصور .قبل القيام بذلك ،نحتاج إلى مراجعة عدد من
األساسيات اإلحصائية والتفاصيل حول كيفية حساب النماذج بكفاءة.
5.2.4
.1قم بتغيير عدد الوحدات المخفية ورسم كيف يؤثر عددها على دقة النموذج .ما هي
أفضل قيمة لهذا المعامل الفائق؟
.2حاول إضافة طبقة مخفية لترى كيف تؤثر على النتائج.
.3لماذا يعتبر إدخال طبقة مخفية ذات خلية عصبية واحدة فكرة سيئة؟ ما الخطأ الذي
يمكن أن يحدث؟
.4كيف تغيير معدل التعلم يغير نتائجك؟ مع إصالح جميع المعلمات األخرى ،ما هو
معدل التعلم الذي يمنحك أفضل النتائج؟ كيف يرتبط هذا بعدد الفترات؟
.5دعنا نقوم بالتحسين عبر جميع المعلمات الفائقة معًا ،أي معدل التعلم وعدد الفترات
وعدد الطبقات المخفية وعدد الوحدات المخفية لكل طبقة.
.1ما هي أفضل نتيجة يمكنك الحصول عليها من خالل تحسينها جميعًا؟
.2لماذا يعتبر التعامل مع العديد من المعلمات الفائقة أكثر صعوبة؟
.3صِف إستراتيجية فعالة للتحسين عبر معايير متعددة بشكل مشترك.
.6قارن بين سرعة إطار العمل والتنفيذ من الصفر لمشكلة صعبة .كيف تتغير مع تعقيد
الشبكة؟
.7قم بقياس سرعة عمليات ضرب مصفوفة الموتر للحصول على مصفوفات جيدة
المحاذاة well-alignedوغير المحاذاة .misalignedعلى سبيل المثال ،اختبر
المصفوفات ذات األبعاد 1024و 1025و 1026و 1028و.1032
.1كيف يتغير هذا بين وحدات معالجة الرسومات GPUsووحدات المعالجة
المركزية CPUs؟
243 الفصل الخامس :البيرسيبترون متعدد الطبقات
حيث 𝑑× 𝐖 (1) ∈ ℝℎهي معلمة وزن الطبقة المخفية .بعد تشغيل المتغير الوسيط 𝐳 ∈ ℝℎ
من خالل دالة التنشيط 𝜙 ،نحصل على متجه التنشيط المخفي للطول ،ℎ
𝐡 = 𝜙(𝐳).
ناتج الطبقة المخفية 𝐡 هو أيضًا متغير وسيط .بافتراض أن معلمات الطبقة المخرجة تمتلك وزنًا
فقط ،𝐖 (2) ∈ ℝ𝑞×ℎفيمكننا الحصول على متغير طبقة اإلخراج مع متجه الطول 𝑞:
بافتراض أن دالة الخطأ 𝑙 ومثال التسمية 𝑦 ،يمكننا بعد ذلك حساب مصطلح الخطأ لمثال بيانات
واحد،
وفقًا لتعريف التنظيم ℓ2الذي سنقدمه الحقًا ،نظرًا للمعلمة الفائقة ،فإن مصطلح التنظيم هو
𝐽 = 𝐿 + 𝑠.
تذكر أن معلمات الشبكة البسيطة ذات الطبقة المخفية ،والتي يوجد رسمها البياني الحسابييف
الشكل ،5.3.1هي ) 𝐖 (1و ) .𝐖 (2الهدف من االنتشار الخلفي backpropagationهو
حساب التدرجات ) 𝜕𝐽/𝜕𝐖 (1و ) .𝜕𝐽/𝜕𝐖 (2لتحقيق ذلك ،نطبق قاعدة السلسلة ونحسب،
بدورنا ،التدرج لكل متغير وسيط ومعلمة .يتم عكس ترتيب الحسابات بالنسبة إلى تلك التي يتم
إجراؤهايف االنتشار األمامي ،نظرًا ألننا نحتاج إلى البدء بنتيجة الرسم البياني الحسابي والعمليف
طريقنا نحو المعلمات .الخطوة األولى هي حساب تدرجات دالة الهدف 𝑠 𝐽 = 𝐿 +فيما يتعلق
بمصطلح الخطأ 𝐿 ومصطلح التنظيم 𝑠.
𝐽𝜕 𝐽𝜕
= 1and = 1.
𝐿𝜕 𝑠𝜕
بعد ذلك ،نحسب التدرج لدالة الهدف فيما يتعلق بمتغير طبقة المخرجات 𝐨 وفقًا لقاعدة
السلسلة:
𝑠𝜕 𝑠𝜕
)(1
= 𝜆𝐖 (1) and = 𝜆𝐖 (2) .
𝐖𝜕 )𝜕𝐖 (2
التعمق في التعلم العميق :األساسيات والمقدمات 246
اآلن نحن قادرون على حساب التدرج 𝜕𝐽/𝜕𝐖 (2) ∈ ℝ𝑞×ℎلمعلمات النموذج األقرب إلى
طبقة اإلخراج .ينتج عن استخدام قاعدة السلسلة:
خذ الشبكة البسيطة المذكورة أعاله كمثال للتوضيح .من ناحية أخرى ،يعتمد حساب مصطلح
التنظيم ( ) 5.3.5أثناء االنتشار األمامي على القيم الحالية لمعلمات النموذج ) 𝐖 (1و ).𝐖 (2
يتم تقديمها بواسطة خوارزمية التحسين وفقًا لالنتشار الخلفييف التكرار األخير .من ناحية أخرى،
يعتمد حساب التدرج للمعامل ( )5.3.11أثناء االنتشار الخلفي على القيمة الحالية لمخرجات
الطبقة المخفية 𝐡 ،والتي يتم تقديمها عن طريق االنتشار األمامي.
247 الفصل الخامس :البيرسيبترون متعدد الطبقات
لذلك عند تدريب الشبكات العصبية ،بعد تهيئة معلمات النموذج ،نتبادل االنتشار األمامي مع
االنتشار الخلفي ،وتحديث معلمات النموذج باستخدام التدرجات المعطاة عن طريق االنتشار
الخلفي .الحظ أن االنتشار الخلفي يعيد استخدام القيم الوسيطة المخزنة من االنتشار األمامي
لتجنب الحسابات المكررة .إحدى العواقب هي أننا بحاجة إلى االحتفاظ بالقيم الوسيطة حتى
يكتمل االنتشار الخلفي .هذا أيضًا أحد األسباب التي تجعل التدريب يتطلب ذاكرة أكبر بكثير
من التوقع البسيط .إلى جانب ذلك ،يتناسب حجم هذه القيم الوسيطة تقريبًا مع عدد طبقات
الشبكة وحجم الدُفعة .وبالتالي ،فإن تدريب شبكات أعمق باستخدام أحجام دفعات أكبر يؤدي
بسهولة أكبر إلى نفاد أخطاء الذاكرة.
5.3.5
يحسب االنتشار األمامي المتغيرات الوسيطة ويخزنها بالتسلسل داخل الرسم البياني •
الحسابي المحدد بواسطة الشبكة العصبية .ينطلق من المدخالت إلى طبقة اإلخراج.
يقوم االنتشار الخلفي بحساب وتخزين تدرجات المتغيرات والمعلمات الوسيطة •
بشكل تسلسلي داخل الشبكة العصبية بالترتيب المعكوس.
عند تدريب نماذج التعلم العميق ،فإن االنتشار األمامي واالنتشار الخلفي مترابطان. •
يتطلب التدريب ذاكرة أكبر بكثير من التوقع. •
5.3.6
.1افترض أن مدخالت 𝐗 بعض الدوال العددية 𝑓 عبارة عن مصفوفات 𝑚 × 𝑛 .ما هي
أبعاد التدرج 𝑓 بالنسبة لـ 𝐗؟
.2أضف تحيزًا إلى الطبقة المخفية من النموذج الموضحيف هذا القسم (ال تحتاج إلى
تضمين التحيزيف مصطلح التنظيم).
.1ارسم الرسم البياني الحسابي المطابق.
.2اشتق معادالت االنتشار األمامية والخلفية.
.3احسب بصمة الذاكرة memory footprintللتدريب والتنبؤيف النموذج الموضحيف
هذا القسم.
.4افترض أنك تريد حساب المشتقات الثانية .ماذا يحدث للرسم البياني الحسابي؟ كم
من الوقت تتوقع أن تستغرق العملية الحسابية؟
.5افترض أن الرسم البياني الحسابي كبير جدًا بالنسبة لوحدة معالجة الرسومات GPU
الخاصة بك.
.1هل يمكنك تقسيمها على أكثر من وحدة معالجة رسومات GPU؟
.2ما هي مزايا وعيوب التدريب على minibatchأصغر؟
التعمق في التعلم العميق :األساسيات والمقدمات 248
إذا كانت جميع مخرجات ومدخالت الطبقة المخفية عبارة عن متجهات ،فيمكننا كتابة التدرج
𝐨 فيما يتعلق بأي مجموعة من المعلمات )𝑙( 𝐖 على النحو التالي:
بمعنى آخر ،هذا التدرج هو ناتج ضرب 𝑙 𝐿 −مصفوفات ) 𝐌 (𝐿) ⋅ … ⋅ 𝐌 (𝑙+1ومتجه التدرج
)𝑙( 𝐯 .وبالتالي نحن عرضة لنفس مشاكل التدفق العددي numerical underflowالذي غالبًا
ما يظهر عند ضرب العديد من االحتماالت معًا .عند التعامل مع االحتماالت ،فإن الحيلة الشائعة
هي التبديل إلى مساحة اللوغارتيم ،log-spaceأي تحويل الضغط من الجزء العشري إلى أس
التمثيل العددي .لسوء الحظ ،فإن مشكلتنا أعاله أكثر خطورة:يف البداية قد تحتوي المصفوفات
)𝑙( 𝐌 على مجموعة متنوعة من القيم الذاتية .eigenvaluesقد تكون صغيرة أو كبيرة ،وقد
يكون منتجها كبيرًا جدًا أو صغيرًا جدًا.
تتجاوز المخاطر التي تشكلها التدرجات غير المستقرة التمثيل العددي .كما تهدد التدرجات ذات
الحجم غير المتوقع أيضًا استقرار خوارزميات التحسين الخاصة بنا .قد نواجه تحديثات
249 الفصل الخامس :البيرسيبترون متعدد الطبقات
للمعلمات إما ( )1كبيرة جدًا ،مما يؤدي إلى تدمير نموذجنا (مشكلة التدرج exploding
)gradient problem؛ أو ( )2صغيرة للغاية (مشكلة التدرج المتالشي vanishing
،)gradient problemمما يجعل التعلم مستحيالً ألن المعلمات بالكاد تتحركيف كل تحديث.
%matplotlib inline
import tensorflow as tf
from d2l import tensorflow as d2l
كما ترون ،يتالشى تدرج sigmoidعندما تكون مدخالته كبيرة وعندما تكون صغيرة .عالوة
على ذلك ،عند االنتشار الخلفي عبر العديد من الطبقات ،ما لم نكنيف منطقة معتدلة ،حيث
تقترب مدخالت العديد من sigmoidمن الصفر ،فقد تختفي تدرجات المنتج الكلي .عندما
تفتخر شبكتنا بالعديد من الطبقات ،ما لم نتوخى الحذر ،فمن المحتمل أن يتم قطع التدرجيف
طبقة ما.يف الواقع ،كانت هذه المشكلة تصيب التدريب الشبكي العميق .وبالتالي ،فإن ،ReLU
التي هي أكثر استقرارًا (ولكنها أقل قبولًا من الناحية العصبية) ،ظهرت كخيار افتراضي
للممارسين.
هذا أكثر من مجرد مصدر إزعاج نظري .ضعيف اعتبارك MLPذات الطبقة المخفية الواحدة
المذكورة أعاله مع وحدتين مخفيتين .للتوضيح ،افترض أن طبقة المخرجات تحول الوحدتين
المخفيتين إلى وحدة إخراج واحدة فقط .تخيل ما سيحدث إذا قمنا بتهيئة جميع معلمات الطبقة
المخفية كـ 𝑐 = ) 𝐖 (1بالنسبة لبعض الثوابت 𝑐.يف هذه الحالة ،أثناء االنتشار األمامي ،تأخذ إما
الوحدة المخفية نفس المدخالت والمعلمات ،وتنتج نفس التنشيط ،الذي يتم تغذيته إلى وحدة
اإلخراج .أثناء االنتشار الخلفي ،فإن التمييز بين وحدة اإلخراج فيما يتعلق بالمعلمات )𝐖 (1
يعطي التدرج الذي تأخذ جميع عناصره نفس القيمة .وهكذا ،بعد التكرار القائم على التدرج
(على سبيل المثال ،التدرج االشتقاقي العشوائي المصغر) ،ال تزال جميع العناصر تأخذ نفس
القيمة .لن تكسر مثل هذه التكرارات التناظر من تلقاء نفسها وقد ال نتمكن أبدًا من إدراك القوة
التعبيرية للشبكة .تتصرف الطبقة المخفية كما لو كانت تحتوي على وحدة واحدة فقط .الحظ
أنهيف حين أن التدرج االشتقاقي العشوائي المصغر لن يكسر هذا التناظر ،فإن تسوية التسرب
( dropout regularizationالتي سيتم تقديمها الحقًا) ستفعل!
Xavier 5.4.2.2
دعنا نلقي نظرة على توزيع مقياس الناتج 𝑖𝑜 لبعض الطبقات المتصلة بالكامل بدون الالخطية.
مع 𝑛inالمدخالت 𝑗𝑥 واألوزان 𝑗𝑖𝑤 المرتبطة بها لهذه الطبقة ،يتم إعطاء اإلخراج بواسطة
𝑛in
يتم رسم جميع األوزان 𝑗𝑖𝑤 بشكل مستقل عن نفس التوزيع .عالوة على ذلك ،لنفترض أن هذا
التوزيع ليس له أي متوسط وتباين .𝜎 2الحظ أن هذا ال يعني أن التوزيع يجب أن يكون غاوسيًا،
فقط أن المتوسط والتباين يجب أن يكونا موجودين.يف الوقت الحالي ،لنفترض أن مدخالت
الطبقة 𝑗𝑥 لها أيضًا متوسط صفر وتباين 𝛾 2وأنها مستقلة عن 𝑗𝑖𝑤 ومستقلة عن بعضها البعض.
في هذه الحالة ،يمكننا حساب المتوسط والتباين 𝑖𝑜 على النحو التالي:
𝑛in
طريقة واحدة للحفاظ على التباين ثابتًا هي تعيين .𝑛in 𝜎 2 = 1اآلن النظريف االنتشار الخلفي.
هناك نواجه مشكلة مماثلة ،وإن كان يتم نشر التدرجات من الطبقات األقرب إلى اإلخراج.
باستخدام نفس المنطق الخاص باالنتشار األمامي ،نرى أن تباين التدرجات يمكن أن ينفجر ما
لم يكن 𝑛out 𝜎 2 = 1حيث 𝑛outعدد مخرجات هذه الطبقة ،أين .هذا يتركنايف مأزق :ال يمكننا
تلبية كال الشرطينيف وقت واحد .بدالً من ذلك ،نحاول ببساطة أن نحقق
1 2
√ = 𝜎 (𝑛in + 𝑛out )𝜎 2 = 1 or equivalently .
2 𝑛in + 𝑛out
253 الفصل الخامس :البيرسيبترون متعدد الطبقات
هذا هو السبب الكامن وراء تهيئة Xavierالحالية والمفيدة عمليًا ،والتي سميت على اسم
المؤلف األول لمنشئيها ( .)2010 ،Glorot and Bengioنموذجياً ،عينات التهيئة Xavier
2
= . 𝜎 2يمكننا أيضًا تكييف حدس األوزان من توزيع غاوسي بمتوسط صفر وتباين
𝑛in +𝑛out
Xavierالختيار التباين عند أخذ عينات من األوزان من توزيع منتظم .الحظ أن التوزيع المنتظم
𝑎2 𝑎2
يف حالتنا على 𝜎 2إلى اقتراح التهيئة وفقًا لـ .يؤدي توصيل )𝑎 𝑈(−𝑎,له تباين
3 3
6 6
√𝑈(− √, ).
𝑛in + 𝑛out 𝑛in + 𝑛out
على الرغم من أن افتراض عدم وجود الالخطيةيف التفكير الرياضي أعاله يمكن انتهاكه بسهولةيف
الشبكات العصبية ،إال أن طريقة تهيئة Xavierتعمل بشكل جيديف الممارسة العملية.
Beyond 5.4.2.3
المنطق أعاله بالكاد يخدش سطح األساليب الحديثة لتهيئة المعلمة parameter
.initializationغالبًا ما ينفذ إطار التعلم العميق أكثر من اثنتي عشرة عملية استكشاف مختلفة.
عالوة على ذلك ،ال تزال تهيئة المعلمة منطقة ساخنة للبحث األساسييف التعلم العميق .من بين
هذه االستدالالت المتخصصة للمعلمات المقيدة (المشتركة) والدقة الفائقة super-
resolutionونماذج التسلسل sequence modelsوغيرها من المواقف .على سبيل المثال،
.Xiao et alأظهر إمكانية تدريب 10000طبقة من الشبكات العصبية بدون حيل معمارية
باستخدام طريقة تهيئة مصممة بعناية (.)2018 ،Xiao et al.
إذا كان الموضوع يثير اهتمامك ،فإننا نقترح التعمقيف عروض هذه الوحدة ،وقراءة األوراق التي
اقترحت وحلل كل إرشادية ،ثم استكشاف أحدث المنشورات حول هذا الموضوع .ربما سوف
تتعثر أو تخترع فكرة ذكية وتساهميف تنفيذ أطر التعلم العميق.
5.4.3
يعد تالشي وانفجار التدرجات من المشكالت الشائعةيف الشبكات العميقة .مطلوب •
عناية كبيرةيف تهيئة المعلمات لضمان أن تظل التدرجات والمعلمات خاضعة للرقابة
بشكل جيد.
هناك حاجة إلى أساليب التهيئة االستدالل الحدسية Initialization heuristics •
للتأكد من أن التدرجات األولية ليست كبيرة جدًا وال صغيرة جدًا.
تعمل دوال تنشيط ReLUعلى تخفيف مشكلة تالشي التدرج .هذا يمكن أن يسرع •
من التقارب.
التعمق في التعلم العميق :األساسيات والمقدمات 254
5.4.4
.1هل يمكنك تصميم حاالت أخرى قد تعرض فيها الشبكة العصبية تناظرًا يتطلب كسرًا
breakingإلى جانب تناظر التقليب permutation symmetryيف طبقات MLP؟
.2هل يمكننا تهيئة جميع معلمات الوزنيف االنحدار الخطي أويف انحدار softmaxإلى
نفس القيمة؟
.3ابحث عن الحدود التحليلية للقيم الذاتية لحاصل ضرب مصفوفتين .ماذا يخبرك هذا
عن ضمان تكييف التدرجات بشكل جيد؟
.4إذا علمنا أن بعض المصطلحات تتباعد ،divergeفهل يمكننا إصالح هذا بعد
الحقيقة؟ انظر إلى الورقة حول مقياس المعدل التكيفي للطبقات لإللهام ( You et
.)2017 ،al.
على الجانب المشرق ،اتضح أن الشبكات العصبية العميقة المدربة عن طريق التدرج االشتقاقي
العشوائي SGDتعمم جيدًا بشكل ملحوظ عبر مشاكل التنبؤ التي ال تعد وال تحصى ،والتي
تشمل الرؤية الحاسوبية computer vision؛ معالجة اللغة الطبيعية natural language
processing؛ بيانات السالسل الزمنية time series data؛ أنظمة التوصية recommender
systems؛ السجالت الصحية اإللكترونية electronic health records؛ طي البروتين
255 الفصل الخامس :البيرسيبترون متعدد الطبقات
Protein folding؛ تقريب دالة القيمةيف ألعاب الفيديو وألعاب الطاولة ؛ ومجاالت أخرى ال
حصر لها .على الجانب السلبي ،إذا كنت تبحث عن حساب مباشر إما لقصة التحسين (لماذا
يمكننا مالءمتها لبيانات التدريب) أو قصة التعميم (لماذا تعمم النماذج الناتجة على أمثلة غير
مرئية) ،إذن قد ترغبيف سكب شاي لنفسك.يف حين أن إجراءاتنا لتحسين النماذج الخطية
والخصائص اإلحصائية للحلول موصوفة جيدًا من خالل مجموعة نظرية شاملة ،فإن فهمنا للتعلم
العميق ال يزال يشبه الغرب المتوحش على كال الجبهتين.
تتطور نظرية وممارسة التعلم العميق بسرعة على كال الجبهتين ،حيث يتبنى المنظرون
استراتيجيات جديدة لشرح ما يحدث ،حتى مع استمرار الممارسينيف االبتكار بوتيرة مذهلة،
وبناء ترسانات من االستدالل لتدريب الشبكات العميقة ومجموعة من البديهيات والمعارف
الشعبية التي تقدم إرشادات لتحديد التقنيات التي يجب تطبيقهايف أي مواقف.
لفترة طويلة ،لم نقرأ يف الوقت الحالي هو أن نظرية التعلم العميق قد أنتجت خطوط هجوم واعدة
ونتائج رائعة متفرقة ،لكنها ال تزال بعيدة كل البعد عن تفسير شامل لكل من ( )1سبب قدرتنا
على تحسين الشبكات العصبية و ( ) ) 2كيف تمكنت النماذج التي تم تعلمها من خالل SGD
من التعميم جيدًا ،حتىيف المهام عالية األبعاد .ومع ذلك ،من الناحية العملية )1( ،نادرًا ما يمثل
مشكلة (يمكننا دائمًا العثور على المعلمات التي تناسب جميع بيانات التدريب لدينا) وبالتالي
فإن فهم التعميم هو المشكلة األكبر .من ناحية أخرى ،حتىيف غياب الراحة التي توفرها النظرية
العلمية المتماسكة ،فقد طور الممارسون مجموعة كبيرة من التقنيات التي قد تساعدك على إنتاج
نماذج تُعمم جيدًايف الممارسة.يف حين أنه ال يمكن ألي ملخص بليغ أن ينصف موضوع التعميم
الكبيريف التعلم العميق ،وبينما ال تزال الحالة العامة للبحث بعيدة عن الحل ،نأمل،يف هذا القسم،
أن نقدم نظرة عامة واسعة عن حالة البحث والممارسة.
الميزات ،أو عدد المعلمات غير الصفرية التي تم تعلمها ،أو حجم المعلمات كما تم تحديدها
كمياً .تذكر مخطط تعقيد النموذج مقابل الخطأ (الشكل )3.6.1من القسم .3.6
لكن التعلم العميق يعقد هذه الصورة بطرق غير بديهية .أوالً ،بالنسبة إلى مشاكل التصنيف ،عادةً
ما تكون نماذجنا معبرة بما يكفي لتناسب تمامًا كل مثال تدريبي ،حتىيف مجموعات البيانات
التي تتكون من الماليين (.)2021 ،Zhang et al.يف الصورة الكالسيكية ،قد نعتقد أن هذا
اإلعداد يقعيف أقصى اليمين المتطرف لمحور تعقيد النموذج ،وأن أي تحسيناتيف خطأ التعميم
يجب أن تأتي عن طريق التنظيم ،regularizationإما عن طريق تقليل تعقيد فئة النموذج ،أو
عن طريق تطبيق عقوبة ،penaltyتقيد بشدة مجموعة القيم التي قد تتخذها معلماتنا .ولكن
هذا هو المكان الذي تبدأ فيه األموريف أن تصبح غريبة.
الغريب ،بالنسبة للعديد من مهام التعلم العميق (على سبيل المثال ،التعرف على الصور وتصنيف
النص) نختار عادةً من بين البنى النموذجية ،والتي يمكن أن تحقق جميعها خطأ تدريب منخفض
بشكل تعسفي (وخطأ تدريب صفري) .نظرًا ألن جميع النماذج قيد الدراسة ال تحقق أي خطأيف
التدريب ،فإن السبيل الوحيد لتحقيق المزيد من المكاسب هو تقليل الضبط الزائد (فرط
التجهيز) .واألغرب من ذلك ،أنه على الرغم من مالءمة بيانات التدريب بشكل مثالي ،يمكننايف
الواقع تقليل خطأ التعميم بشكل أكبر عن طريق جعل النموذج أكثر تعبيرًا ،على سبيل المثال،
إضافة طبقات أو عقد أو تدريب لعدد أكبر من الفترات .epochsالغريب حتى اآلن ،أن النمط
الذي يربط فجوة التعميم بتعقيد النموذج (كما تم التقاطه ،على سبيل المثال،يف عمق أو عرض
الشبكات) يمكن أن يكون غير رتيب ،non-monotonicمع تعقيد أكبر يضريف البداية ولكنه
يساعد الحقًا فيما يسمى نمط "النسب المزدوج ،.Nakkiran et al(( "double-descent
.) 2021وبالتالي فإن ممارس التعلم العميق يمتلك مجموعة من الحيل ،والتي يبدو أن بعضها
يقيد النموذج بطريقة ما والبعض اآلخر يجعله يبدو أكثر تعبيراً ،وكلها ،بمعنى ما ،يتم تطبيقها
لتخفيف فرط التجهيز.
ومما يزيد األمور تعقيدًا،يف حين أن الضمانات التي توفرها نظرية التعلم الكالسيكية يمكن أن
تكون متحفظة حتى بالنسبة للنماذج الكالسيكية ،فإنها تبدو عاجزة عن تفسير سبب تعميم
الشبكات العصبية العميقةيف المقام األول .نظرًا ألن الشبكات العصبية العميقة قادرة على تركيب
تسميات عشوائية حتى لمجموعات البيانات الكبيرة ،وعلى الرغم من استخدام طرق مألوفة مثل
التنظيم ،فإن حدود التعميم التقليدية القائمة على التعقيد ،على سبيل المثال ،تلك القائمة على
بُعد VCأو تعقيد Rademacherلفئة فرضية ال يمكنها تفسير السبب تعمم الشبكات العصبية.
257 الفصل الخامس :البيرسيبترون متعدد الطبقات
ربما يكون أبسط مثال على نموذج غير معلمي هو خوارزمية الجار األقرب k-nearest
(neighborسنغطي المزيد من النماذج الالمعلمية الحقًا ،كمايف القسم .)11.2هنا،يف وقت
التدريب ،يحفظ المتعلم ببساطة مجموعة البيانات .ثم،يف وقت التنبؤ ،عندما يواجه المتعلم نقطة
جديدة 𝐱 ،يبحث عن أقرب الجيران (𝑘 من النقاط 𝐱𝑖′تقلل من بعض المسافة ) .)𝑑(𝐱, 𝐱𝑖′
عندما ، 𝑘 = 1تسمى هذه الخوارزمية ،1-nearest neighborsوستحقق الخوارزمية دائمًا
خطأ تدريب قدره صفر .لكن هذا ال يعني أن الخوارزمية لن تعمم.يف الواقع ،اتضح أنهيف ظل بعض
الظروف المعتدلة ،تكون خوارزمية الجار األقرب متسقة (تتقاربيف النهاية إلى المتنبئ األمثل).
الحظ أن أحد الجيران األقرب يتطلب أن نحدد بعض دوال المسافة 𝑑 ،أو بشكل مكافئ ،أن
نحدد بعض دوال األساس ذات القيمة المتجهية )𝐱(𝜙 لتمييز بياناتنا .ألي اختيار لمقياس
المسافة ،سنحقق 0خطأ تدريب ونصليف النهاية إلى متنبئ مثالي ،لكن مقاييس المسافة المختلفة
𝑑 ت شفر تحيزات استقرائية مختلفة وبكمية محدودة من البيانات المتاحة ستنتج تنبؤات مختلفة.
تمثل االختيارات المختلفة لمقياس المسافة 𝑑 افتراضات مختلفة حول األنماط األساسية
وسيعتمد أداء المتنبئين المختلفين على مدى توافق االفتراضات مع البيانات المرصودة.
بمعنى ما ،نظرًا ألن الشبكات العصبية مفرطةيف المعلمات ،وتمتلك العديد من المعلمات أكثر
مما هو مطلوب لمالءمة بيانات التدريب ،فإنها تميل إلى استيفاء بيانات التدريب (لتناسبها تمامًا)
وبالتالي تتصرف،يف بعض النواحي ،مثل النماذج الالمعلمية .nonparametric modelsأثبتت
األبحاث النظرية الحديثة ارتباطًا عميقًا بين الشبكات العصبية الكبيرة والطرق الالمعلمية ،وال
سيما طرق النواة .kernel methodsعلى وجه الخصوص ،أظهر ( )2018 ،Jacot et al.أنه
في الحد األقصى ،مع نمو البيرسيبترون متعدد الطبقات مع أوزان مُهيأة عشوائيًا بشكل ال نهائي،
تصبح مكافئة لطرق النواة (الالبارامترية) الختيار معين لدالة النواة ( kernelبشكل أساسي ،دالة
التعمق في التعلم العميق :األساسيات والمقدمات 258
المسافة) ،والتي يسمونها نواة المماس العصبية .neural tangent kernelيف حين أن نماذج
نواة المماس العصبية الحالية قد ال تفسر بشكل كامل سلوك الشبكات العميقة الحديثة ،فإن
نجاحها كأداة تحليلية يؤكد فائدة النمذجة الالمعلمية لفهم سلوك الشبكات العميقة ذات
المعلمات المفرطة.
تساعد هذه النتائج معًايف تحفيز التوقف المبكر ،early stoppingوهي تقنية كالسيكية لتنظيم
الشبكات العصبية العميقة .هنا ،بدالً من تقييد قيم األوزان بشكل مباشر ،يقيد المرء عدد فترات
التدريب .الطريقة األكثر شيوعًا لتحديد معايير التوقف هي مراقبة خطأ التحقق من الصحة خالل
التدريب (عادةً عن طريق التحقق مرة واحدة بعد كل فترة) وقطع التدريب عندما ال ينخفض
خطأ التحقق بأكثر من مقدار صغير لبعض الفترات .هذا يسمى أحيانًا معايير الصبر patience
.criteriaإلى جانب إمكانية أن يؤدي إلى تعميم أفضل،يف وضع التسميات الصاخبة noisy
،labelsهناك فائدة أخرى للتوقف المبكر وهي الوقت الذي يتم توفيره .بمجرد استيفاء معايير
الصبر ،يمكن للمرء إنهاء التدريب .بالنسبة للنماذج الكبيرة التي قد تتطلب أيامًا من التدريبيف
وقت واحد عبر 8وحدات معالجة رسومات أو أكثر ،يمكن أن يوفر التوقف المبكر الذي يتم
ضبطه جيدًا على الباحثين أيامًا من الوقت ويمكن أن يوفر على أصحاب العمل عدة آالف من
الدوالرات.
والجدير بالذكر أنهيف حالة عدم وجود ضوضاء على التسمية وتكون مجموعات البيانات قابلة
للتحقيق (يمكن فصل الفئات حقًا ،على سبيل المثال ،التمييز بين القطط والكالب) ،فإن التوقف
المبكر ال يؤدي إلى تحسينات كبيرةيف التعميم .من ناحية أخرى ،عندما يكون هناك ضوضاءيف
التسمية ،أو تباين جوهرييف التسمية (على سبيل المثال ،التنبؤ بالوفيات بين المرضى) ،فإن
التوقف المبكر أمر بالغ األهمية .عادة ما تكون نماذج التدريب حتى تستكمل البيانات المزعجة
فكرة سيئة.
259 الفصل الخامس :البيرسيبترون متعدد الطبقات
Classical 5.5.4
Regularization Methods for Deep Networks
في القسم ،3وصفنا العديد من تقنيات التنظيم الكالسيكية لتقييد تعقيد نماذجنا .على وجه
الخصوص ،قدم القسم 3.7طريقة تسمى انحالل الوزن ،weight decayوالتي تتكون من
إضافة مصطلح تنظيم إلى دالة الخطأ لمعاقبة القيم الكبيرة لألوزان .اعتمادًا على معيار الوزن الذي
يتم المعاقبة عليه ،تُعرف هذه التقنية إما باسم تنظيم ( ridgeللعقوبة )ℓ2أو تنظيم ( lassoللعقوبة
.)ℓ1يف التحليل الكالسيكي لهؤالء المنظمين ،يُنظر إليهم على أنهم يقيدون القيم التي يمكن أن
تأخذها األوزان بشكل كافٍ لمنع النموذج من مالءمة التسميات العشوائية.
في تطبيقات التعلم العميق ،يظل انحالل الوزن أداة شائعة .ومع ذلك ،فقد الحظ الباحثون أن
نقاط القوة النموذجية للتنظيم غير كافية لمنع الشبكات من استيفاء البيانات (،.Zhang et al
.)2021وبالتالي فإن الفوائد إذا فُسرت على أنها تنظيم قد تكون منطقية فقط باالقتران مع معايير
التوقف المبكر.يف غياب التوقف المبكر ،من الممكن أن تؤدي هذه األساليب إلى تعميم أفضل،
ليس ألنها تقيد بشكل هادف قوة الشبكة العصبية ولكن ألنها تقوم بطريقة ما بتشفير التحيزات
االستقرائية inductive biasesالتي تتوافق بشكل أفضل مع األنماط الموجودةيف مجموعات
بيانات االهتمامات .وهكذا ،يظل المنظمون الكالسيكيون شائعينيف تطبيقات التعلم العميق،
حتى لو كان األساس المنطقي النظري لفعاليتهم مختلفًا جذريًا.
والجدير بالذكر أن باحثي التعلم العميق قد اعتمدوا أيضًا على التقنيات التي تم تعميمها ألول مرة
في سياقات التنظيم الكالسيكية ،مثل إضافة الضوضاء إلى مدخالت النموذج.يف القسم التالي،
سنقدم تقنية الحذف العشوائي(التسرب) dropoutالشهيرة (التي ابتكرها سريفاستافا وآخرون
( ،))2014والتي أصبحت الدعامة األساسية للتعلم العميق ،حتى مع بقاء األساس النظري
لفعاليتها غامضًا بالمثل.
5.5.5
على عكس النماذج الخطية الكالسيكية ،التي تميل إلى أن تحتوي على معلمات أقل من األمثلة،
تميل الشبكات العميقة إلى اإلفراطيف تحديد المعلمات ،وفي معظم المهام تكون قادرة على
مالءمة مجموعة التدريب بشكل مثالي .يتحدى نظام االستيفاء interpolation regimeهذا
العديد من البديهيات الشديدة السرعة .من الناحية الوظيفية ،تبدو الشبكات العصبية مثل النماذج
البارامترية .لكن التفكير فيها كنماذج غير معلمية يمكن أن يكون أحيانًا مصدرًا أكثر موثوقية
للحدس .نظرًا ألنه غالبًا ما تكون جميع الشبكات العميقة قيد الدراسة قادرة على مالءمة جميع
تسميات التدريب ،يجب أن تأتي جميع المكاسب تقريبًا عن طريق التخفيف من فرط التجهيز
(سد فجوة التعميم) .ومن المفارقات أن التدخالت التي تقلل فجوة التعميم تظهر أحيانًا أنها تزيد
التعمق في التعلم العميق :األساسيات والمقدمات 260
من تعقيد النموذج وفي أوقات أخرى يبدو أنها تقلل من التعقيد .ومع ذلك ،نادرًا ما تقلل هذه
األساليب التعقيد بما يكفي للنظرية الكالسيكية لشرح تعميم الشبكات العميقة ،ولماذا تؤدي
بعض الخيارات إلى تحسين التعميم يظليف الغالب سؤالًا مفتوحًا كبيرًا على الرغم من الجهود
المتضافرة للعديد من الباحثين الالمعين.
5.5.6
.1بأي معنى تفشل المقاييس التقليدية القائمة على التعقيديف تفسير تعميم الشبكات
العصبية العميقة؟
.2لماذا يمكن اعتبار التوقف المبكر تقنية تنظيم regularization technique؟
.3كيف يحدد الباحثون عادة معايير التوقف stopping criteria؟
.4ما هو العامل المهم الذي يبدو أنه يميز الحاالت عندما يؤدي التوقف المبكر إلى
تحسينات كبيرةيف التعميم generalization؟
.5بعد التعميم ،صف فائدة أخرى للتوقف المبكر .early stopping
Dropout 5.6
دعونا نفكر بإيجاز فيما نتوقعه من نموذج تنبؤي جيد .good predictive modelنريدها أن
تعمل بشكل جيد على البيانات غير المرئية .unseen dataتقترح نظرية التعميم الكالسيكية أنه
لسد الفجوة بين أداء التدريب واالختبار ،يجب أن نهدف إلى نموذج بسيط .يمكن أن تأتي البساطة
في شكل عدد صغير من األبعاد .اكتشفنا ذلك عند مناقشة دوال األساس األحادي monomial
basis functionsللنماذج الخطيةيف القسم .3.6باإلضافة إلى ذلك ،كما رأينا عند مناقشة
تناقص الوزن (التنظيم )ℓ2يف القسم ،3.7فإن المعيار ( normالعكسي) للمعلمات يمثل أيضًا
مقياسًا مفيدًا للبساطة .مفهوم آخر مفيد للبساطة هو النعومة ،smoothnessأي أن الدالة ال ينبغي
أن تكون حساسة للتغييرات الصغيرةيف مدخالتها .على سبيل المثال ،عندما نصنف الصور ،نتوقع
أن تكون إضافة بعض الضوضاء العشوائية إلى وحدات البكسل غير ضارةيف الغالب.
في عام ،1995صاغ كريستوفر بيشوب هذه الفكرة عندما أثبت أن التدريب باستخدام ضوضاء
اإلدخال يعادل تنظيم تيخونوف .)1995 ،Bishop( Tikhonov regularizationرسم هذا
العمل ارتباطًا رياضيًا واضحًا بين شرط أن تكون الدالة سلسة ( smoothوبالتالي بسيطة)،
ومتطلبات أن تكون مرنة resilientلالضطراباتيف المدخالت.
ثم،يف عام ،2014سريفاستافا وآخرون )2014 ،.Srivastava et al( .فكرة ذكية عن كيفية
تطبيق فكرة بيشوب على الطبقات الداخلية للشبكة أيضًا .تتضمن فكرتهم ،المسماة الحذف
العشوائي (التسرب) ،dropoutحقن الضوضاء أثناء حساب كل طبقة داخلية أثناء االنتشار
األمامي ،وقد أصبحت تقنية قياسية لتدريب الشبكات العصبية .تسمى هذه الطريقة بـ dropout
261 الفصل الخامس :البيرسيبترون متعدد الطبقات
ألننا حرفيا نتخلى عن بعض الخاليا العصبية أثناء التدريب .خالل التدريب،يف كل تكرار ،يتكون
الحذف العشوائي القياسي من تصفية جزء من العقديف كل طبقة قبل حساب الطبقة التالية.
لكي نكون واضحين ،نحن نفرض روايتنا الخاصة باالرتباط بـبيشوب .تقدم الورقة األصلية حول
dropoutحدسًا من خالل تشبيه مدهش للتكاثر الجنسي .يجادل المؤلفون بأن فرط التجهيز
ل لشبكة العصبية يتميز بحالة تعتمد فيها كل طبقة على نمط معين من التنشيطاتيف الطبقة السابقة،
مما يطلق على هذا الشرط التكيف المشترك .condition co-adaptationوهم يزعمون أن
dropoutيؤدي إلى تفكك التكيف المشترك تمامًا كما يُقال إن التكاثر الجنسي يفكك الجينات
المتكيفة معًا.يف حين أن شرح هذه النظرية مطروح للنقاش بالتأكيد ،فقد أثبت أسلوب dropout
نفسه أنه ثابت ،ويتم تنفيذ أشكال مختلفة من dropoutيف معظم مكتبات التعلم العميق.
التحدي ال رئيسي هو كيفية ضخ هذه الضوضاء .تتمثل إحدى األفكاريف حقن الضوضاء بطريقة
غير منحازة بحيث تكون القيمة المتوقعة لكل طبقة -أثناء تثبيت الطبقات األخرى -مساوية
للقيمة التي كانت ستأخذهايف غياب الضوضاء.يف عمل بيشوب ،أضاف ضوضاء غاوسية إلى
المدخالت إلى نموذج خطي.يف كل تكرار تدريبي ،أضاف ضوضاء مأخوذة من توزيع بمتوسط
صفر ) 𝜖 ∼ 𝒩(0, 𝜎 2إلى المدخالت 𝐱 ،مما أسفر عن نقطة مضطربة 𝜖 .𝐱 ′ = 𝐱 +يف توقع
𝐱 = ] .𝐸[𝐱 ′
في تنظيم dropoutالقياسي ،يقوم أحد األصفار بإزالة بعض أجزاء العقديف كل طبقة ثم يقوم
بإزالة الحواف من كل طبقة عن طريق التسوية بواسطة جزء العقد التي تم االحتفاظ بها (غير
المسقطة او المحذوفة .)not dropped outبمعنى آخر ،مع احتمال الحذف العشوائي 𝑝 ،
يتم استبدال كل تنشيط وسيط ℎبمتغير عشوائي ℎ′على النحو التالي:
أيضًا عند إجراء االنتشار الخلفي .بهذه الطريقة ،ال يمكن أن يعتمد حساب طبقة المخرجات
بشكل مفرط على أي عنصر واحد من .ℎ1 , … , ℎ5
عادة ،نقوم بتعطيل dropoutيف وقت االختبار .بالنظر إلى نموذج مدرب ومثال جديد ،فإننا ال
نتجاهل أي عقد وبالتالي ال نحتاج إلى التسوية .normalizationومع ذلك ،هناك بعض
االستثناءات :يستخدم بعض الباحثين dropoutيف وقت االختبار كإرشاد لتقدير عدم اليقين
uncertaintyيف تنبؤات الشبكة العصبية :إذا اتفقت التوقعات عبر العديد من أقنعة dropout
المختلفة ،فقد نقول إن الشبكة أكثر ثقة.
في الكود التالي ،نقوم بتنفيذ دالة dropout_layerالتي تسقط العناصريف إدخال الموتر X
مع احتمال ،dropoutمع إعادة قياس الباقي كما هو موضح أعاله :قسمة الناجين على 1.0-
.dropout
class DropoutMLPScratch(d2l.Classifier):
def __init__(self, num_outputs, num_hiddens_1,
num_hiddens_2,
dropout_1, dropout_2, lr):
super().__init__()
self.save_hyperparameters()
self.lin1 = tf.keras.layers.Dense(num_hiddens_1,
activation='relu')
األساسيات والمقدمات:التعمق في التعلم العميق 264
self.lin2 = tf.keras.layers.Dense(num_hiddens_2,
activation='relu')
self.lin3 = tf.keras.layers.Dense(num_outputs)
ببساطة بتمرير البيانات من خاللها أثناءDropout تقوم طبقة،عندما ال تكونيف وضع التدريب
.االختبار
class DropoutMLP(d2l.Classifier):
def __init__(self, num_outputs, num_hiddens_1,
num_hiddens_2,
dropout_1, dropout_2, lr):
super().__init__()
self.save_hyperparameters()
self.net = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(num_hiddens_1,
activation=tf.nn.relu),
tf.keras.layers.Dropout(dropout_1),
tf.keras.layers.Dense(num_hiddens_2,
activation=tf.nn.relu),
tf.keras.layers.Dropout(dropout_2),
tf.keras.layers.Dense(num_outputs)])
. نقوم بتدريب النموذج،بعد ذلك
model = DropoutMLP(**hparams)
trainer.fit(model, data)
التعمق في التعلم العميق :األساسيات والمقدمات 266
5.6.4
إلى جانب التحكميف عدد األبعاد وحجم متجه الوزن ،weight vectorفإن •
Dropoutهو أداة أخرى لتجنب الضبط الزائد .overfittingغالبا ما يتم استخدامها
بشكل مشترك.
يستبدل Dropoutالتنشيط ℎبمتغير عشوائي ذي قيمة متوقعة .ℎ •
يستخدم Dropoutفقط أثناء التدريب. •
5.6.5
.1ماذا يحدث إذا قمت بتغيير احتماالت Dropoutللطبقتين األولى والثانية؟ على وجه
الخصوص ،ماذا يحدث إذا قمت بتبديل الطبقات لكلتا الطبقتين؟ صمم تجربة لإلجابة
على هذه األسئلة ،ووصف نتائجك من الناحية الكمية ،ولخص النتائج النوعية.
.2قم بزيادة عدد الفترات number of epochsومقارنة النتائج التي تم الحصول عليها
عند استخدام Dropoutمع تلك التي تم الحصول عليها عند عدم استخدامها.
.3ما هو تباين التنشيطاتيف كل طبقة مخفية عندما يتم تطبيق Dropoutوال يتم تطبيقه؟
ارسم مخططًا إلظهار كيفية تطور هذه الكمية بمرور الوقت لكال النموذجين.
.4لماذا ال يتم استخدام Dropoutعادةيف وقت االختبار test time؟
.5باستخدام النموذجيف هذا القسم كمثال ،قارن بين تأثيرات استخدام Dropout
وتناقص الوزن .weight decayماذا يحدث عند استخدام Dropoutوتناقص الوزن
في نفس الوقت؟ هل النتائج مضافة؟ هل هناك عوائد متناقصة (أو أسوأ)؟ هل يلغون
بعضهم البعض؟
.6ماذا يحدث إذا طبقنا Dropoutعلى األوزان الفردية لمصفوفة الوزن بدالً من
التنشيطات؟
.7اخترع تقنية أخرى لحقن ضوضاء عشوائيةيف كل طبقة تختلف عن تقنية Dropout
القياسية .هل يمكنك تطوير طريقة تتفوقيف األداء على مجموعة بيانات Fashion-
( MNISTللهندسة المعمارية الثابتة)؟
أو الفيديو) .مجموعة البيانات هذه ،التي جمعها Bart de Cockفي عام ،De Cock( ،2011
،)2011تغطي أسعار المنازليف IA ، Amesمن الفترة .2010-2006إنه أكبر بكثير من
مجموعة بيانات اإلسكان الشهيرةيف بوسطن Boston housing datasetلهاريسون وروبينفيلد
( ،)1978ويضم المزيد من األمثلة والمزيد من الميزات.
في هذا القسم ،سنرشدك إلى تفاصيل المعالجة المسبقة للبيانات وتصميم النموذج واختيار
المعلمة الفائقة .نأمل أن تكتسب من خالل نهج عملي بعض البديهيات التي ستوجهكيف حياتك
المهنية كعالم بيانات.
Kaggle 5.7.2
Kaggleهي منصة شهيرة تستضيف مسابقات التعلم اآللي .تركز كل مسابقة على مجموعة
بيانات والعديد منها برعاية أصحاب المصلحة الذين يقدمون جوائز للحلول الفائزة .تساعد
المنصة المستخدمين على التفاعل عبر المنتديات واالكواد المشتركة ،مما يعزز التعاون
والمنافسة.يف حين أن مطاردة المتصدرين غالبًا ما تخرج عن نطاق السيطرة ،مع تركيز الباحثين
على خطوات المعالجة المسبقة بدالً من طرح األسئلة األساسية ،هناك أيضًا قيمة هائلةيف
موضوعية النظام األساسي الذي يسهل المقارنات الكمية المباشرة بين األساليب المتنافسة
باإلضافة إلى مشاركة الكود بحيث يمكن للجميع أن يتعلموا ما نجح وما لم ينجح .إذا كنت ترغب
في المشاركةيف مسابقة ،Kaggleفستحتاج أوالً إلى التسجيل للحصول على حساب (انظر الشكل
.)5.7.1
في صفحة مسابقة التنبؤ بسعر المنزل ،كما هو موضحيف الشكل ،5.7.2يمكنك العثور على
مجموعة البيانات (ضمن عالمة التبويب "البيانات") ،وإرسال التنبؤات ،واالطالع على الترتيب
الخاص بك ،عنوان URLموجود هنا:
https://www.kaggle.com/c/house-prices-advanced-regression-
techniques
%matplotlib inline
import numpy as np
import pandas as pd
import tensorflow as tf
from d2l import tensorflow as d2l
للبدء ،سنقرأ البيانات ونعالجها باستخدام ،pandasوالتي قدمناهايف القسم .2.2للسهولة،
يمكننا تنزيل مجموعة بيانات اإلسكان Kaggleوتخزينها مؤقتًا .إذا كان الملف المطابق
لمجموعة البيانات هذه موجودًا بالفعليف دليل ذاكرة التخزين المؤقت وكان SHA-1يتطابق
مع ،sha1_hashفسيستخدم الكود الخاص بنا الملف المخزن مؤقتًا لتجنب انسداد اإلنترنت
بالتنزيالت الزائدة عن الحاجة.
class KaggleHouse(d2l.DataModule):
def __init__(self, batch_size, train=None,
val=None):
)(__super().__init
)(self.save_hyperparameters
if self.train is None:
(self.raw_train = pd.read_csv(d2l.download
d2l.DATA_URL +
'kaggle_house_pred_train.csv', self.root,
))'sha1_hash='585e9cc93e70b39160e7921475f9bcd7d31219ce
(self.raw_val = pd.read_csv(d2l.download
d2l.DATA_URL +
'kaggle_house_pred_test.csv', self.root,
))'sha1_hash='fa19780a7b011d9b009e8bff8e99922a8ee2eb90
التعمق في التعلم العميق :األساسيات والمقدمات 270
تتضمن مجموعة بيانات التدريب 1460مثاالً و 80ميزة و 1تسمية ،بينما تحتوي بيانات التحقق
من الصحة على 1459مثاالً و 80ميزة.
)data = KaggleHouse(batch_size=64
)print(data.raw_train.shape
)print(data.raw_val.shape
Downloading ../data/kaggle_house_pred_train.csv from
http://d2l-data.s3-
accelerate.amazonaws.com/kaggle_house_pred_train.csv...
Downloading ../data/kaggle_house_pred_test.csv from
http://d2l-data.s3-
accelerate.amazonaws.com/kaggle_house_pred_test.csv...
)(1460, 81
)(1459, 80
Data Preprocessing 5.7.4
دعنا نلقي نظرة على الميزات األربع األولى واألخيرة باإلضافة إلى التصنيف (سعر البيع
)SalePriceمن األمثلة األربعة األولى.
للتحقق من أن هذا يحول. على التوالي،حيث 𝜇 و 𝜎 تشير إلى المتوسط واالنحراف المعياري
𝑥−𝜇
𝐸[ 𝜎
] = الحظ ذلك،بالفعل ميزتنا (المتغير) بحيث ال يحتوي متوسط صفر وتباين وحدة
𝜇−𝜇
نقوم، بشكل حدسي. 𝐸[(𝑥 − 𝜇)2 ] = (𝜎 2 + 𝜇2 ) − 2𝜇2 + 𝜇2 = 𝜎 2 وذلك 𝜎
=0
نظرًا ألننا ال نعرف مسبقًا أي، ثانيًا. ثبت أنه مناسب للتحسين،ً أوال.بتوحيد البيانات لسببين
ال نريد معاقبة المعامالت المخصصة لميزة واحدة أكثر من أي ميزة،الميزات ستكون ذات صلة
.أخرى
يتضمن ذلك ميزات مثل.discrete values بعد ذلك نتعامل مع القيم المتقطعة
بنفس الطريقةone-hot encoding نقوم باستبدالها بترميز واحد ساخن."MSZoning"
على.)4.1.1 التي قمنا بها سابقًا بتحويل التسميات متعددة الفئات إلى متجهات (انظر القسم
بإسقاط ميزة."RM" " وRL" " القيمتينMSZoning" تفترض،سبيل المثال
و "MSZoning_RL" للمؤشر جديدتين ميزتين إنشاء يتم ،”MSZoning"
إذا كانت القيمة األصلية، وفقًا للترميز الواحد الساخن.1 أو0 " بقيم إماMSZoning_RM"
MSZoning_RM“ و1 ” تساويMSZoning_RL القيمة،”RL" " هيMSZoning" لـ
.تقوم بذلك تلقائيًا لناpandas حزمة.0 ”تساوي
@d2l.add_to_class(KaggleHouse)
def preprocess(self):
# Remove the ID and label columns
label = 'SalePrice'
features = pd.concat(
(self.raw_train.drop(columns=['Id', label]),
self.raw_val.drop(columns=['Id'])))
# Standardize numerical columns
numeric_features = features.dtypes[features.dtypes
!= 'object'].index
features[numeric_features] =
features[numeric_features].apply(
lambda x: (x - x.mean()) / (x.std()))
# Replace NAN numerical features by 0
features[numeric_features] =
features[numeric_features].fillna(0)
# Replace discrete features by one-hot encoding.
features = pd.get_dummies(features, dummy_na=True)
# Save preprocessed features
self.train =
features[:self.raw_train.shape[0]].copy()
self.train[label] = self.raw_train[label]
التعمق في التعلم العميق :األساسيات والمقدمات 272
)(self.val = features[self.raw_train.shape[0]:].copy
يمكنك أن ترى أن هذا التحويل يزيد عدد الميزات من 79إلى ( 331باستثناء أعمدة المعرف
IDوالتسمية .)label
)(data.preprocess
data.train.shape
)(1460, 332
Error Measure 5.7.5
للبدء ،سنقوم بتدريب نموذج خطي بخسارة مربعة .squared lossليس من المستغرب أن
نموذجنا الخطي لن يؤدي إلى إرسال فائز بالمنافسة ولكنه يوفر فحصًا للعقل لمعرفة ما إذا كانت
هناك معلومات مفيدةيف البيانات .إذا لم نتمكن من القيام بما هو أفضل من التخمين العشوائي
هنا ،فقد تكون هناك فرصة جيدة لوجود خطأيف معالجة البيانات .وإذا نجحت األشياء ،فسيكون
النموذج الخطي بمثابة خط أساس يمنحنا بعض الحدس حول مدى قرب النموذج البسيط من
أفضل النماذج المبلغ عنها ،مما يمنحنا إحساسًا بمدى المكاسب التي يجب أن نتوقعها من
النماذج األكثر رواجًا.
مع أسعار المساكن ،كما هو الحال مع أسعار األسهم ،نهتم بالكميات النسبية أكثر من الكميات
^
^ 𝑦𝑦−
من الخطأ المطلق 𝑦 .𝑦 − 𝑦
المطلقة .وبالتالي فإننا نميل إلى االهتمام أكثر بالخطأ النسبي
على سبيل المثال ،إذا تم إيقاف توقعنا بمقدار 100,000دوالر أمريكي عند تقدير سعر منزليف
ريف أوهايو ،حيث تبلغ قيمة المنزل النموذجي 125,000دوالر أمريكي ،فمن المحتمل أننا نقوم
بعمل رهيب .من ناحية أخرى ،إذا أخطأنا بهذا المبلغيف لوس ألتوس هيلز ،كاليفورنيا ،فقد يمثل
هذا تنبوًا دقيقًا بشكل مذهل (هناك ،يتجاوز متوسط سعر المنزل 4ماليين دوالر أمريكي).
تتمثل إحدى طرق معالجة هذه المشكلةيف قياس التناقضيف لوغاريتم تقديرات األسعار.يف الواقع،
يعد هذا أيضًا مقياس الخطأ الرسمي الذي تستخدمه المسابقة لتقييم جودة الطلبات المقدمة.
^
𝑦 ^
≤ 𝛿 . 𝑒 −يؤدي بعد كل شيء ،قيمة صغيرة 𝛿 لـ 𝛿 ≤ |𝑦 |log 𝑦 − logتترجم إلى 𝛿 𝑒 ≤
𝑦
هذا إلى الخطأ الجذر التربيعي root-mean-squared-errorالتالي بين لوغاريتم السعر
المتوقع predicted priceولوغاريتم سعر التسمية :label price
𝑛
1 ^
∑ √ (log 𝑦𝑖 − log 𝑦𝑖 )2 .
𝑛
𝑖=1
)@d2l.add_to_class(KaggleHouse
def get_dataloader(self, train):
273 البيرسيبترون متعدد الطبقات:الفصل الخامس
label = 'SalePrice'
data = self.train if train else self.val
if label not in data: return
get_tensor = lambda x: tf.constant(x.values,
dtype=tf.float32)
# Logarithm of prices
tensors = (get_tensor(data.drop(columns=[label])),
# X
tf.reshape(tf.math.log(get_tensor(data[label])), (-1,
1))) # Y
return self.get_tensorloader(tensors, train)
K-Fold Cross Validation 5.7.6
حيث ناقشنا كيفية التعامل مع اختيار،3.6.3 قد تتذكر أننا قدمنا التحقق المتبادليف القسم
نحتاج. سنستخدم هذا بشكل جيد لتحديد تصميم النموذج وضبط المعلمات الفائقة.النموذج
يتم المضي قدمًا عن طريق تقطيع. 𝑖 طي البياناتيف إجراء تحقق متقاطعth أوالً إلى دالة تُرجع
الحظ أن هذه ليست الطريقة األكثر. 𝑖المقطع كبيانات تحقق وإعادة الباقي كبيانات تدريبth
فاعلية للتعامل مع البيانات وسنفعل بالتأكيد شيئًا أكثر ذكاءً إذا كانت مجموعة البيانات الخاصة
لكن هذا التعقيد اإلضافي قد يؤدي إلى تشويش الكود الخاصة بنا دون داع لذلك.بنا أكبر بكثير
.يمكننا حذفها بأمان هنا بسبب بساطة مشكلتنا
val_loss.append(float(model.board.data['val_loss'][-
))1].y
)models.append(model
= print(f'average validation log mse
)'}){sum(val_loss)/len(val_loss
return models
Model Selection 5.7.7
في هذا المثال ،نختار مجموعة غير مضبوطة من المعلمات الفائقة ونتركها للقارئ لتحسين
النموذج .قد يستغرق العثور على خيار جيد وقتًا ،اعتمادًا على عدد المتغيرات التي يحسنها المرء.
مع وجود مجموعة بيانات كبيرة بما يكفي ،واألنواع العادية من المعلمات الفائقة ،يميل التحقق
المتبادل K-Foldإلى أن يكون مرنًا بشكل معقول ضد االختبارات المتعددة .ومع ذلك ،إذا
جربنا عددًا كبيرًا بشكل غير معقول من الخيارات ،فقد نحالفنا الحظ ونجد أن أداء التحقق من
الصحة لم يعد يمثل الخطأ الحقيقي.
)trainer = d2l.Trainer(max_epochs=10
)models = k_fold(trainer, data, k=5, lr=0.01
average validation log mse = 0.1782047653198242
الحظ أنهيف بعض األحيان يمكن أن يكون عدد أخطاء التدريب لمجموعة من المعلمات الفائقة
منخفضًا جدًا ،حتى مع ارتفاع عدد األخطاءيف التحقق المتبادل K-Foldبشكل كبير .هذا يشير
إلى أننا نفرطيف التجهيز .overfittingخالل التدريب ،سترغبيف مراقبة كال الرقمين .قد يشير
التجاوز األقل إلى أن بياناتنا يمكن أن تدعم نموذجًا أكثر قوة .قد يوحي فرط التجهيز الهائل بأنه
يمكننا االستفادة من خالل دمج تقنيات التنظيم .regularization
275 الفصل الخامس :البيرسيبترون متعدد الطبقات
preds = [model(tf.constant(data.val.values,
))dtype=tf.float32
]for model in models
# Taking exponentiation of predictions in the logarithm
scale
ensemble_preds = tf.reduce_mean(tf.exp(tf.concat(preds,
)1)), 1
submission = pd.DataFrame({'Id':data.raw_val.Id,
)})('SalePrice':ensemble_preds.numpy
)submission.to_csv('submission.csv', index=False
بعد ذلك ،كما هو موضحيف الشكل ،5.7.3يمكننا تقديم تنبؤاتنا على Kaggleومعرفة كيفية
مقارنتها بأسعار المنازل الفعلية (التسميات )labelsيف مجموعة االختبار .الخطوات بسيطة
للغاية:
قم بتسجيل الدخول إلى موقع Kaggleاإللكتروني وقم بزيارة صفحة مسابقة التنبؤ •
بأسعار المنازل.
التعمق في التعلم العميق :األساسيات والمقدمات 276
انقر فوق الزر "إرسال التوقعات " Submit Predictionsأو "التقديم المتأخر" (حتى •
كتابة هذه السطور ،يوجد الزر على اليمين).
انقر فوق الزر "تحميل ملف التقديم " Upload Submission Fileيف المربع •
المتقطع أسفل الصفحة وحدد ملف التنبؤ الذي ترغبيف تحميله.
انقر فوق الزر "تقديم " Make Submissionيف أسفل الصفحة لعرض النتائج الخاصة •
بك.
5.7.9
غالبًا ما تحتوي البيانات الحقيقية على مزيج من أنواع البيانات المختلفة وتحتاج إلى •
معالجة مسبقة.
إعادة قياس Rescalingالبيانات ذات القيمة الحقيقية إلى متوسط الصفر وتباين •
الوحدة يعد افتراضيًا جيدًا .لذلك يتم استبدال القيم المفقودة بمتوسطها.
يتيح لنا تحويل الميزات الفئوية categorical featuresإلى ميزات مؤشر أن نتعامل •
معها على أنها متجهات واحدة ساخنة.
يمكننا استخدام التحقق المتبادل K-Foldلتحديد النموذج وضبط المعلمات الفائقة. •
اللوغاريتمات مفيدة لألخطاء النسبية. •
5.7.10
.1أرسل توقعاتك لهذا القسم إلى .Kaggleما مدى جودة توقعاتك؟
.2هل من الجيد دائمًا استبدال القيم المفقودة بمتوسطها؟ تلميح :هل يمكنك بناء موقف
ال تكون فيه القيم مفقودة بشكل عشوائي؟
.3قم بتحسين النتيجة على Kaggleعن طريق ضبط المعلمات الفائقة من خالل التحقق
المتبادل .K-Fold
.4قم بتحسين النتيجة من خالل تحسين النموذج (على سبيل المثال ،الطبقات وتناقص
الوزن و.)dropout
.5ماذا يحدث إذا لم نقم بتوحيد standardizeالسمات العددية المستمرة مثل ما فعلناه
في هذا القسم؟
ئ