تمهيد

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

في السنوات الخمس الماضية فقط، فاجأ التعلُّم العميق العالم، ممّا أدّى إلى تقدُّمٍ سريعٍ في مجالاتٍ متنوِّعة مثل رؤية الكمبيوتر ومعالجة اللغة الطبيعية والتعرُّفِ التلقائي على الكلام والتعلُّم المعزز والنمذجة الإحصائية. مع هذه التطورات في متناول اليد، يمكننا الآن بناء سيارات تقود نفسها باستقلالية أكثر من أي وقت مضى (واستقلالية أقلَّ مِمَّا تُريدُك بعض الشركات أن تعتقده)، أنظمة الردّ الذكيَّةِ الّتي تقوم تِلقائيًا بصياغة مُعظم رسائل البريدِ الإلكتروني العادية، ممّا يساعد النّاس على الخروج من أزمة الصناديق البريد الإلكتروني الوارد المُكتضّة، وعُمّال مُبرمجون قادرون على الهيمنة على أفضل البشر في العالم في ألعاب الطاولة مِثل لُعبة Go، وهو إنجاز كُنّا نعتقِدُ في السّابق أنّهُ بعيدٌ لعقود. بالفعل، تمارسُ هذه الأدوات تأثيراتٍ واسعة النِّطاق على الصناعة والمجتمع، وفهي قد غيَّرت طريقة صِناعة الأفلام، وتشخيصِ الأمراض، وتلعب دورًا متزايدًا في العلومِ الأساسية — من الفيزياء الفلكيّة إلى علم الأحياء.

حول هذا الكتاب

يُمثِّلُ هذا الكتابُ محاولتنا لجعلِ التعلُّم العميقِ سهل المنال، حيثُ نسعى إلى تعليمِكَ المفاهيم ، السِّياق و التّعليمات البرمجيّة.

وسيلة واحدة تجمع بين التعليمات البرمجيّة والرياضيات و HTML

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

يُبرز اختبارُ إمكانات التعلُّم العميق تحديات فريدة لأن أيّ تطبيق فرديٍّ لهُ يتطلّبُ الجمع بين عدّةِ تخصُّصاتٍ مُختلفة. يتطلّب تطبيق التعلم العميق فهمًا متزامنًا (1) للدوافع المُؤدّية لصِياغَةِ مُشكلَةٍ بطريقةٍ مُعيّنة؛ (2) الرِّياضِيَّات الخاصّة بنهجِ نمذجة مُعَيّن؛ (3) خوارزميات التّحسين المسُتعلمة لتُلائِمَ النّماذج مع البيانات؛ و (4) المعرفة الهندسية اللازمة لتدريب النّماذج بكفاءة، وتجنُّب عثرات الحوسبة الرقميّة وتحقيق أقصى استفادة من القُدرة الحسابيّة للأجهزة المُتاحة. يُمثِّلُ تدريسُ كُلٍّ مِن مهاراتِ التّفكيرِ النّقدي المطلوبة لصياغة المشكلات، والرياضيات لحلِّها، والأدوات البرمجية لتنفيذ هذه الحلول في مكان واحدٍ تحدِّيًا هائلاً. هدفنا في هذا الكتاب هو تقديم مَورِدٍ مُوَحَّدٍ لإطلَاعِ المُمارِسينَ المُحتملين على آخر التطوُّرات في مجال التعلُّم العميق.

في الوقت الذي بدأنا فيه مشروع الكتاب هذا، لم تكُن هُناك موارد (1) حديثة؛ (2) و تُغطّي النطاق الكامل للتطوُّرات الحديثة للتعلُّم الآلي بتعمُّق كبير في التفاصيل التقنيّة؛ مع (3) عرض مُتكامل بالجودة التي يتوقعها المرء من كتاب مدرسي مُمتع مع التعليمات البرمجيّة (الأكواد) الواضحة، سهلة الفهم، و القابلة للتشغيل التي يتوقّعُ المرء أن يجدها في البرامج التعليمية العمليَّة. لقد وجدنا الكثير من أمثلة التعليمات البرمجية لكيفية استخدام مكتبة برمجيّة ما من تلك المُتاحة في مجال التعلّم العميق (على سبيل المثال، كيفيّة إجراء الحوسبة الرقمية الأساسية باستخدام المصفوفات في TensorFlow) أو لتنفيذ تقنيات أو نماذج مُعيّنة (على سبيل المثال، مقتطفات التعليمات البرمجية لـ LeNet و AlexNet و ResNets وما إلى ذلك) المنتشرة عبر العديد من مقالات المدونات ومستودعات GitHub. ومع ذلك، ركّزت هذه الأمثلة عادةً على كيفية تنفيذ نهج أو طريقة مُعيّنة، لكنّها استبعدت مناقشة لماذا يتمّ اتخاذُ قراراتٍ حسابية مُعينة. بينما ظهرت بعض الموارد التفاعلية بشكل متقطِّع لمُعالجة موضوعٍ مُعيّن، على سبيل المثال، المقالات المُتقنة و الممُتعة المنشورة على موقِع الويب Distill، أو المدَوّنات الشخصية، إلّا أنها تناولت مواضيع مُحددة فقط في التعلُّم العميق، وغالبًا ما تفتقر إلى التعليمات البرمجية المُتعلّقة بها. من ناحية أخرى، بينما ظهرت العديد من الكتب المدرسية، وأبرزها [Goodfellow et al., 2016]، الّذي يُقدِّم مسحًا شاملاً للمفاهيم النظريّة الكامنة وراء التعلُّم العميق، فإنَّ هذه الموارِد لا تقرِنُ التفسير النظري بالتنفيذ العملي للمفاهيم على شكل تعليمات برمجيّة (أكواد)، ممّا يترُك القُرَّاء أحيانًا جاهلين بكيفيّةِ تنفيذها. علاوة على ذلك، يتمُّ إخفاءُ عددٍ كبير جِدًا من الموارد المعرفيّة خلف جِدار الدّفع الموضوع حول الدّوَراتِ التدريبيَّةِ التِّجاريّة.

شرعنا في إنشاء مورد يُمكن أن (1) يكون مُتاحًا مجانًا للجميع؛ (2) يُوفِّر عُمقًا تقنيًا كافيًا بحيثُ يكون نُقطة انطلاقٍ على الطّريق لتُصبح بالفعلِ عالمًا في مجالِ التعلُّم الآلي التطبيقي؛ (3) يُضمِّنَ التعليماتِ البرمجيَّةَ القابلة للتشغيل، والّتي توضِّحُ للقُرّاء كيفية حلِّ المُشكلات عند الممارسة العمليّة؛ (4) السماح بالتحديثات السّريعة، سواءً من جانبنا أو من قِبلِ المُجتمع ككُل؛ و (5) استكماله بـ منتدى للمُناقشة التّفاعُليّة للتفاصيل التّقنية وللإجابة على الأسئلة.

كانت هذه الأهداف غالبًا متضاربة. حيثُ أنّ أفضل طريقة لإدارة المُعادلات والنظريات والاستشهادات هي باستعمال LaTeX. بينما أفضل وصف للتعليمات البرمجيّة في Python. بينما صفحات الويب يُمكن تنسيقها بشكل أفضل في HTML و JavaScript. علاوة على ذلك، نريد أن يكون كُلُّ المُحتوى مُتاحًا بسهولة سواءً أكان رمزًا للتنفيذ أو كتابًا ماديًا أو ملفَّ PDF قابل للتّنزيل أو على الإنترنت كموقع ويب. في الوقت الحالي، لا توجدُ أدواتُ أو طريقة تسيير عمل مُناسبة تمامًا لهذه المُتطلّبات، لذلك كان علينا تجميع أدواتنا الخاصة. نصِفُ نهج العَملِ المُتبّع بالتفصيل في sec_how_to_contribute. و لمُشاركة المصدر والسماح بإجراء تعديلات قررّنا استعمال GitHub، ودفاتِر Jupyter لتنسيق التعليمات البرمجيّة والمُعادلات والنّصوص بشكل مُتكامل و أنيق، و Sphinx كمحرّك عرضٍ لتوليدِ مُخرجاتٍ مُتعدِّدة، و Discourse كمُنتدى. في حين أن نظامنا ليس مثاليًا بعد، فإنّ هذه الخيارات تُوَفِّرُ حلاًّ وسطًا جيِّدًا بين المُتطلّبات المتنافسة. نعتقد أن هذا قد يكون أول كتاب يتم نشره باستخدام طريقة تسيير عملٍ مُتكاملة كهذه.

التعلم بالمُمارسة

تُدرِّسُ العديدُ من الكُتب المدرسية سلسلة من الموضوعات، كُلٌّ منها بالتفصيل الشّامل. على سبيل المثال، الكتاب المدرسي الممتاز لكريس بيشوب [Bishop, 2006]، يُعلِّمُ كُلَّ موضوعٍ بشكل شامل و مُعمّق، لدرجةِ أنّ الوصولَ إلى فصلِ الانحدارِ الخطِّي يتطلَّبُ قدرًا غير ضئيلٍ مِن العمل. بينما يُحبُّ الخبراء هذا الكتاب على وجه التحديد لِشُموليَّتِه، فإنّ هذه الخاصيَّة، بالنسبة للمُبتدئين، تَحُدُّ مِن فائدتِه كنصٍّ تمهيدِيٍّ.

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

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

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

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

المحتوى والبنية

يُمكِنُ تقسيمُ الكتابِ تقريبًا إلى ثلاثة أجزاء، والتي يتمُّ إبرازُها بألوان مُختلفة في Fig. 1:

../_images/book-org.svg

Fig. 1 Book structure

  • الجزء الأول يغطي الأساسيات و التمهيدات. Section 1 يعرِضُ مُقدِّمةً للتعلُّم العميق. ثم ، في Section 2 ، نطلعك سريعًا على المُتطلِّباتِ الأساسية اللازمة لتطبيق التعلم العميق بشكل عملي، مثل كيفيّة تخزين البيانات ومعالجتها، وكيفية تطبيق العمليات الرقميّة المُختلفة بناءً على المفاهيم الأساسية من الجبر الخطي وحساب التفاضل والتكامل والاحتمال. chap_linear و chap_perceptrons تغطي المفاهيم الأساسية وتقنيات التعلّم العميق، مثل الانحدار الخطّي، والمُدرِكَات مُتعدِدَة الطبقات، والضّبط.

  • تُركّز الفصول الخمسة التالية على تقنيات التعلّم العميق الحديثة. chap_computation يصفُ المكوّنات الرئيسيّة المختلفة في حسابات التعلم العميق ويضعُ الأساس لنا لتنفيذ نماذج أكثر تعقيدًا لاحقًا. بعد ذلك ، في chap_cnn و chap_modern_cnn، نقدِّمُ الشبكات العصبية التلافيفية (CNNs)، وهي أدواتٌ قويةٌ تُشكِّلُ العمود الفقري لمُعظم أنظمة الرُّؤية الحاسوبية الحديثة. بعد ذلك ، في chap_rnn و chap_modern_rnn، نقدِّمُ الشبكات العصبية المتكرِّرة (RNNs)، وهي نماذج تستغل البنية الزمنية أو المتسلسلة في البيانات، وتُستخدم بشكل شائع لمُعالجة اللُّغة الطبيعية وتنبُّؤ السلاسل الزمنية. في chap_attention، نُقدِّمُ فئة جديدة من النماذج التي تستخدم تقنية تُسمى آليّات الانتباه، وقد بدأت مؤخرًا في استبدال RNNs في معالجة اللغة الطبيعية. ستجعلك هذه الأقسام على علم بالأدوات الأساسية وراء معظم التطبيقات الحديثة للتعلُّم العميق.

  • الجزء الثالث يناقش قابلية التوسّع والكفاءة والتطبيقات. أولاً ، في chap_optimization، نناقش العديد من خوارزميات التحسين الشائعة المُستخدمة لتدريبِ نماذِج التعلّم العميق. الفصل التالي ، chap_performance يفحص العديد من العوامل الرئيسية التي تؤثِّرُ على الأداء الحسابي لبرمجيّة التعلُّم العميق الخاص بك. في chap_cv، نوضِّحُ التطبيقات الرئيسية للتعلُّم العميق في رؤية الكمبيوتر. في chap_nlp_pretrain و chap_nlp_app، نعرض كيفية القيام بالتّدريب المُسبق لنماذج تمثيل اللُّغة وتطبيقها على مهام معالجة اللغة الطبيعية.

الكود

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

في بعض الأحيان، لتجنب التكرار غير الضروري، نقوم بتغليف الوظائف والفئات التي يتم استيرادها و الإشارة إليها بشكل متكرر، وما إلى ذلك، في هذا الكتاب في حزمة d2l. سيكون لأي كُتلَةِ أكوادٍ مثل دالة أو فئة أو عمليّات استيراد مُتعددة يتمُّ حفظها في الحزمة، علامة #@save نقدِّمُ نظرةً عامةً مفصلةً عن هذه الوظائف والفئات في sec_d2l. حزمة d2l خفيفة الوزن وتتطلب فقط الحزم والوحدات النمطيّة التالية كاعتماديات (dependencies)

   #@tab all
   #@save
   import collections
   from collections import defaultdict
   from IPython import display
   import math
   from matplotlib import pyplot as plt
   import os
   import pandas as pd
   import random
   import re
   import shutil
   import sys
   import tarfile
   import time
   import requests
   import zipfile
   import hashlib
   d2l = sys.modules[__name__]

معظم التعليمات البرمجيّة (الأكواد) في هذا الكتاب

تعتمد على Apache MXNet. MXNet هو إطار عمل مفتوح المصدر للتعلُّم العميق والخيار المُفضل عند استعمال AWS (Amazon Web Services)، بالإضافة إلى العديد من الجامعات والشركات. اجتازت جميع الأكواد الموجودة في هذا الكتاب اختبارات وفقًا لأحدث إصدار من MXNet. ومع ذلك، نظرًا للتطوُّر السّريع للتعلّم العميق، بعضُ التعليمات البرمجية في الإصدار المطبوع من هذا الكتاب قد لا تعمل بشكل صحيح في الإصدارات المستقبلية من MXNet. ومع ذلك، فإننا نخطط لتحديثِ الإصدار عبر الإنترنت باستمرار. في حالة مواجهة أي من هذه المشاكل، يُرجى الرجوع إلى chap_installation لتحديثِ التعليمات البرمجية و بيئَةِ زمنِ التشغيل (runtime).

في التّالي نوضّح كيفية استيراد الوحدات من MXNet. :end_tab:

معظم التعليمات البرمجيّة في هذا الكتاب مبنية على

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

في التّالي نوضّح كيفية استيراد الوحدات النمطية من PyTorch. :end_tab:

معظم الكود في هذا الكتاب مبني على TensorFlow.

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

في التّالي كيفية استيراد الوحدات النمطية من TensorFlow. :end_tab:

#@save
from mxnet import autograd, context, gluon, image, init, np, npx
from mxnet.gluon import nn, rnn
#@tab pytorch
#@save
import numpy as np
import torch
import torchvision
from torch import nn
from torch.nn import functional as F
from torch.utils import data
from torchvision import transforms
from PIL import Image
#@tab tensorflow
#@save
import numpy as np
import tensorflow as tf

الجمهور المستهدف

هذا الكتاب هو للطُلّابِ (في الدراسات الجامعية أو العليا) والمهندسين والباحثين، الذين يسعون إلى فهم جيّد للتقنياتِ العمليّة للتعلُّم العميق. نظرًا لأننا نشرح كل مفهوم من البداية، فلا يلزم وجود خلفية سابقة في التعلم العميق أو التعلم الآلي. التفسير الكامل لأساليب التعلم العميق يتطلب بعض الرياضيات والبرمجة، لكننا سنفترض فقط أنك تعرفُ بعض الأساسيات، بما في ذلك (أساسيات) الجبر الخطي وحساب التفاضل والتكامل والاحتمالات والبرمَجة بِبايثون. علاوة على ذلك، في الملحق، نقدم تذكيرًا بمعظم الرياضيات التي نحتاجُها في هذا الكتاب. في معظم الأوقات، سنعطي الأولويّة للتفسير باستعمال البديهة والأفكار الأولوية على الدقة الرياضية. هناك العديد من الكتب الرائعة التي يمكن أن تساعد القارئ المهتم على اكتساب فهم نظري عميق للرياضيّات المستعلمة. على سبيل المثال، كتاب التحليل الخطي لكتابه Bela Bollobas [Bollobas, 1999] يُغطّي الجبر الخطي والتحليل الوظيفي بعمق كبير. كما أنّ كتاب “جميع الإحصائيات” [Wasserman, 2013] هو دليل رائع للإحصاء. وإذا لم تكن قد استخدمت Python من قبل، فقد ترغب في الاطلاع على برنامج Python التعليمي.

المنتدى

مع هذا الكتاب، أطلقنا منتدى للمناقشة، في هذا الرّابط Discuss.d2l.ai. عندما يكون لديك أسئلة حول أي قسم من الكتاب، يمكنك العثور على رابط صفحة المناقشة المتعلّقة بالموضوع الذي أنت بصدده في نهاية كل فصل.

شكر وتقدير

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

alxnorden, avinashingit, bowen0701, brettkoonce, Chaitanya Prakash Bapat, cryptonaut, Davide Fiocco, edgarroman, gkutiel, John Mitro, Liang Pu, Rahul Agarwal, Mohamed Ali Jamaoui, Michael (Stu) Stewart, Mike Müller, NRauschmayr, Prakhar Srivastav, sad-, sfermigier, Sheng Zha, sundeepteki, topecongiro, tpdi, vermicelli, Vishaal Kapoor, Vishwesh Ravi Shrimali, YaYaB, Yuhong Chen, Evgeniy Smirnov, lgov, Simon Corston-Oliver, Igor Dzreyev, Ha Nguyen, pmuens, Andrei Lukovenko, senorcinco, vfdev-5, dsweet, Mohammad Mahdi Rahimi, Abhishek Gupta, uwsd, DomKM, Lisa Oakley, Bowen Li, Aarush Ahuja, Prasanth Buddareddygari, brianhendee, mani2106, mtn, lkevinzc, caojilin, Lakshya, Fiete Lüer, Surbhi Vijayvargeeya, Muhyun Kim, dennismalmgren, adursun, Anirudh Dagar, liqingnz, Pedro Larroy, lgov, ati-ozgur, Jun Wu, Matthias Blume, Lin Yuan, geogunow, Josh Gardner, Maximilian Böther, Rakib Islam, Leonard Lausen, Abhinav Upadhyay, rongruosong, Steve Sedlmeyer, Ruslan Baratov, Rafael Schlatter, liusy182, Giannis Pappas, ati-ozgur, qbaza, dchoi77, Adam Gerson, Phuc Le, Mark Atwood, christabella, vn09, Haibin Lin, jjangga0214, RichyChen, noelo, hansent, Giel Dops, dvincent1337, WhiteD3vil, Peter Kulits, codypenta, joseppinilla, ahmaurya, karolszk, heytitle, Peter Goetz, rigtorp, Tiep Vu, sfilip, mlxd, Kale-ab Tessera, Sanjar Adilov, MatteoFerrara, hsneto, Katarzyna Biesialska, Gregory Bruss, Duy–Thanh Doan, paulaurel, graytowne, Duc Pham, sl7423, Jaedong Hwang, Yida Wang, cys4, clhm, Jean Kaddour, austinmw, trebeljahr, tbaums, Cuong V. Nguyen, pavelkomarov, vzlamal, NotAnotherSystem, J-Arun-Mani, jancio, eldarkurtic, the-great-shazbot, doctorcolossus, gducharme, cclauss, Daniel-Mietchen, hoonose, biagiom, abhinavsp0730, jonathanhrandall, ysraell, Nodar Okroshiashvili, UgurKap, Jiyang Kang, StevenJokes, Tomer Kaftan, liweiwp, netyster, ypandya, NishantTharani, heiligerl, SportsTHU, Hoa Nguyen, manuel-arno-korfmann-webentwicklung, aterzis-personal, nxby, Xiaoting He, Josiah Yoder, mathresearch, mzz2017, jroberayalas, iluu, ghejc, BSharmi, vkramdev, simonwardjones, LakshKD, TalNeoran, djliden, Nikhil95, Oren Barkan, guoweis, haozhu233, pratikhack, 315930399, tayfununal, steinsag, charleybeller, Andrew Lumsdaine, Jiekui Zhang, Deepak Pathak, floriandonhauser.

نشكر Amazon Web Services ، ولا سيما Swami Sivasubramanian و Raju Gulabani و Charlie Bell و Andrew Jassy لدعمهم السخي في كتابة هذا الكتاب. لولا الوقت المتاح والموارد والمناقشات مع الزملاء والتشجيع المستمر لما أُخرِجَ هذا الكتاب.

الملخص

  • أحدث التعلم العميق ثورة في التعرف على الأنماط، حيث قدم تقنية تعمل الآن على تشغيل مجموعة واسعة من التقنيات، بما في ذلك رؤية الكمبيوتر ومعالجة اللغة الطبيعية والتعرف التلقائي على الكلام.

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

  • يقدم هذا الكتاب مورداً شاملاً، بما في ذلك النثر و الرّسوم التوضيحيّة والرياضيات والأكواد، كل ذلك في مكان واحد.

  • للإجابة على الأسئلة المُتعلِّقة بهذا الكتاب، قُم بزيارة منتدانا على https://discuss.d2l.ai/.

  • جميع الدفاتر التفاعليّة المستعملة متاحة للتنزيل على GitHub.

تمارين

  1. قم بتسجيل حساب في منتدى مناقشة هذا الكتاب Discuss.d2l.ai.

  2. قم بتثبيت Python على جهاز الكمبيوتر الخاص بك.

  3. اتبع الروابط الموجودة في الجزء السفلي من القسم الخاص بالمنتدى، حيث ستتمكن من طلب المساعدة ومناقشة الكتاب والعثور على إجابات لأسئلتك من خلال إشراك المؤلفين والمجتمع الأوسع.

end_tab

Discussions

end_tab

Discussions

end_tab