في هذا الفيديو سوف نقوم بمراجعة الانحدار الخطي المتعدد في أبعاد متعددة وكيفية بناء هذه النماذج باستخدام PyTorch.
ربما تكون الخطي هي الوظيفة الأكثر استخدامًا في PyTorch وهي مفتاح بناء الشبكات العصبية.
في هذا الفيديو سوف نستعرض: الانحدار الخطي في أبعاد متعددة
سوف مشكلة التنبؤ، فيما يتعلق بيتورش مراجعة الطبقة الخطية وكيفية بناء وحدات مخصصة باستخدام NN.modules.
في الانحدار الخطي المتعدد لدينا متغيرات تنبؤ متعددة، في هذا المثال لدينا 4 متغيرات التنبؤ، ثم:
لدينا التحيز، w1: معامل أو الوزن __1_
w2: معامل أو الوزن __2_ وهلم جرا.
في الوزن العام والتحيز هي المعلمات من نموذجنا التي نحصل عليها عن طريق التدريب.
يحتوي الجدول على عينات مختلفة من متغيرات التنبؤات __1_ و __2_.
يتم وضع موضع كل نقطة على المستوى الثنائي الأبعاد، مشفرة بالألوان وفقًا لذلك
سيتم تعيين كل عينة من متغيرات التنبؤات __1_ و __2_ إلى قيمة جديدة __.
يتم تعيين القيم الجديدة لـ __ (y-hat) في الاتجاه الرأسي، مع ارتفاع يتناسب مع القيمة التي يتخذها y-hat.
يمكننا التعبير عن العملية كتحويل خطي، x هو 1 بواسطة D الموتر أو المتجه
ويشار إليه أحيانًا كميزة، w هو D بواسطة 1 الموتر أو متجه المعلمات
y-hat هو المتغير التابع. باستخدام المنتج نقطة يمكننا التعبير عن المعادلة من حيث عمليات ناقلات.
النظر في المثال التالي مع التحيز يساوي واحد. نقوم بتنفيذ المنتج نقطة x و w
هذا يضاعف المكون الأول من x و w ثم نضيف المنتج من المكون الثاني من w و x
ثم نضيف التحيز، والنتيجة هي 9.
الخاصية الأكثر أهمية هي الشكل. عدد الأعمدة من س,
يجب أن يكون نفس عدد الصفوف من ث, ثم نضيف ب
نقوم بتنفيذ عملية المنتج نقطة, ثم إضافة ب, والنتيجة هي ص قبعة.
سوف نستخدم تمثيل الألوان لمساعدتنا على فهم العلاقة بين الشكل والمعلمات.
الرسم البياني الموجه التالي مفيد أيضا لفهم المنتج نقطة.
تمثل العقد ميزات وتمثل الحواف المعلمات.
سيتم استخدام هذه الرسوم البيانية لاحقًا لمساعدتنا على فهم الشبكات العصبية. في هذه الحالة لدينا بعدين.
يمكننا توسيعه إلى الأبعاد التعسفية D.
يمكننا إجراء الانحدار الخطي على عينات متعددة من موتر أو ناقلات، في هذه الحالة لدينا 4 عينات، كل عينة لديها 4 أعمدة.
هذا هو إخراج كائن محمل القطار مع 4 عينات
لدينا الموتر أو مصفوفة ممثلة مع حالة كبيرة X العينة الأولى يتوافق مع الصف الأول في المصفوفة.
العينة الثانية يتوافق مع الصف الثاني في المصفوفة، وهلم جرا.
يمكننا استخدام الألوان لتمثيل العينات المختلفة.
بالنسبة لعينات متعددة، تكون معادلة الانحدار عبارة عن تحول خطي.
y و b هي متجهات أو موجهات صف، صف واحد لكل عينة. دعونا نستخدم تمثيل اللون من المنتج نقطة للحصول على فكرة أفضل عما يحدث.
في الصورة التالية يتم تمثيل كل عينة في المصفوفة X بلون مختلف،
أساسا ظل مختلف من الأخضر أو الأزرق. المعلمة برتقالية.
لاحظ أن y-hat جريئة لأنها متجه أو موتر متعدد الأبعاد.
بالنسبة للعينة الأولى، نقوم بتنفيذ منتج نقطة مع الصف الأول من المصفوفة والمعلمة.
ثم نضيف مصطلح التحيز، ثم نحصل على التنبؤ للعينة الأولى.
بالنسبة للعينة الثانية، نأخذ المنتج النقطي لمتجه المعلمة، ثم نضيف مصطلح التحيز.
ثم نحصل على التنبؤ للعينة الثانية. نكرر العملية للعينة الثالثة والرابعة،
مع أخذ المنتج نقطة وإضافة مصطلح التحيز، كل عينة تنتج تنبؤًا جديدًا
باختصار، يجب أن يكون عدد أعمدة X وعدد الأوزان هو نفسه في هذه الحالة أيضًا.
على الرغم من وجود تحيز واحد فقط، نضيف مصطلح التحيز إلى كل منتج نقطي باستخدام متجه باللون الأخضر.
وهناك العديد من التنبؤات مثل العينات أو الأعمدة في X.
دعونا نستخدم الطبقة الخطية المفيدة لأداء الانحدار الخطي في أبعاد متعددة.
نقوم باستيراد الخطي من حزمة nn. يتم تهيئة الأوزان والتحيز عشوائيا،
للحصول على نفس النتائج في كل مرة نقوم بتشغيل الشفرة، نستخدم البذور العشوائية.
سوف نتعلم كيفية الحصول على المعلمات في القسم التالي.
سنقوم بإنشاء كائن نموذج باستخدام الخطي المنشئ، المعلمة «في - ميزات»
هي حجم كل عينة إدخال أو عدد الأعمدة، «ميزات الخروج» هو حجم كل عينة إخراج،
فإنه يخلق أساسا وظيفة خطية. ينتج الخطي الدالة التالية. دعونا نستخدم الرسم التخطيطي التالي لتمثيل الشكل تمثل
المعلمة «في الميزات» عدد أعمدة x، وعدد أوزان النموذج،
«ميزات Out» هو حجم المخرجات في هذه الحالة واحدة.
معلمات الطريقة، وهذا يعطينا معلمات النموذج؛ الأول هو المنحدر،
والثاني التحيز، يجب علينا تطبيق قائمة وظائف Python للحصول على إخراج حيث يتم تقييم الطريقة بشكل كسول.
يمكننا أن نرى الأوزان الخطية والتحيز. في التمرين المعملي، يمكنك أيضًا استخدام طريقة «state dict».
يمكننا إنشاء موتر الإدخال، وهذا هو متجه الصف أو الموتر مع عمودين.
نطبق الكائن الخطي، والنتيجة هي موتر 1x1 المقابلة للتنبؤ.
يمكننا تطبيق الانحدار الخطي على عينات متعددة، ونحن إنشاء الموتر حيث كل صف هو عينة مختلفة.
كما كان من قبل نستخدم ألوان مختلفة لتمثيل العينات المختلفة
نطبق كائن النموذج، حيث أن لدينا ثلاثة مدخلات، والإخراج هو ثلاثة صفوف.
الإخراج الفعلي هو الموتر مع ثلاثة صفوف وعمود واحد، المقابلة للألوان التالية.
في PyTorch، من المعتاد إنشاء وحدة مخصصة، في سياق الانحدار، ستتصرف متطابقة تقريبًا مع الكائن الخطي.
قد يبدو هذا زائدًا بعض الشيء، ولكن هذا سيكون مطلوبًا في وقت لاحق عندما يتم بناء الشبكات العصبية.
الوحدات المخصصة هي فئات؛ هذه الفئات هي الفئة الفرعية أو الأطفال من حزمة «nn.modules».
في هذه الحالة، نسمي وحدة مخصصة LR. نحن جعل فئة طفل من «NN.modules».
ونتيجة لذلك، فإنه يرث جميع الأساليب والسمات.
في منشئ الكائن، تكون الوسيطة هي حجم الإدخال والإخراج، x و y على التوالي.
نسمي «السوبر» في المُنشئ، وهذا يسمح لنا بإنشاء كائنات من الحزمة nn.module داخل الكائن، دون تهيئة ذلك بشكل صريح.
يمكننا الآن إنشاء كائن من نوع خطي، يتم تعيين الحجج عبر منشئ الكائن
نقوم بتعيينه إلى self.line يمكننا الآن استدعاء كائن من نوع خطي في أي مكان في الفصل.
نحن نستخدم وظيفة إلى الأمام لإنتاج التنبؤ. لن نضطر إلى استدعاء طريقة إعادة التوجيه بشكل صريح،
فقط استخدم الأقواس لأنها تتصرف مثل طريقة الاتصال في Python
نقوم بإنشاء وحدة أو فئة مخصصة. هذا يتصرف مثل الكائن الخطي، المعلمات «في الميزات» هي اثنين و «خارج الميزات» هي واحدة.
هذا الكائن يتصرف مثل الخطية، يمكننا جعل التنبؤ لعينة واحدة.
أو يمكننا أن نجعل التنبؤات لعينات متعددة.