다음을 통해 공유


딥 러닝이란?

딥 러닝은 "딥" 신경망을 활용하는 기계 학습 기술에 대한 우산 용어입니다. 오늘날 딥 러닝은 컴퓨터 비전, 자연어 처리 및 강화 학습에 적용될 때 게임 플레이, 의사 결정 및 시뮬레이션과 같은 시나리오와 같은 영역에서 성공했기 때문에 기계 학습에서 가장 눈에 띄는 영역 중 하나입니다.

딥 러닝의 성공에 중요한 요소는 신경망 모델을 만들고 유추를 위한 실행을 용이하게 하는 데이터, 컴퓨팅, 소프트웨어 프레임워크 및 런타임의 가용성이었습니다. 이러한 프레임워크의 예로 TensorFlow, (Py)Torch 및 ONNX가 있습니다.

ML.NET 이러한 프레임워크 중 일부에 대한 액세스를 제공합니다. 따라서 ML.NET 사용자는 처음부터 시작하지 않고도 딥 러닝 모델을 활용할 수 있습니다.

딥 러닝과 기계 학습 비교

딥 러닝은 신경망 알고리즘에 의존합니다. 일반화된 선형 모델, 의사 결정 트리 또는 SVM(Support Vector Machines)과 같은 다양한 알고리즘을 사용하는 기존 또는 클래식 기계 학습 기술과는 대조적입니다. 이 차이의 가장 즉각적이고 실질적인 의미는 딥 러닝 방법이 어떤 종류의 데이터에 더 적합할 수 있다는 것입니다. 경우에 따라 그라데이션 강화 트리(XGBoost, LightGBM 및 CatBoost)와 같은 클래식 기계 학습 기술은 테이블 형식 데이터에 대한 우위를 점하는 것처럼 보입니다. 텍스트 및 이미지와 같은 덜 구조화된 데이터의 경우 신경망의 성능이 향상되는 경향이 있습니다. 가장 좋은 방법은 항상 특정 데이터 원본을 실험하고 사용 사례를 사용하여 문제에 가장 적합한 기술을 스스로 결정하는 것입니다.

클래식 기계 학습 작업의 경우 ML.NET AutoML(자동화된 Machine Learning)을 통해 이 실험 프로세스를 간소화합니다. AutoML에 대한 자세한 내용은 AutoML(자동화된 Machine Learning)이란?을 참조하세요..

신경망 아키텍처

딥 러닝의 주요 차별화 특징 중 하나는 인공 신경망 알고리즘의 사용입니다. 개략적으로 신경망을 각 단위의 출력이 다른 단위의 입력을 구성하는 "처리 장치"의 구성으로 생각할 수 있습니다. 이러한 각 단위는 하나 이상의 입력을 사용할 수 있으며, 기본적으로 입력의 가중 합계를 수행하고 오프셋(또는 "바이어스")과 비선형 변환 함수("활성화"라고 함)를 적용합니다. 이러한 구성 요소의 다양한 배열은 기계 학습 작업의 중심인 분류, 회귀 함수 및 기타 구조의 의사 결정 경계를 설명하는 데 사용되었습니다.

신경망다이어그램

지난 10년 동안 딥 러닝의 사례, 애플리케이션 및 기술이 증가했습니다. 이러한 증가는 신경망에 통합할 수 있는 다양한 작업, 이러한 작업을 구성할 수 있는 다양한 준비 집합 및 이러한 개선에 대한 향상된 계산 지원에 의해 부분적으로 발생합니다. 일반적으로 신경망 아키텍처는 다음 범주로 그룹화할 수 있습니다.

  • 피드포워드 신경망
  • 나선형 신경망
  • 되풀이 신경망
  • 악의적인 네트워크 생성
  • 트랜스 포 머

자세한 내용은 인공 신경망 가이드참조하세요.

딥 러닝은 무엇을 사용할 수 있나요?

딥 러닝 아키텍처는 이미지, 오디오 및 자유 형식 텍스트와 같은 구조화되지 않은 데이터와 관련된 작업에서 좋은 성능을 보여 줍니다. 결과적으로 딥 러닝은 다음과 같은 문제를 해결하는 데 사용되었습니다.

  • 이미지 분류
  • 오디오 분류
  • 번역
  • 텍스트 생성
  • 텍스트 분류

ML.NET 딥 러닝

딥 러닝 모델을 처음부터 학습하려면 여러 매개 변수, 많은 양의 레이블이 지정된 학습 데이터 및 방대한 양의 컴퓨팅 리소스(수백 시간)를 설정해야 합니다. ML.NET 통해 미리 학습된 모델 및 전이 학습 및 미세 조정과 같은 지식 전송 기술을 사용하여 이 프로세스를 바로 가기할 수 있습니다.

ML.NET 통해 다른 프레임워크에서 학습된 모델을 가져오고 .NET 애플리케이션 내에서 사용할 수도 있습니다.

시나리오에 따라 로컬 GPU와 Azure GPU 컴퓨팅 리소스를 사용하여 딥 러닝 모델을 학습하고 사용할 수 있습니다.

사용자 지정 모델 학습

ML.NET 사용자 지정 딥 러닝 모델을 학습시키고 이를 사용하여 .NET 애플리케이션 내에서 예측을 만드는 API를 제공합니다.

이러한 API는 TorchSharpTensorFlow.NET통해 구동됩니다.

이미지 분류

ML.NET ImageClassification API 집합을 사용하여 사용자 지정 이미지 분류 모델을 학습시킬 수 있습니다.

ML.NET 이미지 분류 학습 파이프라인은 다음과 같을 수 있습니다.

//Append ImageClassification trainer to the pipeline containing any preprocessing transforms.
pipeline
    .Append(mlContext.MulticlassClassification.Trainers.ImageClassification(featureColumnName: "Image")
    .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel");

// Train the model.
var model = pipeline.Fit(trainingData);

// Use the model for inferencing.
var predictedData = model.Transform(newData).GetColumn<string>("PredictedLabel");

ML.NET 사용자 지정 이미지 분류 모델 학습을 시작하려면 Model Builder사용하여 Azure에서 이미지 분류 모델 학습을 참조하세요.

개체 검색

ML.NET Azure Machine Learning을 사용하여 Model Builder에서 사용자 지정 개체 검색 모델을 학습할 수 있습니다. 경계 상자 정보와 경계 상자의 개체가 속한 범주를 포함하는 레이블이 지정된 데이터 세트만 있으면 됩니다.

학습 프로세스의 결과는 예측을 위해 ApplyOnnxModel 변환과 함께 사용할 수 있는 ONNX 모델입니다.

현재는 ML.NET 개체 검색에 대한 로컬 지원이 없습니다.

ML.NET 사용하여 사용자 지정 개체 검색 모델을 학습하려면 Model Builder 자습서사용하여 이미지의 중지 기호 검색을 참조하세요.

텍스트 분류

고객 리뷰이든 비즈니스 메모이든 자유 형식 텍스트를 분류하는 것은 많은 프로세스에서 중요한 부분입니다.

ML.NET TextClassificationTrainer API 집합을 사용하여 사용자 지정 텍스트 분류 모델을 학습할 수 있습니다. ML.NET 사용자 지정 텍스트 분류 모델을 학습하는 데 사용되는 기술을 미세 조정이라고 합니다. 미세 조정을 사용하면 미리 학습된 모델을 사용하고 사용자 고유의 데이터를 사용하여 도메인 또는 문제와 관련된 계층을 다시 학습할 수 있습니다. 이렇게 하면 전체 모델을 처음부터 학습하는 프로세스를 거치지 않고도 문제를 해결하기 위해 보다 맞춤화된 모델을 사용할 수 있습니다. 텍스트 분류 API에서 사용하는 미리 학습된 모델은 NAS-BERTTorchSharp 구현입니다.

ML.NET 텍스트 분류 학습 파이프라인은 다음과 같을 수 있습니다.

// Define training pipeline using TextClassification trainer
var pipeline =
    mlContext.Transforms.Conversion.MapValueToKey("Label","Sentiment")
        .Append(mlContext.MulticlassClassification.Trainers.TextClassification(sentence1ColumnName: "Text"))
        .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

// Train the model
var model = pipeline.Fit(trainingData);

// Use your model to make predictions
var predictedData = model.Transform(newData).GetColumn<string>("PredictedLabel");

ML.NET 사용하여 텍스트 분류 모델 학습을 시작하려면 ML.NET Model Builder 자습서를 사용하여 웹 애플리케이션에서 웹 사이트 주석의 감정 분석 참조하세요.

문장 유사성

의미 체계 검색과 같은 작업은 두 문장 또는 텍스트 구절이 서로 얼마나 유사한지를 결정하는 데 의존합니다.

ML.NET TextClassificationTrainer동일한 기본 모델 및 미세 조정 기술을 사용하는 SentenceSimilarityTrainer API 집합을 제공합니다. 그러나 범주를 출력으로 생성하는 대신 두 구절이 얼마나 비슷한지 나타내는 숫자 값을 생성합니다.

ML.NET 문장 유사성에 대한 학습 및 유추 파이프라인은 다음과 같을 수 있습니다.

// Define the pipeline.
var pipeline = mlContext.Regression.Trainers.SentenceSimilarity(sentence1ColumnName: "Sentence", sentence2ColumnName: "Sentence2");

// Train the model
var model = pipeline.Fit(trainingData);

// Use the model to make predictions and extract their similarity values.
var score = model.Transform(newData).GetColumn<float>("Score");

문장 유사성을 시작하려면 dotnet/machinelearning-samples 리포지토리샘플을 참조하세요.

미리 학습된 모델 사용

ML.NET TensorFlow 및 ONNX와 같은 다른 형식의 모델을 사용하고 이를 사용하여 .NET 애플리케이션 내에서 예측을 만드는 API를 제공합니다.

이러한 API는 TensorFlow.NETONNX 런타임의해 구동됩니다.

TensorFlow

TensorFlow 풍부한 에코시스템과 TensorFlow Hub사용할 수 있는 다양한 미리 학습된 모델을 포함하는 딥 러닝 프레임워크입니다.

ML.NET 통해 미리 학습된 TensorFlow 모델을 가져와 .NET 애플리케이션 내에서 추론에 사용할 수 있습니다.

미리 학습된 TensorFlow 모델을 사용하는 유추 파이프라인은 다음과 같을 수 있습니다.

// Load TensorFlow model
TensorFlowModel tensorFlowModel = mlContext.Model.LoadTensorFlowModel(_modelPath);

//Append ScoreTensorFlowModel transform to your pipeline containing any preprocessing transforms
pipeline.Append(tensorFlowModel.ScoreTensorFlowModel(outputColumnName: "Prediction/Softmax", inputColumnName:"Features"))

// Create ML.NET model from pipeline
ITransformer model = pipeline.Fit(dataView);

var predictions = model.Transform(dataView).GetColumn<float>("Prediction/Softmax");

ML.NET 미리 학습된 TensorFlow 모델 사용을 시작하려면 ML.NET 자습서에서 미리 학습된 TensorFlow 모델을 사용하여 영화 리뷰 감정 분석을 참조하세요.

ONNX

ONNX(Open Neural Network Exchange) 기계 학습과 딥 러닝 프레임워크 간의 상호 운용성을 사용하도록 설계된 오픈 소스 형식입니다. 즉, PyTorch와 같은 널리 사용되는 기계 학습 프레임워크 중 하나에서 모델을 학습시키고, ONNX 형식으로 변환하고, ML.NET 같은 다른 프레임워크에서 ONNX 모델을 사용할 수 있습니다.

ONNX 모델 리포지토리 다양한 태스크에서 추론에 사용할 수 있는 몇 가지 미리 학습된 ONNX 모델을 호스트합니다.

ML.NET 사용하면 이러한 미리 학습된 ONNX 모델을 가져와 .NET 애플리케이션 내에서 추론하는 데 사용할 수 있습니다.

미리 학습된 ONNX 모델을 사용하는 유추 파이프라인은 다음과 같을 수 있습니다.

// Append ApplyOnnxModel transform to pipeline containing any preprocessing transforms
pipeline.Append((modelFile: modelLocation, outputColumnNames: new[] { TinyYoloModelSettings.ModelOutput }, inputColumnNames: new[] { TinyYoloModelSettings.ModelInput })

// Create ML.NET model from pipeline
var model = pipeline.Fit(data);

// Use the model to make predictions
var predictions = pipeline.Fit(data).GetColumn<float[]>(TinyYoloModelSettings.ModelOutput);

ML.NET 미리 학습된 ONNX 모델 사용을 시작하려면 ML.NET 자습서에서 ONNX를 사용하여 개체 검색을 참조하세요.