Строительство приложений AI с использованием Java и Gradle

Искусственный интеллект (ИИ) трансформирует различные отрасли и меняет способы функционирования бизнеса. Хотя Python часто считается предпочтительным языком для разработки ИИ, Java предоставляет надежные библиотеки и фреймворки, что делает его столь же сильным претендентом на создание приложений на основе ИИ. В этой статье мы исследуем использование Java и Gradle для разработки ИИ, обсуждая популярные библиотеки, предоставляя примеры кода и демонстрируя рабочие примеры от начала до конца.

Библиотеки Java для разработки ИИ

Java предлагает несколько мощных библиотек и фреймворков для создания приложений ИИ, включая:

  • Deeplearning4j (DL4J) – Библиотека глубокого обучения для Java, которая предоставляет платформу для создания, обучения и развертывания нейронных сетей, DL4J поддерживает различные архитектуры нейронных сетей и предлагает ускорение с помощью GPU для более быстрых вычислений.
  • Weka – Набор алгоритмов машинного обучения для задач извлечения данных, Weka предлагает инструменты для предварительной обработки данных, классификации, регрессии, кластеризации и визуализации.
  • Encog – Фреймворк машинного обучения, поддерживающий различные продвинутые алгоритмы, включая нейронные сети, машины опорных векторов, генетическое программирование и байесовские сети

Настройка зависимостей с помощью Gradle

Для начала разработки ИИ на 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 и отрицательную логарифмическую вероятность в качестве функции потерь. Затем модель инициализируется и может быть дополнительно обучена на данных и использована для прогнозов.

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