TensorFlow من جوجل »» مشروع برمجة الذكاء الاصطناعي مفتوح المصدر

الكاتب : Null
568 مشاهده

في معظم أفلام الخيال العلمي نجد فكرة وجود بدلة أو جهاز أو سيارة و يعطيه الشخص أوامر صوتية ويستجيب له، هل سألت نفسك ذات مرة هل هذا مجرد خيال أم أنّه موجود بواقعنا ؟


فيلم “Iron man” محاكاة لبرمجة الذكاء الإصطناعى TensorFlow مفتوح المصدر


فيلم “Iron man”، ومساعده الشخصي “Jarvis system” الذي كان من خلاله يتحكم في كل أجهزة منزله، وأيضًا من خلال البدلة التي نفذها لنفسه وجعلته بالفعل أقوى، وليس هذا الفيلم هو المثال الوحيد ولكن هناك الكثير .



TensorFlow – مشروع برمجة الذكاء الإصطناعى ذاتية التعلم 


كل ذلك لم يعد خيال علمي موجود بالأفلام فقط، بل صار واقع نعيشه بدليل ما قدمه لنا “ارك زوكربيرج  المؤسس والرئيس التنفيذي لشركة فيسبوك في آخر عام 2016، حيث أعلن عن نظام “Jarvis” وهو نظام ذكاء اصطناعي طوره في وقت فراغه، والذي باستطاعته اختيار وتشغيل الموسيقى، وتشغيل الأنوار، والتعرف على الزوار، وتحديد ما إذا كان يجب فتح الباب الأمامي للمنزل أم لا.



كيف قام مارك بعمل هذا النظام؟ وماذا استخدم لعمله؟ الإجابة هي محور موضوعنا، ولكن قبل أن نُجيب عنهم بالتفصيل دعنا نُجيب أولًا على الأسئلة التالية، ما هو الذكاء الاصطناعي، وتعليم الآلة “Machine learning”؟ وما هو الـ TensorFlow ، وكيف نستخدمه في البرمجة؟


الذكاء الاصطناعي


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

ويعرف كبار الباحثين الذكاء الاصطناعي بأنه “دراسة وتصميم أنظمة ذكية تستوعب بيئتها وتتخذ إجراءات تزيد من فرص نجاحها”، في حين يعرفه جون مكارثي الذي وضع هذا المصطلح سنة 1955بأنه “علم وهندسة صنع آلات ذكية”.

لمعرفة المزيد إضغط هنا .


أساسيات تَعلم الآلة “Machine learning”


هناك الكثير من المشاكل المعقدة التي لا يَقدر العقل البشري على التعامل معها، وهنا ظهر لنا ما يُسمى بالتعَلم العميق “Deep Learning” قبل ظهور الـ TensorFlow.


التعلم العميق”Deep Learning”


في تعريف بسيط هو تدريب الآلات والحواسيب، حيث أنّه نموذج حسابي من خلاله تتمكن الحواسيب من فهم المكونات البدائية للغات المختلفة، عن طريق تكوين وترتيب الحروف والمصطلحات، والمرادفات والمتشابهات، وبناءً عليه عندما تزود الحواسيب بالبيانات والمعلومات المطلوبة يُمكنها أداء المهام المختلفة اعتمادًا على الاستنتاج المنطقي، ومع الزيادة في هذه المعلومات التي تحصل عليها الآلة، تتمكن بعد ذلك من التعَلم واكتساب الخبرات.

التَعلم العميق أصبح ركنًا أساسيًا من علوم الحاسب، وفتح آفاقًا استكشافية جديدة للبحث وتطوير منتجات مفيدة يستخدمها ملايين البشر يوميًا، وذلك جعل شركة جوجل تُسارع في وضع بنيتها الأساسية للتَعلم العميق “DistBelief” عام 2011، والتي سمحت لعلماء جوجل ببناء الشبكات العصبية والتدريب على آلاف العينات في مراكز البيانات.

وأدي ذلك إلى تحسين التعرف على الكلام والصور في تطبيقات جوجل بنسبة 25%، وبناء البحث الفعال عن الصور في جوجل، ولكن على الرغم من نجاح “DistBelief” إلّا أنّ استهداف الشبكات العصبية كان مقيدًا، ليؤدي ذلك إلى استحالة مشاركة الكود المصدري.


جوجل تعلن عن TensorFlow


TensorFlow: Open source machine learning



يُعتبر TensorFlow الجيل الثاني من نظام تَعلم الآلة لجوجل، فهو مكتبة برمجيات مفتوحة المصدر للتعَلم الآلي، حيث يُستخدم في العديد من المنتجات التجارية لشركة جوجل؛ لتميزه بالمرونة، وسهولة الاستخدام والتطبيق، والسرعة، بالإضافة إلى أهم ما يميزه وهو كونه مفتوح المصدر للجميع.


لذلك TensorFlow لديه قدرة عالية جدًا على البحث والرد الذكي، وتستخدمه جوجل في خدماتها المختلفة، بل الآن أصبح يُستخدم في منتجات حقيقية؛ وذلك لأنّ النظام بُني على أساس الاستعداد الكامل لخدمة الإنتاج، لسرعته والقدرة على استخدامه، فقد بُني على مصدر مفتوح يتيح وصول أي شخص للكود المصدري وتعديله، حيث يقوم النظام بتمرير البيانات المعقدة من خلال الشبكة العصبية أو الدماغ الاصطناعي، والتي تعتبر جزءًا أساسيًّا في التعليم العميق.

 أهم ما يميز TensorFlow بالنسبة للمبرمج هو سهولة التعبير عن أفكاره من خلاله باستخدام لغة الـ Python ” وبما أنّ لغة الـ “python” يتم تعريفها تحت مُسمى “A general purpose, high-level language” لأنّها لغة البرمجة التي تشمل برمجة كل شيء مثل: الألعاب، المواقع، قواعد البيانات، برمجة الآلات، وأيضًا برمجة تطبيقات الموبايل.

بالإضافة إلى أنّها An interpreted language ” لأنّ أي لغة برمجة “high-level”، تقم بكتابتها الحاسوب لا يفهمها مباشرةً، لذلك لابد أن يتم تحويلها إلى ما يُسمى بلغة الآلة “machine language” حتى يفهمها الحاسوب ويقوم بالتعامل معها.

ولغة الآلة عبارة عن “0/1” وبالتالي فأنت تحتاج لوسيط يقوم بتحويل لغة البرمجة التي قُمت بكتابتها لـ لغة الآلة، في حالة لغات برمجة مثل (++)C ,C هذا الوسيط يُسمى “compiler”، وهو ما يحتاج إلي برامج أخرى تقم بتنزيلها من أجل تشغيل الكود.

في حالة لغة الـ”Python” يُسمى هذا الوسيط “interpreted”، والذي يعطيك ميزة التسهيل فكل ما تحتاج إليه تنزيل ما يعرف باسم “IDE”، لتَكتب كود البرنامج وتضغط “run” من أجل تشغيل الكود، وهذه النقطة تُعطي البايثون ميزة قوية جدًا وهي أنّها “cross platform”، حيث أنّها تقبل تشغيل الكود على أي نظام تشغيل (win/mac/linux).


“ولكن لكي نتمكن من استخدام TensorFlow مع لغة البرمجة python من أجل برمجة الذكاء الاصطناعي، لابد أن نتعرف على ما هو الـ “Tensor”، وما علاقته بعلم الرياضيات؟ وكيف من خلاله يمكن الوصول إلى خوارزميات تساعد الآلة على التنبؤ؟”


الـ Tensor في الرياضيات، هو إحدى الدالات الرياضية بجانب الأعداد أو الكميات المطلقة Generalized Quantity، التي لا تتميز بوحدات للقياس، يتميز بأنّه يحتوي في خواصه خواص الأعداد المطلقة، والمتجهات، والمعاملات الخطية، ظهر كمفهوم من الهندسة التفاضلية، وله تطبيقات كثيرة مثل معادلات آينشتاين للمجال، وميكانيكا الموائع وله أهمية كبيرة جدًا في الفيزياء والهندسة التطبيقية.


TensorFlow


يمكننا أن نَكتب الـ Tensor بدلالة الإحداثيات، أو المصفوفات، حيث يمكننا من خلاله تكوين مصفوفة، هذه المصفوفة بكل تأكيد تتكون من متغيرات أو إحداثيات لجسم معين على سبيل المثال، لنحصل في النهاية على مُتجه “Vector” قيمة مطلقة، ستصل إلى هذه المتغيرات إذا قُمت بترجمة مشاكل تعلم الآلة إلى دوال “Functions”، وهذه الدوال تتكون من مجموعة متغيرات؛ لأنّ الدالة عبارة عن صيغة رياضية لها وظيفة معينة تستقبل بيانات معينة، وتعطي نتائج معينة.

وبناءً على هذه البيانات ستقوم خوارزميات الآلة “ML algorithm” باستخراج شيئًا مثيرًا للاهتمام، دون الحاجة لكتابة أي كود معين، فبدلًا من كتابة التعليمات والأكواد البرمجية، يُمكنك تغذية الخوارزميات بالبيانات و هي ستقوم تلقائيًا بصياغة الخرج استنادًا إلى البيانات نفسها.

حيث أنّ التعلم العميق يتم من خلال الشبكات العصبية، وفي الأساس الشبكة العصبية تتكون من مدخلات “Inputs”، التي تأتي من داخل الشبكة لتكون ما يُسمي بمجموعة “Nodes” متصلة ببعضها البعض، لتقوم بعمل بعض العمليات والحسابات الخاصة بها ويسمى ذلك “Computation Graph”، وتعطينا في النهاية المخرجات “Outputs” .


كيف يمكن للآلة أن تتعرف على ما يظهر أمامها؟


مثال ظهر أمامها قط، فكيف يُمكنها أن تتعرف عليه وتميزه؟

الواقع يقول أنّ الآلة ترى القط في صورة مجموعة بكسلات Pixels متراصة بجوار بعضها البعض، تقوم الآلة بفرض أن كل بيكسل عبارة Tensor لتُكَون مجموعة من الـ Tensors في شكل بيانات والتي يطلق عليها مدخلات ويُرمز لها برموز تمثل اتجاهات بمعاملات خطية معينة كـ “X”، “W”، “b”، ليصبح لديها متغيرات، يمكن وضعها داخل مصفوفة، ومن خلال المصفوفة تكون دوال رياضية التي ستمر على خوارزميات الآلة لتستنبط منها المخرجات.


import tensorflow as tf


b = tf.Variable(tf.zeros([100]))                   # 100-d vector, init to zeroes

W = tf.Variable(tf.random_uniform([784,100],-1,1))    # 784×100 matrix w/rnd vals

x = tf.placeholder(name=”x”)                       # Placeholder for input

relu = tf.nn.relu(tf.matmul(W, x) + b)             # Relu(Wx+b)

C = […]                                          # Cost computed as a function

# of Relu

s = tf.Session()

for step in xrange(0, 10):

input = …construct 100-D input array …       # Create 100-d vector for input

result = s.run(C, feed_dict={x: input})          # Fetch cost, feeding x=input


print step, result


TensorFlow

موضوعات اخري قد تهُمك

Leave a Comment

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

Privacy & Cookies Policy