בניית יישומים חישוביים עם Java ו-Gradle

הבינה המלאכותית (AI) משנה תעשיות רבות ומשנה את הדרך בה עסקים מתפקדים. למרות שפייתון נחשב לעיתים קרובות לשפה המועדפת לפיתוח AI, ג'אווה מספקת ספריות וממשקי פעולה חזקים שהופכים אותה למתחרה שאפתנית באותה מידה ליצירת יישומים מבוססי AI. במאמר זה, אנו בוחנים את השימוש בג'אווה ובגרדל לפיתוח AI על ידי דיון על ספריות פופולריות, מתן דוגמאות קוד, והדגמת דוגמאות עבודה מקיפות.

ספריות ג'אווה לפיתוח AI

ג'אווה מציעה מספר ספריות וממשקי פעולה חזקים לבניית יישומים מבוססי AI, כולל:

  • Deeplearning4j (DL4J) – ספרית למיקוד עמיקה עבור ג'אווה המספקת ממשק לבניית, אימון ובחינת רשתות עצביות, DL4J תומכת במספר רב של ארכיטקטורות רשת עצבית ומציעה זיכרון GPU לחישובים מהירים יותר.
  • Weka – אוסף של אלגוריתמים ללמידה מכוונת למשימות חיפושית בנתונים, Weka מספק כלים לטיפול בנתונים לפני עיבוד, קבלה, רגרסיה, איקלוס והדמיה.
  • Encog – ממשק פעולה ללמידה מכוונת התומך באלגוריתמים מתקדמים רבים, כולל רשתות עצביות, מכונות וקטורי תמיכה, תכנון גנטי ורשתות בייסיות

הקמת תלות עם גרדל

כדי להתחיל בפיתוח AI ב-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

דוגמה זו מדגימה את יצירת רשת עצבית בסיסית neural network באמצעות ספריית 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, קובע את הת�רכת (התכונה שאנו רוצים לחזות) להיות התכונה האחרונה במערכת, בונה מיינפלואי בייס על סמך הנתונים שהועלו, וקולט מופע חדש.

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, עם הסביבה העשירה שלו של ספריות וממשקים לפיתוח AI, היא בחירה אפשרית לבניית יישומים מבוססי AI. על ידי שימוש בספריות פופולריות כמו Deeplearning4j, Weka ו-Encog, ובאמצעות Gradle ככלי הבנייה, מפתחים יכולים ליצור פתרונות AI עוצמתיים בשפת התכנות המוכרת Java.

דוגמאות הקוד המוצגות מדגימות את הקלות בהקמה והגדרת יישומים חישוביים באמצעות Java ו-Gradle. הדוגמה של DL4J מראה כיצד ליצור מודל חישובי בסיסי שניתן ליישום במשימות כמו זיהוי תמונות או עיבוד שפה טבעית. הדוגמה של Weka מדגימה כיצד להשתמש ב-Java ובספריית Weka למשימות למידת מכונה, במיוחד ביקורת, שיכולה להיות חשובה ליישום פתרונות למידת מכונה ביישומי Java, כגון חיזוי מעבר הלקוחות או ביקורת הודעות דואר זבל או לא זבל.

שמחים בלמידה!!

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