인공지능(AI)은 다양한 산업을 변화시키고 기업들의 운영 방식을 바꾸고 있습니다. 비록 파이썬이 AI 개발을 위한 기본 언어로 여겨지지만, 자바는 강력한 라이브러리와 프레임워크를 제공하여 AI 기반 애플리케이션 개발에 동등하게 강력한 경쟁자가 되었습니다. 이 기사에서는 자바와 그레이들을 사용한 AI 개발을 탐색하며 인기 있는 라이브러리를 논의하고, 코드 예제를 제공하며, 종단 간 작동 예제를 보여줍니다.
AI 개발을 위한 자바 라이브러리
자바는 AI 애플리케이션 구축을 위한 여러 강력한 라이브러리와 프레임워크를 제공합니다.
- 딥러닝4제이(DL4J) – 자바용 딥 러닝 라이브러리로, 신경망의 구축, 훈련 및 배포를 위한 플랫폼을 제공합니다. DL4J는 다양한 신경망 아키텍처를 지원하며 계산 속도를 높이기 위한 GPU 가속을 제공합니다.
- 웨카 – 데이터 마이닝 작업을 위한 기계 학습 알고리즘 모음으로, 데이터 전처리, 분류, 회귀, 군집화 및 시각화를 위한 도구를 제공합니다.
- 엔코그 – 신경망, 서포트 벡터 머신, 유전자 프로그래밍, 베이지안 네트워크 등 다양한 고급 알고리즘을 지원하는 기계 학습 프레임워크입니다.
그레이들로 의존성 설정
AI 개발을 Java에서 Gradle을 사용하여 시작하려면 프로젝트에 필요한 의존성을 설정하기 위해 다음을 프로젝트의 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) 라이브러리를 사용하여 기본적인 신경망을 만드는 방법을 보여줍니다. 코드는 4개의 입력 뉴런과 10개의 출력 뉴런을 가진 DenseLayer
와 ReLU 활성화 함수를 사용하며, 10개의 입력 뉴런과 3개의 출력 뉴런을 가진 OutputLayer
와 Softmax 활성화 함수 및 음의 로그 가능성을 손실 함수로 사용하는 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 개발을 위한 다양한 라이브러리와 프레임워크로 구성된 풍부한 생태계를 가진 Java는 AI 기반 애플리케이션을 구축하기에 적합한 선택입니다. Deeplearning4j, Weka, Encog와 같은 인기 있는 라이브러리를 활용하고 빌드 도구로 Gradle을 사용하면 개발자들은 익숙한 Java 프로그래밍 언어를 사용하여 강력한 AI 솔루션을 만들 수 있습니다.
제공된 코드 예시들은 Java와 Gradle을 사용하여 AI 애플리케이션을 설정하고 구성하는 용이성을 보여줍니다. DL4J 예시는 이미지 인식이나 자연어 처리와 같은 작업에 적용할 수 있는 기본적인 딥 러닝 모델을 생성하는 방법을 보여줍니다. Weka 예시는 특히 분류를 위해 Java와 Weka 라이브러리를 사용하여 기계 학습 작업을 수행하는 방법을 보여주며, 고객 이탈 예측이나 이메일을 스팸 또는 스팸이 아닌 것으로 분류하는 등 Java 애플리케이션에서 기계 학습 솔루션을 구현하는 데 유용합니다.
학습 즐거워요!!
Source:
https://dzone.com/articles/building-ai-applications-with-java-and-gradle