مرحبًا ومرحبًا بكم في برنامج Python التعليمي هذا.
حسنًا ، في هذا البرنامج التعليمي ، سنقوم بالوظيفة التي ستحدد الإجراء الصحيح
في كل مرة.
لذلك بشكل أساسي ، سنقوم بتنفيذ الجزء الذي سيجعل السيارة تقوم بالحركة الصحيحة في كل مرة تتجه
إلى اليسار ، أو تسير في اتجاه مستقيم أو يمينًا للوصول إلى الهدف وتجنب العوائق
التي تهبط.
لذلك دعونا نفعل هذا الآن.
سنبدأ كالمعتاد بعلامة تعريف لتعريف دالة ثم نعطي اسمًا للدالة الخاصة بنا
، والتي سنسميها تحديد.
عمل.
ثم سيأخذ بعض الأقواس ووظيفة التحديد هذه وسيطين.
الأول هو الذات كالمعتاد للإشارة إلى الكائن.
والحجة الثانية ، أيهما حسب رأيك؟
حسنًا ، ماذا يمكن أن يكون؟
إذا فكرت في الأمر ، فإن الإجراء الذي نختاره يأتي من مخرجات الشبكة العصبية ، لأن مخرجات
الشبكة العصبية هي القيم الأساسية لكل من الإجراءات الثلاثة الممكنة ، وبالتالي الإجراء
الذي نلعبه ، الإجراء الذي سوف أن يكون ناتج الشبكة العصبية يعتمد على حالة الإدخال.
وحالة الإدخال هي بالضبط الوسيطة الثانية التي نحتاجها لوظيفة إجراء التحديد.
ذلك لأننا حرفياً سنأخذ ناتج الشبكة العصبية.
وبالطبع فإن ناتج الشبكة العصبية يعتمد بشكل مباشر على مدخلات الشبكة العصبية.
لذلك ستكون هذه هي حُجّتنا.
والآن يمكننا أن نطلق عليها أي اسم.
سوف نسميها في الواقع الحالة لأن مدخلات الشبكات العصبية هي حالات الإدخال التي يتم ترميزها
بواسطة متجه خمسة أبعاد ، وتوجيه الإشارات الثلاثة والتوجيه الناقص.
والآن ستكون الأمور سهلة.
سنقوم بتغذية حالة الإدخال في الشبكة العصبية ، تلك التي بنيناها أعلاه ، هنا مباشرة
مع فئة الشبكة.
وبعد ذلك سنحصل على المخرجات ، وهي القيم الأساسية لكل من الإجراءات الثلاثة الممكنة.
ثم باستخدام طريقة soft max ، والتي سأشرحها في هذا البرنامج التعليمي ، سنحصل على
الإجراء النهائي للعب.
لذلك دعونا نفعل هذا.
دعنا ننتقل إلى الدالة ودعنا ننفذ كل هذا.
لذا فإن أول شيء يجب أن نبدأ به هو ما ذكرته للتو محشوة.
ماكس فكرة soft max هي أننا سنحاول الحصول على أفضل حركة للعبها في كل مرة ، ولكن في
نفس الوقت سنستكشف الإجراءات المختلفة.
وكيف يمكننا فعل ذلك؟
كيف يمكننا الحصول على أفضل إجراء نلعبه مع استمرار استكشاف الإجراءات الأخرى؟
حسنًا ، نحن نستخدم فكرة soft max ، والتي تتكون من إنشاء توزيع للاحتمالات
لكل من قيم Q Q ، إجراء حالة Q.
كما تعلم ، لدينا قيمة Q واحدة لكل إجراء.
إتجه يسارا ، إذهب مباشرة أو إتجه يمينا.
لكن قيمة Q هذه تعتمد أيضًا على حالة الإدخال.
هذه بالضبط وظيفة Q التي رأيتها ومحاضرات الحدس.
وظيفة Q هذه هي وظيفة الحالة والعمل.
لذلك بما أن لدينا هنا حالة إدخال واحدة ، وهي الحالة هنا ، وثلاثة إجراءات محتملة ، فلدينا ثلاثة.
Q القيم.
س الدولة العمل واحد.
س الدولة الإجراء الثاني و س الدولة الإجراء الثالث.
وسننشئ توزيعًا للاحتمالات فيما يتعلق بقيم Q الثلاثة هذه.
أي أنه سيكون لدينا احتمال واحد لقيمة Q الأولى ، واحتمال آخر لقيمة
Q الثانية واحتمال ثالث لقيمة Q الثالثة.
ويصل مجموع هذه الاحتمالات الثلاثة إلى واحد.
ولذا سنقوم بكل هذا باستخدام soft Max ، وسيعزو soft Max احتمالية كبيرة إلى
أعلى قيمة Q.
هذا هو السبب في أن بديل self max هو حد أقصى بسيط ، كما تعلم ، يأخذ مباشرة الحد الأقصى
لقيم Q.
لكن في هذه الحالة ، نحن لا نستكشف الإجراءات الأخرى.
بفضل هذه الاحتمالات ، يمكننا استكشاف مكان آخر باستخدام معلمة درجة الحرارة التي سنراها
بسرعة كبيرة.
لا يزال بإمكاننا استكشافها من خلال تكوين معلمة درجة الحرارة هذه.
لهذا السبب بشكل عام ، بالنسبة للتعلم العميق ، أوصي بشدة باستخدام soft max بدلاً من arg max
بسيطة.
حسنًا ، فلنطبق soft max.
وبالتالي ، كما فهمت ، نظرًا لأن Soft Max يُرجع احتمالات كل من قيم Q الثلاثة
للإجراءات الثلاثة المحتملة ، حسنًا ، المتغير الأول الذي سننشئه هو probs التي تشير
بالطبع إلى هذه الاحتمالات.
لذا الدعائم تساوي.
والآن سنأخذ دالة soft max.
ووفقًا لك ، من أين سنأخذها؟
حسنا بالطبع.
تذكر أننا استوردنا نقطة الشعلة والوحدة الفرعية الوظيفية ، والتي أذكرها هي الوحدة
التي تحتوي على معظم الإجراءات لتنفيذ شبكة عصبية.
أعطيناها الاختصار.
F وهذا بالضبط من هذه الوحدة الفرعية الوظيفية سنأخذ دالة الحد الأقصى للذات.
ولكن نظرًا لأننا أعطيناها الاختصار f ، فقد بدأنا هنا برمز F الذي يمثل وظيفية نأخذ
منها دالة soft max.
ها هو.
هذا هو أول واحد.
وأقواس.
حسنا.
والآن ما الذي نحتاجه لإدخاله في دالة max self؟
حسنًا ، هذه ، بالطبع ، الكيانات التي نريد إنشاء توزيع احتمالي لها.
وما هي هذه الكيانات؟
حسنًا ، هذه بالطبع قيم Q.
إذن السؤال الآن ، كيف يمكننا الحصول على قيم Q؟
حسنًا ، بالطبع ، قيم Q هي ناتج الشبكة العصبية.
وللحصول على هذه المخرجات للشبكة العصبية ، حسنًا ، ها نحن ذا.
نحن بحاجة إلى أخذ شبكتنا العصبية.
لكن في الواقع ، لدينا بالفعل لأن هذا هو.
بدأنا في وظيفة init إنشاء نموذج النقطة الذاتية ، وهو ليس سوى شبكتنا العصبية
لأنه كائن من فئة الشبكة.
وهذا مثالي.
يمكننا فقط أن نأخذ نموذجنا هنا ونطبق self max هذا النموذج على حالة الإدخال ، وهي
الحجة هنا والتي ستعيد المخرجات التي نبحث عنها.
هذه هي قيم Q.
والآن ، قد يتحسن حدسك الذي جعلنا نأخذ النموذج هنا لتقديمه في دالة
init.
بالنسبة لأولئك منكم الذين يبدأون البرمجة الموجهة للكائنات ، سترى أن كل هذا سيصبح
طبيعيًا.
حتى النفس ماكس ثم.
لذلك نأخذ نموذج النقطة الذاتية لنموذجنا لأنه يجب أن يكون نموذج الكائن الذي أنشأناه هنا.
ولكن بعد ذلك نحتاج إلى الحصول على ناتج نموذج الشبكة العصبية الخاص بنا ، وبالتالي سنضيف
هنا بعض الأقواس التي سنقوم بإدخالها جيدًا ، حالة الإدخال المسماة الحالة هنا.
إذن ما نريد القيام به في البداية هو إدخال الحالة ، ولكن الآن يجب أن نكون حريصين على شيء ما.
تبدو الحالة وكأنها حالة بسيطة في الوقت الحالي ، ولكن تذكر أن هذه الحالة ستكون في الواقع
موترًا للشعلة لأننا سنستخدم لاحقًا هذه الحالة غير الذاتية لنضعها كحجة لوظيفة الإجراء المحدد
، حجة الحالة التي هي هنا في الواقع ستصبح لاحقًا هذه الذات ، تلك الحالة الأقل.
وبما أن هذا موتر شعلة ، فإن النموذج سيقبله جيدًا ، لذلك لا بأس بذلك.
لكن الآن يمكننا تحسين الخوارزمية.
لذا كما فهمت ، الدولة موتر شعلة.
وكما قلنا سابقًا ، يتم تغليف معظم المستشعرات في متغير يحتوي أيضًا على تدرج.
ما سنفعله الآن هو لف حالة الإدخال هذه التي هي موتر في متغير شعلة.
ولكن بما أن هذه هي حالة الإدخال ، فلن يكون هناك بعض التمايز.
لن نستخدم التدرج اللوني لهذه الحالة نحو المتغير في الحسابات.
وبالتالي ، ما سنفعله الآن هو تحويل حالة موتر الشعلة هذه إلى متغير شعلة.
مثل ذلك.
ولكن بعد ذلك لتحديد أننا لا نريد التدرجات في الرسم البياني لجميع حسابات
وحدة PN.
حسنًا ، سنضيف هنا ما يصل إلى تقلب يساوي صحيحًا.
لذلك لدينا الآن موتر شعلة الحالة الخاص بنا إلى متغير شعلة.
ولكن بفضل هذا المتغير المتغير يساوي المعلمة الحقيقية ، حسنًا ، لن نقوم بتضمين التدرج
المرتبط بحالة الإدخال هذه في الرسم البياني لجميع حسابات الوحدة.
هذه خدعة فنية أخرى.
سيوفر لنا هذا بعض الذاكرة وبالتالي سيؤدي ذلك إلى تحسين الأداء.
لذلك أوصي بشدة بالقيام بذلك وسنضيف الآن شيئًا أكثر متعة.
يتعلق الأمر بمعامل درجة الحرارة هذا الذي ذكرته للتو.
لذا فإن معلمة درجة الحرارة هذه هي المعلمة التي ستسمح لنا بتعديل كيفية تأكد
الشبكة العصبية من الإجراء الذي يجب أن تقرر تشغيله.
لذا فإن معامل درجة الحرارة هذا سيكون رقمًا موجبًا ، وكلما اقترب من الصفر ، قل التأكد من أن الشبكة العصبية
ستكون عند تشغيل إجراء ما.
وكلما زادت معلمة درجة الحرارة هذه ، زاد التأكد من أن الشبكة العصبية ستكون من الإجراء الذي
تقرر تشغيله.
ولإضافة هذه المعلمة ، سأضرب النواتج ، وهي قيم جديلة بمعامل درجة الحرارة
هذا.
لنبدأ على سبيل المثال ، بسبعة وسأحدد هنا التعليق الصغير T يساوي سبعة.
هذا هو معامل درجة الحرارة الذي أضعه يساوي سبعة.
سنقوم بتجربة بعض الأنواع الأخرى ، لكنني أريد فقط أن أبدأ بواحد صغير لأنك
سترى ذلك بأخرى صغيرة.
سيارتنا ستظل تتصرف مثل نوع من الحشرات.
ولكن من خلال زيادة معامل درجة الحرارة هذا ، سيبدو كودنا أشبه بالسيارة.
وإلى جانب ذلك ، فإن القيادة في الخلية ستكون أفضل بكثير.
وهذا أمر منطقي لأنه كلما زادت معلمة درجة الحرارة هذه ، كلما زاد احتمال
فوز قيمة Q.
لأنه على سبيل المثال ، إذا كان لدينا حد أقصى بسيط لقيم Q ، فلنأخذ بعض الأرقام البسيطة.
واحد اثنين ثلاثة.
إذا كانت محشوة بحد أقصى من 1 إلى 3 يساوي ، على سبيل المثال ، 0. 04 ، النقطة 11 و 0. 85.
ثم بزيادة درجة الحرارة بأخذ درجة حرارة أعلى ، فإن درجة الحرارة الآن تساوي واحدًا.
عن طريق أخذ درجة حرارة أعلى مثل ، على سبيل المثال ، اثنين.
لينة جدا ماكس.
دعونا ننسخ هذا ونضربه في.
على سبيل المثال ، يحتوي اثنان أو ثلاثة من أجهزة Mac المحشوة على نفس قيم Q ، ولكن مضروبة في معامل درجة الحرارة
هذا من ثلاثة.
حسنًا ، سنحصل على شيء مثل صفر لقيمة Q الأولى لأن احتمال ذلك ضئيل للغاية.
إذن فهذا شيء قريب من الصفر ثم شيء صغير جدًا بالنسبة للاحتمال الثاني لأن هذا كان
احتمالًا ضئيلًا.
لنفترض ، على سبيل المثال ، 0. 02 ولكن بعد ذلك الاحتمال الثالث لأنه كان الأكبر والاحتمال
العالي جدًا ، حسنًا بزيادة درجة الحرارة ، سيكون هذا الاحتمال أكبر لأننا
سنكون أكثر ثقة بأن هذه هي قيمة Q الصحيحة المقابلة لـ العمل يجب أن نلعبه.
وبالتالي سيكون هذا شيئًا مثل النقطة 98.
الآن من خلال زيادة معلمة درجة الحرارة هذه حيث نحن الآن على يقين أكثر من أن الإجراء الثالث هنا
يجب أن يكون هو الإجراء المطلوب تشغيله ، لأن احتمال قيمة Q لهذا الإجراء ليس فقط هو الأكبر
، ولكنه أيضًا مرتفع جدًا.
إذن هذا هو كل ما يتعلق بمعامل درجة الحرارة هذا.
يتعلق الأمر باليقين من الإجراء الذي يجب أن نقرر لعبه.
حسنا.
لذا سأقوم بإزالة هذا التعليق.
كان هذا فقط للتوضيح.
والآن لنبدأ العمل.
إذن كيف سنفعل ذلك؟
حسنًا ، مبدأ طريقة soft max ليس فقط إنشاء توزيع احتمالي لكل من قيم Q ،
ولكن أيضًا وهذه هي الخطوة الثانية من طريقة soft max.
نأخذ سحبًا عشوائيًا من هذا التوزيع للحصول على الإجراء النهائي.
وبالطبع ، ستكون لدينا فرصة كبيرة للحصول على الإجراء الذي يتوافق مع قيمة Q التي
لها أعلى احتمال ، لأن هذا هو بالضبط كيف يعمل التوزيع.
لذا ها نحن ذا.
لنبدأ العمل.
لذلك سنقدم متغيرًا جديدًا نسميه الإجراء.
وسيكون هذا الإجراء عبارة عن سحب عشوائي لتوزيع الاحتمالات الذي أنشأناه للتو عند هذا الخط
من قبل.
فكيف نحصل على مثل هذا السحب العشوائي؟
حسنًا ، سنأخذ احتمالات الخاصين بكل من قيم Q.
نأخذ الدعائم ثم النقطة ، ثم سنستخدم الدالة الاسمية المتعددة والتي ستمنحنا سحبًا
عشوائيًا من دعامات التوزيع هذه.
هذا كل شئ.
هذا ما يعطينا الفعل.
في احسن الاحوال.
والآن بالطبع ، سنعيد الإجراء الذي توجد به خدعة صغيرة هنا.
حسنًا ، هذه هي حقيقة أن هذه الدعائم التي تُرجع سنويًا متغير pytorch مع دُفعة وهمية ، فأنت تعرف
هذا البعد المزيف المقابل للدفعة ، وبالتالي للحصول على النتيجة الصحيحة التي نريدها
، هذا هو الإجراء صفر واحد أو اثنين.
نحتاج فقط إلى إضافة البيانات هنا ثم بعض الأقواس والإجراء صفر أو اثنين الذي
نبحث عنه موجود في الفهارس ، صفر وصفر.
حسنا.
وها نحن ذا.
الآن لدينا عملنا.
بفضل وظيفة الحركة المحددة هذه ، ستعرف منظمة العفو الدولية الآن الإجراء الذي يجب تشغيله في كل مرة.
رائع.
يمكننا الآن الانتقال إلى الوظيفة التالية ، والتي ستكون دالة التعلم.
وهذا هو المكان الذي سنقوم فيه بتدريب الشبكة العصبية بأكملها مع كل الانتشار الأمامي ثم
الانتشار الخلفي باستخدام الانحدار العشوائي.
حسنًا ، سنقوم في الأساس بتنفيذ التدريب الكامل لنموذج التعلم العميق الذي يقع في
قلب ذكاءنا الاصطناعي.
لذلك لا أطيق الانتظار لفعل ذلك.
سيكون هذا برنامجًا تعليميًا مثيرًا ولذا سأراك في البرنامج التعليمي التالي.
حتى ذلك الحين ، استمتع.
أنا.