WEBVTT

00:00.210 --> 00:02.220
أهلا ومرحبا بكم في هذا البرنامج التعليمي.

00:02.370 --> 00:07.680
حسنًا ، في الدروس السابقة ، صنعنا الدماغ أو إذا كنت تريد العقول لـ a3c ، فنحن الآن بحاجة

00:07.680 --> 00:09.440
إلى تدريب هذا الدماغ.

00:09.450 --> 00:12.900
ولكن من أجل تدريب هذه العقول ، نحتاج إلى مُحسِّن.

00:12.930 --> 00:17.670
سيستخدم هذان الاثنان في نزول التدرج العشوائي لتحديث الأوزان

00:17.670 --> 00:24.600
وفقًا لمدى مساهمتها في الخطأ بين التوقعات والأهداف وما فعلناه حتى الآن في الوحدة الأولى

00:24.600 --> 00:30.630
والثانية ، استخدمنا محسن الذرة عن طريق الشعلة في التدريب.

00:30.630 --> 00:38.190
لكن كما أخبرتك ، نحن نتعامل مع مشكلة صعبة للغاية وهي الاختراق وخوارزمية a3c في حد ذاتها

00:38.190 --> 00:41.310
ليست كافية لحل هذه المشكلة.

00:41.310 --> 00:48.390
نحتاج إلى بعض المحسّنين المخصصين والكثير من الحيل المختلفة لحل هذه المشكلة دون انتظار

00:48.390 --> 00:49.290
الأعمار.

00:49.290 --> 00:56.730
هذا هو الغرض من القيام بذلك ، ولهذا السبب لدينا مُحسِّن مخصص منفصل يعتمد على مُحسِّن

00:56.730 --> 01:01.110
الذرة والموجود في فئة الذرة المشتركة هذه.

01:01.110 --> 01:02.670
ولماذا تشارك الذرة؟

01:02.670 --> 01:07.980
هذا لأنه في الواقع مُحسِّن الذرة ، لكن هذا سيعمل على الدول المشتركة.

01:07.980 --> 01:11.130
لذلك سنقوم بشرح كيفية عملها في هذا البرنامج التعليمي.

01:11.130 --> 01:15.840
لذلك سنستعرض الوظائف المختلفة هنا بدون تشفيرها لأننا ، كما تعلمون ، نريد الاحتفاظ

01:15.840 --> 01:18.480
ببعض الطاقة من أجل التنفيذ التالي.

01:18.480 --> 01:22.950
هذا هو القطار ، ملف PI الذي سيتطلب أكثر من 100 سطر من التعليمات البرمجية.

01:22.950 --> 01:24.330
لذا كن مستعدًا لذلك.

01:24.330 --> 01:30.210
وبالتالي سنحاول شرح ما يحدث هنا في درس تعليمي واحد ، هذا البرنامج التعليمي.

01:30.210 --> 01:31.920
ولنبدأ الآن.

01:32.650 --> 01:33.040
حسنا.

01:33.040 --> 01:38.530
لذلك نقدم أولاً هذا العنصر المشترك للفصل الذي سيحتوي على ثلاث وظائف هي وظيفة init ووظيفة

01:38.530 --> 01:40.750
الذاكرة المشتركة ووظيفة الخطوة.

01:40.960 --> 01:48.250
إذن ما نفعله أولاً هو أننا ورثنا من الذرة ، تلك الذرة ، والتي هي بالطبع محسن الذرة ، والتي

01:48.250 --> 01:52.010
نحصل عليها من وحدة Optim ، من مكتبة الشعلة.

01:52.030 --> 01:57.000
لذلك نحن هنا نطبق الوراثة للحصول على جميع الأدوات المتعلقة بمحسن الذرة.

01:57.010 --> 01:59.080
ثم نبدأ بالدالة init.

01:59.080 --> 02:00.340
إذن ماذا يحدث هنا؟

02:01.040 --> 02:09.020
أولاً ، استخدمنا وظيفة فائقة للتوريث من جميع الأدوات وجميع المعلمات الأساسية من فئة الذرة.

02:09.020 --> 02:16.000
وهذه المعلمات الأساسية هنا هي المعلمات ، ومعدل التعلم ، والبيتا ، والإبسيلون ، وتناقص الوزن.

02:16.010 --> 02:20.360
ثم نبدأ حلقة for وهي أول حلقة for للمجموعة في الذات.

02:20.660 --> 02:21.610
مجموعات بارامز.

02:21.620 --> 02:23.940
إذن أولاً ، ما هي مجموعات البارامز؟

02:23.960 --> 02:28.280
تحتوي الذات التي تقوم بتعليم المجموعات على جميع سمات المُحسِّن.

02:28.280 --> 02:32.480
ومن بين هذه السمات لدينا المعلمات التي يتعين علينا تحسينها.

02:32.480 --> 02:38.840
هذه المعلمات التي نريد تحسينها هي أوزان الشبكة المضمنة في معلمات مجموعات معلمات

02:38.840 --> 02:40.730
النقطة الذاتية.

02:40.730 --> 02:42.100
لذا ها نحن ذا.

02:42.110 --> 02:44.690
المجموعة تنتمي إلى الذات التي تحدد المجموعات.

02:44.690 --> 02:50.840
وهنا لدينا حلقة for الثانية هذه والتي ستحصل على هذه المعلمات التي نريد تحسينها والمضمنة

02:50.840 --> 02:54.560
بالضبط في معلمات مجموعات معلمات النقطة الذاتية.

02:54.650 --> 03:00.980
لذلك بشكل أساسي ، نمر على الذات التي تحدد المجموعات التي تحتوي على جميع المعلمات ولكل مجموعة من

03:00.980 --> 03:06.350
المعلمات في مجموعات معلمات النقطة الذاتية ، سنقوم بالمرور عبر المعلمات التي نريد

03:06.350 --> 03:07.280
تحسينها.

03:07.310 --> 03:14.210
لذلك فإن المعلمات p في المجموعة تعني هنا لكل مستشعر من الأوزان التي نريد تحسينها.

03:14.210 --> 03:16.940
لذلك لكل موتر من الأوزان نريد تحسينها.

03:16.940 --> 03:21.350
ثم ماذا يحدث داخل هذه الحلقة مع هذه الأسطر الأربعة من التعليمات البرمجية؟

03:21.650 --> 03:28.970
ما يحدث أساسًا هو أن التحديث الذي تم إجراؤه بواسطة Atom Optimizer يعتمد على متوسط متحرك

03:28.970 --> 03:30.800
أسي للتدرج اللوني.

03:31.160 --> 03:32.810
هذا هو سطر الكود هنا.

03:32.810 --> 03:38.210
هذا هو المتوسط المتحرك الأسي للتدرج اللوني للحظة ، وهو المتوسط المتحرك من الرتبة الأولى.

03:38.210 --> 03:44.960
لكن التحديث الذي أجراه Atom لا يعتمد فقط على ذلك ، بل يعتمد أيضًا على متوسط متحرك أسي للجذر

03:44.990 --> 03:46.790
التربيعي للتدرج.

03:47.000 --> 03:51.650
هذا هو المتوسط المتحرك الأسي لتدرج الحركة اثنين أو الاثنين.

03:51.800 --> 03:57.320
إذن ، هذا هو المتوسط المتحرك الأسي للطلب الأول وهنا متوسط الحركة الأسي للرتبة الثانية

03:57.320 --> 04:00.530
لكل منهما ، المتوسط المتحرك الأسي للتدرج.

04:00.530 --> 04:06.110
إذن ، ما يحدث هنا والآن إذا كنت ترغب في الحصول على مزيد من العمق حول كيفية عمل

04:06.110 --> 04:12.260
المتوسط المتحرك الأسي ، حسنًا ، أنا أشجعك بشدة على إلقاء نظرة على ورقة البحث هذه ،

04:12.260 --> 04:19.370
آدم طريقة للتحسين العشوائي ، لأن محسن الذرة أساسًا الذي نطبقه الآن يعتمد على الخوارزمية الموجودة

04:19.370 --> 04:20.480
هنا.

04:20.630 --> 04:26.660
لذلك إذا كنت ترغب في الحصول على مزيد من التفاصيل حول كيفية عمل الخوارزمية ، حسنًا ، ستكون هذه الورقة مفيدة

04:26.660 --> 04:27.380
بالتأكيد.

04:27.380 --> 04:32.600
وبعد ذلك لديك بعض التفسيرات الإضافية حول الخوارزمية بقواعد تحديث الذرات.

04:32.600 --> 04:37.790
وهكذا ، كما تعلمون ، هذا فقط إذا كنت تريد مهاجمة هذا قبل مهاجمة وظيفة القطار الكبيرة التي

04:37.790 --> 04:38.990
سنقوم بها بعد ذلك.

04:39.230 --> 04:45.740
حسنًا ، دعنا نعود إلى Python والآن لننتقل إلى الوظيفة الثانية ، مشاركة الذاكرة.

04:46.010 --> 04:47.810
لذا الآن سأقول بضع كلمات.

04:47.810 --> 04:54.530
إن فكرة وظيفة ذاكرة المشاركة هذه تشبه إلى حد ما الموتر الذي Cuda ، كما تعلمون ، CUDA هو مسرّع يعتمد على وحدة معالجة

04:54.530 --> 04:55.610
الرسومات.

04:55.640 --> 05:03.110
وما يحدث هنا بشكل أساسي هو أن لدينا هذه المستشعرات للحالات التي تشترك في الذاكرة

05:03.110 --> 05:07.790
هنا ، وهنا وهنا تتصرف قليلاً مثل Tensor ، هذا Cuda.

05:07.970 --> 05:10.160
لذا ، كما تعلم ، قم بتسريع العمليات الحسابية.

05:10.160 --> 05:17.000
لكن الاختلاف هنا هو أن الموتر هنا هو ذاك تشارك الذاكرة ، ويرسل الحسابات إلى جزء من وحدة معالجة الرسومات أو

05:17.000 --> 05:21.950
وحدة المعالجة المركزية التي يمكن الوصول إليها من جميع الخيوط المشلولة.

05:21.950 --> 05:23.510
لذلك هذا ما تم القيام به هنا بشكل أساسي.

05:23.510 --> 05:30.170
هذا يشبه إلى حد ما Tensor Cuda ، لكنه يتم إرساله فقط إلى جزء من وحدة معالجة الرسومات أو وحدة المعالجة المركزية التي يمكن الوصول إليها من خلال

05:30.170 --> 05:31.460
سلاسل الخطوط المتوازية.

05:31.910 --> 05:32.390
حسنا.

05:32.390 --> 05:34.940
ثم لدينا خطوة الوظيفة الأخيرة.

05:34.940 --> 05:40.460
لذا ، كما تعلمون ، هذه الوظيفة ، تشبه طريقة الخطوة لمحسن الذرة الذي استخدمناه بالفعل في

05:40.460 --> 05:41.330
هذه الدورة.

05:41.630 --> 05:47.060
ومرة أخرى ، هذا يعتمد على الخوارزمية ، واحدة من نفس الأوراق التي رأيناها من قبل.

05:47.060 --> 05:48.500
إذن هذه الخوارزمية.

05:48.590 --> 05:53.600
مرة أخرى ، إذا كنت تريد أن تفهم بالتفصيل سطور التعليمات البرمجية التالية ، حسنًا ، مرة أخرى

05:53.600 --> 05:57.170
، أشجعك على إلقاء نظرة على هذه الخوارزمية من خلال هذه الورقة.

05:57.320 --> 06:04.280
وإلى جانب ذلك ، ما يتم القيام به هنا ليس إلزاميًا تمامًا لأن هذا في الواقع عبارة عن نسخة لصق من

06:04.280 --> 06:06.980
طريقة الخطوة لفئة الذرة المحسّنة.

06:06.980 --> 06:09.470
إذن ما الذي يتم عمله هنا بشكل أساسي؟

06:09.470 --> 06:15.350
كان بإمكاننا فعل ذلك باستخدام ميراثنا لأننا هنا نرث من الذرة المحسنة.

06:15.350 --> 06:21.650
ومن أجل استخدام ميراثنا جيدًا ، ما يمكننا فعله بدلاً من القيام بكل هذا هو فقط سأكتب

06:21.650 --> 06:22.640
هنا كتعليق.

06:22.670 --> 06:27.530
إنها فقط تستخدم الوظيفة الفائقة التي نطبقها على مشاركتنا.

06:28.290 --> 06:31.410
فئة الذرة ثم كائننا الذاتي.

06:31.410 --> 06:34.640
وهنا نضيف الخطوة مع الأقواس.

06:34.650 --> 06:40.470
الخطوة هي طريقة فئة العنصر المحسّنة وهي نفسها تمامًا.

06:40.470 --> 06:46.410
لهذا السبب كنت أقول فقط هنا مجرد نسخة من لصق طريقة الخطوة لفئة Optim atom.

06:46.710 --> 06:53.580
لذلك أعتقد أنك إذا استبدلت كل هذا بهذه الوظيفة الفائقة المطبقة لمشاركة الذرة وطريقة الخطوة ، حسنًا

06:53.580 --> 06:55.920
، قد نحصل على نفس الشيء تمامًا.

06:57.090 --> 06:57.450
حسنا.

06:57.450 --> 06:59.720
لذلك كان من الممتع إلقاء نظرة سريعة عليه.

06:59.730 --> 07:02.670
في الأساس ، يمكنك أن ترى هذا على أنه مُحسِّن الذرة.

07:02.700 --> 07:04.410
يبدو الأمر كما لو أننا ألقينا نظرة أعمق عليه.

07:04.410 --> 07:09.630
لكن مرة أخرى ، إذا كنت تريد الدخول في مزيد من التفاصيل حول هذا الأمر وإذا كنت تريد أن تفهم ما

07:09.630 --> 07:13.950
يحدث وراء الكواليس ، حسنًا ، أشجعك على إلقاء نظرة على هذه الورقة البحثية.

07:13.980 --> 07:15.900
سأضع الرابط في التعليقات هنا.

07:15.900 --> 07:19.800
كما تعلم ، تذكر ، سيتم التعليق على جميع الرموز بتفاصيل رائعة.

07:19.800 --> 07:21.900
لذلك من الجيد حقًا إذا كان بإمكانك إلقاء نظرة عليها.

07:22.320 --> 07:30.270
والآن أتمنى أن يكون لديك بعض الطاقة الكبيرة لأننا سننتقل إلى ملف القطار الذي سيحتوي على وظيفة القطار

07:30.270 --> 07:35.790
الضخمة هذه والتي ستدرب أدمغتنا بشكل أساسي ، وهو ما يمكننا فعله الآن لأن

07:35.790 --> 07:37.440
لدينا مُحسِّننا.

07:37.440 --> 07:40.080
لذا احصل على استراحة جيدة الآن ، واستمتع بنوم جيد.

07:40.080 --> 07:43.980
وكلما شعرت أنك بحالة جيدة ، دعنا ننتقل إلى الخطوة التالية.

07:44.220 --> 07:45.420
حتى ذلك الحين ، استمتع.

07:45.420 --> 07:45.900
أنا.
