بناء تطبيقات الذكاء الاصطناعي باستخدام Java و Gradle

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

مكتبات جافا لتطوير الذكاء الاصطناعي

تقدم جافا العديد من المكتبات والإطارات القوية لبناء تطبيقات الذكاء الاصطناعي، بما في ذلك:

  • ديب ليرنينج 4 ج (DL4J) – مكتبة التعلم العميق لجافا توفر منصة لبناء، وتدريب، ونشر الشبكات العصبية، تدعم DL4J أنماط مختلفة من الشبكات العصبية وتقدم تسريع GPU لحسابات أسرع.
  • ويكا – مجموعة من خوارزميات التعلم الآلي لمهام استخراج البيانات، توفر ويكا أدوات لمعالجة البيانات قبل التدريب، والتصنيف، والانحدار، والتكتل، والتصور.
  • إنكوغ – إطار التعلم الآلي يدعم خوارزميات متقدمة مختلفة، بما في ذلك الشبكات العصبية، وآلات المقاومة النوعية، والبرمجة الجينية، والشبكات البايزية

إعداد التبعيات باستخدام غرادل

لبدء تطوير الذكاء الاصطناعي باستخدام Java و Gradle، قم بإعداد الحاجيات المطلوبة في مشروعك عن طريق إضافة ما يلي إلى ملف build.gradle الخاص بك:

Groovy

 

dependencies {

    implementation 'org.deeplearning4j:deeplearning4j-core:1.0.0-M1.1'
    implementation 'nz.ac.waikato.cms.weka:weka-stable:3.8.5'
    implementation 'org.encog:encog-core:3.4'
}

أمثلة الكود

بناء شبكة ننيرة بسيطة مع DL4J

يوضح هذا المثال إنشاء شبكة ننيرة أساسية باستخدام مكتبة Deeplearning4j (DL4J). يقوم الكود بإعداد منهجية شبكة ننيرة ذات طبقتين تتألف من DenseLayer بأعصاب ورودية 4 وأعصاب خروجية 10، باستخدام وظيفة التنشيط ReLU، و OutputLayer بأعصاب ورودية 10 وأعصاب خروجية 3، باستخدام وظيفة Softmax للتنشيط و Negative Log Likelihood كوظيفة الخسارة. ثم يتم تهيئة النموذج ويمكن تدريبه على البيانات واستخدامه للتنبؤات.

Java

 

import org.deeplearning4j.nn.api.OptimizationAlgorithm;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.learning.config.Sgd;
import org.nd4j.linalg.lossfunctions.LossFunctions;

public class SimpleNeuralNetwork {

    public static void main(String[] args) {

        MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
                .seed(123)
                .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
                .updater(new Sgd(0.01))
                .list()
                .layer(0, new DenseLayer.Builder().nIn(4).nOut(10)
                        .weightInit(WeightInit.XAVIER)
                        .activation(Activation.RELU)
                        .build())
                .layer(1, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
                        .nIn(10).nOut(3)
                        .weightInit(WeightInit.XAVIER)
                        .activation(Activation.SOFTMAX)
                        .build())
                .pretrain(false).backprop(true)
                .build();

        MultiLayerNetwork model = new MultiLayerNetwork(conf);

        model.init();
    }
}

التصنيف باستخدام Weka

يوضح هذا المثال كيفية استخدام مكتبة Weka للتصنيف على مجموعة بيانات Iris. يقوم الكود بتحميل المجموعة من ملف ARFF، وتعيين السمة الفئوية (السمة التي نريد التنبؤ بها) لتكون آخر سمة في المجموعة، وبناء مصنف Naive Bayes باستخدام البيانات المحملة، وتصنيف مثيل جديد.

Java

 

import weka.classifiers.bayes.NaiveBayes;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;

public class WekaClassification {

    public static void main(String[] args) throws Exception {

        DataSource source = new DataSource("data/iris.arff");

        Instances data = source.getDataSet();
        data.setClassIndex(data.numAttributes() - 1);

        NaiveBayes nb = new NaiveBayes();
        nb.buildClassifier(data);

        Instance newInstance = data.instance(0);
        double result = nb.classifyInstance(newInstance);
        System.out.println("Predicted class: " + data.classAttribute().value((int) result));
    }
}

الخاتمة

Java، مع مجتمعها الغني من المكتبات والإطارات لتطوير الذكاء الاصطناعي، هو خيار قابل للتطوير لبناء تطبيقات قائمة على الذكاء الاصطناعي. من خلال تحسين المكتبات الشهيرة مثل Deeplearning4j و Weka و Encog، واستخدام Gradle كأداة البناء، يمكن للمطورين إنشاء حلول قوية باستخدام لغة البرمجة Java المألوفة.

توضح الأمثلة المقدمة في الكود سهولة إعداد وتكوين تطبيقات الذكاء الاصطناعي باستخدام Java و Gradle. تُظهر أمثلة DL4J كيفية إنشاء نموذج تعلم عميق أساسي يمكن تطبيقه على مهام مثل التعرف على الصور أو معالجة اللغة الطبيعية. تُظهر المثال Weka كيفية استخدام Java ومكتبة Weka لمهام التعلم الآلي، وتحديدًا التصنيف، والذي يمكن أن يكون ذا قيمة لتنفيذ حلول التعلم الآلي في تطبيقات Java، مثل توقع انتشار العملاء أو تصنيف رسائل البريد الإلكتروني على أنها رسائل غير مرغوب فيها أو رسائل مرغوب فيها.

سعيد بالتعلم!!

Source:
https://dzone.com/articles/building-ai-applications-with-java-and-gradle