WEBVTT

00:00.270 --> 00:02.730
مرحبًا ومرحبًا بكم في برنامج Python التعليمي هذا.

00:03.000 --> 00:07.740
حسنًا ، في هذا البرنامج التعليمي ، سنقوم بالوظيفة التي ستحدد الإجراء الصحيح

00:07.740 --> 00:08.580
في كل مرة.

00:08.580 --> 00:14.430
لذلك بشكل أساسي ، سنقوم بتنفيذ الجزء الذي سيجعل السيارة تقوم بالحركة الصحيحة في كل مرة تتجه

00:14.430 --> 00:19.410
إلى اليسار ، أو تسير في اتجاه مستقيم أو يمينًا للوصول إلى الهدف وتجنب العوائق

00:19.410 --> 00:20.520
التي تهبط.

00:20.730 --> 00:22.200
لذلك دعونا نفعل هذا الآن.

00:22.200 --> 00:28.260
سنبدأ كالمعتاد بعلامة تعريف لتعريف دالة ثم نعطي اسمًا للدالة الخاصة بنا

00:28.260 --> 00:30.360
، والتي سنسميها تحديد.

00:31.170 --> 00:31.830
عمل.

00:32.370 --> 00:37.320
ثم سيأخذ بعض الأقواس ووظيفة التحديد هذه وسيطين.

00:37.320 --> 00:41.130
الأول هو الذات كالمعتاد للإشارة إلى الكائن.

00:41.130 --> 00:46.020
والحجة الثانية ، أيهما حسب رأيك؟

00:46.170 --> 00:47.580
حسنًا ، ماذا يمكن أن يكون؟

00:47.610 --> 00:53.520
إذا فكرت في الأمر ، فإن الإجراء الذي نختاره يأتي من مخرجات الشبكة العصبية ، لأن مخرجات

00:53.520 --> 00:59.340
الشبكة العصبية هي القيم الأساسية لكل من الإجراءات الثلاثة الممكنة ، وبالتالي الإجراء

00:59.340 --> 01:05.550
الذي نلعبه ، الإجراء الذي سوف أن يكون ناتج الشبكة العصبية يعتمد على حالة الإدخال.

01:05.550 --> 01:11.340
وحالة الإدخال هي بالضبط الوسيطة الثانية التي نحتاجها لوظيفة إجراء التحديد.

01:11.670 --> 01:16.260
ذلك لأننا حرفياً سنأخذ ناتج الشبكة العصبية.

01:16.260 --> 01:22.140
وبالطبع فإن ناتج الشبكة العصبية يعتمد بشكل مباشر على مدخلات الشبكة العصبية.

01:22.140 --> 01:23.970
لذلك ستكون هذه هي حُجّتنا.

01:23.970 --> 01:26.430
والآن يمكننا أن نطلق عليها أي اسم.

01:26.430 --> 01:33.870
سوف نسميها في الواقع الحالة لأن مدخلات الشبكات العصبية هي حالات الإدخال التي يتم ترميزها

01:33.870 --> 01:39.810
بواسطة متجه خمسة أبعاد ، وتوجيه الإشارات الثلاثة والتوجيه الناقص.

01:39.810 --> 01:41.940
والآن ستكون الأمور سهلة.

01:41.940 --> 01:47.790
سنقوم بتغذية حالة الإدخال في الشبكة العصبية ، تلك التي بنيناها أعلاه ، هنا مباشرة

01:47.790 --> 01:49.320
مع فئة الشبكة.

01:49.320 --> 01:55.950
وبعد ذلك سنحصل على المخرجات ، وهي القيم الأساسية لكل من الإجراءات الثلاثة الممكنة.

01:55.950 --> 02:01.110
ثم باستخدام طريقة soft max ، والتي سأشرحها في هذا البرنامج التعليمي ، سنحصل على

02:01.110 --> 02:02.640
الإجراء النهائي للعب.

02:03.030 --> 02:04.290
لذلك دعونا نفعل هذا.

02:04.290 --> 02:07.740
دعنا ننتقل إلى الدالة ودعنا ننفذ كل هذا.

02:08.220 --> 02:13.020
لذا فإن أول شيء يجب أن نبدأ به هو ما ذكرته للتو محشوة.

02:13.020 --> 02:20.460
ماكس فكرة soft max هي أننا سنحاول الحصول على أفضل حركة للعبها في كل مرة ، ولكن في

02:20.460 --> 02:24.480
نفس الوقت سنستكشف الإجراءات المختلفة.

02:24.720 --> 02:25.890
وكيف يمكننا فعل ذلك؟

02:25.890 --> 02:30.990
كيف يمكننا الحصول على أفضل إجراء نلعبه مع استمرار استكشاف الإجراءات الأخرى؟

02:30.990 --> 02:38.850
حسنًا ، نحن نستخدم فكرة soft max ، والتي تتكون من إنشاء توزيع للاحتمالات

02:38.850 --> 02:41.880
لكل من قيم Q Q ، إجراء حالة Q.

02:41.880 --> 02:44.970
كما تعلم ، لدينا قيمة Q واحدة لكل إجراء.

02:44.970 --> 02:46.590
إتجه يسارا ، إذهب مباشرة أو إتجه يمينا.

02:46.590 --> 02:49.470
لكن قيمة Q هذه تعتمد أيضًا على حالة الإدخال.

02:49.470 --> 02:52.650
هذه بالضبط وظيفة Q التي رأيتها ومحاضرات الحدس.

02:52.650 --> 02:55.980
وظيفة Q هذه هي وظيفة الحالة والعمل.

02:56.010 --> 03:02.460
لذلك بما أن لدينا هنا حالة إدخال واحدة ، وهي الحالة هنا ، وثلاثة إجراءات محتملة ، فلدينا ثلاثة.

03:02.460 --> 03:03.270
Q القيم.

03:03.270 --> 03:04.470
س الدولة العمل واحد.

03:04.470 --> 03:07.230
س الدولة الإجراء الثاني و س الدولة الإجراء الثالث.

03:07.230 --> 03:13.710
وسننشئ توزيعًا للاحتمالات فيما يتعلق بقيم Q الثلاثة هذه.

03:13.710 --> 03:18.900
أي أنه سيكون لدينا احتمال واحد لقيمة Q الأولى ، واحتمال آخر لقيمة

03:18.900 --> 03:22.590
Q الثانية واحتمال ثالث لقيمة Q الثالثة.

03:22.590 --> 03:25.230
ويصل مجموع هذه الاحتمالات الثلاثة إلى واحد.

03:25.440 --> 03:32.250
ولذا سنقوم بكل هذا باستخدام soft Max ، وسيعزو soft Max احتمالية كبيرة إلى

03:32.250 --> 03:33.420
أعلى قيمة Q.

03:33.570 --> 03:40.290
هذا هو السبب في أن بديل self max هو حد أقصى بسيط ، كما تعلم ، يأخذ مباشرة الحد الأقصى

03:40.290 --> 03:41.220
لقيم Q.

03:41.220 --> 03:44.640
لكن في هذه الحالة ، نحن لا نستكشف الإجراءات الأخرى.

03:44.850 --> 03:50.430
بفضل هذه الاحتمالات ، يمكننا استكشاف مكان آخر باستخدام معلمة درجة الحرارة التي سنراها

03:50.430 --> 03:51.690
بسرعة كبيرة.

03:51.990 --> 03:55.740
لا يزال بإمكاننا استكشافها من خلال تكوين معلمة درجة الحرارة هذه.

03:55.770 --> 04:02.250
لهذا السبب بشكل عام ، بالنسبة للتعلم العميق ، أوصي بشدة باستخدام soft max بدلاً من arg max

04:02.250 --> 04:03.060
بسيطة.

04:03.240 --> 04:05.130
حسنًا ، فلنطبق soft max.

04:05.130 --> 04:10.980
وبالتالي ، كما فهمت ، نظرًا لأن Soft Max يُرجع احتمالات كل من قيم Q الثلاثة

04:10.980 --> 04:17.640
للإجراءات الثلاثة المحتملة ، حسنًا ، المتغير الأول الذي سننشئه هو probs التي تشير

04:17.640 --> 04:20.160
بالطبع إلى هذه الاحتمالات.

04:20.160 --> 04:22.080
لذا الدعائم تساوي.

04:22.080 --> 04:24.660
والآن سنأخذ دالة soft max.

04:24.810 --> 04:27.930
ووفقًا لك ، من أين سنأخذها؟

04:28.050 --> 04:29.490
حسنا بالطبع.

04:29.490 --> 04:35.730
تذكر أننا استوردنا نقطة الشعلة والوحدة الفرعية الوظيفية ، والتي أذكرها هي الوحدة

04:35.730 --> 04:39.630
التي تحتوي على معظم الإجراءات لتنفيذ شبكة عصبية.

04:39.630 --> 04:40.830
أعطيناها الاختصار.

04:40.830 --> 04:46.920
F وهذا بالضبط من هذه الوحدة الفرعية الوظيفية سنأخذ دالة الحد الأقصى للذات.

04:47.070 --> 04:53.880
ولكن نظرًا لأننا أعطيناها الاختصار f ، فقد بدأنا هنا برمز F الذي يمثل وظيفية نأخذ

04:53.880 --> 04:56.010
منها دالة soft max.

04:56.010 --> 04:56.730
ها هو.

04:56.730 --> 04:57.990
هذا هو أول واحد.

04:57.990 --> 04:59.250
وأقواس.

04:59.580 --> 05:00.030
حسنا.

05:00.030 --> 05:03.840
والآن ما الذي نحتاجه لإدخاله في دالة max self؟

05:03.840 --> 05:09.900
حسنًا ، هذه ، بالطبع ، الكيانات التي نريد إنشاء توزيع احتمالي لها.

05:09.900 --> 05:11.400
وما هي هذه الكيانات؟

05:11.400 --> 05:13.590
حسنًا ، هذه بالطبع قيم Q.

05:13.590 --> 05:16.710
إذن السؤال الآن ، كيف يمكننا الحصول على قيم Q؟

05:16.710 --> 05:20.970
حسنًا ، بالطبع ، قيم Q هي ناتج الشبكة العصبية.

05:20.970 --> 05:24.420
وللحصول على هذه المخرجات للشبكة العصبية ، حسنًا ، ها نحن ذا.

05:24.420 --> 05:26.880
نحن بحاجة إلى أخذ شبكتنا العصبية.

05:26.880 --> 05:30.420
لكن في الواقع ، لدينا بالفعل لأن هذا هو.

05:30.910 --> 05:38.230
بدأنا في وظيفة init إنشاء نموذج النقطة الذاتية ، وهو ليس سوى شبكتنا العصبية

05:38.230 --> 05:41.350
لأنه كائن من فئة الشبكة.

05:41.350 --> 05:42.600
وهذا مثالي.

05:42.610 --> 05:48.970
يمكننا فقط أن نأخذ نموذجنا هنا ونطبق self max هذا النموذج على حالة الإدخال ، وهي

05:48.970 --> 05:52.870
الحجة هنا والتي ستعيد المخرجات التي نبحث عنها.

05:52.900 --> 05:54.280
هذه هي قيم Q.

05:54.280 --> 06:00.010
والآن ، قد يتحسن حدسك الذي جعلنا نأخذ النموذج هنا لتقديمه في دالة

06:00.010 --> 06:00.730
init.

06:00.730 --> 06:05.920
بالنسبة لأولئك منكم الذين يبدأون البرمجة الموجهة للكائنات ، سترى أن كل هذا سيصبح

06:05.920 --> 06:06.550
طبيعيًا.

06:06.940 --> 06:08.680
حتى النفس ماكس ثم.

06:08.680 --> 06:16.660
لذلك نأخذ نموذج النقطة الذاتية لنموذجنا لأنه يجب أن يكون نموذج الكائن الذي أنشأناه هنا.

06:16.990 --> 06:23.860
ولكن بعد ذلك نحتاج إلى الحصول على ناتج نموذج الشبكة العصبية الخاص بنا ، وبالتالي سنضيف

06:23.860 --> 06:30.340
هنا بعض الأقواس التي سنقوم بإدخالها جيدًا ، حالة الإدخال المسماة الحالة هنا.

06:30.340 --> 06:37.690
إذن ما نريد القيام به في البداية هو إدخال الحالة ، ولكن الآن يجب أن نكون حريصين على شيء ما.

06:37.690 --> 06:43.930
تبدو الحالة وكأنها حالة بسيطة في الوقت الحالي ، ولكن تذكر أن هذه الحالة ستكون في الواقع

06:43.930 --> 06:51.040
موترًا للشعلة لأننا سنستخدم لاحقًا هذه الحالة غير الذاتية لنضعها كحجة لوظيفة الإجراء المحدد

06:51.040 --> 06:57.280
، حجة الحالة التي هي هنا في الواقع ستصبح لاحقًا هذه الذات ، تلك الحالة الأقل.

06:57.430 --> 07:02.590
وبما أن هذا موتر شعلة ، فإن النموذج سيقبله جيدًا ، لذلك لا بأس بذلك.

07:02.590 --> 07:04.720
لكن الآن يمكننا تحسين الخوارزمية.

07:04.870 --> 07:08.290
لذا كما فهمت ، الدولة موتر شعلة.

07:08.290 --> 07:15.250
وكما قلنا سابقًا ، يتم تغليف معظم المستشعرات في متغير يحتوي أيضًا على تدرج.

07:15.430 --> 07:22.540
ما سنفعله الآن هو لف حالة الإدخال هذه التي هي موتر في متغير شعلة.

07:22.570 --> 07:27.910
ولكن بما أن هذه هي حالة الإدخال ، فلن يكون هناك بعض التمايز.

07:27.910 --> 07:33.610
لن نستخدم التدرج اللوني لهذه الحالة نحو المتغير في الحسابات.

07:33.610 --> 07:42.700
وبالتالي ، ما سنفعله الآن هو تحويل حالة موتر الشعلة هذه إلى متغير شعلة.

07:44.670 --> 07:45.480
مثل ذلك.

07:45.600 --> 07:51.600
ولكن بعد ذلك لتحديد أننا لا نريد التدرجات في الرسم البياني لجميع حسابات

07:51.600 --> 07:52.320
وحدة PN.

07:52.320 --> 07:57.660
حسنًا ، سنضيف هنا ما يصل إلى تقلب يساوي صحيحًا.

07:57.930 --> 08:03.120
لذلك لدينا الآن موتر شعلة الحالة الخاص بنا إلى متغير شعلة.

08:03.210 --> 08:10.500
ولكن بفضل هذا المتغير المتغير يساوي المعلمة الحقيقية ، حسنًا ، لن نقوم بتضمين التدرج

08:10.500 --> 08:16.380
المرتبط بحالة الإدخال هذه في الرسم البياني لجميع حسابات الوحدة.

08:16.650 --> 08:18.390
هذه خدعة فنية أخرى.

08:18.390 --> 08:22.920
سيوفر لنا هذا بعض الذاكرة وبالتالي سيؤدي ذلك إلى تحسين الأداء.

08:22.920 --> 08:27.690
لذلك أوصي بشدة بالقيام بذلك وسنضيف الآن شيئًا أكثر متعة.

08:27.690 --> 08:30.600
يتعلق الأمر بمعامل درجة الحرارة هذا الذي ذكرته للتو.

08:30.600 --> 08:36.090
لذا فإن معلمة درجة الحرارة هذه هي المعلمة التي ستسمح لنا بتعديل كيفية تأكد

08:36.090 --> 08:39.960
الشبكة العصبية من الإجراء الذي يجب أن تقرر تشغيله.

08:39.960 --> 08:46.980
لذا فإن معامل درجة الحرارة هذا سيكون رقمًا موجبًا ، وكلما اقترب من الصفر ، قل التأكد من أن الشبكة العصبية

08:47.010 --> 08:49.500
ستكون عند تشغيل إجراء ما.

08:49.500 --> 08:55.290
وكلما زادت معلمة درجة الحرارة هذه ، زاد التأكد من أن الشبكة العصبية ستكون من الإجراء الذي

08:55.290 --> 08:56.400
تقرر تشغيله.

08:56.670 --> 09:04.410
ولإضافة هذه المعلمة ، سأضرب النواتج ، وهي قيم جديلة بمعامل درجة الحرارة

09:04.410 --> 09:05.100
هذا.

09:05.250 --> 09:13.230
لنبدأ على سبيل المثال ، بسبعة وسأحدد هنا التعليق الصغير T يساوي سبعة.

09:13.350 --> 09:17.010
هذا هو معامل درجة الحرارة الذي أضعه يساوي سبعة.

09:17.010 --> 09:20.880
سنقوم بتجربة بعض الأنواع الأخرى ، لكنني أريد فقط أن أبدأ بواحد صغير لأنك

09:20.880 --> 09:22.320
سترى ذلك بأخرى صغيرة.

09:22.320 --> 09:25.680
سيارتنا ستظل تتصرف مثل نوع من الحشرات.

09:25.680 --> 09:30.180
ولكن من خلال زيادة معامل درجة الحرارة هذا ، سيبدو كودنا أشبه بالسيارة.

09:30.180 --> 09:33.990
وإلى جانب ذلك ، فإن القيادة في الخلية ستكون أفضل بكثير.

09:34.200 --> 09:40.380
وهذا أمر منطقي لأنه كلما زادت معلمة درجة الحرارة هذه ، كلما زاد احتمال

09:40.380 --> 09:41.670
فوز قيمة Q.

09:42.000 --> 09:49.410
لأنه على سبيل المثال ، إذا كان لدينا حد أقصى بسيط لقيم Q ، فلنأخذ بعض الأرقام البسيطة.

09:49.410 --> 09:51.660
واحد اثنين ثلاثة.

09:52.020 --> 10:00.930
إذا كانت محشوة بحد أقصى من 1 إلى 3 يساوي ، على سبيل المثال ، 0. 04 ، النقطة 11 و 0. 85.

10:01.020 --> 10:07.260
ثم بزيادة درجة الحرارة بأخذ درجة حرارة أعلى ، فإن درجة الحرارة الآن تساوي واحدًا.

10:07.350 --> 10:10.320
عن طريق أخذ درجة حرارة أعلى مثل ، على سبيل المثال ، اثنين.

10:10.350 --> 10:11.910
لينة جدا ماكس.

10:13.020 --> 10:15.810
دعونا ننسخ هذا ونضربه في.

10:15.810 --> 10:22.800
على سبيل المثال ، يحتوي اثنان أو ثلاثة من أجهزة Mac المحشوة على نفس قيم Q ، ولكن مضروبة في معامل درجة الحرارة

10:22.800 --> 10:23.940
هذا من ثلاثة.

10:24.060 --> 10:30.900
حسنًا ، سنحصل على شيء مثل صفر لقيمة Q الأولى لأن احتمال ذلك ضئيل للغاية.

10:30.930 --> 10:37.500
إذن فهذا شيء قريب من الصفر ثم شيء صغير جدًا بالنسبة للاحتمال الثاني لأن هذا كان

10:37.500 --> 10:39.180
احتمالًا ضئيلًا.

10:39.180 --> 10:48.810
لنفترض ، على سبيل المثال ، 0. 02 ولكن بعد ذلك الاحتمال الثالث لأنه كان الأكبر والاحتمال

10:48.810 --> 10:54.420
العالي جدًا ، حسنًا بزيادة درجة الحرارة ، سيكون هذا الاحتمال أكبر لأننا

10:54.420 --> 11:00.600
سنكون أكثر ثقة بأن هذه هي قيمة Q الصحيحة المقابلة لـ العمل يجب أن نلعبه.

11:00.600 --> 11:05.340
وبالتالي سيكون هذا شيئًا مثل النقطة 98.

11:05.760 --> 11:11.760
الآن من خلال زيادة معلمة درجة الحرارة هذه حيث نحن الآن على يقين أكثر من أن الإجراء الثالث هنا

11:11.760 --> 11:17.460
يجب أن يكون هو الإجراء المطلوب تشغيله ، لأن احتمال قيمة Q لهذا الإجراء ليس فقط هو الأكبر

11:17.460 --> 11:19.530
، ولكنه أيضًا مرتفع جدًا.

11:19.560 --> 11:22.470
إذن هذا هو كل ما يتعلق بمعامل درجة الحرارة هذا.

11:22.470 --> 11:26.880
يتعلق الأمر باليقين من الإجراء الذي يجب أن نقرر لعبه.

11:27.180 --> 11:27.510
حسنا.

11:27.510 --> 11:29.340
لذا سأقوم بإزالة هذا التعليق.

11:29.340 --> 11:30.720
كان هذا فقط للتوضيح.

11:30.990 --> 11:33.150
والآن لنبدأ العمل.

11:33.240 --> 11:35.310
إذن كيف سنفعل ذلك؟

11:35.310 --> 11:41.310
حسنًا ، مبدأ طريقة soft max ليس فقط إنشاء توزيع احتمالي لكل من قيم Q ،

11:41.310 --> 11:46.080
ولكن أيضًا وهذه هي الخطوة الثانية من طريقة soft max.

11:46.170 --> 11:51.630
نأخذ سحبًا عشوائيًا من هذا التوزيع للحصول على الإجراء النهائي.

11:51.780 --> 11:57.240
وبالطبع ، ستكون لدينا فرصة كبيرة للحصول على الإجراء الذي يتوافق مع قيمة Q التي

11:57.240 --> 12:01.050
لها أعلى احتمال ، لأن هذا هو بالضبط كيف يعمل التوزيع.

12:01.500 --> 12:02.400
لذا ها نحن ذا.

12:02.400 --> 12:03.930
لنبدأ العمل.

12:03.930 --> 12:07.860
لذلك سنقدم متغيرًا جديدًا نسميه الإجراء.

12:08.610 --> 12:16.230
وسيكون هذا الإجراء عبارة عن سحب عشوائي لتوزيع الاحتمالات الذي أنشأناه للتو عند هذا الخط

12:16.230 --> 12:17.160
من قبل.

12:17.250 --> 12:19.980
فكيف نحصل على مثل هذا السحب العشوائي؟

12:19.980 --> 12:24.270
حسنًا ، سنأخذ احتمالات الخاصين بكل من قيم Q.

12:24.270 --> 12:32.160
نأخذ الدعائم ثم النقطة ، ثم سنستخدم الدالة الاسمية المتعددة والتي ستمنحنا سحبًا

12:32.160 --> 12:35.940
عشوائيًا من دعامات التوزيع هذه.

12:35.940 --> 12:36.840
هذا كل شئ.

12:36.840 --> 12:38.310
هذا ما يعطينا الفعل.

12:38.310 --> 12:39.210
في احسن الاحوال.

12:39.210 --> 12:44.580
والآن بالطبع ، سنعيد الإجراء الذي توجد به خدعة صغيرة هنا.

12:44.580 --> 12:51.300
حسنًا ، هذه هي حقيقة أن هذه الدعائم التي تُرجع سنويًا متغير pytorch مع دُفعة وهمية ، فأنت تعرف

12:51.300 --> 12:57.270
هذا البعد المزيف المقابل للدفعة ، وبالتالي للحصول على النتيجة الصحيحة التي نريدها

12:57.270 --> 13:00.390
، هذا هو الإجراء صفر واحد أو اثنين.

13:00.630 --> 13:08.490
نحتاج فقط إلى إضافة البيانات هنا ثم بعض الأقواس والإجراء صفر أو اثنين الذي

13:08.490 --> 13:12.840
نبحث عنه موجود في الفهارس ، صفر وصفر.

13:13.410 --> 13:13.920
حسنا.

13:13.920 --> 13:14.640
وها نحن ذا.

13:14.640 --> 13:16.590
الآن لدينا عملنا.

13:16.740 --> 13:22.200
بفضل وظيفة الحركة المحددة هذه ، ستعرف منظمة العفو الدولية الآن الإجراء الذي يجب تشغيله في كل مرة.

13:22.560 --> 13:23.370
رائع.

13:23.370 --> 13:27.300
يمكننا الآن الانتقال إلى الوظيفة التالية ، والتي ستكون دالة التعلم.

13:27.300 --> 13:32.610
وهذا هو المكان الذي سنقوم فيه بتدريب الشبكة العصبية بأكملها مع كل الانتشار الأمامي ثم

13:32.610 --> 13:35.670
الانتشار الخلفي باستخدام الانحدار العشوائي.

13:35.670 --> 13:41.460
حسنًا ، سنقوم في الأساس بتنفيذ التدريب الكامل لنموذج التعلم العميق الذي يقع في

13:41.460 --> 13:43.170
قلب ذكاءنا الاصطناعي.

13:43.170 --> 13:44.610
لذلك لا أطيق الانتظار لفعل ذلك.

13:44.610 --> 13:49.260
سيكون هذا برنامجًا تعليميًا مثيرًا ولذا سأراك في البرنامج التعليمي التالي.

13:49.260 --> 13:50.520
حتى ذلك الحين ، استمتع.

13:50.520 --> 13:51.000
أنا.
