مرحبًا ومرحبًا بكم في الجزء المثير من إبداعنا ، الجزء الذي نجعله ذكيًا.
هذا بالضبط ما يحدث عندما يقوم تدريب الذكاء الاصطناعي بتدريب ذكاءه للوصول إلى الهدف الذي
نريده أن يحققه.
وللقيام بذلك ، سنقوم بشكل أساسي بتدريب الشبكة العصبية لإخراج التنبؤات الصحيحة ، وبعد ذلك
يكون كل شيء جاهزًا بالفعل لأن هذه الإشارات الناتجة من الدماغ لديها بالفعل الإرسال
الصحيح إلى الجسم لتشغيل الإجراءات النهائية.
إذن ، ما نحن بصدد فعله الآن هو شيء فعلناه بالفعل من قبل.
سنأخذ بعض الدُفعات العشوائية من الذاكرة ، ونحصل على مدخلاتنا من هذه العينات ، ونحصل
على المخرجات ، ونحصل على الأهداف ، ونحصل على التنبؤات ، ونحسب المنطقة الأخيرة بين التنبؤات
والأهداف ، ثم نقوم بالانتشار العكسي باستخدام العشوائية نزول التدرج لتحديث الأوزان
وفقًا لمدى مساهمتها في هذا الخطأ الأخير.
لذلك دعونا نفعل كل هذا.
سترى كيف سيكون الأمر سهلاً للغاية لأن لدينا بالفعل جميع الأدوات لتنفيذ
ذلك.
ليس لدينا فقط أدوات PyTorch مثل Optimizer والوظائف المفقودة ، ولكن لدينا أيضًا جميع الفئات
التي أنشأناها من قبل ، مثل عقولنا بالطبع ، والتي سنستخدمها للحصول على التنبؤات.
بعد ذلك ، ستجعل تجربتنا وإعادة التشغيل والتنفيذ وتتبع الأهلية وكل هذه الأدوات مجتمعة مع أدوات
PyTorch أداءً فائقًا للتدريب وبالتالي سنحصل في النهاية على ذكاء اصطناعي
فائق القوة.
لذلك دعونا نجعل هذا التدريب يحدث.
لنجعل الذكاء الاصطناعي لدينا ذكيًا.
وأول شيء سنفعله الآن هو الحصول على الوظيفة الأخيرة التي سنستخدمها أثناء
التدريب عند حساب الخطأ والمحسن ، وهذا هو أول شيء سنفعله.
لذلك دعونا ننشئ متغيرًا للدالة الأخيرة.
سوف نسميها خسارة.
وسيكون هذا مساويًا لدالة خسارة MSI من الوحدة النمطية RN.
ثم خسارة MSI هذه ، هذه هي الوظيفة الأخيرة التي سنستخدمها لأن تنبؤاتنا أساسًا هي قيم
Q.
نحن نتوقع قيم Q للإجراءات المختلفة.
وبالتالي ، نظرًا لأن هذه أرقام حقيقية ، حسنًا ، فإننا نقوم نوعًا ما ببعض الشبكات العصبية للانحدار ، وبالتالي
فإن الوظيفة الأخيرة هي متوسط الخطأ التربيعي.
هذه هي الوظيفة الأخيرة التي نستخدمها بشكل عام للانحدار.
حسنا.
والآن بعد أن أصبح لدينا آخر وظيفة ، دعنا نحصل على المُحسِّن الخاص بنا.
إذن المحسن هنا ، هذا هو المتغير الذي أنشأناه للمحسن.
وسنأخذ كالمعتاد.
أما بالنسبة للسيارة ذاتية القيادة ، فإن Atom Optimizer ، هو مُحسِّن قوي للغاية سيعمل على عجائب
التدريب.
لذلك دعونا نصل إلى هذه الذرة.
وتذكر ، هذا بالضبط بالنسبة للسيارة ذاتية القيادة.
علينا إدخال حجتين أساسيتين.
الأول هو الذي سيجعل الاتصال بين المُحسِّن ومعلمات شبكتنا العصبية
، أي أوزان الخلايا العصبية في دماغنا.
وللقيام بذلك ، نأخذ عقولنا ، والتي نسميها CNN.
هذا هو الشيء الذي صنعناه لأدمغتنا.
ولذا فإن CNN لا تتذكر المعلمات.
هناك نذهب.
وبعض الأقواس.
وهذا يجعل الاتصال بين المُحسِّن وأوزان الخلايا العصبية في دماغ الذكاء الاصطناعي
لدينا.
ثم الحجة الثانية هي معدل التعلم ، وهذا معطى بالخطأ.
ولذا علينا أن نأخذ معدل تعليمي صغير لأننا لا نريد أن نتقارب بسرعة كبيرة ونريد أن يكون
لدينا بعض الاستكشاف ، وبالتالي فإن معدل التعلم الجيد الذي يمكننا أن نأخذه
هنا هو معدل صغير يساوي 0. 01 هذا مفتوح بنسبة 1٪.
أعتقد أن هذا هو نفسه الذي استخدمناه في السيارة ذاتية القيادة.
حسنًا ، لدينا الآن وظيفة أخيرة ، مُحسِّن.
لذلك نحن جاهزون تقريبًا لبدء الحلقة الكاملة.
حسنًا ، في الواقع ، سنبدأ الحلقة الكاملة الآن.
لكن قبل أن نفعل ذلك بقليل ، سنقرر حجم عدد الحقب.
سنقوم بتدريب الذكاء الاصطناعي ، وبالتالي أقوم بإنشاء متغير جديد هنا يتوافق مع هذا
العدد من العهود.
ولنجعلها تساوي 100.
سيكون هذا وسيلة كافية لتدريب العين.
وحتى أنني أراهن أن الذكاء الاصطناعي سينجح في الوصول إلى أفضل طريقة قبل 100 ، مثل 20 أو 30.
دعونا نرى.
لكن في الوقت الحالي ، لنأخذ 100.
وإذا احتجنا إليها ، فسنزيدها.
لكنني لا أعتقد أن ذلك سيكون ضروريًا.
تمام.
والآن بعد أن أصبح لدينا عدد الحقب الخاصة بنا ، يمكننا البدء في جعل حلقة for هذه الحلقة الرئيسية
للتدريب عندما نتدرب على العصور.
لذلك سيكون المتغير المتكرر حقبة.
هذا ما نختاره للعصر.
الآن بالطبع ، سنستخدم دالة النطاق لنقول إننا نريد الانتقال من العصر
الأول الأول إلى عدد من الحقب.
زائد واحد ، لأن تذكر ، لا يتم تضمين الحد العلوي للنطاق.
وبالتالي ، إذا أردنا الصعود إلى 100 ، فعلينا أن نحدد ونكون مربعًا زائد واحد لنرتفع
إلى 100.
حسنًا ، كولين.
والآن دعنا ندخل في الحلقة.
حسنا.
لذا فإن أول شيء سنفعله هو إجراء 200 مرة من عشر خطوات.
لذلك ستكون كل فترة 200 جولة ، واحدة تلو الأخرى من عشر خطوات.
وللقيام بذلك ، لدينا وظيفة خطوات التشغيل هذه من فئة إعادة التشغيل ذات الخبرة.
وبالتالي ، لاستخدام هذه الوظيفة ، والتي هي في الواقع طريقة لأننا سنحصل
عليها من كائن ذاكرتنا ، وهو كائن من فئة ذاكرة إعادة التشغيل لتوليد 200 عملية من عشر خطوات حيث يتعين علينا
أخذ كائن ذاكرتنا.
أذكر أننا أنشأنا هنا.
الذاكرة هي كائن من فئة ذاكرة إعادة التشغيل بخطوات MN وهي عشر خطوات وسعة 10000.
لقد أنشأنا هذا الكائن ومن هذا الكائن نأخذ بشكل جيد ، هذا التشغيل ، الخطوة ، الوظيفة ، تشغيل الخطوات
ونحدد 200 عملية متتالية من عشر خطوات.
لذلك ، في كل حقبة ، سيجري بشكل أساسي 200 خطوة.
والآن بعد أن أصبح لدينا 200 خطوة تعمل في كل مرحلة ، حسنًا ، حان الوقت لأخذ عينات من بعض المجموعات من
هذه الأشواط.
وأخذ عينات من هذه الدفعات.
لدينا وظيفة أخرى من ذاكرتنا ، وهي عينة دفعة ، والتي ستنشئ بالضبط بعض الدُفعات
من 200 عملية تشغيل.
لكن تذكر أن هذه الدُفعات هي مجموعات زمنية من سلسلة التحولات.
هذه سلسلة من عشر خطوات على عكس ما كانت عليه من قبل ، حيث كانت الدُفعات عبارة عن مجموعات من التحولات
الفردية هنا.
هذه المرة ستكون مجموعات من عشر خطوات ، عشر انتقالات ، وبالتالي حان الوقت الآن
للحصول على هذه الدُفعات العشوائية من ذاكرتنا والحصول عليها ، نستخدم وظيفة الدُفعة النموذجية التي يتعين علينا تطبيق
حجم الدُفعة عليها.
وبالنسبة لحجم الدُفعة ، يمكننا أن نأخذ 32 أو حتى 64 أو حتى 128.
تذكر ، بالنسبة لأحجام الدُفعات ، من الشائع استخدامها.
32 هذا ما ستراه بشكل عام في معماريات الشبكات العصبية عند القيام ببعض التعلم الجماعي.
لكن الأمر مختلف هذه المرة.
نحن فقط نأخذ عينات من بعض الدُفعات المكونة من عشر خطوات ، لذلك من الأفضل أخذ دفعات بأحجام أكبر.
لهذا السبب يمكننا أخذ 64 أو 128.
لذلك سنأخذ 128.
وفي الواقع ، سيكون هذا داخل حلقة من أربع حلقات لأننا نريد أن نأخذ عدة دفعات ونأخذها في ما
يتم إرجاعه بواسطة دالة الدُفعة النموذجية هذه.
لذا فإن هذه الحلقة الخاصة بالدفعة في عينة الذاكرة 128 تعني أن كل 128 خطوة ، حسنًا ، ستعطينا
ذاكرتنا دفعة بحجم 128 ، والتي ستحتوي في الواقع على آخر 128 خطوة تم تشغيلها للتو.
لقد حصلنا للتو على بعض المجموعات بحجم 128 وسيحدث التعلم على هذه المجموعات.
وإلى جانب ذلك ، داخل هذه المجموعات ، سيكون لدينا الأهلية ، تتبع التشغيل ، كما تعلم ، لتعلم
كل عشر خطوات.
حسنا.
إذن الآن داخل هذه الحلقة ، والتي لا تزال تحدث في حقبة واحدة ، ولكن هذه المرة نحن في مجموعة
محددة.
والآن أول شيء سنفعله هو أننا سنحصل على مدخلاتنا وأهدافنا بشكل منفصل.
وهذا ، كما أخبرتك ، سهل للغاية.
يمكننا القيام بذلك باستخدام إحدى الأدوات التي طبقناها ، وهي تتبع الأهلية.
كما ترون هنا ، تأخذ وظيفة تتبع الأهلية هذه دفعة كمدخلات والآن لدينا الدُفعة
وإرجاعها كمخرجات ومدخلات وأهداف.
إذن ما يمكننا فعله الآن هو إنشاء متغيرين جديدين سيكونان المدخلات
والهدف والقيام بهذه المدخلات في الهدف.
يساوي.
ما يُرجع بالضبط وظيفة تتبع الأهلية هذه ينطبق على الدُفعة.
لذلك سنطبق هذه الوظيفة على دفعة الحلقة.
ولذا فإن ما سنفعله هو مجرد الأهلية.
تم تطبيق التتبع على دفعة الحلقة الخاصة بنا.
حسنًا ، هذا يمنحنا المدخلات والأهداف.
ولكن في PyTorch ، هناك دائمًا شيء آخر يتعين علينا القيام به.
وبالطبع ، هذا هو تحويل مدخلات الشبكة العصبية والأهداف أيضًا إلى بعض متغيرات التعذيب
، ولكن بدون تحرير.
لا يوجد شئ جديد.
نحن نعرف كيف نفعل ذلك.
يمكننا أن نفعل ذلك بهذه الطريقة.
نأخذ مدخلاتنا ، ثم أهدافنا ، وستكون مساوية للمدخلات المتغيرة.
هذا للمدخلات والأهداف المتغيرة وهذا للأهداف.
حسنا.
لذلك يتم تحويل مدخلات الدماغ إلى بعض متغيرات الشعلة ويتم تحويل الأهداف أيضًا إلى بعض متغيرات
الشعلة.
الآن يمكننا إدخال المدخلات في الشبكة العصبية.
ولماذا نحن بحاجة للقيام بذلك؟
ذلك لأن الخطوة التالية هي الحصول على التنبؤات التي لدينا ، والمدخلات التي علينا استهدافها.
الآن ، بالطبع ، نحتاج إلى تنبؤاتنا ، لأن ما يحدث بعد ذلك هو أننا سنحسب الخسارة
بين التوقعات والأهداف.
لذلك دعونا نحصل على هذه التنبؤات للحصول عليها.
حسنًا ، مرة أخرى ، هذا بسيط جدًا.
الآن نحتاج فقط إلى أخذ دماغنا ، وهو CNN ، شبكتنا العصبية التلافيفية ، وتطبيقها
على مدخلاتنا.
هناك نذهب.
تدخل المدخلات إلى الشبكة العصبية ، وستقوم الشبكة العصبية بإخراج التنبؤات.
في احسن الاحوال.
الآن لدينا التوقعات ، لدينا الأهداف حتى نحصل على الخسارة.
وهذه هي الخطوة التالية.
سنقوم بإدخال متغير جديد لأننا سنحصل الآن على الخطأ الأخير ، والذي يختلف عن الوظيفة
السابقة ، لأننا نستخدم الوظيفة الأخيرة للحصول على الخطأ الأخير.
لذا أقل خطأ هنا وأننا سنحصل عليه مع الوظيفة الأخيرة المطبقة على تنبؤاتنا.
والأهداف.
هناك نذهب.
شاهد كيف أصبح كل شيء سلسًا الآن.
كل شيء منطقي.
نحصل على المدخلات أولا الهدف.
ثم بفضل المدخلات ، نحصل على التنبؤات.
ثم بفضل التوقعات والأهداف ، نحصل على خطأ أقل.
لذلك منطقي جدا وسلس.
والآن ما هي الخطوة التالية؟
حسنًا ، نفس المسار المنطقي.
الآن بعد أن حصلنا على آخر ما يمكننا العودة إليه ، قم بنشر هذا الخطأ الأقل مرة أخرى في الشبكة العصبية لتحديث
الأوزان.
ونفعل ذلك باستخدام النسب المتدرج العشوائي ولإجراء هبوط التدرج العشوائي ، نحتاج إلى
مُحسِّننا ، لكننا حصلنا عليه بالفعل هنا ، مُحسِّن الذرة الخاص بنا.
لكن الآن في هذه المرحلة ، تذكر ما يتعين علينا القيام به.
يجب أن نقوم بتهيئته وتهيئته.
تذكر أننا نأخذ كائن المحسن الخاص بنا ثم نطبق طريقة الشبكة الصفرية.
ثم نذهب.
لا ننسى القوس الذي يهيئها.
والآن الخطوة التالية هي إعادة نشر الخطأ الأخير مرة أخرى في الشبكة العصبية.
وللقيام بذلك حيث نأخذ خطأنا الأخير ونطبق عليه طريقة الرجوع.
لذلك هذا بالضبط لتطبيق التكاثر العكسي.
ثم أخيرًا ، الآن بعد أن تم نشر الخطأ الأخير في الشبكة الجديدة ، حسنًا ، يمكننا تحديث الأوزان
باستخدام نزول متدرج عشوائي.
وللقيام بذلك ، تذكر ، أخذنا المحسن الخاص بنا ثم طبقنا طريقة الخطوة هذه.
هناك نذهب.
يتم الآن تحديث الأوزان.
كما أخبرتك ، لم نقم بذلك بالفعل ، ولكن الآن يبدو بسيطًا جدًا وطبيعيًا.
لذا الآن سنقوم بشيء ممتع.
سنقوم بطباعة متوسط المكافأة ، كل فترة حتى نتمكن من تتبع كيف يسير الذكاء الاصطناعي ، وكيف
يسير التدريب.
نريد أن نرى متوسط المكافأة يتزايد على مدى خطوات العصور.
وفي البداية ، بالطبع ، هناك مرحلة الاستكشاف هذه.
لذلك قد لا يزداد متوسط المكافأة في البداية ، ولكن بمجرد وصولها إلى مرحلة الاستغلال
، سنرى أن متوسط المكافأة يزداد بالتأكيد وسيزداد إلى مستوى معين ، وهو عندما تصل إلى السترة
بأسرع ما يمكن المستطاع.
لذلك لنبدأ بالطباعة.
كما تعلمون ، نحن نقوم بذلك في فترة واحدة ، لذلك علينا أن نعود إلى الحلقة
هنا ونطبعها ثم نطبع بشكل جيد أولًا عمودًا ثم نسبة مئوية لأننا سنقوم بتحويل كل شيء إلى سلسلة
أفضل.
ثم نضيف متوسط المكافأة.
ثم نضيف النسب المئوية أيضًا.
ثم سنغلق الاقتباس.
ثم نضيف نسبة مئوية.
وعلى الجانب الآخر ، كما تعلم ، نقوم بإدخال المتغيرات التي ستكون هذا الشخص الأول
الذي سيكون EPC هنا والمتغير الثاني المقابل لمتوسط المكافأة الذي سنحسبه الآن.
لذا فإن متوسط متغير المكافأة غير موجود بعد.
سنقوم بإنشائه الآن.
لذلك سنستخدم عصر STR.
حتى لو كانت الفترة رقمًا ، فسنحولها إلى سلسلة.
هذا أفضل و.
سنضيف نجمة يمكن أن تكون متوسط المكافأة.
ولذا سننشئ متغيرًا نسميه مكافأة VG ، والآن سننشئ هذا المتغير
ونحسبه.
لذلك دعونا نفعل هذا.
هذا هو الشيء الوحيد الذي كان علينا فعله.
هذه حقبة لدينا بالفعل.
الآن دعونا نحسب متوسط المكافأة ونحتاج إلى حسابها هنا.
ما زلنا في الحلقة ولكن خارج حلقة الدُفعة لأننا الآن لدينا مجموعة عينات لدينا ولدينا تدريبنا يحدث
في الدُفعة.
ولكن يتم الآن الانتشار الأمامي بالإضافة إلى الانتشار العكسي في الدُفعة.
لذلك نحن نعود إلى حلقة العصر ويمكننا الآن حساب المكافآت التراكمية التي يمكننا القيام بها باستخدام
كائن خطوات النهاية لأن كائن الخطوة النهائية لدينا يحتوي على هذه الوظيفة.
سنقوم بالخطوات التي تسمح لنا بالحصول على المكافآت التراكمية التي تحدث في الخطوات أثناء تشغيل الخطوات.
لذلك سنستخدمه الآن لتحديث المكافآت الجديدة للخطوات ، ثم سنقوم بتحديث كائن المتوسط
المتحرك بإضافة المكافآت التراكمية إلى كائن المتوسط المتحرك ثم إعادة حساب المتوسط.
وهذه هي الطريقة التي نحصل بها على متوسط المكافأة.
لذلك دعونا نفعل هذا.
أول شيء نحتاجه هو المكافآت التي يتم تحديثها.
لذلك دعونا نسميها مكافآت.
خطوات.
وبعد ذلك ، كما قلنا ، نتخذ خطوات PN الخاصة بنا.
الكائن الذي كان بمثابة تذكير تم إنشاؤه هنا وهو كائن من فئة PN Step Progress من ملف إعادة التشغيل
الخاص بنا ، لذلك كائن خطوات PN.
ثم نضيف خطوات المكافآت ثم بعض الأقواس.
حسنًا ، حتى نحصل على المكافآت التراكمية الجديدة للخطوات.
حسنًا ، ولكن بعد ذلك نحتاج إلى إضافة هذه المكافآت التراكمية الجديدة في كائن المتوسط المتحرك.
وللقيام بذلك ، لدينا طريقة ، هذه المرة في فئة المتوسط المتحرك ، وهي طريقة ADD.
لذلك هذا بسيط للغاية.
نأخذ كائن المتوسط المتحرك ، الذي أنشأناه هنا بـ 100 خطوة ، ثم سنستخدم طريقة ADD الخاصة
بنا ، ثم في طريقة الإعلان ، نقوم بإدخال خطوات المكافأة ، وهذا سيضيف مكافآت الخطوات إلى المتوسط
المتحرك .
حسنا.
وأخيرًا ، يمكننا حساب متوسط المكافأة ، وهذا جيدًا ، كما تعلمون ، هذا هو نفس المتغير
هنا.
هذا ما سيساوي متوسط المكافأة.
وللحصول عليها ، نحتاج فقط إلى استخدام طريقة المتوسط هذه المرة من جسم المتوسط المتحرك.
وهذا هو أننا نقوم بعمل متوسط النقاط تمامًا مثل ذلك لأن المتوسط المتحرك لدينا تم تحديثه بالفعل بخطوات المكافأة الجديدة
التي أضفناها للتو بفضل طريقة ADD.
رائعة.
إذن لدينا الآن متوسط المكافأة حتى نتمكن من ملئها هنا.
وستتم طباعة هذا كل حقبة.
حسنا.
لذلك انتهينا.
لذلك أنا متحمس جدًا لرؤية النتائج.
وفي الواقع ، سأواجهك مفاجأة في البرنامج التعليمي التالي أثناء مشاهدة النتائج.
لذلك سيكون الأمر مثيرًا للغاية.
والآن أعتقد أن الوقت قد حان للعب مع الذكاء الاصطناعي والاستمتاع.
حسنًا ، أعد لنفسك قهوة جيدة أو شايًا جيدًا.
حان الوقت الآن للجلوس بشكل مريح على كرسينا ومشاهدة بعض مقاطع الفيديو الرائعة جدًا للذكاء الاصطناعي وهو يلعب Doom.
لذلك دعونا نفعل ذلك في البرنامج التعليمي التالي.
وحتى ذلك الحين ، استمتع.
أنا.