본문 바로가기

say와 AI 챗봇친구 만들기 보고서

YOLO Object Detection, 객체인식 - 개념, 원리, 주목해야 할 이유, Use Case

728x90
반응형
SMALL

👉 객체 인식 (Object detection) 대표 모델 YOLO 란 무엇인가?

YOLO Object Detection, 객체인식 - 개념, 원리, 주목해야 할 이유, Use Case

You Only Look Once, Real-Time Object Detection

 

객체 인식(Object Detection)은 영상처리나 Computer vision 분야에서 사용되는 기법입니다. 최근 컴퓨터 비전 분야의 발전으로 대두된 Multi labeled, Key point 등의 기술을 크게 아우르는 말이죠. YOLO 모델은 객체 검출 기술 중에서도 가장 대표적인 모델입니다.

다방면에서 활약하고 있는 YOLO의 쓰임을 알면 컴퓨터 비전을 활용한 비즈니스에서 인사이트를 얻을 수 있습니다. 이 글에서는 YOLO 모델의 정의와 원리, 사용 사례와 정확도를 높이는 데이터헌트의 노하우를 소개합니다.

YOLO 란 무엇인가? - YOLO 정의와 개념

Object Detection, 객체 인식

Object Detection, 객체 인식은 이미지 또는 비디오에서 개체를 식별하고 찾는 것과 관련된 컴퓨터 비전 작업입니다. 감지된 물체는 사람일 수도 있고, 자동차나 건물, 동물일 수도 있습니다.

Object Detection 기술은 두 가지 질문을 위해 존재합니다.

  1. 이것은 무엇인가? 특정 이미지에서 대상을 식별하기 위함
  2. 어디에 위치해있는가? 이미지 내에서 개체의 정확한 위치를 설정하기 위함

기존 객체 인식은 다양한 접근 방식으로 시도되면서 데이터 제한 및 모델링 문제를 해결하려고 했습니다. 하지만 단일 알고리즘 실행을 통해 객체를 감지하는 것이 어려웠던 차에, YOLO 알고리즘이 등장하게 되었죠.

출처: Joseph Redmon, YOLO: Real-Time Object Detection

You Only Look Once

YOLO(You Only Look Once)는 최첨단 실시간 Object Detection 시스템입니다. 기존의 모델보다 빠르고 정확한 데이터 처리 속도를 자랑하며 화제를 몰고 왔죠. YOLO는 물체 감지와 객체 인식에 대한 딥러닝 기반 접근 방식입니다.

간단하게 말하자면, YOLO는 입력된 이미지를 일정 분할로 그리드 한 다음, 신경망을 통과하여 바운딩 박스와 클래스 예측을 생성하여 최종 감지 출력을 결정합니다. 실제 이미지 및 비디오에서 테스트하기 전에 먼저 전체 데이터 세트에 대해 여러 인스턴스를 학습하죠.

YOLO는 Joseph Redmon 등에 의해 처음 소개되었습니다. 2015년 논문에 처음 등장한 후 몇 차례 업데이트되었죠. 이후 많은 개발자들에 의해 v8까지 출시되었습니다.

 

YOLO는 복잡한 파이프라인을 다루지 않기 때문에 매우 빠른 모델입니다. 따라서 실시간 의사 결정을 필요로 하는 분야에서 특히 두각을 드러내고 있습니다.

YOLO 원리 - YOLO 알고리즘, 작동 방식, 사용 방법

YOLO structure

  • 위에서 말했듯이 YOLO는 그리드에서 분할한 이미지를 신경망에 통과시킨 뒤, Bbox나 예측 등을 통한 기법으로 최종 감지 출력을 생성합니다.
  • Bbox를 계산하기 위해 YOLO는 IoU(Intersect over Union) 및 NMS(Non-maximum suppression)의 주요 후처리 단계를 구현합니다.
  • 먼저 IoU는 모델이 예측한 Bounding Box와 실제 개체의 그것이 얼마나 잘 일치하는지 확인하는 것입니다. 두 결과의 겹침이 IoU를 제공합니다.
  • 개체 알고리즘은 종종, 특정 개체를 과도하게 식별하는 문제가 있습니다. 관심 개념을 로컬라이즈하는 단계에서, 실제 위치 근처에서 여러 개의 감지 그룹이 생성되는 현상은 불완전한 감지 알고리즘의 고질적인 현상입니다.
  • NMS는 이를 방지하기 위해 컴퓨터 비전의 여러 영역에서 사용되었습니다. NMS를 사용하면 얼굴이 속한 모든 후보 중에서 최적의 셀을 식별할 수 있습니다. NMS는 이미지에 얼굴이 여러 개 있다고 판단하는 것이 아니라, 동일한 객체에 대한 상자 중 가장 높은 확률을 가진 상자를 선택합니다.

출처: Joseph Redmon, YOLO: Real-Time Object Detection ‍

How To

YOLO는 IoU와 NMS 모두를 활용하여 이미지의 다양한 개체를 빠르게 예측할 수 있습니다. 모델은 훈련을 받는 과정에서 전체 이미지를 확인하여, 클래스에 대한 콘텍스트 정보나 클래스가 보는 이미지의 모양을 암시적으로 인코딩합니다.

YOLO는 먼저 입력한 이미지를 확인합니다. 그리고 사진을 N×N의 그리드로 나눕니다. 각 그리드마다 이미지 분류 및 지역화 작업이 시작됩니다. 객체가 어디에 있는지 확인하고, 식별해야 하는 객체에 Bbox를 그립니다. 그런 다음 YOLO 알고리즘은 Bounding Box와 각 개체의 클래스 확률을 통해 객체를 인식하고 예측합니다.

 

만약 사용자 지정 데이터 세트 교육을 통해 YOLO 모델을 훈련시켜보고 싶다면, 생각보다 간단하게 테스트해 볼 수 있습니다. YOLO의 저장소를 복제한 다음 필요한 파일을 설치하고, 주석이 달린 사용자 지정 데이터 세트를 로드합니다. 이후 모델 구성 및 아키텍처 정의와 변수를 알려주면, 누구나 손쉽게 Object Detection 프로젝트를 시작할 수 있죠.

YOLO에 주목해야 하는 이유

YOLO 활용도

YOLO는 빠른 속도와 상대적으로 높은 정확도를 자랑합니다. YOLO보다 정확도가 높은 모델도 많지만, 결국 비즈니스에서 가장 중요한 것은 실시간성이기 때문입니다. 따라서 YOLO가 Object Detection 분야의 왕좌에서 내려올 일은 당분간 없을 것으로 보입니다.

즉, YOLO 알고리즘이 중요한 이유는 아래와 같습니다.

  • 속도: 물체를 실시간으로 예측하여 감지 속도 향상
  • 높은 정확도: 최소한의 배경 오류로 정확한 결과를 제공
  • 학습 기능: YOLO는 객체의 표현을 학습하고 이를 객체 감지에 적용할 수 있는 뛰어난 학습 기능을 갖추고 있습니다.

YOLO vs. R-CNN

YOLO는 주어진 이미지를 한 번의 스캔으로 객체의 위치와 경계선을 계산합니다. 과거 R-CNN은 이미지 안에 객체가 있을 만한 부분을 미리 예측하고, 컨볼루션 넷을 이용해 특징을 추출하는 과정을 거쳐야 했습니다. 하지만 YOLO는 이 단계를 간략화하여 실시간 처리를 가능하게 했습니다. 이에 다양한 서비스에 적용될 수 있었고, 유의미한 성과를 가져다주는 Object Detection 딥러닝 모델이 되었죠.

👉 Deep learning의 원리와 구조, 적용사례가 궁금하다면?

Deep learning (딥 러닝) 이란? 정의, 원리, 활용

인공지능 도입 전 반드시 알아야 할 딥 러닝 기본 가이드

 

딥 러닝 (Deep learning) 이란 무엇인가?

정의

딥 러닝(Deep Learning)은 머신 러닝(Machine Learning)의 특정한 한 분야로서 인공 신경망(Artificial Neural Network)의 층을 연속적으로 깊게 쌓아 올려 데이터를 학습하는 방식을 말합니다. Deep 하다는 의미는 층을 연속적으로 쌓아 올렸기 때문에 붙은 단어라고 보시면 쉽게 이해가 됩니다. 딥 러닝이 화두가 되기 시작한 것은 2010년대의 비교적 최근의 일이지만, 딥 러닝의 기본 구조인 인공 신경망의 역사는 생각보다 오래되었습니다. 이번 글에서는 딥 러닝의 역사부터 layer를 깊게 쌓아 학습하는 원리, 그리고 실제 산업에 적용되는 사례와 데이터/ 학습에서 주요하게 고려할 점을 다루어 보도록 하겠습니다.

인공지능, 기계학습, 딥러닝의 관계 (출처: 지방공기업 웹진)

딥 러닝의 layer 계층 유형

딥 러닝이라고 해서 복잡하고 심오한 개념이 들어있을 것 같지만, 실제로 머신러닝 이론과 크게 다르지 않습니다. 그럼에도 불구하고, 왜 우리는 딥 러닝에 열광하고 기술 변화에 주목하고 있을까요?


신경계에는 엄청난 수의 뉴런이 포함되어 있고, 서로 매우 복잡한 구조로 얽혀 거대한 망을 구성합니다. 이를 ‘신경망’이라고 하죠. 머신러닝 과학자들은 신경망의 구조에 착안하여 퍼셉트론을 하나의 빌딩 블록 (Building block)이라 생각하고, 여러 개의 퍼셉트론을 연결하여 인공 신경망이라는 개념을 고안해 냈습니다. 딥 러닝의 딥 (deep) 이란, 이처럼 연결된 구조로 만들어진 층(layer)에서 표현을 학습한다는 개념을 의미합니다.

  • 노드의 입력 계층에서 정보를 수신하여 이를 기저 노드로 전송하고, 여기에 네트워크가 중요도에 따라 로컬 대비 패턴을 고정합니다.
  • Hidden layer에 있는 노드들이 바로 연산이 일어나는 곳입니다. 이 레이어에서 로컬 대비 패턴을 이용하여 유사점들을 보정합니다.
  • 출력 노드 계층에는 연산 결과가 표시됩니다. 이 계층에서 특징이 템플릿에 적용됩니다.

최근 인공지능 고도화와 딥 러닝 발전의 영향으로 많은 산업이 앞다퉈 AI 도입을 추진하고 있습니다. 특히 딥 러닝은 바둑 챔피언으로부터의 승리나 질병을 파악하는 모습 등 괄목할 만한 성과를 거두면서 사람들로부터 엄청난 믿음을 얻게 되었죠. Generative AI처럼 딥 러닝을 통한 다양한 성과로 인해, 데이터만 있으면 딥 러닝으로 엄청난 결과를 얻을 수 있을 것이라고 생각하시는 분들도 많죠. 그러나 어떤 산업이든 반드시 인공지능을 투입한다고 해서 성과를 거둘 수 있는 것은 아닙니다. 이 글에서는 딥 러닝에 대해 자세히 살펴보고, 장단점과 활용 방안 및 실제 산업에서 중요한 것을 확인해 보겠습니다.

👉 머신러닝을 관리하고 MLOps에 대한 A to Z

MLOps 비교 분석 - SageMaker, Kubeflow, MLflow, WandB, Tensor flow Extended

MLOps 플랫폼을 사용자 관점에서 장단점 비교

 

지난 MLOps 가이드 - 정의, 구성요소, 레벨별 프로세스, Use case 콘텐츠에 이어서 이번에는 주요 MLOps를 소개하고 장단점을 비교하는 시간을 가져보도록 하겠습니다

MLOps 필요성

MLOps 채택의 이점

MLOps는 머신러닝과 DevOps, 데이터 엔지니어링의 조합을 의미합니다. 인력과 프로세스, 기술을 통합하여 프로덕션 환경에서 머신러닝 시스템 배포 및 관리에 큰 도움을 주고 있죠. 새로운 분야이기도 했지만, 최근 많은 조직에서 MLOps에 대한 관심이 높아지고 있습니다.

MLOps를 도입한 조직이 얻을 수 있는 장점은 다음과 같습니다.

  • 속도와 효율성 향상: MLOps는 조직 전체에서 사용할 수 있는 표준화된 프로세스 및 도구 세트를 제공합니다. 이를 통해 머신러닝 개발 및 배포 프로세스의 속도와 효율성을 높일 수 있습니다.
  • 품질 및 안정성 향상: MLOps는 모델을 지속적으로 모니터링하고 테스트할 수 있는 프레임워크와 새 모델을 프로덕션에 배포하는 과정을 자동화할 수 있습니다. 따라서 머신러닝 모델의 품질과 안정성 개선에 큰 도움을 줄 수 있습니다.
  • 비용 절감: 조직이 머신러닝 개발 및 배포와 관련된 비용을 절감하는 효과를 얻을 수 있습니다. 개발 프로세스를 간소화하고, 수동 개입의 필요성을 줄이는 것만으로도 머신러닝 배포를 더 쉽게 확장할 수 있기 때문입니다.
  • MLOps는 머신러닝 라이프사이클에 관련된 모든 사람에게 공통 프레임워크를 제공합니다. 이는 데이터 과학자, 엔지니어, 운영 팀 등 조직 내 여러 팀 간의 협업을 개선하는 데에 도움이 될 수 있습니다.
  • 머신러닝 수명 주기에 대한 가시성을 개선하여, 문제를 조기에 식별하고 해결할 수 있습니다. 이 장점은 모델 성능 향상과 리스크 감소로 이어집니다.
  • 지속적인 모니터링 및 감사를 위한 프레임워크를 통해, 머신러닝 시스템의 보안을 강화할 수 있습니다. MLOps는 민감한 데이터를 보호하고 머신러닝 시스템에 대한 무단 액세스를 방지하는 데에 도움이 됩니다.

MLOps 도입이 시급한 이유

1인당 생산 데이터의 양이 기하급수적으로 증가하고 있습니다. 생성되는 데이터의 양이 늘어남에 따라, 기존 머신러닝 접근 방식을 부담스러워하는 반응도 많아졌습니다. MLOps는 이런 상황에 대응할 수 있는 가장 좋은 설루션입니다. 

 

또한, 실시간 의사결정에 대한 요구가 증가하고 있습니다. 오늘날 조직은 실시간으로 의사 결정을 내릴 수 있어야 합니다. 이 결정을 보조하는 머신러닝을 구축하기 위해, 머신러닝 팀은 빠르고 쉽게 배포할 수 있는 모델을 제공해야만 하죠. MLOps를 도입한 조직들은 지속적인 통합 및 배포(CI/CD)를 위한 프레임워크를 제공함으로써, 실시간 인사이트에 대해 보다 빠르게 대응할 수 있게 되었습니다.

지금 MLOps를 도입했을 때, 가장 큰 효과를 볼 수 있는 조직은 어디일까요?

  • MLOps는 데이터 중심 조직이 머신러닝 모델을 더 쉽게 구축하고 배포, 관리할 수 있도록 지원하여 데이터에서 더 많은 가치를 얻을 수 있도록 지원합니다.
  • MLOps는 머신러닝 모델 관리를 위한 확장 가능하고 안정적인 프레임워크를 제공합니다. 따라서 머신러닝 배포를 확장하려는 조직에 큰 도움을 줄 수 있습니다.
  • MLOps는 표준화된 프로세스 및 도구 세트를 제공합니다. 만약 조직이 실시간 의사결정을 기반으로 한 비즈니스를 하거나, 더 빠르고 효율적인 머신러닝 모델을 제공해야 할 경우 MLOps를 도입할 필요가 있습니다.

이미 많은 경쟁사가 MLOps를 채택하고 있으며, 이를 기반으로 경쟁 우위를 확보하고 있습니다. 아직 MLOps를 사용하고 있지 않다면 지금 바로 도입 계획을 세워보시길 바랍니다. MLOps는 데이터에서 더 많은 가치를 얻고, 머신러닝 모델을 빠르고 효율적으로 사용할 수 있게 해 주며, 모델 배포를 확장할 수 있는 좋은 찬스가 될 것입니다.

MLOps 플랫폼 비교

Amazon SageMaker

Amazon SageMaker는 AWS(Amazon Web Service) 퍼블릭 클라우드의 관리형 서비스입니다. 예측 분석 애플리케이션을 위한 머신러닝 모델을 구축하거나 교육, 배포를 지원하는 도구를 제공합니다. 이런 통합 도구는 노동 집약적인 수동 프로세스를 자동화하면서, 인적 오류와 하드웨어 비용을 축소할 수 있다는 장점이 있습니다.

Amazon SageMaker Studio Lab

AWS SageMaker는 머신러닝 모델링을 준비, 교육 및 배포의 세 단계로 단순화합니다.

  • AI 모델 준비 및 구축: Amazon SageMaker에는 데이터 세트를 교육하기 위해 많은 머신러닝 알고리즘이 함께 포함되어 있습니다. 여기에는 감독되지 않은 머신러닝 알고리즘도 포함되어 있죠. 이를 통해 모델의 정확도, 스케일, 속도를 향상시킬 수 있습니다.
  • 훈련 및 조정: 모델 교육을 수행하는 개발자는 Amazon S3 버킷의 데이터 위치와 선호하는 인스턴스 유형을 지정한 뒤 교육 프로세스를 시작합니다. SageMaker는 알고리즘 최적화를 위해 매개변수 및 하이퍼 매개변수를 찾는 자동 모델 튜닝을 제공합니다.
  • 배포 및 분석: 모델을 배포할 준비가 되면, 자동으로 클라우드 인프라를 운영하고 확장합니다. SageMaker에서 배포와 모니터링, 보안 패치, AWS 자동 확장, 앱에 연결하기 위한 HTTPS 엔드 포인트 등을 수행할 수 있습니다. 개발자는 Amazon CloudWatch 메트릭에서 프로덕션 성능 변화 추적 및 알람 트리거를 실행할 수 있습니다.

AWS SageMaker는 다양한 산업 사용 분야에서 활용되고 있습니다. SageMaker Studio의 자동화 도구는 사용자가 머신러닝 모델을 자동으로 디버그 및 관리, 추적할 수 있도록 지원합니다. 150개 이상의 사전 구축 설루션을 통해 신속한 모델 구현과 머신러닝 워크플로우 개선을 이룰 수 있습니다.

Vertex AI

2021년 5월 구글의 개발자 콘퍼런스 IO에서 ‘버텍스 AI(Vertex AI)’ 가 공개 됐습니다. 버텍스 AI는 Google Cloud의 관리형 클라우드 서비스로 AutoML과 AI Platform을 통합한 서비스로서의 머신러닝(MLaaS, Machine Learning As A Service) 형태의 플랫폼입니다.

이와 같은 플랫폼을 제공하는 클라우드 서비스 제공업체는 Google Cloud 외에 AWS사의 세이지메이커(SageMaker)나 MS 애저의 애저 ML 스튜디오가 현재 경쟁을 펼치고 있으며 이러한 경쟁 속에서 버텍스 AI는 인공지능 모델 개발과 유지를 위한 코드의 양을 80% 까지 감소시킬 수 있다는 점을 내세워 AI 엔지니어들의 관심을 모으고 있습니다.

Vertex AI에는 Tensor Flow Extended, Kubeflow와 같은 기존 MLOps 라이브러리가 포함되어 있습니다.


 

이에 더해 버텍스 AI는 아래와 같은 서비스들을 포함하고 있습니다.

  • 데이터 준비 프로세스를 위해 빅 쿼리 및 클라우드 저장소에서 데이터를 수집하고 버텍스 데이터 레이블을 활용하여 고품질 훈련 데이터에 주석을 달고 예측 정확도를 향상시킬 수 있습니다.
  • 버텍스 메타데이터는 파이썬 SDK를 통해 모델 학습 프로세스에서 생성된 출력을 설명하는 아티팩트, 데이터 출처 및 발생 상황 및 시간 경과에 따른 위치를 포함하는 데이터 계통 및 실행 추적 기능을 제공합니다.
  • 버텍스 피처(Feature)는 ML에서 사용하는 피처를 추가 및 선택할 수 있으며, 공유 및 재사용하기 위해 피처 저장소를 제공합니다.
  • 버텍스 훈련을 통해 사전 빌드된 알고리즘 세트를 제공하고 사용자들이 커스텀 코드를 학습 모델에 가져올 수 있도록 합니다. 사용자 정의가 더 필요한 On-premise 환경 또는 다른 클라우드 환경과 같은 하이브리드 인공지능을 활용한 모델 학습을 수행할 수 있습니다.
  • 버텍스 신경망 아키텍처 검색은 서비스 별 요구 사항에 적절한 새로운 모델 신경망 아키텍처를 구축하고 대기 시간, 메모리 및 전력에 맞게 기존 신경망 아키텍처를 최적화하여 새로운 구조를 검색합니다.
  • 버텍스 설명 가능 인공지능은 데이터의 각 특성이 예측 결과에 얼마나 기여했는지 알려줍니다. 이 정보를 사용하여 모델이 예상대로 작동하는지 확인하고 모델의 편향을 인식하며 모델 및 학습 데이터를 개선할 아이디어를 얻을 수 있습니다.

Google Kubeflow

프로덕션급 설루션을 구축할 때 기업은 여러 복잡한 문제에 직면하게 됩니다. 예를 들어, 교육 및 평가를 위한 파이프라인 설정에 많은 시간을 소요할 수도 있습니다. 머신러닝 모델의 실험 및 버전 관리를 추적하는 과정에서 리소스가 많이 필요합니다. 또한, 머신러닝 구성 요소의 출력을 추적 및 재생산하는 과정에서 어려움을 겪을 수도 있습니다.

 

Google Cloud의 Kubeflow는 머신러닝 시스템 구축을 위한 오픈소스 도구 키트입니다. Kubeflow는 머신러닝 워크플로 구축에 특화되어, 비용과 시간을 줄일 수 있습니다. 이 플랫폼은 머신러닝 파이프라인을 구축하고 실험하려는 데이터 과학자를 위한 것입니다. 더불어, 프로덕션 수준의 서비스를 위해 다양한 환경에서 머신러닝 시스템을 개발 및 테스트해야 하는 엔지니어와 운영팀에게도 효율적입니다.

Kubeflow Katib: Scalable, Portable and Cloud Native System for AutoML

아래는 Kubeflow 플랫폼 사용 시 얻을 수 있는 장점입니다.

  • 대규모 머신러닝 시스템 배포 및 관리: Kubeflow의 핵심 사용자 여정(CUJ)는 엔드 투 엔드 워크플로를 위한 소프트웨어 솔루션입니다. 즉, 모델을 쉽게 구축하고 교육, 배포, 개발하고 파이프라인을 생성 및 실행, 탐색할 수 있다는 장점이 있습니다.
  • 머신러닝 모델 교육 및 실험: Kubeflow는 모델 트레이닝을 위한 안정적인 소프트웨어 하위 시스템을 제공합니다.
  • 엔드 투 엔드 하이브리드 및 다중 클라우드 머신러닝 워크로드: Kubeflow는 다중 클라우드 이식성 뿐만 아니라 하이브리드에서 머신러닝 모델을 개발해야하는 요구 사항을 충족합니다.
  • 훈련 중 모델 하이퍼파라미터 튜닝: 하이퍼파라미터 튜닝은 모델 성능과 정확도에 매우 큰 영향을 미칩니다. Kubeflow는 자동화된 하이퍼파라미터 튜너(Katib)를 통해 이를 쉽게 수행할 수 있습니다. 이로 인해 계산 시간을 단축할 뿐만 아니라, 모델 개선에 드는 시간과 리소스를 절약할 수 있죠.
  • 머신러닝을 위한 지속적 통합 및 배포(CI/CD): Kubeflow Pipelines를 사용하면 재현 가능한 워크플로를 생성할 수 있습니다.

그러나 Kuberflow는 네임스페이스 공간인 Kubernetes 환경을 관리하고 유지해야 하는 미션이 있습니다. 이 과정이 일부 조직에게는 다소 어렵고 복잡하게 느껴질 수 있습니다. 또한 Kubeflow를 기존 인프라에 통합하는 과정에서, 조직에서 사용하던 도구가 Kubeflow가 호환되지 않는 경우도 종종 있습니다.

모든 MLOps는 구체적인 솔루션을 적용하기에 앞서 조직의 요구사항과 기능을 신중하게 평가할 필요가 있습니다.

Tensor Flow Extension

Tensor Flow Extension(TFX)는 TensorFlow를 기반으로 하는, Google 프로덕션 규모의 머신러닝 플랫폼입니다. TensorFlow Extension 파이프라인은 확장 가능하고 재현 가능한 머신러닝 워크플로우 구축을 위한 도구로 불립니다. 데이터 변환 및 처리, 특징 추출, 모델 훈련, 성능 평가 등을 수행하는 구성요소가 포함되어 있습니다. TFX 파이프라인의 기본 구성 요소 중 하나는 데이터 전처리나 탐색, 모니터링에서 중요한 역할을 하는 TensorFlow 데이터 유효성 검사(TFDV)입니다.

TensorFlow Extension 기능:

  • TensorFlow Extension을 사용하면 Apache Airflow, Apache Beam 및 Kubeflow Pipelines와 같은 여러 플랫폼에서 머신러닝 워크플로우를 조정할 수 있습니다.
  • TensorFlow Extension는 머신러닝 교육 스크립트의 일부로 사용할 수 있는 표준 구성 요소 집합입니다. 손쉬운 프로세스 구축을 가능하게 하는 기능이 포함되어 있습니다. 또한 고급 작업이나 모델링, 교육 및 머신러닝 실험 관리 수행에 도움이 되는 머신러닝 파이프라인 구현을 위한 구성요소가 포함되어 있습니다.

The TFX User Guide

TFDV는 데이터 집합을 탐색, 시각화 및 정리하는 데 필수적인 기능을 제공합니다. 데이터를 검사하여 데이터 유형, 범주 및 범위를 자동으로 추론하여 이상값과 누락된 값을 식별하는 데 도움을 줍니다. 또한, 데이터 집합을 이해하는 데 도움이 되는 시각화 도구를 제공하여 패턴, 이상값 및 잠재적인 문제를 더 쉽게 발견할 수 있습니다. 학습된 스키마 및 통계와 비교하여 수신 데이터를 지속적으로 평가함으로써 TFDV는 잠재적인 데이터 문제를 알리거나 새로운 데이터에 대한 모델 재교육이 필요함을 나타낼 수 있습니다.

MLflow

MLflow는 End-to-End ML Lifecycle을 관리하기 위한 오픈소스 플랫폼입니다. MLflow는 라이브러리나 언어에 구애받지 않고, 클라우드를 비롯한 어떤 환경에서든 동일하게 작동합니다. 오픈소스인 만큼 확장성이 매우 훌륭한데, 사용 조직의 규모가 1명이든 1,000명 이상이든 유용하게 사용할 수 있도록 고안되었습니다. MLflow 플랫폼은 크게 MLflow Tracking, MLflow Projects, MLflow Models, MLflow Model Registry의 컴포넌트로 구성되어 있습니다.

Source:   https://www.mlflow.org/

mlfow에서 눈여겨볼 특징은 다음과 같습니다.

  • MLflow Tracking: 실험 기록을 추적하며, 파라미터와 그 결과를 비교합니다.
  • MLflow Projects: ML code를 재사용, 재구현 가능한 형태로 패키징하여 다른 데이터 과학자들과 공유하거나 프로덕션으로 변환합니다.
  • MLflow Models: 다양한 ML 라이브러리로 만들어진 모델을 관리하고 다양한 모델 서빙과 추론 플랫폼으로 배포합니다.
  • MLflow Registry: 중앙 모델 스토어를 제공함으로써, 한 MLflow 모델의 전체 라이프 사이클을 협동적으로 관리합니다. 이러한 관리 작업에는 모델 버전 관리(versioning), 모델 스테이지 관리(stage transitions), 주석 처리등을 포함합니다.

출처: databricks slideshare ( https://www.infoq.com/presentations/mlflow-databricks/) ‍

 

MLflow는 모델을 학습하고 재현하는 과정 이후, 모델이 정해진 양식에 따른 입력을 받았을 때 추론 결과를 배포할 수 있도록 다양한 환경 (Docker, Spark, Kubenetes…) 다양한 툴(Tensor flow, Scikiy-Learn..)로 모델 배포를 할 수 있는 스탠더드 역할을 수행해 줍니다.

  • ML 모델을 위한 패키징 포맷 제공: ML 모델 파일이 있는 어떤 디렉터리든 사용 가능합니다.
  • 재생산성을 위해 dependency 정의: ML 모델의 config에 콘다 환경등의 dependency에 대한 정보를 제공할 수 있습니다.
  • 모델 생성 유틸리티: 어떤 프레임워크에서 나온 모델이든 MLflow 포맷으로 저장해 줍니다.
  • 배포(Deployment) API: CLI/python/R/Java 등의 배포 API를 제공합니다.

WandB - Weights and Biases

WandB, Weights and Biases는 “Developer가 더 나은 모델을 더 빠르게 만들 수 있도록 하는 ML Platform”입니다. 학습 모니터링뿐만 아니라 Hyper-Parameter Tuning과 Dataset, Model Versioning을 지원하며 클라우드 기반으로 실험을 관리하는 편의성도 함께 제공합니다.

출처:   https://wandb.ai/site

WandB는 ML Lifecycle을 간소화하고 ML engineer의 편의성을 위해 End-to-End MLOps 플랫폼으로써 크게는 아래 5가지 기능을 제공하고 있습니다.

  • Experiments: 머신러닝 모델 실험을 추적하기 위한 Dashboard 제공.
  • Artifacts: Dataset version 관리와 Model version 관리.
  • Tables: Data를 loging하여 W&B로 시각화하고 query하는 데 사용.
  • Sweeps: Hyper-parameter를 자동으로 tuning하여 최적화 함.
  • Reports: 실험을 document로 정리하여 collaborators와 공유.

위에 5가지 기능을 통해 여러 사람과 협업하고, 효율적인 프로젝트 관리를 할 수 있습니다. 또한 여러 Framework와 결합이 가능해 확장성이 뛰어나다는 장점을 가지고 있습니다. 이번 글에서는 Experiments에 대해서 소개드리겠습니다. Experiments 기능은 모델을 학습할 때, 모델 학습 log를 추적하여 Dashboard를 통해 시각화를 해줍니다. 이를 통해서 학습이 잘 되고 있는지 빠르게 파악할 수 있습니다.

적합한 MLOps 플랫폼 선택하는 방법

플랫폼 별로 각각의 장단점이 있기 때문에, 적절한 플랫폼을 선택하기에 앞서 상세 내용을 자세히 볼 필요가 있습니다.

Amazon SageMaker

장점

  • 컴퓨팅 자원(Instance) 자체 제공
  • 다양한 기능 제공
  • Autopilot - 표(Tabular) 형식 데이터에 대해 자동으로 다양한 모델을 찾고 학습하여 최적의 모델을 도출하는 서비스
  • Canvas - 제공하는 모델을 활용해 쉽게 모델을 학습하고 시각화하여 공유할 수 있는 서비스
  • Clarify - 설명 가능한 AI(XAI) 기술을 활용해 데이터 각 속성이 결과에 어떤 영향을 끼쳤는지 쉽게 파악
  • 이 밖의 많은 기능을 노코드, 로우코드 수준에서 제공하여 이용자 편의성 증대
  • 잘 작성된 문서
  • 다양한 예제를 포함한 상세히 기술된 문서
  • AWS 내 타 서비스와의 쉬운 연동
  • AWS의 국내 시장 점유율은 약 70% 수준(기사)으로 압도적 1위. 그만큼 많은 서비스가 AWS 생태계에 의존하고 있기 때문에 타 MLOps 서비스 대비 호환성이 가장 높은 SageMaker를 쉽게 접할 수 있으며 또한 선호됨.
  • 데이터셋 구축을 포함하는 MLOps full package
  • SageMaker Ground Truth를 통해 플랫폼 내에서 데이터 구축까지 제공

단점

  • EC2, S3, ECR을 포함한 AWS 시스템에 대한 이해 요구
  • 만약 AWS에 익숙하지 않은 사용자라면 EC2, S3, ECR과 같은 AWS 내 다른 서비스나 IAM과 같은 개념에 익숙해져야만 함
  • 비교적 비싼 가격
  • 자체적으로 instance를 제공하지만 이용 금액이 부담스러울 수 있음. 예를 들어 NVIDIA V100을 8대 제공하는 p3.16xlarge instance의 경우, 시간당 약 28 USD를 청구함 (금액표, 참고: 직접 서버를 구매해 사용할 경우 손익분기점이 약 34개월)

Vertex AI (Kubeflow와 TFX를 포함)

장점

  • 컴퓨팅 자원(GCP) 자체 제공
  • 활용 가능한 컴퓨팅 자원의 옵션이 SageMaker보다 다양함
  • 다양한 기능 제공
  • Vertex AI Matching Engine - 대규모 확장성과 짧은 지연 시간을 가진 벡터 검색 서비스
  • Vertex Explainable AI - SageMaker Clarify와 마찬가지로 XAI 기술을 통해 모델과 데이터 분석을 가능하게 함
  • Generative AI Studio - PaLM 2, Imagen, Codey 등의 구글에서 발표한 최신 생성 모델을 바로 활용하거나 쉽게 학습 및 배포할 수 있음
  • 전부터 구글에서 관리하던 오픈소스인 Kubeflow, TFX 도입을 통해 기존 MLOps 사용자들에게 비교적 친숙함
  • SageMaker 보다 평균적으로 저렴한 비용 (자료)
  • 잘 작성된 문서

단점

  • 모델 배포 시에 통신 패킷 사이즈가 작게 제한되어 있어 고해상도 이미지나 긴 길이의 오디오 파일 등을 다루기가 어려움
  • 사용하지 않을 때에도 발생하는 기본 비용이 존재하기 때문에 아주 가벼운 서비스를 이용할 경우에는 타 플랫폼보다 많은 비용이 발생할 수 있음

MLflow

장점

  • 플랫폼이 아닌 오픈소스 라이브러리로써 쉬운 학습, 간단한 사용법
  • 학습 설정, 실험 결과를 포함한 정보의 깔끔한 시각화
  • 무료

단점

  • 클라우드를 활용하는 것이 아니기 때문에 환경 조율(Orchestration) 불가
  • Orchestration이란, 작업에 따라 필요한 자원을 자동으로 조절 및 배정하고 예를 들어 클라우드 컴퓨터의 비정상 종료와 같은 자원의 문제가 생겼을 때 알아서 새로운 자원을 할당 받고 환경을 꾸리는 것을 의미함
  • 보안 설정을 다각화 할 수 없음
  • 하나의 프로젝트에서도 구성원에 따라 접근 권한을 다르게 부여해야 할 경우를 다룰 수 없음
  • 별도의 컴퓨팅 자원을 필요로 함

WandB

장점

  • Python에 약간의 코드를 추가하여 활용하는 높은 사용성
  • 학습 설정, 실험 결과를 포함한 정보의 깔끔한 시각화
  • 서비스 시작 선택지 제공
  • 서비스를 자체적으로 제공하는 클라우드에서 사용할 수도 있고 (부분유료), 사용자의 컴퓨터에서 서비스를 시작할 수도 있음

단점

  • 제한된 사용 환경: Python에서만 사용할 수 있음
  • 모델 배포 기능을 제공하지 않음

MLOps 플랫폼 도입 시 고려해야 할 점

초기 데이터 품질 설계

MLOps 도입을 고려하고 계신다면, 설계 초기 단계에서 데이터 품질에 대해 생각해야 합니다. 왜 MLOps 구현에 데이터 품질이 중요할까요?

  • 열악한 데이터 품질은 AI 모델이 의사결정을 내리는 능력에 부정적인 영향을 미칩니다. 또한 눈에 띄지 않는 문제는 잘못된 결론을 도출할 수 있으며, 이러한 문제를 수정하는 데에 비용과 리소스를 낭비할 수 있습니다. 궁극적으로는 이해관계자의 신뢰에 악영향을 줄 수 있습니다.
  • 소비자가 인지한 데이터 품질 문제를 해결하기 위해 엔지니어링을 시도하는 것은 팀의 시간을 낭비하고, 생산성과 사기를 서서히 떨어뜨릴 수 있는 근본적인 문제가 될 수 있습니다.

즉, 낮은 데이터 품질은 머신러닝 모델 개발과 운영팀 모두에게 악영향을 미칠 수 있기 때문입니다.

데이터헌트의 생각

모델 데이터는 MLOps 완성도에 거대한 영향을 미치기 때문에, 데이터 품질부터 세심하게 준비할 필요가 있습니다. 데이터헌트는 머신러닝 라이프사이클 전반에 인공지능을 활용하여 고품질 MLOps를 구축할 수 있습니다. 데이터 라벨링 과정에서 데이터 품질을 꼼꼼하게 평가하고, 입력된 데이터에 대한 분석부터 시작해 설계 단계까지 철저히 하는 것을 원칙으로 합니다.

평균적으로 AI 프로젝트 전체 시간의 80%가 데이터 준비 과정에 사용됩니다. 또한, 전체 프로젝트 중 85%는 실제 사용 단계까지 이르지 못합니다. 프로젝트의 기반이 되는 데이터셋의 양이나 질이 기준에 못 미치는 경우가 많기 때문입니다. 데이터헌트는 Data identifaication, Data aggregation, Data Cleaning, Data Labeling, Data Augmentation 등 오래 걸리는 데이터 구축 작업에서부터 중요성을 인식하고 최선을 다합니다.

데이터헌트는 어떻게 정확도 99%의 고품질 데이터를 구축할 수 있었을까요?

  • 국내 최초 AI Assisted Annotation: 국내 최초로 AI를 접목한 HITL(Human in the loop) 방식의 데이터 가공 서비스 론칭
  • AI 오토라벨링으로 타사 대비 2배 빠른 프로젝트 수행: AI 기반 라벨링 자동화를 통해 프로젝트 소요시간을 최대 2배 단축
  • 업계 최고 수준 정확도: AI 기술, 다중 검수 프로세스, 차별화된 가공 인력으로 이룬 업계 최고 수준의 99%+ 데이터 정확도
  • 최고 수준의 개발 및 운영 인력: 카카오, 쿠팡, IBM, LG 등 IT 기업 핵심 인재로 구성된 개발 인력과 B2G/B2B 프로젝트 경험이 풍부한 운영 인력

데이터헌트는 서비스 2년 차에 1천만 건 이상의 데이터 가공과 구축 사례를 남겼습니다. 또한 2022년 NIA 인공지능 학습용 데이터 구축 사업 4건에 참여했습니다. 4년 연속 데이터바우처 공급기업으로 참여하여 2020년 우수 사례로 선정되는 영광을 받았죠. 다양한 국가 지원 사업 수행 경험을 통해 매년 성장하는 기업이 되었습니다.

요약: MLOps 플랫폼 도입 시, 초기 데이터 설계에 유의한 결정이 필요하다.

  1. MLOps는 머신러닝 모델을 더 쉽게 구축하고 배포, 관리할 수 있으며 안정적인 프레임워크를 구성해야 하는 경우에 큰 효과를 볼 수 있습니다.
  2. 세계적으로 경쟁력있는 MLOps 플랫폼 분석 시, 공통적으로 전체 워크플로/프로세스를 중앙 집중화할 수 있으며 결과 재현이 가능하며, 배포 및 모니터링과 테스트가 용이하다는 공통점이 있습니다.
  3. 완성도 높은 MLOps 구축을 위해서는 초기 데이터의 정확도를 잡아야만 합니다. 낮은 데이터 품질은 이해관계자의 신뢰를 저하시키며 모델 개발과 모니터링 과정에서 비용과 리소스가 낭비됩니다.

딥 러닝이 중요한 이유

‘Deep learning’ in Google Trend

최근 딥 러닝은 방대한 양의 데이터로 훈련할 때, 높은 정확도를 보이면서 인기를 얻고 있습니다. 넷플릭스와 유튜브의 추천 알고리즘, 페이스북의 얼굴 인식 기능 등이 여기에 포함됩니다. 또는 고객 서비스 담당자가 고객 경험 자동화 및 만족도 향상을 위해 딥 러닝을 사용합니다. 딥 러닝은 이렇게 모든 규모의 응용 분야로 발전하고 있습니다.

 

전 세계적으로 생성되고 저장되는 데이터의 양이 증가함에 따라, 데이터가 비즈니스 자산으로서 중요성이 점점 더 커지고 있습니다. 자동화 시스템을 구축하면 방대한 양의 데이터를 수집하고 관리하는 절차가 용이해집니다. 인공지능, 머신러닝, 딥 러닝을 통해 조직은 수많은 데이터에서 가치를 추출하고 시스템 기능을 개선할 수 있습니다.

 

딥 러닝은 앞으로 수십 년간 사회를 변화시킬 기술 소재로 주목받고 있습니다. 신경망은 주가에서 날씨에 이르기까지, 모든 것을 예측하는 데에 더욱 능숙해지고 있습니다.

딥 러닝의 역사

딥 러닝은 1986년 리나 데커가 소개한 머신러닝 커뮤니티에 제공되었으며, 그 이후로 인공지능의 판도를 바꾸며 새로운 수준의 능력과 이해력을 선보였습니다. 이 문단에서는 딥 러닝의 역사에 대해 소개하겠습니다. 만약 인공지능의 전체적인 역사에 대해 자세한 내용이 궁금하시다면, 이 글을 참고하시길 바랍니다.

deep learning timeline ‍

  • 사전 딥 러닝 시대 (~1960년대)
    1965년에 영어로 기능적인 대화를 할 수 있는 ELIZA가 공개되면서 인공지능과 인간 사이의 의사 소통에 대한 가능성이 제기되었습니다. 1967년에 개발된 ‘The nearest neighbor algorithm’은 Pattern recognition 기술의 시작이 되었습니다. 이 알고리즘은 처음에 경로 매핑에 사용되었습니다. 또한 다층 인공 뉴런 네트워크 설계의 발견으로 새로운 상황에 적응하기 위해 숨겨진 레이어를 조정할 수 있는 backpropagation 개발의 시초가 되었습니다.

  • 머신 러닝의 부상 (~1980년대)
    1980년대에 머신러닝은 AI에 대한 새로운 접근 방식으로 등장했습니다. 머신러닝 알고리즘은 명시적으로 프로그래밍하지 않고도 데이터로부터 학습할 수 있어 전문가 시스템보다 유연하고 적응력이 뛰어납니다. 딥 러닝 알고리즘은 원시 입력에서 점진적으로 더 높은 수준의 기능을 추출하기 위해 여러 계층을 사용합니다. 이 시기는 딥 러닝의 초기였지만 backpropagation 알고리즘을 컨볼루션 신경망에 적용하면서 가능성을 확인했습니다.

  • 딥 러닝 혁명 (~2010년대)
    2010년대에는 머신러닝의 일종인 딥러닝 알고리즘이 이미지 인식 분야에서 획기적인 발전을 이루었습니다. 이후 딥러닝은 자연어 처리, 음성 인식, 로봇 공학 등 다양한 문제에 적용되었습니다. 2017년, Ashish Vaswani와 그의 팀원들이 Transformer 모델을 도입하면서 딥 러닝의 판도가 바뀌었죠. 그들은 입력 데이터 각 부분의 중요성을 평가하기 위해 자가 주의를 사용하는 딥 러닝 모델을 보여주었습니다. 이는 NLP 작업 속도를 개선했을 뿐만 아니라, 현대에 가장 주목 받는 대형 언어 모델의 시조가 되었습니다.

  • 주류가 된 인공지능
    우리는 산업 사례 전반에 걸쳐 AI의 접근성과 적용이 놀라울 정도로 급증하는 현재를 목격하고 있습니다. 2022년 11월 30일 ChatGPT가 출시되었으며, 2023년에는 Stable diffusion, DALL-E, Mid journey와 같은 Generative AI가 세상에 모습을 드러냈습니다. NVIDIA, Microsoft, Google, Amazon 등 AI 중점 기업은 이 물결을 적극적으로 활용하며 새로운 기술 개발에 전념하고 있습니다.

딥 러닝 (Deep learning) 작동 원리

작동 방식

딥 러닝은 컴퓨터가 인간의 뇌에서 영감을 얻은 방식으로 데이터로부터 학습하도록 가르치는 머신 러닝 기법입니다. 딥 러닝은 인간 두뇌의 뉴런이 서로 연결되고 소통하는 방식을 모방한 인공 신경망을 생성하는 방식으로 작동합니다.


대부분의 딥 러닝 방식은 신경망 아키텍처를 사용합니다. ‘딥’이라는 용어는 뉴럴 네트워크를 구성하는 숨겨진 레이어(Hidden layer)의 수를 의미합니다. 기존 뉴럴 네트워크는 숨겨진 레이어가 2-3개에 불과했으나, 딥 네트워크는 150개에 이르는 경우도 있죠. 딥 러닝 모델은 수동으로 특징을 추출했던 기존 머신러닝 기법과 달리, 데이터에서 직접 기능을 학습하는 신경망 아키텍처와 함께 레이블링 된 대단위 데이터를 활용하여 훈련합니다.

 

신경망은 상호 연결된 일련의 Nodes로 구성되며, 이는 뉴런을 나타냅니다. 각 Nodes에는 가중치가 있으며, 가중치는 해당 노드가 네트워크의 출력에 얼마나 많은 영향을 미치는지를 결정하는 값입니다. 가중치는 네트워크가 데이터를 학습하면서 시간이 지남에 따라 조정됩니다.

이 내용을 조금 더 자세히 설명하면 다음과 같습니다.

딥 러닝 네트워크의 Nodes

  • 딥 러닝 네트워크에는 일반적으로 여러 계층의 Nodes가 있습니다.
  • 첫 번째 Nodes 계층은 입력 데이터를 받아들이고, 이후의 각 계층은 데이터에서 점점 더 높은 수준의 특징을 추출합니다.

학습 방법

  • 레이블이 지정된 이미지로 구성된 대규모 데이터 세트를 학습하여 객체를 인식하는 방법을 학습합니다.
  • 데이터 세트의 각 이미지에 대해 네트워크에 이미지 속 객체에 대한 올바른 레이블이 지정됩니다.
  • 이후, 예측된 레이블과 올바른 레이블 사이의 오차를 최소화하기 위해 가중치를 조정합니다.

네트워크가 학습되면 새 이미지를 분류하는 데 사용할 수 있습니다. 네트워크는 먼저 새 이미지에서 특징을 추출한 다음, 해당 특징을 사용하여 이미지의 객체를 예측합니다.

머신러닝 VS. 딥 러닝

머신러닝과 딥 러닝은 인공지능의 분야에서 비슷한 개념으로 사용하지만 차이점도 분명합니다. 머신러닝은 입력 데이터와 출력 데이터 사이의 관계를 학습하는 것에 초점을 둡니다. 즉, 데이터를 분석하고 모델을 만들어 결과를 예측하는 것이 목적입니다. 따라서 수학적 모델을 사용하여 데이터를 분석하고, 데이터셋의 특징을 파악한 뒤 모델을 만들어 새로운 데이터를 예측합니다. 반면, 딥 러닝은 인공 신경망을 사용하여 입력 데이터를 처리하여 결과를 예측합니다. 딥 러닝은 머신러닝보다 더 복잡한 데이터를 처리할 수 있습니다. 이미지나 음성, 언어 등 다양한 종류의 데이터에서 더 좋은 성능을 보여주고 있습니다.

Machine learning vs Deep learning (출처:  Artificial Intelligence vs. Machine Learning vs. Deep Learning: Essentials )

딥 러닝과 머신러닝의 차이점을 볼 수 있는 예제를 들자면 아래와 같습니다.

  • 머신러닝: 이미지의 특징을 추출하고 이를 기반으로 분류 모델을 만들어 예측
    이미 정해진 알고리즘으로 이미지의 특징을 추출하고 이를 토대로 Decision Tree, SVM (Support Vector Machine), Random Forest 등의 분류 알고리즘을 사용하여 분류 작업을 수행

  • 딥 러닝: 인공 신경망이 학습 데이터와 정답과의 관계를 통해 이미지의 특징을 스스로 학습하고 분류 결과를 예측
    입력 데이터와 출력 데이터 사이의 복잡한 관계를 스스로 학습하여 예측하기 때문에 더욱 정확한 결과를 제공

물론 그렇다고 해서 모든 분야에서 머신러닝보다 딥 러닝이 우위에 있는 것은 아닙니다. 모델이 복잡하다는 것은 학습에 필요한 데이터의 양과 학습 시간이 많이 필요하다는 뜻이기 때문이죠. 따라서 데이터가 적거나 작은 모델이 필요한 경우, 혹은 결과 해석이 필요하거나 시간과 자원의 제한이 있는 경우 딥 러닝보다 머신러닝이 유리한 선택일 수 있습니다.

딥 러닝 모델 종류 (ANN, RNN, CNN)

딥 러닝은 방대한 양의 연산을 필요로 하기 때문에, 하드웨어가 발달하지 않았던 초기와 달리 기술이 발전한 현재에는 슈퍼컴퓨터를 기반으로 문제점을 해결할 수 있었습니다. 특히 병렬연산에 최적화된 GPU가 개발되면서 딥 러닝 기술이 본격적으로 발전하게 되었죠.

ANN 기법의 여러 문제가 해결되면서 모델 내에 은닉층을 많이 늘려 학습의 결과를 향상하는 방법으로 등장한 DNN (Deep Neural Network)이 있습니다. 컴퓨터가 스스로 분류레이블을 만들어 내고, 공간을 왜곡하고 데이터를 구분 짓는 과정을 반복하여 최적의 구분선을 도출할 수 있습니다. 많은 데이터와 반복학습이 필요하며, 사전 학습과 오류역전파 기법을 통해 현재 널리 사용되고 있습니다. CNN, RNN, LSTM, GRU 등의 방법론이 DNN을 응용한 알고리즘입니다.

 

이 문단에서는 ANN, 그리고 DNN을 응용한 RNN과 CNN에 대해 설명하겠습니다.

1. ANN (Artificial Neural Network)


- 기존의 생물학적 신경망에서 영감을 받아 만들어진 알고리즘
- 입력과 출력 사이의 연결된 뉴런 계층으로 구성된 기본적인 인공 신경망
- 입력 데이터에서 특징을 학습하고 이를 토대로 분류 등의 작업을 수행
- 복잡한 비선형 관계를 학습할 수 있음
- 입력 데이터 간의 순서나 시간적 의존성을 고려하지 않기 때문에, 시계열 등의 데이터 처리에는 한계

2. RNN (Recurrent Neural Network)


- 자신의 이전 상태를 입력으로 받고 출력으로 내보내면서 구성되는 순환 구조를 가진 신경망
- 시계열 데이터 등과 같이 같이 입력 간 순서나 시간적 의존성이 반영되어야 하는 문제에 적합
- 이전 시간 단계의 정보를 현재 시간 단계로 전달하여 과거의 정보를 활용할 수 있음
- 문장 생성, 기계 번역 등의 작업에 적용되며, 시간적인 흐름을 갖는 데이터에 적합

3. CNN (Convolution Neural Network)


- 입력 데이터에 대해 커널 (Convolutional Kernel)을 적용하여 이미지의 특징을 추출
- 추출한 이미지의 특징은 다시 다중 신경망을 거쳐 요약되어 출력으로 사용
- 주로 이미지 처리에 사용되는 알고리즘
- 합성곱과 풀링 등의 연산을 통해 공간적인 구조를 파악하고, 이미지의 특징을 활용하여 정확한 예측

이 중에서 CNN (Convolutional Neural Networks, ConvNet)은 현재 가장 널리 사용되는 신경망 유형입니다. CNN을 이용하면 수동으로 특징을 추출할 필요가 없어지기 때문에, 이미지를 분류하는 데 사용할 특징을 식별하지 않아도 됩니다. 자동화된 특징 추출은 Object classification (객체 분류)와 같은 컴퓨터 비전 작업에서 딥 러닝 모델을 매우 정확하게 구현한다는 장점이 있습니다.

딥 러닝 훈련 방법

 
 
ANN의 overfitting, 과적합

인공 신경망(ANN)을 훈련할 때 초기 초점은 무작위로 설정됩니다. 결과에 대한 평가의 정확성을 의미하는 ANN의 궁극적인 효과는 훈련에서 사용되는 예시 데이터에 큰 영향을 받습니다. 

 

기본적인 딥러닝의 방식에서 훈련은 Neural Network, 신경망에 샘플이 입력되면 초기에는 target, 결과물을 랜덤으로 설정합니다. 그러고 나서 샘플 데이터가 서서히 추가됩니다. 학습 규칙은 입력 데이터 및 예상 결과에 따라 관계의 weight, 가중치를 조정하게 됩니다.

 

이를 얼마나 잘 예측하고 조정하는지가 핵심이기 때문에 loss function, 손실 함수가 신경망의 예측과 진짜 타깃(신경망의 출력으로 기대하는 값)의 차이를 점수로 계산합니다. 이 점수를 피드백 신호로 사용하여 현재 샘플의 손실 점수가 감소되는 방향으로 가중치 값을 조금씩 수정하게 됩니다. 데이터가 추가되면서 랜덤 한 변환을 연속적으로 일어날 경우 자연스럽게 출력은 기대한 것과 멀어지고 손실 점수가 매우 높을 것입니다.

 

하지만 네트워크가 모든 샘플을 처리하면서 가중치가 조금씩 올바른 방향으로 조정되고 손실 점수가 감소합니다. 이를 훈련 반복 (training loop)이라고 하며, 충분한 횟수만큼 반복하면(일반적으로 수천 개의 샘플에서 수십 번 반복하면) 손실 함수를 최소화하는 가중치 값을 산출합니다. 최소한의 손실을 내는 네트워크가 타깃에 가능한 가장 가까운 출력을 만드는 모델이 됩니다. 

 

일반적으로 훈련 내용에 변동성이 높은 예시 데이터가 많이 포함될수록 추론에서 더 정확한 결과를 얻을 수 있습니다. 매우 유사하거나 반복적인 데이터를 사용하여 훈련을 수행하는 경우, ANN은 예시 데이터와 다른 분야의 데이터를 추정할 수 없게 됩니다. 이 경우 overfit, 과적합 되었다고 표현합니다.

 
728x90
반응형
LIST