Posts

تاريخ الذكاء الاصطناعي

في هذا المقال سوف نتحدث فيه عن تاريخ الذكاء الاصطناعي باختصار منذ نشأته الى اليوم و أهم المراحل التي مر بها، و لكن قبل ذلك يجب أن نعرف الذكاء الاصطناعي و بعض المصطلحات الأساسية بشكل سريع. ماهو الذكاء الاصطناعي ؟ هو مجال علمي ظهر بشكل رسمي كتخصص يدرس في الجامعات سنة 1956، هدفه جعل الألات أو الحواسيب على وجه التحديد تؤدي وظائف ذكية. اما تفكر و تتصرف مثل الانسان أو على الأقل تحاكي بشكل جزئي تفكير و تصرف الانسان في مجال معين و ذلك بالاعتماد على الطرق البرمجية و الحلول الرياضياتية و مختلف منتجات العلوم الأخرى المساعدة كالالكترونيك و الميكانيك و البيولوجيا ... مصطلحات أساسية: عندما نتحدث عن الذكاء الاصطناعي يجب أن نمييز بين : 1- طرق الذكاء الاصطناعي (AI techniques): و هنا نتحدث عن الخوارزميات بشكلها الأساسي و النمادج الرياضياتية و الاحصائية التي نستخدمها مثلا في مجالات تعلم الألة، التعلم العميق، الأنظمة الخبيرة، المنطق الضبابي، التحسين و خوارزميات البحث ... 2- الفروع التطبيقية للذكاء الاصطناعي (AI functional applications): و هنا نتحدث عن الفروع الكبرى التي تجمع مجموعة من الطرق لتطبيقها في

تأثير الذكاء الإصطناعي و التقنية على قطاعي التعليم و الصحة في زمن وباء كورونا

Image
1- قطاع التعليم  وضع فيروس كورونا المستجد قطاعي التربية والتعليم العالي في البلاد أمام تحديات و خيارات صعبة و لا يعلم أي أحد متى ستنتهي هذه الأزمة و ما إذا كنا سنعود للمدارس و الجامعات قريبا أم لا. أمام هذه الأزمة الصحية لجأت معظم البلدان و من بينها الجزائر نحو التعليم عن بعد من أجل إنقاد الموسم الدراسي. التقدم التقني و التكنولوجي الذي تشهده الساحة العالمية اليوم جعل من تطبيق خيار التعليم عن بعد أمرا ممكنا. أولا: يمكن أن نقول في الجزائر و بحكم إتساع شبكة الربط بالإنترنت لمختلف الأسر الجزائرية و كذلك إنتشار خدمتي (3G) و (4G) جعل الوصول للمحتوى العلمي على الأنثرنث ممكنا للأغلبية إلى حد ما. ثانيا: يمكن أن نشير إلى تطور و تعدد وسائل الولوج إلى عالم الأنترنت من حواسيب و ألواح رقمية و هواتف ذكية و أسعارها التي تراجعت بشكل كبير و صارت في متناول الجميع بحيث لا يخلو بيت جزائري من هاتف ذكي أو حاسوب. ثالثا: إضافة إلى المنصات التعليمية التي وفرتها وزارتي التربية والتعليم و كذلك وزارة التعليم العالي هناك العديد من المنصات التي تحتوي على كم هائل من المحتوى العلمي الرقمي و أغلبها مجاني و حتى

إستخراج الميزات من النص. الجزء 1

Image
Text feature extraction في مجال تعلم الألة لايمكن إستعمال نص بشكله الخام كما هو! بل نحتاج إلى التعامل مع أرقام و لهذا نحن بحاجة إلى طريقة لتحويل النصوص إلى أرقام. هناك ثلاث عمليات أساسية و هي : (Tokenizing) تقطيع النص إلى مقاطع أساسية على حسب الفواصل التي نحددها مثل الفراغات التي بين الكلمات. (Counting ) حساب عدد مرات تكرار المقاطع الأساسية في النص. (normalizing) منح أوزان أو قيم للمقاطع الأساسية أو (Tokens). مكتبة (Scikit-Learn ) وفرت بعض الخوارزميات الجاهزة للتعامل مع النصوص و إستخراج الميزات منها. سوف نشرح جزءا منها في الجزء 1 و الباقي لاحقا إن شاء الله. 1- Binary Encoding : لنفرض أننا إختارنا (Tokens) عبارة عن كلمات. في هذه الطريقة نقوم بتحديد جميع الكلمات التى ظهرت في الداتا على شكل قائمة للمفردات. إذا كان عدد الكلمات (vocabulary list) هو 100 ألف فإن كل نص ينتمى إلى الداتا يتم تمثيله بجدول طوله 100 ألف و كل خانة تقابل كلمة من قائمة المفردات إذا ظهرت هذه الكلمة في النص فإن خانتها تحمل الرقم 1 و إلا 0. الصورة 1 مثال عن هذه الطريقة بإستخدام (CountVectorizer). لدينا ثلاث

كيفية إنشاء ميزات جديدة لمجموعة التدريب

Image
أحيانا قد نصادف أن الميزات (Features) التي تحصلنا عليها غير كافية لتميز مختلف عناصر الداتا التي معنا و أن العناصر متداخلة فيما بينها. مثلا لدينا ميزتان (x, y) لفئتين (C1, C2) لما نظهرهما على المستوى نجد تداخل فيما بينهما. نظريا في مجال تعلم الألة يمكن دمج الميزات لإنشاء ميزات أخرى إضافية مساعدة على التميز بين مختلف الفئات. مثلا في هذا المثال نعتبر (x+y) ميزة ثالثة و نتحول من المستوى إلى 3D و هذا يمنح نا زاوية أخرى لرؤية الداتا. في مكتبة (Scikit-Learn ) توفر لنا إمكانية إنشاء ميزات جديدة بواسطة الكلاس (PolynomialFeatures) حيث نحدد نحن درجة كثير الحدود و هو يقوم بدمج الميزات بالشكل التالي مثلا من أجل ميزتين و الدرجة 2 : (x, y) = 1 + x + y + pow(x, 2) + xy + pow(y, 2) في الصورة مثال عن ذلك. حيث في السطر 5 شكلنا داتا عشوائية من 4 مجموعة من أجل (clustering) ب 50000 مثال و 3 ميزات بواسطة الكلاس (make_blobs). ثم نظهرها بواسطة (mirapy) ب 3D في السطر 9، حيث نشاهد التداخل واضح على الصورة. في السطر 11 نستدعي الكلاس (PolynomialFeatures) و نحدد الدرجة التي نريد و كانت في هذا الم

How to build a machine learning pipeline

Image
How to build a machine learning pipeline ما هو (Pipeline ) ؟ هو طريقة تمكننا من جمع أجزاء الكود البرمجي من البداية حتى النهاية في شكل نمودج واحد يتم التعامل معه مباشرة. و هذه الطريقة تجعل الكود أبسط و أسهل للفهم و تصحيح الأخطاء. في الصورة مثال بإستعمال مكتبة (Scikit-Learn ) ، حيث و بعد تحميل الداتا من أجل عملية التصنيف (مصابة بسرطان الثدي، سليمة) و تقسيمها إلى مجموعتين : مجموعة التدريب و مجموعة الإختبار، نقوم في السطر 17 ببناء نمودج ال (Pipeline ). في عملية البناء يمكننا تحديد العمليات المتعلقة بالخصائص (features ) مثل طريقة تعويض الميزات (features ) المفقودة في بعض الأمثلة من الداتا (missing values ) ، توحيد الميزات (StandardScaler) و تصغير عدد (Features ) مثلا بإستعمال طريقة (PCA). في هذا المثال قمت بتجميع كل العمليات المتعلقة ب (Features ) بالإستفادة من طريقة (FeatureUnion) و هي طريقة تبسط الكود أكثر. تحديد الخوارزمية المستعملة أو طريقة البحث أو التعديل على (Hyper-parameters )، في هذا المثال إستعملت خوارزمية التصنيف (SVC). في النهاية تنفيذ هذا النمودج عن طريق الدالة (fit) الت

تصغير حجم الخصائص المستخرجة من البيانات

Image
Dimensionality Reduction : Principal Component Analysis PCA في بعض المجالات تكون البيانات ضخمة جدا و عدد (Features ) كبيرا جدا يعني أبعادا كثيرة و هذا قد يصعب علينا العمل في مجال تعلم الألة أو حتى يستحيل ذلك في بعض المجالات الأخرى نظرا لقدرات الحواسب المحدودة. ال (Features ) في حد ذاتها قد تسبب تداخلا بين بياناتنا إذا لم نحسن إختيارها، مثلا لتنصيف البرتقال و التفاح و الليمون قد تكون خاصية الشكل غير مفيدة بل تخلق تداخلا و تعقد عملية التصنيف كون الأشكال بينها متشابهة عكس خاصة اللون التي تفصل بينهم بشكل واضح. في هذا المقال نشير إلى طريقة فعالة جدا لتصغير حجم (Features) و هي طريقة رياضية إحصائية إسمها (PCA) و تعتمد على حساب (Covariance matrix ) و (Eigen vectors and values)  ثم تعيد ترتيب البيانات وفق هذه الحسابات أو الأبعاد و بعدها تختار (K Eigen vectors ) و الذي يمثل عدد الأبعاد التي نرغب في تحويل (تصغير ) الخصائص (Features ) إليها. الصورة 1 هذه الطريقة (PCA) جاهزة على مكتبة (Scikit-Learn ). و كمثال تطبيقي حولها إخترنا قاعدة بيانات تحتوي على (Examples = 569  features = 30)

البحث عن أحسن المعاملات الداخلية لخوازمية التدريب

Image
Hyper-parameter Optimization المعاملات الداخلية (hyper-parameter )  هي المعاملات التى يحددها المطور و لا يمكن تغيرها أثناء عملية التدريب و لا تتأثر بنوع و لا شكل الداتا. مثل عدد (layers) في الشبكة العصبية أو المعاملات (C, gamma, kernel ) في خوارزمية (SVM). هذه المعاملات تؤثر على النتائج طبعا لأنها تؤثر على شكل و مبدأ عمل الخوارزمية و للبحث عن أحسن القيم الخاصة بها التي تناسب نوع الداتا التي نعمل عليها فأبسط فكرة تبادر لأذهاننا هي أننا في كل مرة نعيد تدريب الخوارزمية بمعاملات جديدة ثم نحتفظ بأحسن شكل ممكن لهذه المعاملات. لكن في مكتبة (Scikit-Learn ) تم تسهيل الأمر كثيرا بتوفير أدوات جاهزة للعمل في هذه النقطة بالتحديد.  أولا: (GridSearchCV)، و هو أداة جاهزة للبحث عن أحسن المعاملات لخوازمية محددة بتجريب جميع التركبيات الممكنة لهذه المعاملات. في السطر 19 من الصورة 1، حددنا مجموعة من قيم المعاملات الخاصة بخوارزمية (SVM ) في شكلين مختلفين، كل شكل موجود بين حاضنتين. في الشكل 1 حددنا قيم المتغير (C) التي تأخد القيم 1 أو 10 أو 100 أو 1000 و (kernel = linear) أثناء عملية التدريب سي