kachwahed
(مشرف بدلفي للعرب)
******

تاريخ الإنتساب : 10-12-2008
تاريخ الميلاد : 01-01-1980 (38 العمر)
التوقيت المحلي : 13-12-2018 في 06:13 AM
الحالة : غير متصل

kachwahed معلومات المنتدى
إنضم إلينا : 10-12-2008
آخر زيارة 07-09-2018, 04:03 PM
إجمالي المشاركات : 2,286 (0.63 مشاركات في اليوم الواحد | 5.5 في المئة من إجمالي المشاركات)
(إيجاد مشاركات العضو)
اجمالي المواضيع : 157 (0.04 مواضيع في اليوم | 1.96 في المئه من اجمالي المواضيع)
(إيجاد مواضيع العضو)
فترة البقاء متصل : 1 يوم, 7 ساعات, 44 دقائق
الأعضاء المحالين: 0
Total Thanks Received: 197 (0.05 4.6 per day | 4285 percent of total 4.6)
(Find All Threads Thanked ForFind All Posts Thanked For)
Total Thanks Given: 55 (0.02 1.28 per day | 4303 percent of total 1.28)
(Find All Thanked ThreadsFind All Thanked Posts)

بيانات العضو kachwahed
مراسلة خاصة : أكتب لـ kachwahed رسالة خاصة .
  
معلومات إضافية عن kachwahed
Sex: Undisclosed

توقيع kachwahed
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...

الشبكات العصبيه Neural Networks مصادر بدلفي 9
الشبكات العصبيه Neural Networks مصادر بدلفي مصادر دلفي مفتوحة تعليمية
السلام عليكم،

كثر الحديث هذه الأيام عن ما يسمى بـ"علم البيانات " (أو Data Science) وهذا نظرا لتزايد الطلب المستمر على هذه المادة من طرف الشركات التقنية الكبرى (دون ذكر أسماء ...)، علاوة على ما تعرضه من إغراءات وأجور مرتفعة...

ما المقصود بعلم البيانات (أو علم تحليل البيانات)؟
الأمر يتعلق أساسا بتحليل -كم هائل من- البيانات من أجل استخراج معارف Insight، أنماط Patterns، استنتاجات من شأنها أن تساعد على اتخاذ القرارات

هل من أنواع للبيانات؟
هناك أشكال مختلفة من البيانات، سواء كانت بيانات نمطية/نظامية Structured (كقواعد البيانات، ملفات خامة...) أو غير نمطية Unstructured (نصوص، تعليقات، صور، صوتيات، فيديوهات...)

ماذا عن أنواع التحاليل؟
وكذلك التحاليل تشمل مجالات متعددة وهي على أنواع وأشكال، تختلف -على سبيل المثال- من حيث الهدف المراد الوصول إليه وطريقة التحليل بحد ذاتها.

ماذا عن مجالات (تطبيقات) الاستخدام؟
في هذا العصر ومع وفرة البيانات واتساع مساحات التخزين وتطور العتاد والبرمجيات، صار من الممكن العمل على بيانات ضخمة من شأنها أن تكشف في طياتها عن أنماط يمكن التعبير عنها رياضيا مع نسبة أخطاء تؤول إلى الصفر كلما زادت البيانات، ومن هنا اتسع استخدام تحليل البيانات في كل المجالات: عالم الأعمال والتجارة، شبكات التواصل وتصفحات المواقع، الطب، الرياضة وغير ذلك...

هل من مثال؟
أحد مجالات التحليل الشائعة ما يعرف بالتعلّم (أو التدريب) الآلي (أو Machine Learning)، والهدف منه عامة، بناء نماذج التنبؤات ذات المتغيرات المتعددة أوالإجابة عن أسئلة التي غالبا يستحيل (أو يصعب جدا) الإجابة عنها من خلال البرمجة.
مثلا: في أحد الدراسات كان المطلوب اكتشاف جنس المستخدم (ذكر أو أنثى) فقط من خلال الاسم
حسنا: يمكن برمجيا إيجاد نمط معين للإناث (إذا كان الاسم يبتدئ بـ "أم *" أو ينتهي بـ "*ــة" نحو: "أم أحمد"، "آمنة"...) ونمط آخر للذكور (إذا كان الاسم يبتدئ بـ "عبد *" أو لا ينتهي بـ "ـة")
غير أن ليس دقيقا تماما، فمن أسماء الإناث: "زينب" و"سعاد"... ومن أسماء الذكور: "أسامة"، "عكاشة"... وكل هذه الأسماء خلاف النمط
قد تكون نسبة الخطأ صغيرة جدا أو ربما مقبولة (خاصة إذا أضفنا خوارزميات فحص) لكنها قد تتضاعف مع زيادة عدد الأسماء المسجلة وقد تصبح غير صالحة للمعالجة. إذن، كيف يتم الحصول على نسبة خطأ أقل أو نسبة خطأ تتناقص كلما زاد عدد الأسماء؟
أحد تطبيقات التدريب الآلي التي يمكن استخدامها في هذه الحال تدعى الشبكات العصبية Neural Networks، طبعا هذا مجرد مثال عن أحد تطبيقات الشبكات العصبية، فمجال الاستخدام أوسع بكثير.

كيف جاءت الفكرة من الأصل؟
الفكرة أتت من التساءل حول طريقة عمل دماغ الإنسان، كيف يمكن لدماغك أن يقوم باكتشاف جنس الشخص فقط من خلال الاسم عند سماعه لأول مرة؟ كيف يمكن لدماغك أن يفرق بين صورة القط والكلب (وهذا كان شبه مستحيل بالنسبة للحاسب قبل بضع سنوات مضت)؟ كيف يمكنك التفريق بين صورة برتقالة وتفاحة (وهذا أيضا يصعب على الحاسب)؟ وكل ذلك يقوم به دماغك بشكل جيد وفي وقت قياسي أليس كذلك؟
دماغ الإنسان يمكنه تخزين بيانات ضخمة -لا متناهية- كما يمكنه القيام بأضعاف العمليات الحسابية التي يقوم بها الحاسب في وقت أقل بكثير، من خلال الأعصاب
بشكل مختصر، يقوم دماغك فور حصوله على مدخلات (inputs) بتمريرها عبر شبكات ضخمة من الأعصاب من أجل التعرف عليها ثم إرسال مخرجات (output) بناءا على ذلك في وقت زمني قياسي.
بنفس المبدأ يتم تدريب الحاسب بالتعرف على المدخلات (أو المشاهدات Observations)، ثم من خلال تمرير البيانات إلى طبقات (Layers) من الشبكات العصبية -الاصطناعية- (أو Artificial Neural Network) نتحصل على معادلة -دالة- رياضية تفسر نمط البيانات

كيف يتم ذلك؟
باختصار: بداية يتم إدخال قيم افتراضية عشواية إلى دالة رياضية (مثل الدالة الخطية)، ثم يضاف إليها قيم ترجيح تدعى الأوزان (Weights) وقيمة ثابتة
كل ذلك يتم في طبقة واحدة مخفية عن المستخدم (Hidden Layer)، هذه الطبقة هي وسط بين المدخلات والمخرجات (وقد يتم إضافة عدة طبقات بنفس الطريقة وهو ما يصلح عليه البعض التعلم العميق Deep Learning)
من خلال تكرار المحاولات يتم تغيير كل المتغيرات السابقة من أجل الوصول إلى أصغر قيمة خطأ بين المعادلة والنتيجة المرجوة
إذا كانت نسبة الخطأ صغيرة بما يكفي لإنشاء نماذج تنبؤات (15% مثلا، أكثر أو أقل الأمر بحسب مجال الدراسة) فقد حصلنا على نموذج صالح للتنبؤ وقابل للتحسين من خلال التدريب الآلي بشكل ذاتي.

حسنا، والآن هل وصلت إلى حل طريقة التعرف على الجنس من خلال الاسم؟ Ashraff Hathibelagal يدون حول مثال لأجل ذلك باستخدام نفس المبدأ:
كود :
https://medium.com/@hathibel/creating-a-neural-network-that-can-tell-if-a-name-is-male-or-female-in-javascript-3061029be396

بنفس الطريقة يمكن التعرف على الصور، الحروف (OCR)، الموسيقى، الفيديوهات وغير ذلك...

كيف أستخدم ذلك في دلفي؟
هناك دائما مكتبات جاهزة لكل غرض، لدلفي هناك مكتبة FANN ( أو Fast Artificial Neural Network Library) مفتوحة المصدر، متعددة المنصات، سريعة ومكتوبة بلغة C، يمكن استخدامها في 20 لغة برمجة منها دلفي:
كود :
http://leenissen.dk/fann/wp/
https://github.com/libfann/fann
https://sourceforge.net/projects/fann/
للتثبيت:
كود :
http://leenissen.dk/fann/html/files2/installation-txt.html#TFannNetwork

التحميل:
كود :
http://leenissen.dk/fann/wp/download/

الاستخدام: بواسطة مكون TFannNetwork غير مرئي (أو استخدام مباشر للمكتبة مثل الذي في المرفق) وأحد ملفات الربط DLL.
في المرفقات مثالين:
الأول مصدر بدلفي (للإصدار 6 فما فوق) لصاحبه Mauricio Pereira Maia بتصرف لتسهيل التجربة (مثال دالة العملية المنطقية xOR)
والثاني مصدر وملف تنفيذي من نسخة منقولة إلى Lazarus، مثال التعرف على صورة الأحرف لصاحبه Dariusz Rorat مع تعديلات طفيفة، حيث يجب تثبيت المكون، تفاصيله من هنا:
كود :
http://forum.lazarus.freepascal.org/index.php?topic=8656.15

ملاحظات:
في كلا المثالين يجب تعريض مكتبة الربط للتطبيق من أجل التشغيل (وهذا حسب المثال المستخدم، في المرفق تم استخدام fannfloat.dll، مرفقة في: fpc_letter_recognize_src\components\fann\DLL).
المصطلحات مقتبسة من مدونة وجدي عصام (مقال ذو صلة وتفاصيل أكثر، ينصح بالمطالعة):
كود :
https://informatic-ar.com/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D9%81%D9%8A-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D8%B5%D8%A8%D9%8A%D9%87-neural-networks/

دروس حول الموضوع:
لمن يريد التعمق أكثر، هناك دروس كثيرة في النت، أفضّل المساقات الأكاديمية:
مجانية:
كود :
https://cognitiveclass.ai/learn/data-science/
https://www.udacity.com/courses/data-science
باللغة العربية قد تجد في منصة رواق بعض المساقات ذات صلة الموضوع (كدروس الإحصاء ونحو ذلك):
كود :
https://www.rwaq.org/courses

قائمة دروس مدفوعة:
كود :
http://www.learndatasci.com/best-data-science-online-courses/
دروس أخرى:
كود :
https://www.udemy.com/courses/search/?q=data%20science


مطالعة ممتعة.