اكتسب الذكاء الاصطناعي (AI) شعبية كبيرة في السنوات الأخيرة.
إذا كنت مهندس برامج أو عالم كمبيوتر أو متحمسًا لعلوم البيانات بشكل عام ، فمن المحتمل أن تكون مفتونًا بالتطبيقات المذهلة لمعالجة الصور والتعرف على الأنماط واكتشاف الأشياء التي يوفرها هذا المجال.
أهم حقل فرعي في الذكاء الاصطناعي ربما سمعت عنه هو التعلم العميق. يركز هذا المجال على الخوارزميات القوية (تعليمات برنامج الكمبيوتر) على غرار وظائف الدماغ البشري المعروفة باسم الشبكات العصبية.
في هذه المقالة ، سنتطرق إلى مفهوم الشبكات العصبية وكيفية بناء هذه النماذج وتصنيفها وتناسبها وتقييمها باستخدام بايثون.
الشبكات العصبية
الشبكات العصبية ، أو NNs ، هي سلسلة من الخوارزميات على غرار النشاط البيولوجي للدماغ البشري. تتكون الشبكات العصبية من عقد تسمى أيضًا الخلايا العصبية.
تُعرف مجموعة العقد الرأسية بالطبقات. يتكون النموذج من إدخال واحد ومخرج واحد وعدد من الطبقات المخفية. تتكون كل طبقة من عقد ، تسمى أيضًا الخلايا العصبية ، حيث تتم العمليات الحسابية.
في الرسم البياني التالي ، تمثل الدوائر العقد وتمثل المجموعة الرأسية للعقد الطبقات. هناك ثلاث طبقات في هذا النموذج.
ترتبط عقد طبقة واحدة بالطبقة التالية من خلال خطوط النقل كما هو موضح أدناه.
تتكون مجموعة البيانات الخاصة بنا من بيانات مصنفة. هذا يعني أنه تم تعيين قيمة اسم معينة لكل كيان بيانات.
لذلك بالنسبة لمجموعة بيانات تصنيف الحيوانات ، سيكون لدينا صور القطط والكلاب كبياناتنا ، مع تسمياتنا "قطة" و "كلب".
من المهم ملاحظة أنه يجب تحويل الملصقات إلى قيم عددية لنموذجنا لفهمها ، لذا تصبح تسميات الحيوانات لدينا "0" للقطط و "1" للكلب. يتم تمرير كل من البيانات والتسميات من خلال النموذج.
تعلم
يتم تغذية البيانات إلى كيان نموذج واحد في كل مرة. يتم تقسيم هذه البيانات إلى أجزاء وتمريرها عبر كل عقدة في النموذج. تقوم العقد بعمليات حسابية على هذه القطع.
لا تحتاج إلى معرفة الوظائف أو الحسابات الرياضية لهذا البرنامج التعليمي ، ولكن من المهم أن يكون لديك فكرة عامة عن كيفية عمل هذه النماذج. بعد سلسلة من العمليات الحسابية في طبقة واحدة ، يتم تمرير البيانات إلى الطبقة التالية وهكذا.
بمجرد الانتهاء ، يتنبأ نموذجنا بتسمية البيانات في طبقة المخرجات (على سبيل المثال ، في مشكلة تصنيف الحيوانات نحصل على تنبؤ "0" لقطط).
ثم يواصل النموذج مقارنة هذه القيمة المتوقعة مع قيمة التسمية الفعلية.
في حالة تطابق القيم ، سيأخذ نموذجنا الإدخال التالي ولكن إذا اختلفت القيم ، فسيقوم النموذج بحساب الفرق بين كلتا القيمتين ، تسمى الخسارة ، ويضبط حسابات العقد لإنتاج تسميات مطابقة في المرة القادمة.
أطر التعلم العميق
لبناء الشبكات العصبية في التعليمات البرمجية ، نحتاج إلى الاستيراد أطر التعلم العميق المعروفة باسم المكتبات التي تستخدم بيئة التطوير المتكاملة (IDE).
هذه الأطر عبارة عن مجموعة من الوظائف المكتوبة مسبقًا والتي ستساعدنا في هذا البرنامج التعليمي. سنستخدم إطار عمل Keras لبناء نموذجنا.
Keras هي مكتبة Python تستخدم خلفية خلفية للتعلم العميق والذكاء الاصطناعي تسمى Tensorflow لإنشاء NNs في شكل نماذج متسلسلة بسيطة بكل سهولة.
تأتي Keras أيضًا مع نماذجها الموجودة مسبقًا والتي يمكن استخدامها أيضًا. في هذا البرنامج التعليمي ، سننشئ نموذجنا الخاص باستخدام Keras.
يمكنك معرفة المزيد حول إطار عمل التعلم العميق هذا من موقع Keras.
بناء شبكة عصبية (تعليمي)
دعنا ننتقل إلى بناء شبكة عصبية باستخدام Python.
المشكلة بيان
الشبكات العصبية هي نوع من الحلول للمشاكل القائمة على الذكاء الاصطناعي. في هذا البرنامج التعليمي ، سنستعرض بيانات Pima Indians Diabetes ، المتوفرة هنا.
UCI جمعت "التعلم الآلي" مجموعة البيانات هذه ويحتوي على سجل طبي للمرضى الهنود. يجب أن يتنبأ نموذجنا بما إذا كان المريض يعاني من مرض السكري في غضون 5 سنوات أم لا.
تحميل مجموعة البيانات
مجموعة البيانات الخاصة بنا عبارة عن ملف CSV واحد يسمى "sugar.csv" والذي يمكن معالجته بسهولة باستخدام Microsoft Excel.
قبل إنشاء نموذجنا ، نحتاج إلى استيراد مجموعة البيانات الخاصة بنا. باستخدام الكود التالي يمكنك القيام بذلك:
استيراد الباندا كما pd
data = pd.read_csv ('sugar.csv')
x = data.drop ("النتيجة")
y = البيانات ["النتيجة"]
هنا نستخدم الباندا مكتبة لتكون قادرة على معالجة بيانات ملف CSV لدينا ، read_csv () هي وظيفة مضمنة في Pandas تسمح لنا بتخزين القيم في ملفنا إلى متغير يسمى "البيانات".
يحتوي المتغير x على مجموعة البيانات الخاصة بنا بدون بيانات النتيجة (التسميات). نحقق ذلك باستخدام وظيفة data.drop () التي تزيل تسميات x ، بينما تحتوي y على بيانات النتيجة (التسمية) فقط.
نموذج البناء المتسلسل
الخطوة 1: استيراد المكتبات
أولاً ، نحتاج إلى استيراد TensorFlow و Keras ، جنبًا إلى جنب مع بعض المعلمات المطلوبة لنموذجنا. يسمح لنا الكود التالي بالقيام بذلك:
استيراد tensorflow مثل tf
من keras استيراد tensorflow
من tensorflow.keras.models استيراد تسلسلي
من tensorflow.keras.layers استيراد التنشيط ، كثيف
من tensorflow.keras.optimizers استيراد آدم
من tensorflow.keras.metrics استيراد categorical_crossentropy
بالنسبة إلى نموذجنا ، نقوم باستيراد طبقات كثيفة. هذه طبقات متصلة بالكامل ؛ على سبيل المثال ، كل عقدة في طبقة متصلة بالكامل بعقدة أخرى في الطبقة التالية.
نحن أيضًا نستورد ملف تفعيل الوظيفة اللازمة لتحجيم البيانات المرسلة إلى العقد. محسنون تم استيرادها أيضًا لتقليل الخسارة.
Adam هو مُحسِّن مشهور يجعل حسابات عقد تحديث نموذجنا أكثر كفاءة ، جنبًا إلى جنب مع categorical_crossentropy وهو نوع دالة الخسارة (تحسب الفرق بين قيم التسمية الفعلية والمتوقعة) التي سنستخدمها.
الخطوة الثانية: تصميم نموذجنا
يحتوي النموذج الذي أقوم بإنشائه على إدخال واحد (مع 16 وحدة) ، وواحد مخفي (مع 32 وحدة) ومخرج واحد (مع وحدتين). هذه الأرقام ليست ثابتة وستعتمد كليًا على المشكلة المحددة.
يعد تحديد العدد الصحيح للوحدات والطبقات عملية يمكن تحسينها بمرور الوقت من خلال الممارسة. التنشيط يتوافق مع نوع القياس الذي سنقوم به على بياناتنا قبل تمريرها عبر عقدة.
تعد Relu و Softmax من وظائف التنشيط الشهيرة لهذه المهمة.
النموذج = تسلسلي ([
كثيفة (الوحدات = 16 ، شكل الإدخال = (1 ،) ، التنشيط = 'relu') ،
كثيفة (الوحدات = 32 ، التنشيط = 'relu') ،
كثيفة (الوحدات = 2 ، التنشيط = 'softmax')
])
إليك ما يجب أن يبدو عليه ملخص النموذج:
تدريب النموذج
سيتم تدريب نموذجنا في خطوتين ، الأولى هي تجميع النموذج (تجميع النموذج معًا) والخطوة التالية هي تركيب النموذج في مجموعة بيانات معينة.
يمكن القيام بذلك باستخدام دالة model.compile () متبوعة بوظيفة model.fit ().
model.compile (المحسن = آدم (Learning_rate = 0.0001) ، الخسارة = 'binary_crossentropy' ، المقاييس = ['الدقة'])
model.fit (س ، ص ، عهود = 30 ، حجم_دفعة = 10)
يسمح لنا تحديد مقياس "الدقة" بمراقبة دقة نموذجنا أثناء التدريب.
نظرًا لأن تسمياتنا في شكل 1 و 0 ، فسنستخدم دالة خسارة ثنائية لحساب الفرق بين التسميات الفعلية والمتوقعة.
يتم أيضًا تقسيم مجموعة البيانات إلى دفعات من 10 (حجم_دفعة) وسيتم تمريرها عبر النموذج 30 مرة (فترات). بالنسبة لمجموعة بيانات معينة ، ستكون x هي البيانات وستكون y هي التسميات المقابلة للبيانات.
نموذج الاختبار باستخدام التنبؤات
لتقييم نموذجنا ، نقوم بعمل تنبؤات على بيانات الاختبار باستخدام وظيفة التنبؤ ().
تنبؤات = model.predict (x)
وهذا كل شيء!
يجب أن يكون لديك الآن فهم جيد لـ تعلم عميق التطبيق ، الشبكات العصبية ، كيف تعمل بشكل عام وكيفية بناء نموذج وتدريبه واختباره في كود Python.
آمل أن يمنحك هذا البرنامج التعليمي البداية لإنشاء ونشر نماذج التعلم العميق الخاصة بك.
أخبرنا في التعليقات إذا كانت المقالة مفيدة.
اترك تعليق