القائمة الرئيسية

الصفحات

الرياضيات في التعلم العميق-الجزء الخامس (Mathematics for deep learning)

 




الرياضيات في التعلم العميق

Mathematics for deep learning


الجزء الخامس     (Part Five)

 

إعداد

المهندس حسن فنجان عداي





مقدمة:

بسم إلله الرمن الرحيم

سوف نتطرق في هذا الجزء إلى المعادلات الخطية (Linear equations) والتي هي النواة التي تدور حولها جميع مواضيع الجبر الخطي, حيث إنَّ الهدف النهائي هو إيجاد الحلول لهذه المعادلات. وسوف نتطرق أولاَّ إلى مفهوم المعادلة الخطية ولماذا سميت بهذا الإسم, بعدها نتطرق إلى مايعرف بمنظومة المعادلات الخطية (System of linear equations) وكيفية إبجاد الحلول لها إذا كانت لها حلول, وكيفية الإستعانة بمعكوس المصفوفة (Matrix inverse) في إيجاد تلك الحلول.

المعادلات الخطية (Linear Equations)

المعادلة الخطية هي المعادلة التي تحتوي على متغير واحد أو أكثر على شرط ان يكون الأس لكل متغير هو (1), كذلك يجب أن يكون المعامل لكل متغير عدد ثابت.

الشكل التالي يبين أمثلة لبعض المعادلات الخطية:

حيث نلاحظ أنَّ كل معادلة من المعادلات الثلاثة تحتوي على متغيرات ذات أس (1), وأنَّ المعامل لكل متغير هو عدد ثابت.

 

نظام من المعادلات الخطية (System of linear equations)

ويسمى أيضاً النظام الخطي (Linear system), وهو عبارة عن معادلة خطية واحدة أو مجموعة من المعادلات الخطية تشترك بإحتوائها على نفس المتغيرات, والشكل التالي يبين مثالين من الأنظمة الخطية:

من الشكل أعلاه نلاحظ بأنَّ المجموعة (a) تمثل نظام خطي (Linear system) من ثلاث معادلات خطية تحتوي كل معادلة على ثلاثة متغيرات (x, y, z), أما المجموعة (b) فإنها تتكون من أربع معادلات خطية تحتوي كل معادلة على أربعة متغيرات, وهذا الأمر يجعلنا نعلم أنه يشترط في أي نظام خطي أن يكون عدد المعادلات مساوي لعدد المتغيرات المجهولة (Unknowns).

يمكن تعريف أي نظام خطي بعدد المعادلات التي يتكون منها وكذلك بعدد المجاهيل (Unknowns).

كذلك يمكن تمييز أي نظام خطي من ناحية عدد الحلول له, فبعضها يكون له حلاً واحداً فريداً (Unique solution) وبعضها لايوجد له حل والبعض الآخر له عدد غير متناهي من الحلول.

إنَّ عدد المجاهيل (Unknowns) يمثل عدد الأبعاد (dimensions) للفضاء الذي يمكن أن ترسم فيه المعادلة الخطية.


إستخدام المصفوفات لتمثيل النظام الخطي

(Using matrices to describe the system)

يمكن إستخدام المصفوفات في تمثيل النظام الخطي (Linear system) الذي يتكون من مجموعة من المعادلات الخطية (Linear equations) بحيث يكون هذا التمثيل على هيئة:

Ax = b

حيث إنَّ:

 (A) هي مصفوفة من الأعداد الثابتة تمثل معاملات المجاهيل (Unknowns) ويكون عدد صفوف هذه المصفوفة مساوياً لعدد المعادلات, أما عدد الأعمدة لها فيكون مساوياً لعدد المجاهيل (Unknowns).

(x) هو متجه (Vector) يمثل المجاهيل (Unknowns).

(b) هو متجه (Vector) يمثل الأعداد في الأطراف اليمنى من المعادلات.

يمكننا كتابة معادلات أي نظام خطي قبل تمثيله بالمصفوفات على الشكل التالي:

العناصر من (1,1A) إلى (m,nA) تمثل معاملات المتغيرات والتي هي عبارة عن أعداد ثابتة وتسمى ايضاً الأوزان (Weights) للمتغيرات (Variables), حيث إنَّ عدد المعادلات هنا هي (m) وعدد المتغيرات أي المجاهيل (Unknowns) هنا هي (n) .

الرموز من (1x) إلى (nx) تمثل المتغيرات المجهولة (Unknowns).

الرموز من (1b) إلى (nb) تمثل قيم الأطراف اليمنى من المعادلات.

 

تمثيل الطرف الأيسر من النظام (Left-hand side)

يمكننا الآن تمثيل جزء من الطرف الأيسر للنظام الخطي بمصفوفة (A) خاصة لأوزان المتغيرات تحتوي على (m) من الصفوف (rows) بعدد المعادلات و (n) من الأعمدة (Columns) بعدد المتغيرات أو المجاهيل (Unknowns), كما موضح بالشكل التالي:



وكذلك متجه (x) يحوي المتغيرات أو المجاهيل (Unknowns) موضح بالشكل التالي:



وبالتالي يصبح الطرف الأيسر عبارة عن مصفوفة ذات حجم (m x n) مضروبة بمتجه ذو حجم (n x 1) وكما مبين أدناه:

Ax

فإذا طبقنا قوانين ضرب المصفوفات (Dot product) فإننا سوف نحصل على متجه (m x 1) والذي يكون مساوياً للطرف الأيمن من النظام أي المتجه (b).

تمثيل الطرف الأيمن من النظام (Right-hand side)

يمكننا الآن تمثيل الطرف الأيمن على هيئة متجه (b) وكما موضح بالشكل أدناه:

حبث إنَّ العناصر من (1b) لغاية (mb) تمثل الأطراف اليمنى لكل معادلة من معادلات النظام الخطي.

 

عند جمع طرفي النظام بعد التمثيل نحصل على:


كذلك نستطيع أن نمثل النظام بالشكل المبسط التالي:


حل معادلات النظام الخطي بواسطة المصفوفات وقوانينها:

(Solving a system of linear equations)

بعد أن قمنا بتمثيل النظام الخطي على هيئة مصفوفات (يمكن إعتبار المتجه كمصفوفة خاصة ذات صف واحد أو ذات عمود واحد), نستطيع الآن الإستفادة من المزايا التي تتمتع بها المصفوفات ومن قوانينها في حل المعادلات الخطية التي تشكل النظام الخطي.

فبعد أن قمنا بتمثيل النظام الخطي على الهيئة المبسطة:

وحيث إننا عرفنا من الجزء الرابع إننا لو ضربنا المصفوفة (A) مثلاً بالمعكوس لها أي (A-1) تكون النتيجة هي مصفوفة الوحدة (matrix Identity), فإذا ضربنا طرفي المعادلة أعلاه بالمعكوس (A-1) وكما يلي:


 وهذه نتيجة رائعة حيث يمكننا إيجاد قيم المتغيرات أو المجاهيل لأي نظام خطي مهما كان عدد المجاهيل أو عدد المعادلات بمجرد إيجاد المعكوس لمصفوفة الأوزان (A) ونقوم بضربه بالمتجه (b) الذي يمثل قيم الطرف الأيمن لمعادلات النظام الخطي. تظهر أهمية هذه الطريقة في حل المعادلات الخطية عندما يكون لدينا (1000) متغير أو مجهول بدلاً عن متغيرين إثنين أو ثلاثة متغيرات.

مثال:

إذا كانت لدينا المعادلتين الآنيتين التاليتين والمطلوب أن نقوم بإيجاد قيم المتغيرين (x) و (y):

نقوم أولاً بإعادة كتابة المعادلتين على وفق الشكل التالي لكي تكونا مهيئتين لتمثيلهما بالمصفوفات:

حيث نستعمل (1x) بدلاً عن (x) و (2x) بدلاً عن (y), فتصبح المعادلتين على الشكل التالي: 

فنحصل من المعادلتين على مصفوفة الأوزان (A):

ومتجه المتغيرات أو المجاهيل (x):



والمتجه الذي يمثل القيم الثابتة في الجهة اليمنى (b):

وعند جمع هذه العناصر نحصل على النظام الخطي (Linear system) بعد تمثيله بالمصفوفات:

نقوم الآن بكتابة الكود اللازم لحل المعادلتين بواسطة قوانين المصفوفات وكما يلي:

نقوم أولاً بالإعلان عن مصفوفة (A):

نقوم بعدها بإيجاد المعكوس لهذه المصفوفة:

ثم نقوم بالإعلان عن المتجه (b):


نقوم بعدها بتطبيق القانون الخاص بإيجاد الحل للمعادلات والذي يكون على شكل متجه تمثل عناصره قيم المتغيرات أو المجاهيل الموجودة في المعادلات المراد حلها وكما يلي:

أي أنَّ المتجه (x) الذي يمثل الحل هو:



أو بالرموز الأصلية للمعادلتين يكون:

ومعنى ذلك أن هذه النقطة (1, 2) هي نقطة التقاطع بين الخطين الذين يمثلان كلتا المعادلتين الخطيتين, وللتأكد من هذه النتيجة سوف نقوم برسم كلتا المعادلتين لنشاهد نقطة التقاطع تلك وهل هي نفسها التي حصلنا عليها بواسطة القانون الذي يستعمل معكوس المصفوفة, ولرسم المعادلتين نستخدم المكتبة (matplotlib) وكما يلي:


شرح الكود:

السطر رقم (1): لإنشاء متجه (Vector) من القيم لإعطائها إلى (x) لأجل الحصول على قيم (y) المناظرة لها في كلتا المعادلتين اللتين نريد أن نرسمهما, وفي حالتنا لانحتاج أكثر من قيمتين لكون المعادلة خطية ولكن للتعميم إستخدمنا نقاط متعددة لأنه في حالات الدوال المعقدة نحتاج إلى قيم كثيرة.

السطر رقم (2): لوضع صيغة المعادلة الأولى.

السطر رقم (3): لوضع صيغة المعادلة الثانية.  

السطر رقم (4): تخصيص بعض المظاهر التي تخص مساحة الرسم مثل لون الخلفية ولون رسم الشبكة.

السطر رقم (5): لرسم المعادلة الأولى.

السطر رقم (6): لرسم المعادلة الثانية.

السطر رقم (7):  لإختيار حدود المنطقة التي تظهر في الرسم من ناحية المحور السيني.

السطر رقم (8):  لإختيار حدود المنطقة التي تظهر في الرسم من ناحية المحور الصادي.

وعند تنفيذ الكود نحصل على الشكل التالي:



من الرسم الذي حصلنا عليه نلاحظ بأنَّ نقطة التقاطع بين الخطين اللذين يمثلان كلتا المعادلتين هي النقطة (1, 2), وهي مطابقة لما حصلنا عليه من طريقة معكوس المصفوفة.

ملاحظة مهمة:

إنَّ هذه الطريقة التي إستخدمناها في إيجاد الحلول للمعادلات الآنية وهي طريقة إستخدام معكوس المصفوفة (Inverse matrix) تشترط أن تكون المصفوفة من النوع الذي تمتلك معكوس والتي تسمى (invertible) أو (nonsingular), وكذلك يشترط في النظام الخطي (Linear system) أن يكون من النوع الذي يمتلك حلاً فريداً (has one and only one solution). في الجزء القادم سوف نتناول طريقة حل الأنظمة الخطية التي تمتلك عدد غير محدد من الحلول (An infinite number of solutions).


وبهذا نكون قد إنتهينا من هذا الجزء والذي تطرقنا فيه إلى المعادلات الخطية وكذلك الأنظمة الخطية وطريقة إيجاد الحل للمعادلات الآنية الخطية ضمن النظام الخطي الذي يمتلك حلاً فريداً وذلك بإستخدام طريقة معكوس المصفوفة.

أرجو أن أكون قد وفقت في توضيح المقصد, ومن ألله تعالى نستمد العون والتسديد.

المهندس حسن فنجان عداي




















هل اعجبك الموضوع :

تعليقات