WEBVTT

00:00.360 --> 00:02.700
أهلا ومرحبا بكم في هذا البرنامج التعليمي.

00:02.850 --> 00:06.940
حسنًا ، سنقوم الآن بتنفيذ ذكاءنا الاصطناعي من الصفر.

00:06.960 --> 00:08.790
سنسميها سطرًا سطرًا.

00:08.790 --> 00:12.300
وفي قسم الكود الأول هذا ، سنقوم باستيراد المكتبات.

00:12.300 --> 00:17.880
لكن قبل أن نبدأ بقسم الكود الأول هذا ، أود أن أوضح العلاقة بين الذكاء

00:17.880 --> 00:20.310
الاصطناعي وخريطتنا ، ملف P.

00:20.340 --> 00:23.940
أي لماذا نطبق هذا للخريطة؟

00:23.940 --> 00:27.620
ما هو الغرض من الذكاء الاصطناعي الخاص بنا وأين سنستخدمه؟

00:27.630 --> 00:29.940
لذا فهو في الواقع بسيط للغاية.

00:29.940 --> 00:38.340
نحن نقوم فقط بالذكاء الاصطناعي الخاص بنا لتحديد الإجراء الصحيح في كل مرة ، لذلك نقوم باستيراد in class من ملف AI الخاص

00:38.340 --> 00:39.030
بنا.

00:39.030 --> 00:47.460
لذلك سنقوم بعمل فئة المستند هذه في هذا الملف ، ولكن بعد ذلك نقوم باستيرادها فقط لتحديد الإجراء الصحيح

00:47.460 --> 00:49.560
للتشغيل في كل مرة.

00:49.590 --> 00:52.830
ونختار هذا الإجراء بالضبط عند هذا السطر.

00:52.860 --> 00:54.900
العمل يساوي تحديث الدماغ.

00:54.900 --> 00:56.910
مكافأة أقل ، إشارة أقل.

00:56.940 --> 01:00.510
ستكون الإشارة الأقل هي مدخلات الشبكة العصبية.

01:00.930 --> 01:05.880
إنها تتألف من ثلاث إشارات من أجهزة الاستشعار ، بالإضافة إلى الاتجاه والتوجيه الناقص.

01:05.880 --> 01:07.170
إذن هذا هو المدخل.

01:07.170 --> 01:13.620
ولكن بعد ذلك يكون الناتج هو الإجراء الذي يجب أن نلعبه ، وهذا فقط ما سنأخذه مما شعرت أننا على وشك

01:13.620 --> 01:14.670
القيام به.

01:15.060 --> 01:16.230
لذا ضع ذلك في الاعتبار.

01:16.230 --> 01:17.340
انها بسيطة جدا.

01:17.340 --> 01:26.130
نقوم أولاً باستيراد الفئة من AI ، ثم نقوم بإنشاء دماغ الكائن من فئة المستند ، والذي يأخذ كمدخلات المتجهات المشفرة للحالات

01:26.130 --> 01:32.220
ذات الأبعاد الخمسة ، والإشارات الثلاث بالإضافة إلى الاتجاه بالإضافة إلى ناقص

01:32.220 --> 01:33.570
الاتجاه.

01:33.570 --> 01:36.810
تتجه الإجراءات الثلاثة إلى اليسار ، أو تسير بشكل مستقيم أو يمينًا.

01:36.810 --> 01:42.210
ثم معلمة جاما هذه ، هذه هي المعلمات الوحيدة للفئة التي سنصنعها.

01:42.210 --> 01:49.950
وبعد ذلك ، بمجرد إنشاء هذا الكائن ، نختار في فئة اللعبة الإجراء الذي نلعبه في كل مرة.

01:49.950 --> 01:53.670
وهذا يعتمد على المكافأة الأخيرة والإشارة الأخيرة ، وهي الإدخال.

01:53.670 --> 02:00.990
وهذا كل ما هو الغرض الوحيد من صنع هذا الذكاء الاصطناعي ، وذلك من أجل الحصول على ذكاء اصطناعي حقيقي يلعب الإجراءات الصحيحة

02:00.990 --> 02:06.630
، في كل مرة يتم التحرك الصحيح بدلاً من وجود إجراءات عشوائية كما لاحظنا في البرنامج التعليمي

02:06.630 --> 02:07.830
السابق.

02:08.340 --> 02:09.600
حسنًا ، لنفعل هذا.

02:09.600 --> 02:12.510
دعونا نطبق ذكاءنا الاصطناعي.

02:12.510 --> 02:18.210
وكما قلنا ، سنبدأ باستيراد جميع المكتبات التي ستستخدمها لتنفيذه.

02:18.210 --> 02:20.760
وبهذه الطريقة سيكون لدينا كل الأدوات التي نحتاجها.

02:21.000 --> 02:21.330
حسنا.

02:21.330 --> 02:22.680
لنبدأ بالأول.

02:22.680 --> 02:25.830
الأول هو الذي لا مفر منه.

02:25.830 --> 02:27.360
مكتبة NumPy.

02:27.360 --> 02:28.710
مكتبة NumPy.

02:28.710 --> 02:30.630
أوصي دائمًا باستيراده.

02:30.630 --> 02:35.160
إنها المكتبة التي تسمح لنا باللعب والعمل مع المصفوفات.

02:35.370 --> 02:39.900
وهذا و B هنا هو مجرد اختصار أكثر ملاءمة عندما نريد استخدام numpy.

02:40.380 --> 02:41.220
حسنا إذا.

02:41.220 --> 02:43.800
المكتبة الثانية عشوائية.

02:43.800 --> 02:50.460
هذا فقط لأننا سنأخذ بعض العينات العشوائية من مجموعات مختلفة عند تنفيذ تجربة إعادة

02:50.460 --> 02:51.690
التشغيل.

02:51.690 --> 02:54.210
لذلك علينا استيراد هذه المكتبة العشوائية أيضًا.

02:54.630 --> 02:58.070
ثم سنقوم باستيراد OSS.

02:58.080 --> 03:03.210
سيكون ذلك مفيدًا فقط عندما نريد تحميل النموذج لأنك تعلم ، بمجرد أن يصبح النموذج جاهزًا

03:03.210 --> 03:08.610
، سنقوم بتنفيذ بعض التعليمات البرمجية لحفظ النموذج ثم رمز آخر لتحميل النموذج.

03:08.610 --> 03:13.950
هذا هو الوقت الذي نريد ، كما تعلمون ، حفظ الدماغ وتحميله متى أردت إغلاق جهاز الكمبيوتر الخاص

03:13.950 --> 03:18.810
بك وإعادة استخدام الدماغ الذي تم تدريبه من قبل لإجراء بعض التجارب الجديدة.

03:18.960 --> 03:20.160
لذلك هذا مهم.

03:20.460 --> 03:27.090
ثم سنقوم باستيراد مكتبة الشعلة الأساسية.

03:27.090 --> 03:32.130
هذا لأننا سنقوم بتنفيذ شبكتنا العصبية مع PyTorch ، والتي أوصي بها أكثر من الشبكات الأخرى

03:32.130 --> 03:36.450
للذكاء الاصطناعي لأنها تستطيع التعامل مع الرسوم البيانية الديناميكية.

03:36.450 --> 03:37.920
لذلك هناك نذهب مع الشعلة.

03:38.310 --> 03:44.880
ثم من الشعلة سنقوم باستيراد Torch DOT و NW.

03:44.970 --> 03:47.280
وحدة NW هي الأكثر أهمية.

03:47.280 --> 03:51.510
هذه هي الوحدة التي تحتوي على جميع الأدوات اللازمة لتنفيذ بعض الشبكات العصبية.

03:51.510 --> 03:57.300
وبالطبع ستكون هناك شبكة عصبية عميقة تأخذ كمدخلات الإشارات الثلاث للمستشعرات

03:57.300 --> 04:03.870
الثلاثة بالإضافة إلى الاتجاه والتوجيه الناقص ، وستعود كإخراج للعمل بشكل جيد ، وفي الواقع

04:03.870 --> 04:07.440
ستعيد قيم Q للإجراءات المختلفة .

04:07.440 --> 04:15.030
وباستخدام soft max ، سنعود الإجراء للعب مرة واحدة فقط ، وهو الأكثر ملاءمة لتحقيق هدف الدورة التدريبية.

04:15.030 --> 04:17.640
لذلك Torsten أهم واحد.

04:17.910 --> 04:24.300
ثم سنقوم بإعطاء اختصار للوظيفة.

04:25.430 --> 04:29.720
الحزمة من هنا نذهب ، الحزمة الوظيفية من وحدة PN.

04:29.720 --> 04:36.080
لذلك تحتوي هذه الحزمة الوظيفية على الوظائف المختلفة التي نستخدمها عند تنفيذ شبكة عصبية.

04:36.080 --> 04:42.170
لذلك عادةً ما تكون الوظيفة الأخيرة التي سنستخدمها Uber plus لأن ذلك يحسن التقارب

04:42.170 --> 04:47.000
ويتم تضمين خسارة Uber في هذه الوحدة الفرعية الوظيفية من وحدة GN.

04:47.000 --> 04:53.600
وبما أن كل هذا طويل جدًا ، فسوف نعطيه اختصارًا وسنسميه F ببساطة.

04:54.210 --> 04:57.050
ثم تبقى ثلاث وحدات فقط للاستيراد.

04:57.060 --> 05:02.430
إذن ، التالي هو عنصر أساسي آخر مرتفع.

05:02.430 --> 05:06.720
تيم ونحن نأخذها من مكتبة الشعلة ثم إلى الأعلى.

05:06.720 --> 05:08.280
تيم ها نحن ذا.

05:08.580 --> 05:10.650
ودعنا نسميها فقط.

05:10.650 --> 05:15.150
Tim بدلاً من إشعال Tim ، هذا بالطبع للمحسن.

05:15.150 --> 05:21.570
سنقوم باستيراد بعض المُحسِنين لإجراء هبوط متدرج عشوائي ، لذلك سنحتاجه بالتأكيد.

05:21.570 --> 05:28.560
ثم نحتاج إلى استيراد auto وهذا فقط لأخذ فئة المتغير من grad.

05:28.950 --> 05:31.380
لذا فإن الغرض منه تقني بعض الشيء.

05:31.410 --> 05:38.670
بشكل أساسي ، نحتاج إلى استيراد فئة المتغير لإجراء بعض التحويل من المستشعرات التي تشبه المصفوفات

05:38.670 --> 05:42.930
الأكثر تقدمًا إلى متغير يحتوي على تدرج.

05:42.930 --> 05:46.470
لذلك يبدو الأمر كما لو أننا لا نريد أن يكون لدينا موتر فقط في حد ذاته.

05:46.470 --> 05:50.730
نريد وضع الموتر في متغير يحتوي أيضًا على تدرج.

05:50.730 --> 05:56.160
وللقيام بذلك ، نحتاج إلى استخدام فئة المتغير لتحويل هذا الموتر إلى متغير

05:56.160 --> 05:58.230
يحتوي على الموتر والتدرج.

05:58.230 --> 06:02.460
هذا تقني بعض الشيء ، لكن هذا ما يتعين علينا القيام به عند العمل مع PyTorch.

06:02.460 --> 06:08.010
ونفعل ذلك بفضل فئة المتغير ، ولكن قبل الحصول على فئة المتغير ، نحتاج

06:08.160 --> 06:13.860
إلى الاستيراد باتجاه R2 grad ودعنا نعطي اختصارًا أيضًا.

06:14.340 --> 06:17.310
Undergrad ثم من.

06:18.300 --> 06:21.060
الشعلة التي وقعت.

06:22.180 --> 06:25.240
نستورد الكرة الطائرة.

06:25.660 --> 06:26.410
هناك نذهب.

06:26.410 --> 06:32.800
والآن لدينا جميع المكتبات التي سنستخدمها لتنفيذ واجهة برمجة التطبيقات الخاصة بنا ، لذا لن نتكبد عناء استيراد

06:32.800 --> 06:33.850
أي مكتبة أخرى.

06:33.850 --> 06:39.610
لدينا جميع الأدوات التي نحتاجها ونحن الآن جاهزون لإنشاء بنية الشبكة العصبية.

06:39.760 --> 06:42.550
هذا هو بالضبط ما سنفعله في الدرس التالي.

06:42.550 --> 06:43.900
وحتى ذلك الحين ، استمتع.

06:43.900 --> 06:44.470
أنا.
