본문 바로가기
정리/실무가 훤히 보이는 머신러닝&딥러닝

2장_인공지능을 적용하기 위한 방법

by 스꼬맹이브로 2023. 2. 6.
728x90
반응형
SMALL

인공지능 기술을 사용하기 위해서는 인공지능 서비스를 위해 사용 가능한 도구와 어떤 기술들이 있는지 부터 먼저 이해해야 함.

 

2장에서는..

- 인공지능 기술을 개발할 때 많이 활용되는 개발 언어

- 머신러닝이나 딥러닝 적용을 위해 사용되는 대표적인 오픈소스 소프트웨어

- 쉽게 개발하고 활용할 수 있는 클라우드 기반 서비스

에 대하여 알아봄

 

2.1 인공지능 적용 기술의 분류

출처 : 실무가 훤히 보이는 머신러닝 & 딥러닝

  • 플랫폼(Platform)
    • 데이터 수집, 저장 및 데이터 분석까지 포함하는 기반 환경
    • 인공지능의 머신러닝 및 딥러닝 기술 포함
    • 도구, 프레임워크 등 이후 분류들을 모두 포괄하는 가장 큰 구조로 통상적으로 분산 환경을 지원
  • 도구(Tools) 
    • 인공지능 프로그램을 쉽게 개발할 수 있도록 지원하는 개발 도구
    • 서비스 운영 및 개발 환경을 구성하기 위한 편의성 제공
  • 프레임워크(Framework) 
    • 머신러닝 및 딥러닝 알고리즘을 학습하고 실행할 수 있도록 개발된 전문화된 소프트웨어
  • 언어(Language)
    • 인공지능 개발에 활용되는 개발 언어
    • 자바, C, R, 파이썬 등
  • 포맷(Format) 
    • 데이터를 잘 다루기 위한 라이브러리
    • 대량의 다차원 데이터를 좀 더 편리하게 다룰 수 있도록 지원
  • 클라우드 서비스(Cloud Service)
    • 분산 클라우드 환경을 지원하는 인공지능 서비스
    • 이미 학습이 완료된 모델 형태의 서비스부터 딥러닝을 분산 환경에서 쉽게 개발, 학습 및 배포 서비스까지 할 수 있는 SaaS(Software as a Service) 및 Paas(Platform as a Service) 환경을 의미

 

2.2 인공지능 개발을 위한 분산 플랫폼 환경

- 인공지능 기술 개발을 위해서는 대량의 데이터,이를 위한 저장소, 분산된 GPU 서버 환경이 필요함

- 단독 머신에서 학습하려면 저장소의 한계와 오랜 시간이 소요

→ 규모가 있는 인공지능 개발 환경을 구축하기 위한 분산 환경이 필요

 

이를 위해 빅데이터 분석 플랫폼들은 데이터 수집, 저장, 분석을 위한 분산 환경을 지원

  • 스파크(Spark) : 스파크 머신러닝 프레임워크를 통해 전통적인 머신러닝 알고리즘 수행 가능
  • 하둡(Hadoop) : 머하웃(Mohout), Deeplearning4j와 같은 머신러닝 프레임워크 사용 가능
  • 쿠다(CUDA) : GPU 전문 기업인 엔비디아(NVIDIA)에서 개발하여 프레웨어로 제공

 

2.3 인공지능 개발을 지원하는 도구

인공지능 알고리즘을 개발하고 테스트하는 데 도움을 받을 수 있는 도구들

  • 주피터 노트북(Jupyter Notebook) : 웹 개발의 애플리케이션으로 코드와 문서를 동시에 작성하고 실행 가능

 

2.4 딥러닝과 머신러닝 전용 프레임워크

출처 : https://www.popit.kr

그림은 대표적인 인공지능 프레임워크 기술의 발전 역사를 나타냄

2015년도 구글에서 발표한 텐서플로(Tensorflow)는 개발이 크게 확장되는 계기가 되었음

최근에는 파이토치(Pytorch) 활용도가 높아지고 있음

  • 카페(Caffe)
    • 장점
      • 빠른 속도와 모듈성을 내세운 인공지능 프레임워크
      • C/C++로 작성되어 있음
      • 프로그래밍 대신 설정 파일로 학습 방법 정의
      • 카페 모델 주(Caffe Model Zoo)를 통한 다양한 사전 학습 모델 제공
      • 파이썬 연동을 통한 용이한 개발
      • 이미지 분류를 목적으로 개발 - 이미지 분류 작업에서 탁월한 성능을 입증받음
    • 단점
      • 1GB 이상 GPU메모리 필요
      • 이미지 이외의 텍스트, 사운드 등의 데이터 처리에는 부적합
      • 유연하지 못한 API
      • 문서화 부족 - 지원 받기 힘들고 설치 과정도 매끄럽지 못함
      • 순환 신경망 성능이 좋지 못함
  • Deeplearning4j(DL4J)
    • 장점
      • 자바 기반으로 쉬운 이식성(Portability) 및 엔터프라이즈 시스템 수준의 안정성 제공
      • 스파크 기반의 분산 처리 지원
      • 문서화가 잘 되어 있음
      • 학습 디버깅을 위한 시각화 도구 DL4J UI 제공
    • 단점
      • 기반이 되는 테아노, 텐서플로에서 문제 발생시 디버깅 어려움
  • 텐서플로(TensorFlow)
    • 장점 
      • 추상화된 그래프 모델
      • 데이터 및 모델의 병렬화 처리
      • 학습 디버깅을 위한 시각화 도구 텐서보드(Tensorboard) 제공
      • GPU 지원
      • 방대한 사용자 커뮤니티
    • 단점
      • 토치(Torch)에 비해 처리 속도가 느림
      • 비교적 빠르지 않은 성능
      • 사전 학습된 모델이 많지 않음
      • 세션을 이용한 부자연스러운 코딩 스타일
  •  테아노(Theano)
    • 장점 
      • 추상화된 그래프 모델 지원
      • 데이터를 탐색하거나 수치 계산에 매우 유용
    • 단점
      • 다중 GPU 미지원
      • 부족한 사전 학습 모델
      • 부적절한 에러 메시지로 인해 에러를 수정하기 어려움
  • 토치(Torch)
    • 장점
      • 알고리즘 모듈화가 잘 되어 있어 사용이 용이
      • 다양한 데이터 전처리 및 시각화 유틸리티 제공
      • OpenCL 지원
      • 모바일 지원
    • 단점
      • 협소한 사용자 커뮤니티
      • 연구용으로 적합
      • 생소한 루아(Lua) 언어(파이토치는 파이썬)
      • 부족한 문서화

 

2.5 인공지능 개발을 위한 프로그램 언어

  • 파이썬
    • 사이킷런(scikit-learn) : 파이썬의 표준 머신러닝 라이브러리, 대부분의 머신러닝 모델을 제공
    • 넘파이(Numpy) : 과학 계산용 파이썬 라이브러리
    • 판다스(pandas) : 데이터 처리와 분석을 위한 파이썬 라이브러리
    • 맷플롯립(matplotlib) : 파이썬에서 자료를 차트(chart)나 플롯(plot)으로 시각화하는 라이브러리
  • R
    • 셀레늄(Selenium) : 웹크롤링 패키지
    • Ggplot2 : 데이터 시각화 패키지
    • C50 : 의사결정나무 알고리즘 패키지
    • E1071 : 서포트 벡터 머신(SVM)과 나이브 베이즈(Naive Bayes) 알고리즘 패키지
  • 자바
    • 아파치 머하웃(Apache Mahout) : 클러스터링, 분류 등 대규모 데이터 처리 알고리즘 제공
    • 아파치 스파크(Apache Spark) : 실시간 데이터 스트림 처리, 분류, 회귀 알고리즘 제공
    • DL4J(Deeplearning4j) : 자바와 스칼라로 작성된 오픈소스 딥러닝 라이브러리. 아파치 스파크와 하둡 포함
  • C/C++
    • Eblearn : 뉴욕대학 머신러닝 연구소의 오픈소스 C++ 라이브러리. 이미지 인식 특화
    • Shogun : C++구현, 다양한 언어와 운영체제 지원, 통합된 인터페이스 제공
    • Dlib : 광범위한 머신러닝 알고리즘 포함. API를 통해 사용하기 쉽게 설계, 얼굴 인식 분야에서 인기

 

2.6 데이터를 효과적으로 다루기 위한 포맷

  • 판다스(Pandas) : 테이블 형태의 데이터를 다루기 위한 데이터프레임 자료형 제공
  • 넘파이(Numpy) : 대량의 수치 데이터를 저장하고 수치 해석, 선형대수 등이 계산을 수행하게 해주는 파이썬 언어 지원

 

2.7 접근과 사용이 용이한 클라우드 기반 인공지능 서비스

  • 인공지능 SaaS API서비스
    • 아마존 웹서비스(AWS) : 자연어 처리, 음성 인식, 이미지 처리, 이미지 인식, 음성 합성, 머신러닝 등의 API 제공
    • 구글 클라우드 플랫폼 : 이미지 검색, 음성 인식, 머신러닝 등 기능을 자사 서비스에 적용하며 클라우드 서비스로 제공
    • 마이크로소프트 애저 : 비주얼 스튜디오의 경험을 살려 애저 머신러닝 스튜디오 서비스를 지원
  • 챗봇을 위한 인공지능 서비스
    • 아마존 렉스 : 알렉스를 기반으로 음성이나 텍스트를 이용한 대화 기능을 인공지능 기술로 구현한 서비스
    • 애저 봇 서비스 : 별도의 서버 구성 없이 사전에 정의된 템플릿을 이용해 빠르게 챗봇을 구성할 수 있는 기능 제공
  • 클라우드 서비스로 제공하는 딥러닝
    클라우드를 이용한 인공지능 구현은 환경 구성 시간을 아낄 수 있을 뿐만 아니라 분산 환경을 통해 대량의 서버를 활용할 수 있으며 손쉬운 서비스 연결이 가능하다는 장점이 있다. 
    • AWS 딥러닝 AMI : Amazon Clowd Formation을 통해 딥러닝을 위한 스케일 확장 및 분산 처리 지원
    • 마이크로소프트 애저 머신러닝 : 마이크로소프트 애저 클라우드에서 여러 딥러닝 엔진들을 파이프라인으로 구성해 학습 및 테스트를 수행해 볼 수 있는 서비스, 그래픽 UI를 이용해 흐름을 구성할 수 있어 쉽게 개발 가능
    • 구글 클라우드 머신러닝 엔진 : 텐서플로를 클라우드 기반 서비스로 제공
  • 딥러닝과 머신러닝을 위한 통합 도구
    • AWS의 세이지메이커 : 아마존 웹 서비스에서 제공하는 플랫폼으로 주피터 노트북을 개발도구로 제공
    • 구글 코랩 : 주피터 노트북 기반의 머신러닝 개발, 테스트 및 학습 환경 제공
    • 백엔드 AI : 주피터 노트북 기반의 개발이며 설치된 gpu와 cpu 자원을 공유할 수 있는 환경 제공
    • Acculnsight+ : 데이터 수집, 처리, 분석 및 시각화 지원

 

728x90
반응형
LIST