SW/Java

Java 및 Gradle로 AI 애플리케이션 구축

얇은생각 2023. 10. 19. 07:30
반응형

실제 코드 예시를 통해 Deeplearning4j, Weka, Encog 등 인기 라이브러리를 활용하여 Java, Gradle과 함께 AI 개발을 모색합니다.

인공 지능(AI)은 다양한 산업을 변화시키고 비즈니스 운영 방식을 변화시키고 있습니다. Python은 종종 AI 개발에 필수적인 언어로 간주되지만, Java AI 기반 응용 프로그램을 만드는 데 동등하게 강력한 경쟁자가 되는 강력한 라이브러리와 프레임워크를 제공합니다. 이 글에서는 인기 있는 라이브러리에 대해 논의하고 코드 예제를 제공하며 엔드 투 엔드 작업 예제를 시연하여 Java Gradle AI 개발에 사용하는 방법을 탐구합니다.

 

 

Java 및 Gradle로 AI 애플리케이션 구축

 

 

인공지능 개발을 위한 자바 라이브러리

Java AI 애플리케이션을 구축하기 위한 다음과 같은 몇 가지 강력한 라이브러리와 프레임워크를 제공합니다:

 딥러닝4j(DL4J) - 신경망을 구축, 훈련 및 배치하기 위한 플랫폼을 제공하는 자바용 딥러닝 라이브러리로, DL4J는 다양한 신경망 아키텍처를 지원하고 더 빠른 계산을 위해 GPU 가속을 제공합니다.

Weka - 데이터 마이닝 작업을 위한 기계 학습 알고리즘 모음인 Weka는 데이터 전처리, 분류, 회귀, 클러스터링 및 시각화 도구를 제공합니다.

Encog - 신경망, 지원 벡터 머신, 유전자 프로그래밍, 베이지안 네트워크 등 다양한 고급 알고리즘을 지원하는 머신러닝 프레임워크

 

 

그래들로 종속성 설정

Gradle을 사용하여 Java에서 AI 개발을 시작하려면 build.gradle 파일에 다음을 추가하여 프로젝트에 필요한 종속성을 설정합니다:

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) 라이브러리를 사용하여 기본 신경망을 생성하는 것을 보여줍니다. 코드는 ReLU 활성화 함수를 사용하여 4개의 입력 뉴런과 10개의 출력 뉴런으로 구성된 DenseLayer Softmax 활성화 함수와 Negative Log Likelihood를 손실 함수로 사용하여 10개의 입력 뉴런과 3개의 출력 뉴런으로 구성된 OutputLayer로 구성된 2층 신경망 아키텍처를 설정합니다. 모델은 이후 초기화되고 데이터에 대해 추가로 훈련되어 예측에 사용될 수 있습니다.

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를 이용한 분류

이 예는 Iris 데이터 세트에서 분류를 위해 Weka 라이브러리를 사용하는 방법을 보여줍니다. 코드는 ARFF 파일에서 데이터 세트를 로드하고, 클래스 속성(예측하려는 속성)을 데이터 세트의 마지막 속성으로 설정하고, 로드된 데이터를 사용하여 나이브 베이즈 분류기를 구축하고, 새로운 인스턴스를 분류합니다.

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));
    }
}

 

 

결론

풍부한 라이브러리 생태계와 AI 개발 프레임워크를 갖춘 자바는 AI 기반 애플리케이션 구축을 위한 실행 가능한 선택입니다. 개발자들은 딥러닝4j, 웨카, 엔코그와 같은 인기 라이브러리를 활용하고 그래들을 구축 도구로 사용함으로써 익숙한 자바 프로그래밍 언어를 사용하여 강력한 AI 솔루션을 만들 수 있습니다.

제공된 코드 예제는 Java Gradle을 사용하여 AI 애플리케이션을 쉽게 설정하고 구성할 수 있음을 보여줍니다. DL4J 예제는 이미지 인식 또는 자연어 처리와 같은 작업에 적용할 수 있는 기본적인 딥 러닝 모델을 만드는 방법을 보여줍니다. Weka 예제는 기계 학습 작업에 Java Weka 라이브러리를 사용하는 방법을 보여주는데, 특히 고객 이탈을 예측하거나 이메일을 스팸 또는 스팸이 아닌 것으로 분류하는 등 Java 애플리케이션에서 기계 학습 솔루션을 구현하는 데 유용할 수 있습니다.

반응형