JavaRush /مدونة جافا /Random-AR /التعلم الآلي لمطوري جافا، الجزء الأول

التعلم الآلي لمطوري جافا، الجزء الأول

نشرت في المجموعة
قم بإعداد خوارزمية التعلم الآلي وقم بتطوير وظيفتك التنبؤية الأولى باستخدام Java. يتم تطوير السيارات ذاتية القيادة وأنظمة التعرف على الوجه والمساعدين الصوتيين باستخدام تقنيات وأطر التعلم الآلي. وهذه ليست سوى الموجة الأولى. على مدى السنوات العشر القادمة، سيعمل جيل جديد من المنتجات على تغيير عالمنا، مما سيؤدي إلى ظهور أساليب جديدة لتطوير البرامج والمنتجات والتطبيقات. التعلم الآلي لمطوري جافا، الجزء 1 - 1باعتبارك مبرمج جافا، فأنت تريد اللحاق بهذه الموجة الآن بعد أن بدأت شركات التكنولوجيا في الاستثمار بكثافة في التعلم الآلي. ما تتعلمه اليوم يمكنك استخدامه للسنوات الخمس القادمة. ولكن من أين تبدأ؟ تهدف هذه المقالة إلى الإجابة على هذا السؤال. ستحصل على انطباع أولي عن مبادئ التعلم الآلي من خلال اتباع دليلنا القصير لتنفيذ وإعداد خوارزمية التعلم الآلي. بعد التعرف على بنية خوارزمية التعلم والميزات التي يمكنك استخدامها لتدريبها وتقييمها واختيار الوظيفة التي توفر أفضل دقة للتنبؤ، ستكتسب فهمًا لكيفية استخدام إطار عمل JVM (Weka) بناء حلول التعلم الآلي. تركز هذه المقالة على التعلم الآلي الخاضع للإشراف لأنه المبدأ الأكثر استخدامًا في تطوير التطبيقات الذكية.

التعلم الآلي والذكاء الاصطناعي

تطور التعلم الآلي من مجال الذكاء الاصطناعي، والذي يهدف إلى إنشاء آلات يمكنها تقليد الذكاء البشري. على الرغم من أن مصطلح "التعلم الآلي" نشأ في علوم الكمبيوتر، إلا أن الذكاء الاصطناعي ليس مجالًا جديدًا من مجالات العلوم. يعد اختبار تورينج ، الذي طوره عالم الرياضيات آلان تورينج في أوائل الخمسينيات من القرن العشرين، أحد الاختبارات الأولى المصممة لتحديد ما إذا كانت آلة الحوسبة تتمتع بذكاء حقيقي. ووفقا لاختبار تورينج، تثبت الآلة الحاسوبية وجود الذكاء البشري من خلال انتحال شخصية شخص دون أن يدرك الأخير أنه يتحدث إلى الآلة.
التعلم الآلي لمطوري جافا، الجزء 1 - 2
تعتمد العديد من أساليب التعلم الآلي الشائعة اليوم على أفكار عمرها عقود. لكن العقد الأخير في مجال الحوسبة (ومنصات الحوسبة الموزعة) جلب القوة الكافية لتطبيق خوارزميات التعلم الآلي. يتطلب معظمها قدرًا كبيرًا من ضرب المصفوفات والحسابات الرياضية الأخرى. قبل عشرين عاما، لم تكن تقنيات الحوسبة التي من شأنها أن تسمح بمثل هذه الحسابات موجودة ببساطة، لكنها أصبحت الآن حقيقة واقعة. تسمح خوارزميات التعلم الآلي للبرامج بتنفيذ عملية تحسين الجودة وتوسيع قدراتها دون تدخل بشري. البرنامج الذي تم تطويره باستخدام التعلم الآلي قادر على تحديث أو توسيع التعليمات البرمجية الخاصة به بشكل مستقل.

التعلم الخاضع للإشراف مقابل التعلم غير الخاضع للإشراف

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

التعلم الآلي الخاضع للإشراف

يعتمد كل التعلم الآلي على البيانات. بالنسبة لمشروع التعلم الآلي الخاضع للإشراف، تحتاج إلى وضع علامة على البيانات باستخدام علامات بطريقة توفر إجابات ذات معنى على السؤال المطروح. أدناه، في الجدول 1، يُسمى سجل معلومات كل منزل "سعر المنزل". ومن خلال تحديد العلاقة بين بيانات السجل وسعر المنزل، يجب أن تكون الخوارزمية في النهاية قادرة على التنبؤ بسعر السوق للمنازل غير المدرجة في القائمة المحددة. (يرجى ملاحظة أن مساحة المنزل موضحة بالمتر المربع، وسعر المنزل باليورو).
الجدول 1. قائمة المنازل
لافتة لافتة لافتة ملصق
منطقة المنزل عدد الغرف عمر المنزل سعر المنزل المتوقع
90 م2 / 295 قدم غرفتان يبلغ من العمر 23 عاما 249000 يورو
101 م2 / 331 قدم 3 غرف غير متوفر 338.000 يورو
1330 م2 / 4363 قدم 11 غرفة 12 سنة 6,500,000 يورو
في المراحل الأولى، من المحتمل أن تقوم بتسمية البيانات يدويًا، ولكن في النهاية ستقوم بتعليم برنامجك القيام بذلك من تلقاء نفسه. ربما تكون قد شاهدت بالفعل هذا الأسلوب يعمل مع عملاء البريد الإلكتروني، حيث من أجل نقل بريد إلكتروني إلى مجلد البريد العشوائي، عليك الإجابة على السؤال "هل هذا البريد الإلكتروني غير مرغوب فيه؟" عند الرد، تقوم بتدريب البرنامج على التعرف على رسائل البريد الإلكتروني التي لا تريد رؤيتها. يتم تدريب عامل تصفية البريد العشوائي الخاص بالتطبيق على تحديد الرسائل الواردة من نفس المصدر أو التي تحتوي على نفس المحتوى وإدارتها وفقًا للقواعد المناسبة. مجموعات البيانات المصنفة مطلوبة لأغراض الإعداد والاختبار فقط. بمجرد اكتمال هذه الخطوة، تعمل خوارزمية التعلم الآلي على البيانات غير المسماة. على سبيل المثال، يمكنك تغذية خوارزمية التنبؤ بسجل جديد غير مسمى من البيانات حول المنزل، ويجب أن تتنبأ تلقائيًا بالسعر المتوقع للمنزل بناءً على "المعرفة" المكتسبة من البيانات التحضيرية.

كيف تتعلم الآلة التنبؤ

يتمثل التحدي في التعلم الآلي الخاضع للإشراف في العثور على وظيفة التنبؤ المناسبة لسؤال معين. رياضيًا، تكمن الصعوبة في العثور على دالة تأخذ متغيرًا كمدخل хوتعيد القيمة المتوقعة у. وظيفة الفرضيات هذه (hθ)هي نتيجة عملية التحضير. غالبًا ما تسمى وظيفة الفرضية أيضًا بالوظيفة الموضوعية أو وظيفة التنبؤ.
ص = ح θ (س)
في معظم الحالات، хتكون عبارة عن مصفوفة بيانات. في مثالنا، هذه مجموعة ثنائية الأبعاد من العناصر التي تحدد المنزل، وتتكون من عدد الغرف ومساحة المنزل. مجموعة من هذه القيم هي ناقل الميزة. من خلال تحديد دالة موضوعية محددة، يمكننا استخدامها للتنبؤ بكل ناقل ميزة х. للتنبؤ بسعر منزل، يجب عليك استدعاء الدالة الهدف باستخدام ناقل المعالم {101.0, 3.0}الذي يتكون من مساحة المنزل وعدد الغرف:
// целевая функция h (результат процесса обучения)
Function<Double[], Double> h = ...;

// определяем целевой вектор с площадью дома=101 и количеством комнат=3
Double[] x = new Double[] { 101.0, 3.0 };

// и предсказываем цену дома (метка)
double y = h.apply(x);
في الكود المصدري من المثال 1، تمثل القيم الموجودة في المصفوفة хمتجهًا لميزات المنزل. القيمة уالتي يتم إرجاعها بواسطة الدالة الهدف هي السعر المتوقع للمنزل. الهدف من التعلم الآلي هو تحديد الوظيفة الموضوعية التي ستعمل بأكبر قدر ممكن من الدقة في ظل معلمات إدخال غير معروفة. في التعلم الآلي، تسمى الوظيفة الهدف (hθ)أحيانًا بالنموذج. هذا النموذج هو نتيجة لعملية التعلم.
التعلم الآلي لمطوري جافا، الجزء 1 - 3
واستنادًا إلى عينات التدريب المصنفة، تبحث خوارزمية التعلم عن الهياكل أو الأنماط في بيانات التدريب. لذلك فهو يبني نموذجًا جيدًا بشكل عام للبيانات. كقاعدة عامة، تكون عملية التعلم استكشافية بطبيعتها. في معظم الحالات، يتم تكرار العملية عدة مرات باستخدام أشكال مختلفة من خوارزميات التعلم والتكوينات. ونتيجة لذلك، يتم تقييم جميع النماذج بناءً على مقاييس الأداء، ومن بينها يتم اختيار الأفضل. ويستخدم هذا النموذج لحساب القيم المقدرة للبيانات المستقبلية غير المميزة.

الانحدارالخطي

لتعليم الآلة كيفية "التفكير"، عليك أولاً اختيار خوارزمية التعلم التي ستستخدمها. على سبيل المثال، الانحدار الخطي. هذه واحدة من أبسط خوارزميات التعلم الآلي الخاضعة للإشراف وأكثرها شيوعًا. تفترض الخوارزمية أن العلاقة بين ميزات الإدخال وعلامات النتيجة خطية. تقوم دالة الانحدار الخطي العامة أدناه بإرجاع القيمة المتوقعة عن طريق جمع كافة عناصر ناقل الميزة مضروبة في المعلمة θ (ثيتا) . يتم استخدام هذه المعلمة أثناء عملية التدريب لتكييف أو "ضبط" وظيفة الانحدار بناءً على بيانات التدريب.
ح θ (س) = θ 0 * 1 + θ 1 * س 1 + ... θ ن * س ن
في دالة الانحدار الخطي، يتم ترقيم معلمات ثيتا ومعلمات الميزة بالاشتراكات. يحدد المنخفض موضع المعلمة (θ)ومعلمة الميزة (х)في المتجه. لاحظ أن الميزة x 0 عبارة عن مصطلح تحول ثابت وهي مهمة 1للأغراض الحسابية. ونتيجة لذلك، فإن مؤشر المعلمات الهامة مثل مساحة المنزل يبدأ بـ x 1 . لذا، إذا تم تعيين x 1 كقيمة أولى لمتجه الميزة (مساحة المنزل)، فستأخذ x 2 القيمة التالية (عدد الغرف) وهكذا. يوضح المثال 2 تنفيذ Java لدالة الانحدار الخطي، والتي يُشار إليها رياضيًا بالرمز h θ (x). للتبسيط، يتم إجراء الحسابات باستخدام double. تنص هذه الطريقة apply()على أن العنصر الأول في المصفوفة سيكون مساويًا لـ 1.0 وسيتم تعيينه خارج هذه الوظيفة. المثال 2: الانحدار الخطي في جافا
public class LinearRegressionFunction implements Function<Double[], Double> {
 private final double[] thetaVector;

 LinearRegressionFunction(double[] thetaVector) {
 this.thetaVector = Arrays.copyOf(thetaVector, thetaVector.length);
 }

 public Double apply(Double[] featureVector) {
 // с целью упрощения вычислений первый элемент должен быть equals 1.0
 assert featureVector[0] == 1.0;

 // простое последовательное сложение
 double prediction = 0;
 for (int j = 0; j < thetaVector.length; j++) {
 prediction += thetaVector[j] * featureVector[j];
 }
 return prediction;
 }

 public double[] getThetas() {
 return Arrays.copyOf(thetaVector, thetaVector.length);
 }
}
لإنشاء مثيل جديد LinearRegressionFunction، تحتاج إلى تحديد المعلمة θ. يتم استخدام هذه المعلمة أو المتجه لتكييف وظيفة الانحدار الخطي العامة مع بيانات التدريب الأساسية. θسيتم تعديل المعلمة المستخدمة في البرنامج أثناء عملية التدريب، بناءً على أمثلة التدريب. ستعتمد جودة الوظيفة المستهدفة المدربة على جودة البيانات المعدة للتدريب. في المثال أدناه نستخدم LinearRegressionFunctionتوقعات الأسعار بناءً على حجم المنزل للتوضيح. مع الأخذ في الاعتبار أن x 0 يجب أن يكون ثابتًا بقيمة 1.0، تتم تهيئة الدالة الهدف باستخدام معلمتين θ، حيث تكونان نتيجة عملية التعلم. بعد إنشاء مثال جديد، سيتم توقع سعر منزل بمساحة 1330 متر مربع كما هو موضح أدناه:
// тета вектор, используемый в этом примере, является результатом процесса обучения
double[] thetaVector = new double[] { 1.004579, 5.286822 };
LinearRegressionFunction targetFunction = new LinearRegressionFunction(thetaVector);

// создание вектора признаков со значениями x0=1 (для удобства вычислений) и //x1=площадь дома
Double[] featureVector = new Double[] { 1.0, 1330.0 };

// выполняем расчеты
double predictedPrice = targetFunction.apply(featureVector);
في الشكل أدناه يمكنك رؤية الرسم البياني لوظيفة هدف التنبؤ (الخط الأزرق). ويتم الحصول عليها عن طريق حساب الدالة الموضوعية لجميع قيم مساحة المنزل. يحتوي المخطط أيضًا على أزواج منطقة السعر المستخدمة للتدريب.
التعلم الآلي لمطوري جافا، الجزء 1 - 4
يبدو مخطط التنبؤ جيدًا الآن. يتم تحديد إحداثيات الرسم البياني (الموضع والانحدار) بواسطة المتجه θ { 1.004579, 5.286822 }. ولكن كيف يمكنك تحديد أي θناقل هو الأنسب لتطبيقك؟ هل ستكون الوظيفة مناسبة بشكل أفضل إذا قمت بتغيير المعلمة الأولى أو ربما الثانية؟ لتحديد ناقل ثيتا الأكثر ملائمة، تحتاج إلى دالة مساعدة تقوم بتقييم مدى جودة أداء الوظيفة الهدف لهذه المهمة. يجب مواصلة الترجمة من الإنجليزية. المؤلف: جريجور روث، مهندس برمجيات، JavaWorld.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION