مرحبًا ومرحبًا بكم في برنامج Python التعليمي هذا.
حسنًا ، لقد قمنا للتو بتحديث الذاكرة بعد الوصول إلى الحالة الجديدة.
والآن دعنا نهتم بالتحديث التالي.
وفقًا لك الآن ، ما هو التحديث القادم؟
حسنًا ، لقد انتهينا من عملية انتقال واحدة.
لقد قمنا بتأريخ العنصر الأخير في الانتقال ، وهو الدولة الجديدة.
والآن يبدو الأمر كما لو أننا نبدأ من جديد.
وعندما نبدأ من جديد ، كيف يبدو الأمر ، كما تعلم ، نحن في هذه الحالة الجديدة
من البيئة.
إذن ما الذي يتعين علينا فعله الآن بشكل طبيعي؟
حسنًا ، بالطبع ، يجب أن نلعب إجراءً لأننا حصلنا بالفعل على مراقبة الحالة الجديدة.
لذا فإن الشيء الذي يتعين علينا القيام به الآن هو القيام بعمل ما.
وبالتالي ، ما نحتاج إلى القيام به الآن هو ، بالطبع ، استخدام وظيفة الإجراء المحدد لتشغيل الإجراء.
لنفعلها اذا.
لنقم بإنشاء إجراء متغير جديد ودعنا نلعب الإجراء باستخدام وظيفة الإجراء المحدد.
لذا فأنا أعتبر نفسي أولًا جيدًا لتحديد أن وظيفة إجراء التحديد هي طريقة لكائن الفئة المختلفة
التي سيتم إنشاؤها.
لذلك حدد الإجراء الذاتي.
هنا نذهب ، حدد الإجراء الذاتي.
وبعد ذلك ، بالطبع ، نظرًا لأن وظيفة إجراء التحديد تأخذ الحالة كمدخلات بسبب بالطبع ، فإن وظيفة
إجراء التحديد ستعيد إخراج الشبكة العصبية عندما تدخل حالة الإدخال الحالية إلى الشبكة العصبية.
لذلك علينا إدخال حالة الإدخال هنا.
وبما أن هذه هي الحالة التي وصلنا إليها للتو في البيئة الآن حيث تكون حالة الإدخال بالطبع
حالة جديدة لأن الحالة التي وصلنا إليها للتو في الوقت الذي كنا فيه الآن هي حالة جديدة.
لذلك في وظيفة إجراء التحديد ، أقوم بإدخال حالة جديدة.
حسنا.
لذلك مع هذا السطر من التعليمات البرمجية ، نلعب ببساطة الإجراء الجديد بعد الوصول إلى الحالة الجديدة.
تمام.
والآن بعد أن نلعبها في العمل ، حسنًا ، نحصل على المكافأة وبالتالي نحصل على رد فعل بالمكافأة.
وبالتالي ، إذا كان لدينا أكثر من 100 عنصر في الذاكرة ، فقد حان الوقت للتعلم.
وبالتالي ، ما يجب علينا فعله الآن هو ما يأتي منطقيًا بعد اختيار فعل ما ، والذي هو ، بالطبع ، لمعرفة
الاحتياجات ، والبدء في التعلم إذا كان يقوم بالأشياء بالطريقة الصحيحة.
والآن بما أنها لعبت الحدث حيث سنجعل الذكاء الاصطناعي يتعلم من أفعاله في
آخر 100 حدث.
لكن قبل أن نطبق وظيفة التعلم هذه ، علينا أن نجعل هذا الشرط للتأكد من أننا وصلنا بالفعل إلى
أكثر من 100 حدث لأننا ، كما تعلمون ، نتعلم من العينات العشوائية للذاكرة.
كما تعلم ، لدينا ذاكرة ضخمة تضم 10000 عنصر.
نحن نأخذ بعض العينات العشوائية لذاكرة 100 عنصر.
والذكاء الاصطناعي يتعلم من المعلومات الواردة في هذه العينة المكونة من 100 انتقال عشوائي.
لذلك دعونا فقط نجعل هذا الشرط للتأكد من أن عدد عناصر الذاكرة ، وذاكرة النقطة الذاتية
، ثم توخي الحذر.
مجرد خدعة صغيرة هنا.
ذاكرة النقطة الذاتية هي كائن من فئة ذاكرة إعادة التشغيل ، ولكن بعد ذلك يكون لفئة ذاكرة إعادة التشغيل
سمة وهي الذاكرة.
لذلك في الحقيقة نحن بحاجة إلى أن نأخذ ذاكرة ذاتية.
تلك الذاكرة ، الذاكرة الأولى هي موضوع فئة ذاكرة إعادة التشغيل والذاكرة الثانية هي السمة هنا
الذاكرة الذاتية.
لذلك إذا كان عدد العناصر في الذاكرة هو ما نريده أن يكون أكبر من 100 ثم ملون.
ثم ماذا يحدث؟
حسنًا ، يمكننا التعلم ، لكن قبل التعلم ، نحتاج إلى الحصول على هذه العينة العشوائية المكونة من 100 انتقال.
وهذا يمكننا الحصول عليه من خلال دالة العينة.
ونظرًا لأن دالة العينة تُرجع الدُفعات المختلفة ، فإن الحالات المحددة للوقت t تكون الحالات 20 زائد
واحد.
الإجراءات هي الوقت t والمكافآت في ذلك الوقت t.
حسنًا ، ما نحتاج إلى القيام به الآن هو إنشاء بعض المتغيرات الجديدة التي ستكون مجموعة الحالات
في وقت t مجموعة الحالات التالية ومجموعة المكافآت ومجموعة الإجراءات.
ويمكننا ببساطة إعطاء نفس الأسماء التي قدمناها للحجج هنا ولصقها هنا.
وستكون هذه المتغيرات مساوية لما تعرضه دالة العينة لأنها تُرجع مجموعات الحالات هذه
بالضبط.
الدول التالية المكافآت والإجراءات.
لذا ما علينا فعله الآن هو الحصول على كائن ذاكرتنا أولاً.
ومن ثم من كائن الذاكرة هذا ، سنستخدم طريقة العينة التي ستأخذ كمدخلات.
حسنًا ، عدد الانتقالات التي نريد أن يتعلمها الذكاء الاصطناعي من ذلك هو 100.
لهذا السبب تأكدنا من أن الذاكرة بها أكثر من 100 انتقال.
لذلك سيتعلم من 100 انتقال للذاكرة.
لذا فإن التعلم سيكون أفضل بكثير.
والآن دعونا نجعل هذا التعلم يحدث.
حسنًا ، نظرًا لأن طريقة التعلم هي إحدى طرق فئة الانتشار لدينا ، حسنًا ، نحتاج إلى الوصول إلى طريقة
التعلم هذه من الكائنات المستقبلية التي سيتم إنشاؤها من فئة مختلفة.
وبالتالي ، ما نحتاج إلى أخذه هو الذات.
لذا تشير الذات إلى هذا الكائن إلى الفصل ثم تتعلم على أنها طريقة التعلم هذه ، وتعلم الطريقة التي ندخلها.
بالطبع هؤلاء الرجال هنا ، تشير الدفعة إلى الدُفعة والتاريخ التالي ومكافأة الدُفعة وإجراء المجموعة.
هذه هي دفعاتنا المأخوذة من ذاكرتنا ونحصل على 100 منها لأن لدينا 100 انتقال.
ومن هذه التحولات المائة نأخذ 100 حالة و 106 حالات و 100 مكافأة و 100 فعل.
لذلك دعونا نلعب هذا هنا وهناك نذهب.
الآن سوف يحدث التعلم.
سيحدث من كل هذه الدفعات العشوائية.
في احسن الاحوال.
والآن ما نحتاج إلى القيام به هو آخر التحديثات بعد ، كما تعلمون ، الوصول إلى حالة جديدة ولعب
حركة.
حسنًا ، لقد حصلنا على الإجراء الذي يجب أن نلعبه ، لكننا ما زلنا لم نحدّث الإجراء الذي هو أنفسنا ، متغير الإجراء
الأخير.
لذلك دعونا نتأكد من أننا لا ننسى هذا.
لنفعل ذلك الآن.
سنقوم بتحديث الإجراء الأخير للنقطة الذاتية والذي يساوي الإجراء الأخير ، وبالطبع الإجراء الذي نلعبه هنا مع وظيفة
الإجراء المحدد.
حسنا.
حتى الآن يتم تحديث الإجراء الأخير بعد ذلك.
نفس الشيء بالنسبة للدولة الجديدة.
لقد وصلنا إلى الحالة الجديدة ، لكننا لم نحدّث الحالة الأخيرة حتى الآن بسبب بالطبع كانت الحالة
الأخيرة قبل الحالة في 20.
لكن منذ الآن وصلنا إلى الحالة الجديدة مثل T زائد واحد في الوقت T زائد واحد.
حسنًا ، تصبح الحالة الأخيرة هذه الحالة الجديدة هنا وبالتالي نحتاج إلى تحديثها أيضًا.
الحالة الأخيرة للنقطة الذاتية تساوي حالتنا الجديدة.
هناك نذهب.
والآن ماذا نحتاج للتحديث؟
حسنًا ، لم يتبق سوى شيء واحد.
هذه ، بالطبع ، المكافأة.
والمكافأة هي بالضبط المكافأة التي نحصل عليها في الواقع.
إذن ستكون هذه هي حجة وظيفة التحديث هذه ، والتي إذا أجرينا الاتصال بخريطتنا ، فستكون
المكافأة الأخيرة.
هذه هي المكافأة التي نحصل عليها مباشرة بعد لعب الإجراء في هذه الحالة الجديدة التي وصلت إليها.
لذا ، إذا واصلنا بعض الرسائل المرسلة ، فستكون هذه المكافأة الأخيرة سيئة ناقص واحد.
إذا ابتعدنا عن الهدف ، فسنحصل على مكافأة أفضل قليلاً.
ناقص 0. 2.
إذا اقتربنا من الهدف ، فسنحصل على مكافأة مفتوحة جيدة بعض الشيء.
وإذا اقتربنا جدًا من إحدى حواف الخريطة ، فسيكون ذلك بمثابة عقوبة سيئة.
سنحصل على ناقص واحد لكل حافة.
إذن هذا هو آخر ما حصلنا عليه.
في الواقع ، هذا هو ما يحدث بشكل حقيقي على الخريطة.
وستكون هذه حجة دالة التحديث.
هذه الكلمة الأخيرة هنا ، هذه بالضبط هذه الكلمة.
وبما أن هذه هي حجة دالة التحديث جيدًا والتي تتوافق مع هذه المكافأة
هنا ، وبالتالي فهي ذاتي آخر متغير مكافأة تمت تهيئته في البداية في وظيفة init هذه هي المكافأة الجديدة
التي نحصل عليها.
في الواقع ، هذه مكافأة أو أنها مكافأة أقل.
حسنا.
حتى الآن قمنا بتحديث مكافأتنا الأخيرة.
والآن بما أننا حصلنا للتو على آخر مكافأتنا ، حسنًا ، يمكننا الآن تحديث نافذة المكافأة.
تتذكر نافذة المكافأة التي قمنا بتهيئتها هنا كأحد متغيرات كائن الفصل لدينا.
هذه هي النافذة التي ستتبع كيفية سير هذا التدريب من خلال أخذ متوسط
آخر 100 مكافأة.
لذلك سيكون مثل نافذة منزلقة توضح لنا كيف يتطور متوسط المكافآت.
وبما أننا حصلنا للتو على آخر مكافأة لنا ، حسنًا ، يمكننا تحديث نافذة المكافأة.
فكيف نقوم بتحديثه؟
حسنًا ، نحتاج ببساطة إلى إلحاق هذه المكافأة الأخيرة بالنافذة.
وبالتالي ، ما سأفعله هو أخذ نافذة المكافأة الخاصة بي.
تخدم نافذة المكافأة تلك.
ها هو.
ثم سأستخدم وظيفة الإلحاق.
وداخل وظيفة الإلحاق ، نحتاج إلى إدخال العنصر.
نريد إلحاق نافذة المكافأة.
وهذا بالطبع المكافأة.
حسنا.
في احسن الاحوال.
وبعد ذلك ، بما أن نافذة المكافأة هذه سيكون لها حجم ثابت ، كما تعلمون ، فلن تكون نافذة
متنامية.
ستكون نافذة ذات حجم ثابت تنزلق بمرور الوقت لتظهر لنا تطور المكافأة.
والآن علينا أن نقرر حجم هذه النافذة.
وهو ببساطة عدد وسائل المكافآت التي سنحصل عليها في هذه النافذة.
وهكذا ، على سبيل المثال ، دعنا نتعرف على آخر 1000 وسيلة من آخر 100 كلمة.
وللتأكد من ذلك ، سنضيف إذا ، بعد ذلك ، لين ، فإننا سنأخذ مكافأتنا.
نافذة او شباك.
ونضيف هنا ببساطة إذا كان عدد العناصر في نافذة المكافأة أكبر من 1000 ، حسنًا
، ما نريد فعله هو حذف العنصر الأول من نافذة المكافأة هذه.
والعنصر الأول في نافذة المكافأة هذه يحتوي على فهرس صفر.
حسنا.
والآن نتأكد من أن نافذة المكافأة هذه لن تحصل أبدًا على أكثر من 1000 عنصر.
هذا يعني 1000 وسيلة من آخر 100 مكافأة.
هذا ممتاز.
ستكون هذه نافذة بحجم ثابت حتى نتمكن من معرفة ما إذا كان متوسط المكافآت يتزايد ، وبالتالي إذا
كان التدريب يسير على ما يرام.
وبناءً على ذلك ، إذا كانت البطاقة تفعل ما نريد.
في احسن الاحوال.
والآن يتبقى لك شيء صغير جدًا عليك القيام به.
ماذا تريد ان تكون؟
حسنًا ، تذكر أن وظيفة التحديث هذه لا تقوم فقط بتحديث العناصر المختلفة للانتقال في نافذة المكافأة
، ولكنها تقوم أيضًا بإرجاع الإجراء الذي تم لعبه عند الوصول إلى هذه الحالة الجديدة.
لهذا السبب لدينا في الخريطة الإجراء يساوي تحديث نقطة الدماغ.
الكلمة الأخيرة ، الإشارة الأخيرة.
وبالتالي من المفترض أن تعيد شيئًا ما وهناك شيء من المفترض أن تعيده هو بالطبع
الفعل.
لذا فإن الشيء الأخير البسيط الذي يتعين علينا القيام به هنا هو إعادة الإجراء.
الإجراء الذي تم عرضه عند الوصول إلى الحالة الجديدة.
وهذا كل شيء.
وظيفة التحديث لدينا جاهزة.
ستقوم بجميع التحديثات المطلوبة وستعيد الإجراء عند الوصول إلى الحالة الجديدة.
هذا ممتاز.
كان هذا آخر إجراء صعب يتم القيام به لكل هذه العملية.
الآن الباقي سيكون أشياء طفل.
سنقوم فقط بعمل وظيفة تسجيل لإرجاع وسائل المكافآت ونافذة المكافأة.
ثم سنقوم بوظيفة حفظ لحفظ دماغ السيارة متى أردت إنهاء التطبيق والعودة
إليه.
وبالطبع ، نظرًا لأنك تريد أن تكون قادرًا على تحميل عقل سيارتك عندما تعود إليها ،
فارجع إلى التطبيق.
حسنًا ، سننتهي من خلال إنشاء وظيفة تحميل ستحمّل النموذج الخاص بك بعد حفظ النموذج الخاص بك
مع وظيفة الحفظ.
إذن ، تبقى ثلاث وظائف ، لكنها ستكون بسيطة.
وبعد ذلك سيكون لدينا القسم الأكثر إثارة في هذه الوحدة الأولى.
هذا هو العرض.
سنرى ما إذا كانت API تعمل.
سنرى ما إذا كانت السيارة تصل إلى الأهداف وسنرى كيف يمكننا تحسينها.
وبعد ذلك في النهاية ستكون قد قمت ببناء أول ذكاء اصطناعي خاص بك.
لذلك لا يمكنني الانتظار لبدء العرض التوضيحي.
لنجعل هذه الوظائف الثلاث أولاً.
وحتى ذلك الحين ، استمتع.
أنا.