검수요청.png검수요청.png

"머신러닝"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(머신러닝 실패 원인)
잔글 (같이 보기)
 
(사용자 3명의 중간 판 9개는 보이지 않습니다)
5번째 줄: 5번째 줄:
  
 
== 역사 ==
 
== 역사 ==
* 1949년 : 도날드 헵(Donald Hebb)이 [[헵의 학습 규칙]](Hebbian Learning Theory)을 발표
+
* 1949년 : 도날드 헵(Donald Hebb)이 헵의 학습 규칙(Hebbian Learning Theory)을 발표
* 1952년 : IBM에서 근무하던 아서 사무엘(Arthur Samuel)이 최초의 머신러닝 프로그램이라 할 수 있는 [[체커 프로그램]]을 개발
+
* 1952년 : IBM에서 근무하던 아서 사무엘(Arthur Samuel)이 최초의 머신러닝 프로그램이라 할 수 있는 체커 프로그램을 개발
* 1957년 : 프랭크 로젠블랫(Frank Rosenblatt)이 [[퍼셉트론]](Perceptron)이라는 개념 발표
+
* 1957년 : 프랭크 로젠블랫(Frank Rosenblatt)이 퍼셉트론(Perceptron)이라는 개념 발표
 
* 1959년 : 아서 사무엘의 논문에서 최초로 머신 러닝 정의
 
* 1959년 : 아서 사무엘의 논문에서 최초로 머신 러닝 정의
* 1960년 : 버나드 위드로우(Bernard Widrow), 테드 호프(Ted Hoff)가 [[델타 규칙]](Delta Learning Rule)을 발표
+
* 1960년 : 버나드 위드로우(Bernard Widrow), 테드 호프(Ted Hoff)가 델타 규칙(Delta Learning Rule)을 발표
* 1981년 : 폴 웨어보스(Paul John Werbos)가 [[다층 퍼셉트론]](Multilayer Perceptron)을 [[역전파]](Back Propagation)로 계산하는 방법 발표
+
* 1981년 : 폴 웨어보스(Paul John Werbos)가 다층 퍼셉트론(Multilayer Perceptron)을 역전파(Back Propagation)로 계산하는 방법 발표
* 1986년 : 로스 퀸란(John Ross Quinlan)이 머신러닝의 주류가 된 [[의사 결정 나무]](Decision Tree)라는 알고리즘 발표
+
* 1986년 : 로스 퀸란(John Ross Quinlan)이 머신러닝의 주류가 된 의사 결정 나무(Decision Tree)라는 알고리즘 발표
* 1995년 : 블라디미르 바프닉(Vladimir Vapnik)와 코리나 코르테스(Corinna Cortes)가 [[서포트 벡터 머신]](Support Vector Machine, SVM) 발표
+
* 1995년 : 블라디미르 바프닉(Vladimir Vapnik)와 코리나 코르테스(Corinna Cortes)가 서포트 벡터 머신(Support Vector Machine, SVM) 발표
* 1995년 : IBM에서 근무하던 틴 캄 호(Tin Kam Ho)가 [[랜덤 의사 결정 포리스트]](Random Decision Forests)라는 개념을 최초로 발표
+
* 1995년 : IBM에서 근무하던 틴 캄 호(Tin Kam Ho)가 랜덤 의사 결정 포리스트(Random Decision Forests)라는 개념을 최초로 발표
* 1997년 : 요아브 프룬드(Yoav Freund)와 로버트 샤파이어(Robert Schapire)가 부스팅 앙상블 기법을 사용한 [[에이다부스트]](AdaBoost)라는 알고리즘 발표
+
* 1997년 : 요아브 프룬드(Yoav Freund)와 로버트 샤파이어(Robert Schapire)가 부스팅 앙상블 기법을 사용한 에이다부스트(AdaBoost)라는 알고리즘 발표
* 1997년 : 레오 브레이만(Leo Breiman)이 [[그래디언트 부스팅]](Gradient Boosting)이라는 개념 제안
+
* 1997년 : 레오 브레이만(Leo Breiman)이 그래디언트 부스팅(Gradient Boosting)이라는 개념 제안
* 2001년 : 레오 브레이만이 랜덤 의사 결정 포리스트를 발전시킨 [[랜덤 포레스트]](Random Forest)라는 알고리즘 발표
+
* 2001년 : 레오 브레이만이 랜덤 의사 결정 포리스트를 발전시킨 랜덤 포레스트(Random Forest)라는 알고리즘 발표
  
 
== 특징 ==
 
== 특징 ==
 
 
=== 지도학습 ===
 
=== 지도학습 ===
 
입력과 출력 사이의 [[매핑]]을 학습하는 것이며 입력과 출력 쌍이 데이터로 주어지는 경우에 적용한다. 지난 데이터를 기준으로 앞으로 있을 이벤트를 예측하는데 보편적으로 사용된다. 예를 들면 신용 카드의 사기성이나 보험 가입자의 보험금 청구 가능성 여부 등을 예측하는 데 효과적이다. 대표적으로 의사결정 나무(Desicion Tree), KNN(L-nearest neighbor), 신경망(Neural Network), 서포트벡터 머신(Support Vector Machine) 등이 있다.
 
입력과 출력 사이의 [[매핑]]을 학습하는 것이며 입력과 출력 쌍이 데이터로 주어지는 경우에 적용한다. 지난 데이터를 기준으로 앞으로 있을 이벤트를 예측하는데 보편적으로 사용된다. 예를 들면 신용 카드의 사기성이나 보험 가입자의 보험금 청구 가능성 여부 등을 예측하는 데 효과적이다. 대표적으로 의사결정 나무(Desicion Tree), KNN(L-nearest neighbor), 신경망(Neural Network), 서포트벡터 머신(Support Vector Machine) 등이 있다.
27번째 줄: 26번째 줄:
 
대표적으로 [[클러스터링]](Clustering, 군집화), [[FDS 시스템]](금융 위험 이상 탐지 시스템)이 있다.
 
대표적으로 [[클러스터링]](Clustering, 군집화), [[FDS 시스템]](금융 위험 이상 탐지 시스템)이 있다.
  
;준지도 학습(Semisupervised Learning)
+
* '''준지도 학습'''(Semisupervised Learning) : 레이블이 지정된 데이터와 레이블이 지정되지 않은 데이터를 모두 사용해 트레이닝한다는 점에서 지도 학습과 차이가 있다. 레이블 지정에 따른 비용이 너무 높아 완전한 레이블 지정 트레이닝이 어려운 경우에 유용하며, 웹 캠을 이용한 안면 인식 기술 등에서 사용된다. 대표적으로 제한된 볼츠만 머신(Restricted Boltzmann Machine, RBM)을 여러 겹으로 쌓은 심층 신뢰 신경망(Deep Belief Network, DBN)이 있다.
레이블이 지정된 데이터와 레이블이 지정되지 않은 데이터를 모두 사용해 트레이닝한다는 점에서 지도 학습과 차이가 있다. 레이블 지정에 따른 비용이 너무 높아 완전한 레이블 지정 트레이닝이 어려운 경우에 유용하며, 웹 캠을 이용한 안면 인식 기술 등에서 사용된다.
+
 
대표적으로 제한된 볼츠만 머신(Restricted Boltzmann Machine, RBM)을 여러 겹으로 쌓은 심층 신뢰 신경망(Deep Belief Network, DBN)이 있다.
+
* '''강화 학습'''(Reinforcement Learning) : 주어진 입력에 대응하는 시스템에 대해 적용하며 로봇, 게임 및 내비게이션에서 많이 이용된다. 시행착오를 거쳐 보상을 극대화할 수 있는 행동을 찾아내며, 에이전트가 일정한 시간 내에 예상되는 보상을 극대화할 수 있는 동작을 선택하도록 한다. 대표적으로 [[딥러닝]](Deep Learning)이 있다.
 +
 
 +
* '''배치 학습'''(Batch Learning) : 시스템이 점진적으로 학습할 수 없어 가용한 데이터를 모두 사용해 훈련시켜야 한다. 일반적으로 시간과 자원을 많이 소모하기 때문에 보통 오프라인에서 수행되는 경우가 많다.
 +
 
 +
* '''오프라인 학습'''(Offline Learning) : 학습한 것을 적용만 하는 훈련 방법이다.
 +
 
 +
* '''온라인 학습'''(Online Learning) : 데이터를 순차적으로 한 개씩 또는 미니배치(Mini-batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 컴퓨팅 자원이 제한되거나 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다. 점진적 학습(Incremental Learning)이라고도 한다.
 +
 
 +
* '''사례 기반 학습'''(Instance-based Learning) : 가장 간단한 형태의 학습. 시스템이 단순히 여러 사례를 메모리에 저장하는 것으로 학습한다. 메모리 기반 학습이라고도 한다. 대표적으로 유사도를 분류하여 스팸 메일을 분류함으로써 새로운 데이터에 일반화하는 것을 확인할 수 있다.
 +
 
 +
* '''모델 기반 학습'''(Model-based Learning) : 여러 샘플 데이터들의 모델을 만들어 사용하는 방식으로 학습한다.<ref> 로드홈, 〈[https://tensorflow.blog/%ED%95%B8%EC%A6%88%EC%98%A8-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-1%EC%9E%A5-2%EC%9E%A5/1-3-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%A2%85%EB%A5%98/ 머신러닝 시스템의 종류]〉, 《개인 블로그》 </ref>
  
;강화 학습(Reinforcement Learning)
+
=== 프레임워크 ===
주어진 입력에 대응하는 시스템에 대해 적용하며 로봇, 게임 및 내비게이션에서 많이 이용된다. 시행착오를 거쳐 보상을 극대화할 있는 행동을 찾아내며, 에이전트가 일정한 시간 내에 예상되는 보상을 극대화할 수 있는 동작을 선택하도록 한다. 대표적으로 [[딥러닝]](Deep Learning)이 있다.
+
더욱 많은 사람들이 머신러닝을 이용할 있도록 오픈소스 프레임워크가 다수 개발되고 있다.<ref> 〈[https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software Comparison of deep-learning software]〉, 《위키백과》 </ref>
  
;배치 학습(Batch Learning)
+
* '''텐서플로'''(TensorFlow) : [[구글]](Google) 브레인팀에서 [[파이썬]](Python)기반으로 개발되었으며, 2015년에 11월 9일 아파치 2.0 오픈소스 라이센스로 공개되었다.<ref> 텐서플로우 공식 홈페이지 - https://www.tensorflow.org/ </ref> 구글 디벨로퍼(Google Developers)에서 텐서플로우를 이용한 머신러닝 단기 속성 집중 과정이 제공되고 있다.<ref> 구글 머신러닝 단기 집중 과정 공식 페이지 - https://developers.google.com/machine-learning/crash-course/?hl=ko </ref> 텐서플로 2.0 웹사이트에서 텐서플로 프로젝트를 '종합적인 오픈소스 머신러닝 플랫폼'으로 소개하고 있으나 현재는 연구자들이 AI 기반 애플리케이션을 구축하고 배포하는 데 도움이 되는 툴, 라이브러리, 커뮤니티 리소스의 생태계로 발전하였다.
시스템이 점진적으로 학습할 수 없어 가용한 데이터를 모두 사용해 훈련시켜야 한다. 일반적으로 시간과 자원을 많이 소모하기 때문에 보통 오프라인에서 수행되는 경우가 많다.
 
  
;오프라인 학습(Offline Learning)
+
* '''테아노'''(Theano) : 2010년 11월 제임스 버그스트라(James Bergstra)와 프레드릭 바스테인(Frederic Bastien)이 출시한 테아노(Theano)는 '최초의 딥러닝 라이브러리' 중 하나이다. 파이썬 기반이며 CPU 및 GPU의 수치 계산에 매우 유용하다는 특징이 있다.
학습한 것을 적용만 하는 훈련 방법이다.
 
  
;온라인 학습(Online Learning)
+
* '''케라스'''(Keras) : 2015년 3월 구글의 프랑수아 숄레(Franscois Chollet)가 출시한 케라스(Keras)는 파이썬 기반이며 매우 가볍고 배우기가 쉽다. 효율적인 신경망 구축을 위한 단순화 된 인터페이스로 개발되었다. 테아노 기반이지만 토치처럼 모듈화가 잘 되어있어 사용하기가 쉽다. 최근에도 계속 업데이트되어 빠른 속도로 발전하고 있는 라이브러리이다.
데이터를 순차적으로 한 개씩 또는 미니배치(Mini-batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 컴퓨팅 자원이 제한되거나 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다. 점진적 학습(Incremental Learning)이라고도 한다.
 
  
;사례 기반 학습(Instance-based Learning)
+
* '''카페'''(Caffe) : 양징 지아(Yangqing Jia)와 이반 쉘햄머(Evan Shellhamer)가 만든 카페(Caffe)는 버클리 대학에서 관리하고 있으며 현재 가장 많은 사람들이 사용하고 있다고 추정되는 라이브러리이자 '최초의 딥러닝 라이브러리' 중 하나이다. C++뿐 아니라 파이썬과 매트랩(Matlab) 인터페이스도 잘 구현되어있다.<ref>최명섭·김주용, 〈[https://aikorea.org/blog/dl-libraries/ 프로그래밍 언어별 딥러닝 라이브러리 정리]〉, 《개인 블로그》, 2015-09-10</ref> 카페는 이미지 처리에 특화되어 있으며 프로그래밍 대신 설정 파일로 학습 방법을 정의한다. 또한 'Caffe Model Zoo'<ref> 이승현, 〈[https://hamait.tistory.com/519 Caffe에서 이미 제고하는 모델(Model Zoo) 정리]〉, 《개인 블로그》, 2016-03-13 </ref>에서 미리 훈련된 여러 네트워크를 바로 사용할 있다는 장점이 있다. 그러나 이미지 이외의 텍스트 및 사운드의 데이터 처리에는 부적합하며 문서화가 잘 되어있지 않고 API가 유연하지 않다는 단점이 있다.
가장 간단한 형태의 학습. 시스템이 단순히 여러 사례를 메모리에 저장하는 것으로 학습한다. 메모리 기반 학습이라고도 한다. 대표적으로 유사도를 분류하여 스팸 메일을 분류함으로써 새로운 데이터에 일반화하는 것을 확인할 수 있다.
 
  
;모델 기반 학습(Model-based Learning)
+
* '''토치'''(Torch) : Lua 기반의 딥러닝 프레임워크이다. 페이스북, 트위터, 구글 등에서 사용하고 개발하고 있다. '최대한의 유연성을 달성하고 모델을 제작하는 과정을 매우 간단하게 만드는 것'을 목표로 만들어졌으며, 최근 파이썬으로 포팅한 'PyTorch'가 페이스북에서 활용되면서 주목을 받고 있다. 알고리즘 모듈화가 잘 되어있어 사용이 용이하며 다양한 데이터 전처리 및 시각화 유틸리티를 제공한다. 또한 Lua 프로그래밍 구문을 사용해 간단하며 OpenCL을 지원한다는 장점이 있다. 그러나 토치 또한 사용자 커뮤니티가 협소하며 상용 애플리케이션이 아닌 연구용으로 적합하다는 단점을 가지고 있다.
여러 샘플 데이터들의 모델을 만들어 사용하는 방식으로 학습한다. <ref> 로드홈, 〈[https://tensorflow.blog/%ED%95%B8%EC%A6%88%EC%98%A8-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-1%EC%9E%A5-2%EC%9E%A5/1-3-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-%EC%A2%85%EB%A5%98/ 머신러닝 시스템의 종류]〉, 《개인 블로그》 </ref>
 
  
 +
* '''DL4J'''(Deep Learning 4 J) : 아담 깁슨(Adam Gipson)과 크리스 니콜슨(Chris Nicholson)이 2014년 6월에 출시한 DL4J(Deep Learning 4 J, N-Dimensional Arrays for Java)는 자바로 개발된 인기있는 딥러닝 프레임워크이며 JVM을 위한 과학 연산 라이브러리이다. 상용 제품에 사용될 수 있게 최소한의 메모리 사용으로 빠르게 작동하게끔 만들어졌다. 상업 및 산업 중심의 딥러닝 플랫폼으로 널리 사용되며, 빅데이터 도구를 기반으로 구현이 가능하기 때문에 효율적인 딥러닝을 수행할 수 있다는 장점이 있다. 다만 자바 언어로 인한 학습 및 테스트 과정이 번거롭고 사용자 커뮤니티가 협소해 예제가 부족하다는 단점이 있다.
 +
 +
* '''MxNet''' : 2015년 10월에 출시된 MxNet은 아마존(Amazon)에서 사용하고 있는 딥러닝 프레임워크이다. 다양한 프로그래밍 인터페이스를 제공해 확장성이 좋고 다중 GPU와 컴퓨터로 작업할 수 있기 때문에 대중적이다. 모바일도 지원하며 낮고 높은 레벨의 API를 모두 제공한다는 장점이 있다.<ref>송주니, 〈[https://www.slideshare.net/JunyiSong1/ss-75552936 딥러닝프레임워크비교]〉, 《슬라이드쉐어》, 2017-05-01</ref> 크기가 작고 크로스 플랫폼 이식성을 제공할 뿐 아니라 확장성이 좋아 여러 대의 GPU를 사용하면 선형적인 성능 향상 효과를 얻을 수도 있다.<ref>Serdar Yegulalp, 〈[http://www.itworld.co.kr/news/102258 아마존이 MXNet을 딥러닝 플랫폼으로 선택한 이유]〉, 《아이티월드》, 2016-11-24 </ref>
 +
 +
* '''CNTK'''(Microsoft Cognitive Toolkit) : 2016년 1월에 출시된 CNTK(Microsoft Cognitive Toolkit)는 딥러닝 모델을 교육하기 위한 오픈소스 딥러닝 도구이며 파이썬/C++을 지원한다. 높은 확장성과 성능을 발휘할 수 있으며 여러 시스템에서 실행될 때 텐서플로우나 테아노같은 다른 툴킷들보다 높은 성능을 제공하는 장점이 있으나 사용자 커뮤니티가 협소하다는 단점이 있다.
 +
 +
* '''라자냐'''(Lasagne) : 테아노의 최상위에서 실행되는 고급 학습 라이브러리이다. 파이썬을 지원하며 케라스와 비슷한 부분이 많다.
 +
 +
* '''Big DL''' : 스파크에 대한 딥러닝 라이브러리로 배포하였다. 확장성이 뛰어나다는 장점이 있다. 풍부한 학습 지원을 제공하며 인텔의 수학 커널 라이브러리를 사용하여 고성능을 보장한다. 클러스터에 저장된 대규모 데이터 세트에 딥러닝 기술을 추가할 경우 매우 유용하게 사용될 수 있다.<ref> SD아카데미, 〈[https://m.blog.naver.com/PostView.nhn?blogId=sundooedu&logNo=221195984077&proxyReferer=https%3A%2F%2Fwww.google.com%2F 딥러닝(Deep Learning)프레임워크, 상위 10가지]〉, 《네이버 블로그》, 2018-01-29 </ref><ref>송주니, 〈[https://www.slideshare.net/JunyiSong1/ss-75552936 딥러닝프레임워크비교]〉, 《슬라이드쉐어》, 2017-05-01</ref>
 +
 +
===장단점===
 
;장점
 
;장점
 
* 학습을 위한 지식 표현이 필요 없다.
 
* 학습을 위한 지식 표현이 필요 없다.
55번째 줄: 70번째 줄:
 
* 자동화가 가능하다.
 
* 자동화가 가능하다.
 
* 데이터를 제외한 나머지 과정은 자동화가 가능하므로 저렴하고 유연하다.
 
* 데이터를 제외한 나머지 과정은 자동화가 가능하므로 저렴하고 유연하다.
* 프로그램을 이용해 자신이 원하는 대로 사용이 가능하다. <ref> 이병희 기자, 〈[http://www.digitaltoday.co.kr/news/articleView.html?idxno=71462 머신러닝을 왜 해야할까?]〉, 《디지털 투데이》, 2016-07-11 </ref>
+
* 프로그램을 이용해 자신이 원하는 대로 사용이 가능하다.<ref> 이병희 기자, 〈[http://www.digitaltoday.co.kr/news/articleView.html?idxno=71462 머신러닝을 왜 해야할까?]〉, 《디지털 투데이》, 2016-07-11 </ref>
  
 
;단점
 
;단점
 
* 실수 : 사례를 통해 학습하는 특성 상, 예상치 못한 상황에서 어이없는 판단과 결정을 할 가능성이 있다.
 
* 실수 : 사례를 통해 학습하는 특성 상, 예상치 못한 상황에서 어이없는 판단과 결정을 할 가능성이 있다.
 
* 책임 : 인공지능은 자율적으로 작동하기 때문에 사고가 발생할 경우, 누구에게 피해 책임을 물어야 하는지 정의되지 않았다.
 
* 책임 : 인공지능은 자율적으로 작동하기 때문에 사고가 발생할 경우, 누구에게 피해 책임을 물어야 하는지 정의되지 않았다.
* 데이터 : 방대한 양의 데이터가 축적된 영역에서 [[빅데이터]]에 접근할 수 있는 이들만 사용이 가능하다. <ref> 권오성 기자, 〈[http://www.hani.co.kr/arti/economy/it/734883.html 인공지능 '치명적 한계' 셋①학습한 적 없는 경우 맞닥뜨리면 터무니없는 결과]〉, 《한겨레》, 2016-03-14 </ref>
+
* 데이터 : 방대한 양의 데이터가 축적된 영역에서 [[빅데이터]]에 접근할 수 있는 이들만 사용이 가능하다.<ref> 권오성 기자, 〈[http://www.hani.co.kr/arti/economy/it/734883.html 인공지능 '치명적 한계' 셋①학습한 적 없는 경우 맞닥뜨리면 터무니없는 결과]〉, 《한겨레》, 2016-03-14 </ref>
  
 
== 활용 ==
 
== 활용 ==
81번째 줄: 96번째 줄:
  
 
== 문제점과 대안 ==
 
== 문제점과 대안 ==
=== 머신러닝 실패 원인 ===
+
;문제점
* 비즈니스에 대한 이해 부족 : 머신러닝 모델을 사용하는 데이터 작업자가 머신러닝이 해결하고자 하는 비즈니스 문제를 제대로 이해하지 못할 경우 프로세스에 오류가 발생할 수 있다. 현재 시중의 머신러닝 툴은 통계 층면에서 매우 강력한데, 그만큼 주의해서 사용하지 않으면 매우 잘못된 의사 결정으로 이어질 수 있어 올바르게 사용해야 한다는 부담이 커진다. 사용자는 다른 기계들과 마찬가지로 지속적으로 모델을 모니터링하고 의사 결정에 미치는 영향에 유의해야 한다.
+
* '''비즈니스에 대한 이해 부족''' : 머신러닝 모델을 사용하는 데이터 작업자가 머신러닝이 해결하고자 하는 비즈니스 문제를 제대로 이해하지 못할 경우 프로세스에 오류가 발생할 수 있다. 현재 시중의 머신러닝 툴은 통계 층면에서 매우 강력한데, 그만큼 주의해서 사용하지 않으면 매우 잘못된 의사 결정으로 이어질 수 있어 올바르게 사용해야 한다는 부담이 커진다. 사용자는 다른 기계들과 마찬가지로 지속적으로 모델을 모니터링하고 의사 결정에 미치는 영향에 유의해야 한다.
* 낮은 데이터 품질 : 데이터 품질이 충분히 좋지 않으면 머신러닝의 효과를 기대하기 힘들다. 낮은 데이터 품질은 데이터 관리자들의 가장 큰 골칫거리 중 하나이며, 데이터 과학자들을 비롯해 정보를 다루는 전문가들의 최선의 노력에도 불구하고 빅데이터 분석 노력을 물거품으로 만드는 요인이 된다. 나쁜 결과를 생산하고 조직에서 잘못된 정보를 근거로 한 비즈니스 의사 결정을 내리도록 해 비즈니스 실적에 악영향을 미치므로 향후 이니셔티브에서 지지를 받기 어렵게 된다. 이 문제는 이상점, 누락된 값, 일관적이지 않은 영역값과 같은 기본적인 데이터 품질 문제를 식별할 수 있는 탐색적 데이터 분석(EDA, Exploratory Data Analysis)를 이용해 선제적으로 대처할 수 있고 통계적 표본 추출 등과 같은 기법을 사용하거나 데이터 품질 교정에 관한 규칙과 정책을 정의하는 방법 등으로 대처할 수 있다.
 
* 잘못된 머신러닝 사용 : 기업에서 머신러닝이 유행이기 때문에 적용하려는 생각을 하지 말고 러닝머신을 사용하기 적절한 분야에 적용시켜야 한다. 오히려 전통적인 엔지니어링 접근 방식이 더 빠르고 적은 비용으로 솔루션을 제공할 수도 있다. 잘 맞지 않는 모델에 사용 사례를 맞추려 씨름하는 사이 기회 손실도 발생할 수 있으므로 이러한 잘못된 머신러닝 사용을 피하려면 원하는 비즈니스 결과, 문제의 목잡성, 데이터 볼륨, 특성의 수를 고려해야 한다.
 
* 편견 : 결론의 정확성은 가공되는 정보의 폭과 품질에 의해 좌우된다. 알고리즘 편견의 징후는 신용 평가, 교육 과정, 채용, 범죄에 대한 양형 등 으로 확인할 수 있으며 허술하게 수집, 조율, 응용된 데이터는 설계와 의도가 충실한 머신러닝 애플리케이션에도 편견을 유발할 수 있다. 처음부터 편견을 갖고 시작하는 머신러닝 시스템을 특정 고객 또는 사회 구성원에 불이익을 줄 위험이 있고 불공정한 결과를 생성하거나 그러한 결과를 영구화할 수 있어 문제가 된다. 이 문제를 초반부터 효과적으로 대처한다면 머신러닝의 진정한 잠재력을 더 효율적으로 실현시켜 좋은 결과를 얻을 수 있을 것이다.
 
* 부족한 인프라 자원 : 머신러닝은 특히 이미지, 비디오, 오디오 처리를 할 때 인프라 요구 사항이 상당히 높은데 이러한 처리 성능이 뒷받침되지 않으면 머신러닝 기반 솔루션을 적시에 개발하기 어렵고 개발 자체가 아예 불가능할 수도 있다. 머신러닝을 지원하기 위해 확장 가능한 인프라를 배치하는 것은 많은 비용이 들고 유지하기가 힘들다. 그러나 필요에 따라 프로비저닝할 수 있는 확장 가능한 머신러닝 플랫폼을 제공하는 다양한 클라우드 서비스를 이용한다면 하드웨어 구입, 구성, 배포의 족쇄 없이 대규모로 머신러닝을 실험할 수 있다.
 
* 부실한 계획과 거버넌스의 부재 : 적절한 가이드라인과 제한을 두지 않을 경우 머신러닝 작업은 끝없이 늘어지면서 아무런 혜택도 얻지 못한 채 막대한 자원만 소비하는 결과로 이어질 수 있다. 조직은 머신러닝이 반복적 프로세스라는 점과 변화하는 요구 사항을 충족하기 위해 수시로 모델을 수정해야 할 수 있음을 인지해야 하며 원활한 운영을 위해 머신러닝 작업을 정기적으로 모니터링해야 한다.<ref>Bob Violino, 〈[http://www.itworld.co.kr/news/111067 머신러닝을 실패로 이끄는 6가지 방법]〉, 《아이티월드》, 2018-10-15 </ref>
 
  
=== 대안 ===
+
* '''낮은 데이터 품질''' : 데이터 품질이 충분히 좋지 않으면 머신러닝의 효과를 기대하기 힘들다. 낮은 데이터 품질은 데이터 관리자들의 가장 큰 골칫거리 중 하나이며, 데이터 과학자들을 비롯해 정보를 다루는 전문가들의 최선의 노력에도 불구하고 빅데이터 분석 노력을 물거품으로 만드는 요인이 된다. 나쁜 결과를 생산하고 조직에서 잘못된 정보를 근거로 한 비즈니스 의사 결정을 내리도록 해 비즈니스 실적에 악영향을 미치므로 향후 이니셔티브에서 지지를 받기 어렵게 된다. 이 문제는 이상점, 누락된 값, 일관적이지 않은 영역값과 같은 기본적인 데이터 품질 문제를 식별할 수 있는 탐색적 데이터 분석(EDA, Exploratory Data Analysis)를 이용해 선제적으로 대처할 수 있고 통계적 표본 추출 등과 같은 기법을 사용하거나 데이터 품질 교정에 관한 규칙과 정책을 정의하는 방법 등으로 대처할 있다.
* 데이터 : 데이터의 양과 질이 풍부할수록 학습의 결과가 극대화된다. 주로 구글, 페이스북, 등의 방대한 데이터를 가진 대형 기업에서 딥러닝을 학습시키고 있는 것을 발견할 수 있으며, 이를 통해 큰 데이터시장을 형성하는 것이 중요함을 알 수 있다.
 
* 인력 : 티그레이프의 유인관 박사는 "사람의 지식이 들어갈 수록 기계가 정확하게 배울 수 있는 여지가 높다."고 말했다. 데이터에 대한 깊이 있는 지식을 가진 사람이 필요하며, 앞서 말한 기술을 익히기 위해서는 고급 수학(폴리노미아 함수, 일반함수 피팅, 시그노이드 함수 등)을 공부하는 것이 좋다.
 
* 컴퓨팅 파워 : 막대한 데이터를 연산하는 작업을 감당할 있어야 하기 때문에 상당량의 컴퓨팅 파워를 요구한다.<ref>김우용 기자, 〈[http://www.zdnet.co.kr/view/?no=20141212162050&re=R_20151223102226 머신러닝, 제대로 쓰기 위한 3가지 키워드]〉, 《지디넷코리아》, 2014-12-14 </ref>
 
  
== 전망 ==
+
* '''잘못된 머신러닝 사용''' : 기업에서 머신러닝이 유행이기 때문에 적용하려는 생각을 하지 말고 러닝머신을 사용하기 적절한 분야에 적용시켜야 한다. 오히려 전통적인 엔지니어링 접근 방식이 더 빠르고 적은 비용으로 솔루션을 제공할 수도 있다. 잘 맞지 않는 모델에 사용 사례를 맞추려 씨름하는 사이 기회 손실도 발생할 수 있으므로 이러한 잘못된 머신러닝 사용을 피하려면 원하는 비즈니스 결과, 문제의 목잡성, 데이터 볼륨, 특성의 수를 고려해야 한다.
시장조사기업인 마켓츠앤마켓츠(MArketsandMarkets)는 머신러닝 시장이 2017년 14억 1000만 달러(약 1조 5104억 원)에서 2022년 88억 1000만 달러(약 9조 4373억 원)까지 성장하리라고 전망했으며, 특히 금융권에서 머신러닝 솔루션에 대한 수요가 높다고 설명했다. <ref> 오다인 기자, 〈[https://www.boannews.com/media/view.asp?idx=67442 꿈틀대는 머신러닝 시장, 한국은 어디쯤 왔나]〉, 《보안뉴스》, 2018-03-13 </ref>
+
 
머신러닝(ML) 분야는 고객 유지율 향상부터 대용량 데이터에 대한 통찰력 강화, 공급망의 리스크 완화까지 모든 분야의 기업을 지원함으로써 폭발적으로 증가하고 있다. 규모에 따른 이미지 식별과 분류, 소비자 중심의 챗봇, 구글의 딥마인드 네트워크 등의 고급 신경 네트워크에 사용되고 있어 현재 3번째로 수요가 많은 AI 직업에 속하고 있다. 중소기업과 대기업 모두 숙련된 인재를 확보하기를 바라기 때문에 학교 및 회사에서 혁신적인 인재 개발을 위한 교육 프로그램이 생성되고 있는 추세이다. <ref> 스테판 자파리노, 〈[http://www.ciokorea.com/news/39160 기고|AI∙ML 채용 전망 '수요 느는데 공급은 부족']〉, 《씨아이오코리아》, 2018-08-06 </ref>
+
* '''편견''' : 결론의 정확성은 가공되는 정보의 폭과 품질에 의해 좌우된다. 알고리즘 편견의 징후는 신용 평가, 교육 과정, 채용, 범죄에 대한 양형 등 으로 확인할 수 있으며 허술하게 수집, 조율, 응용된 데이터는 설계와 의도가 충실한 머신러닝 애플리케이션에도 편견을 유발할 수 있다. 처음부터 편견을 갖고 시작하는 머신러닝 시스템을 특정 고객 또는 사회 구성원에 불이익을 줄 위험이 있고 불공정한 결과를 생성하거나 그러한 결과를 영구화할 수 있어 문제가 된다. 이 문제를 초반부터 효과적으로 대처한다면 머신러닝의 잠재력을 더 효율적으로 실현시켜 좋은 결과를 얻을 수 있다.
  
== 프레임워크 ==
+
* '''부족한 인프라 자원''' : 머신러닝은 특히 이미지, 비디오, 오디오 처리를 할 때 인프라 요구 사항이 상당히 높은데 이러한 처리 성능이 뒷받침되지 않으면 머신러닝 기반 솔루션을 적시에 개발하기 어렵고 개발 자체가 아예 불가능할 수도 있다. 머신러닝을 지원하기 위해 확장 가능한 인프라를 배치하는 것은 많은 비용이 들고 유지하기가 힘들다. 그러나 필요에 따라 프로비저닝할 수 있는 확장 가능한 머신러닝 플랫폼을 제공하는 다양한 클라우드 서비스를 이용한다면 하드웨어 구입, 구성, 배포의 족쇄 없이 대규모로 머신러닝을 실험할 수 있다.
더욱 많은 사람들이 머신러닝을 이용할 수 있도록 오픈소스 프레임워크가 다수 개발되고 있다. <ref> 〈[https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software Comparison of deep-learning software]〉, 《위키백과》 </ref>
 
=== 텐서플로 ===
 
[[텐서플로]](TensorFlow)는 구글(Google) 브레인팀에서 파이썬(Python)기반으로 개발되었으며, 2015년에 11월 9일 아파치 2.0 오픈소스 라이센스로 공개되었다. <ref> 텐서플로우 공식 홈페이지 - https://www.tensorflow.org/ </ref> 구글 디벨로퍼(Google Developers)에서 텐서플로우를 이용한 머신러닝 단기 속성 집중 과정이 제공되고 있다. <ref> 구글 머신러닝 단기 집중 과정 공식 페이지 - https://developers.google.com/machine-learning/crash-course/?hl=ko </ref>
 
  
텐서플로 2.0 웹사이트에서 텐서플로 프로젝트를 '종합적인 오픈소스 머신러닝 플랫폼'으로 소개하고 있으나 현재는 연구자들이 AI 기반 애플리케이션을 구축하고 배포하는 데 도움이 되는 툴, 라이브러리, 커뮤니티 리소스의 생태계로 발전하였다. 이러한 텐서플로우 2.0의 주요 구성 요소는 다음의 네 가지이다.
+
* '''부실한 계획과 거버넌스의 부재''' : 적절한 가이드라인과 제한을 두지 않을 경우 머신러닝 작업은 끝없이 늘어지면서 아무런 혜택도 얻지 못한 채 막대한 자원만 소비하는 결과로 이어질 수 있다. 조직은 머신러닝이 반복적 프로세스라는 점과 변화하는 요구 사항을 충족하기 위해 수시로 모델을 수정해야 할 수 있음을 인지해야 하며 원활한 운영을 위해 머신러닝 작업을 정기적으로 모니터링해야 한다.<ref>Bob Violino, 〈[http://www.itworld.co.kr/news/111067 머신러닝을 실패로 이끄는 6가지 방법]〉, 《아이티월드》, 2018-10-15 </ref>
* 텐서플로우 코어 : 머신러닝 모델을 개발하고 학습시키기 위한 오픈소스 라이브러리이다. 즉시 실행(Eager Execution), 더 높은 수준의 직관적인 API, 모든 플랫폼에서 유전한 모델 구축과 같은 부분이 업데이트되어 단순함과 사용의 용이함에 초점을 둔다.
 
* TensorFlow.js : 브라우저와 Node.js에서 모델을 학습 및 배포하기 위한 자바스크립트 라이브러리이다. 자바스크립트로 머신러닝 모델을 개발해 학습시킨 다음, 브라우저 또는 Node.js에 배포할 수 있다. TensorFlow.js 위에 구축되는 고수준 라이브러리인 ml5.js는 텐서와 옵티마이저의 복잡함을 숨겨준다.
 
* 텐서플로우 라이트 : 모바일 및 임베디드 디바이스에서 모델을 배포하기 위한 가벼운 라이브러리이다. 온디바이스 추론을 위한 딥러닝 프레임워크로, 현재 iOS와 ARM64, 라즈베리파이용 모델을 구축할 수 있다. 텐서플로우 라이트의 기본 구성은 다음의 두 가지이다.
 
:*인터프리터(Interperter) : 다양한 하드웨어 유형에서 특수하게 최적화된 모델을 실행한다.
 
:*컨버터(Converter) : 텐서플로우 모델을 인터프리터에서 사용하기 위한 효율적인 형식으로 변환하며, 최적화를 통해 바이너리 크기와 성능을 개선할 수 있다.
 
* 텐서플로우 익스텐디드 : 대규모 프로덕션 환경에서 데이터를 준비하고 모델을 학습, 검증, 배포하기 위한 종합적인 플랫폼이다. 파이프라인에는 데이터 검증, 특성 공학, 모델링, 모델 평가, 추론 제공, 온라인 배포 관리, 네이티브 모바일, 자바스크립트 타깃이 포함된다.
 
  
이러한 텐서플로우를 지원하는 툴은 다음과 같다.
+
;대안
* 텐서플로우 그래프를 위한 시각화 툴 모음인 텐서보드(TensorBoard)
+
* '''데이터''' : 데이터의 양과 질이 풍부할수록 학습의 결과가 극대화된다. 주로 구글, 페이스북, 등의 방대한 데이터를 가진 대형 기업에서 딥러닝을 학습시키고 있는 것을 발견할 수 있으며, 이를 통해 큰 데이터시장을 형성하는 것이 중요함을 알 수 있다.
* 조정 가능한 온라인 신경망인 텐서플로우 플레이그라운드(TensorFlow Playground)
+
* '''인력''' : 티그레이프의 유인관 박사는 "사람의 지식이 들어갈 수록 기계가 정확하게 배울 수 있는 여지가 높다."고 말했다. 데이터에 대한 깊이 있는 지식을 가진 사람이 필요하며, 앞서 말한 기술을 익히기 위해서는 고급 수학(폴리노미아 함수, 일반함수 피팅, 시그노이드 함수 등)을 공부하는 것이 좋다.
* 무료 온라인 주피터 노트북 환경인 코랩(Colab 또는 Colaboratory)
+
* '''컴퓨팅 파워''' : 막대한 데이터를 연산하는 작업을 감당할 있어야 하기 때문에 상당량의 컴퓨팅 파워를 요구한다.<ref>김우용 기자, 〈[http://www.zdnet.co.kr/view/?no=20141212162050&re=R_20151223102226 머신러닝, 제대로 쓰기 위한 3가지 키워드]〉, 《지디넷코리아》, 2014-12-14 </ref>
* 텐서보드와 코랩 또는 주피터 노트북에서 모델을 탐색하고 디버그하는 데 유용한 왓이프 툴(What If Tool)
 
* 광범위한 머신러닝 벤치마크 모음인 ML 퍼프(ML Perf)
 
* 텐서플로우 계산을 최적화하는 선형대수학을 위한 도메인별 컴파일러인 XLA(Accelerated Linear Algebra)
 
* 무료로 사용을 신청할 있는 1,000개 이상의 클라우드 TPU 클러스터인 TFRC(TensorFlow Research Cloud)<ref>Martin Heller,〈[http://www.itworld.co.kr/news/125595 리뷰|텐서플로우 2, "더 쉬워진 머신러닝"]〉, 《아이티월드》, 2019-07-04</ref>
 
=== 테아노 ===
 
2010년 11월 제임스 버그스트라(James Bergstra)와 프레드릭 바스테인(Frederic Bastien)이 출시한 테아노(Theano)는 '최초의 딥러닝 라이브러리' 중 하나이다. 파이썬 기반이며 CPU 및 GPU의 수치 계산에 매우 유용하다는 특징이 있다.
 
  
=== 케라스 ===
+
== 전망 ==
2015년 3월 구글의 프랑수아 숄레(Franscois Chollet)가 출시한 케라스(Keras)는 파이썬 기반이며 매우 가볍고 배우기가 쉽다. 효율적인 신경망 구축을 위한 단순화 된 인터페이스로 개발되었다. 테아노 기반이지만 토치처럼 모듈화가 잘 되어있어 사용하기가 쉽다. 최근에도 계속 업데이트되어 빠른 속도로 발전하고 있는 라이브러리이다.
+
시장조사기업인 마켓츠앤마켓츠(MArketsandMarkets)는 머신러닝 시장이 2017년 14억 1000만 달러(약 1조 5104억 원)에서 2022년 88억 1000만 달러(약 9조 4373억 원)까지 성장하리라고 전망했으며, 특히 금융권에서 머신러닝 솔루션에 대한 수요가 높다고 설명했다.<ref> 오다인 기자, 〈[https://www.boannews.com/media/view.asp?idx=67442 꿈틀대는 머신러닝 시장, 한국은 어디쯤 왔나]〉, 《보안뉴스》, 2018-03-13 </ref> 머신러닝 분야는 고객 유지율 향상부터 대용량 데이터에 대한 통찰력 강화, 공급망의 리스크 완화까지 모든 분야의 기업을 지원함으로써 폭발적으로 증가하고 있다. 규모에 따른 이미지 식별과 분류, 소비자 중심의 챗봇, 구글의 딥마인드 네트워크 등의 고급 신경 네트워크에 사용되고 있어 현재 3번째로 수요가 많은 AI 직업에 속하고 있다. 중소기업과 대기업 모두 숙련된 인재를 확보하기를 바라기 때문에 학교 회사에서 혁신적인 인재 개발을 위한 교육 프로그램이 생성되고 있는 추세이다.<ref> 스테판 자파리노, 〈[http://www.ciokorea.com/news/39160 기고|AI∙ML 채용 전망 '수요 느는데 공급은 부족']〉, 《씨아이오코리아》, 2018-08-06 </ref>
=== 카페 ===
 
양징 지아(Yangqing Jia)와 이반 쉘햄머(Evan Shellhamer)가 만든 카페(Caffe)는 버클리 대학에서 관리하고 있으며 현재 가장 많은 사람들이 사용하고 있다고 추정되는 라이브러리이자 '최초의 딥러닝 라이브러리' 중 하나이다. C++뿐 아니라 파이썬과 매트랩(Matlab) 인터페이스도 잘 구현되어있다.<ref>최명섭·김주용, 〈[https://aikorea.org/blog/dl-libraries/ 프로그래밍 언어별 딥러닝 라이브러리 정리]〉, 《개인 블로그》, 2015-09-10</ref>
 
카페는 이미지 처리에 특화되어 있으며 프로그래밍 대신 설정 파일로 학습 방법을 정의한다. 또한 'Caffe Model Zoo'<ref> 이승현, 〈[https://hamait.tistory.com/519 Caffe에서 이미 제고하는 모델(Model Zoo) 정리]〉, 《개인 블로그》, 2016-03-13 </ref>에서 미리 훈련된 여러 네트워크를 바로 사용할 수 있다는 장점이 있다. 그러나 이미지 이외의 텍스트 및 사운드의 데이터 처리에는 부적합하며 문서화가 잘 되어있지 않고 API가 유연하지 않다는 단점이 있다.
 
=== 토치 ===
 
토치(Torch)는 Lua 기반의 딥러닝 프레임워크이다. 페이스북, 트위터, 구글 등에서 사용하고 개발하고 있다. '최대한의 유연성을 달성하고 모델을 제작하는 과정을 매우 간단하게 만드는 것'을 목표로 만들어졌으며, 최근 파이썬으로 포팅한 'PyTorch'가 페이스북에서 활용되면서 주목을 받고 있다. 알고리즘 모듈화가 잘 되어있어 사용이 용이하며 다양한 데이터 전처리 시각화 유틸리티를 제공한다. 또한 Lua 프로그래밍 구문을 사용해 간단하며 OpenCL을 지원한다는 장점이 있다. 그러나 토치 또한 사용자 커뮤니티가 협소하며 상용 애플리케이션이 아닌 연구용으로 적합하다는 단점을 가지고 있다.
 
=== DL4J ===
 
아담 깁슨(Adam Gipson)과 크리스 니콜슨(Chris Nicholson)이 2014년 6월에 출시한 DL4J(Deep Learning 4 J, N-Dimensional Arrays for Java)는 자바로 개발된 인기있는 딥러닝 프레임워크이며 JVM을 위한 과학 연산 라이브러리이다. 상용 제품에 사용될 수 있게 최소한의 메모리 사용으로 빠르게 작동하게끔 만들어졌다. 상업 및 산업 중심의 딥러닝 플랫폼으로 널리 사용되며, 빅데이터 도구를 기반으로 구현이 가능하기 때문에 효율적인 딥러닝을 수행할 수 있다는 장점이 있다. 다만 자바 언어로 인한 학습 및 테스트 과정이 번거롭고 사용자 커뮤니티가 협소해 예제가 부족하다는 단점이 있다.
 
=== MxNet ===
 
2015년 10월에 출시된 MxNet은 아마존(Amazon)에서 사용하고 있는 딥러닝 프레임워크이다. 다양한 프로그래밍 인터페이스를 제공해 확장성이 좋고 다중 GPU와 컴퓨터로 작업할 수 있기 때문에 대중적이다. 모바일도 지원하며 낮고 높은 레벨의 API를 모두 제공한다는 장점이 있다.<ref>송주니, 〈[https://www.slideshare.net/JunyiSong1/ss-75552936 딥러닝프레임워크비교]〉, 《슬라이드쉐어》, 2017-05-01</ref> 크기가 작고 크로스 플랫폼 이식성을 제공할 뿐 아니라 확장성이 좋아 여러 대의 GPU를 사용하면 선형적인 성능 향상 효과를 얻을 수도 있다.<ref>Serdar Yegulalp, 〈[http://www.itworld.co.kr/news/102258 아마존이 MXNet을 딥러닝 플랫폼으로 선택한 이유]〉, 《아이티월드》, 2016-11-24 </ref>
 
=== CNTK ===
 
2016년 1월에 출시된 CNTK(Microsoft Cognitive Toolkit)는 딥러닝 모델을 교육하기 위한 오픈소스 딥러닝 도구이며 파이썬/C++을 지원한다. 높은 확장성과 성능을 발휘할 수 있으며 여러 시스템에서 실행될 때 텐서플로우나 테아노같은 다른 툴킷들보다 높은 성능을 제공하는 장점이 있으나 사용자 커뮤니티가 협소하다는 단점이 있다.
 
=== 라자냐 ===
 
라자냐(Lasagne)는 테아노의 최상위에서 실행되는 고급 학습 라이브러리이다. 파이썬을 지원하며 케라스와 비슷한 부분이 많다.
 
===Big DL===
 
스파크에 대한 딥러닝 라이브러리로 배포하였다. 확장성이 뛰어나다는 장점이 있다. 풍부한 학습 지원을 제공하며 인텔의 수학 커널 라이브러리를 사용하여 고성능을 보장한다. 클러스터에 저장된 대규모 데이터 세트에 딥러닝 기술을 추가할 경우 매우 유용하게 사용될 수 있다. <ref> SD아카데미, 〈[https://m.blog.naver.com/PostView.nhn?blogId=sundooedu&logNo=221195984077&proxyReferer=https%3A%2F%2Fwww.google.com%2F 딥러닝(Deep Learning)프레임워크, 상위 10가지]〉, 《네이버 블로그》, 2018-01-29 </ref><ref>송주니, 〈[https://www.slideshare.net/JunyiSong1/ss-75552936 딥러닝프레임워크비교]〉, 《슬라이드쉐어》, 2017-05-01</ref>
 
  
 
{{각주}}
 
{{각주}}
170번째 줄: 147번째 줄:
 
* [[비지도학습]]
 
* [[비지도학습]]
  
{{알고리즘|검토 필요}}
+
{{인공지능 기술|검토 필요}}

2020년 7월 13일 (월) 17:37 기준 최신판

머신러닝(machine learning)은 인공지능(AI)의 한 분야로, 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야를 말한다. 즉, 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술 및 기법을 의미한다.[1] 기계학습이라고도 한다.

개요[편집]

아서 사무엘(Arthur L. Samuel)은 1959년에 최초로 머신 러닝 또는 기계 학습을 "기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구 분야"라고 정의하였다. 이후, 톰 미첼(Tom Mitchell)은 1986년 "컴퓨터 프로그램이 어떤 작업 T와 평가 척도 P에 대해서 경험 E로부터 학습한다는 것은, P에 의해 평가되는 작업 T에 있어서의 성능이 경험 E에 의해 개선되는 경우를 말한다."라고 이전보다 형식적인 정의를 내렸다. 머신 러닝은 명시적인 알고리즘을 설계하기 어렵거나 프로그래밍하기 어려운 작업들을 해결하기 위해 주로 사용된다. 데이터로부터 유용한 규칙, 지식 표현 또는 판단 기준 등을 추출한다는 점에서 데이터 마이닝이나 통계 및 수학적 최적화 문제와 관련이 깊다.

역사[편집]

  • 1949년 : 도날드 헵(Donald Hebb)이 헵의 학습 규칙(Hebbian Learning Theory)을 발표
  • 1952년 : IBM에서 근무하던 아서 사무엘(Arthur Samuel)이 최초의 머신러닝 프로그램이라 할 수 있는 체커 프로그램을 개발
  • 1957년 : 프랭크 로젠블랫(Frank Rosenblatt)이 퍼셉트론(Perceptron)이라는 개념 발표
  • 1959년 : 아서 사무엘의 논문에서 최초로 머신 러닝 정의
  • 1960년 : 버나드 위드로우(Bernard Widrow), 테드 호프(Ted Hoff)가 델타 규칙(Delta Learning Rule)을 발표
  • 1981년 : 폴 웨어보스(Paul John Werbos)가 다층 퍼셉트론(Multilayer Perceptron)을 역전파(Back Propagation)로 계산하는 방법 발표
  • 1986년 : 로스 퀸란(John Ross Quinlan)이 머신러닝의 주류가 된 의사 결정 나무(Decision Tree)라는 알고리즘 발표
  • 1995년 : 블라디미르 바프닉(Vladimir Vapnik)와 코리나 코르테스(Corinna Cortes)가 서포트 벡터 머신(Support Vector Machine, SVM) 발표
  • 1995년 : IBM에서 근무하던 틴 캄 호(Tin Kam Ho)가 랜덤 의사 결정 포리스트(Random Decision Forests)라는 개념을 최초로 발표
  • 1997년 : 요아브 프룬드(Yoav Freund)와 로버트 샤파이어(Robert Schapire)가 부스팅 앙상블 기법을 사용한 에이다부스트(AdaBoost)라는 알고리즘 발표
  • 1997년 : 레오 브레이만(Leo Breiman)이 그래디언트 부스팅(Gradient Boosting)이라는 개념 제안
  • 2001년 : 레오 브레이만이 랜덤 의사 결정 포리스트를 발전시킨 랜덤 포레스트(Random Forest)라는 알고리즘 발표

특징[편집]

지도학습[편집]

입력과 출력 사이의 매핑을 학습하는 것이며 입력과 출력 쌍이 데이터로 주어지는 경우에 적용한다. 지난 데이터를 기준으로 앞으로 있을 이벤트를 예측하는데 보편적으로 사용된다. 예를 들면 신용 카드의 사기성이나 보험 가입자의 보험금 청구 가능성 여부 등을 예측하는 데 효과적이다. 대표적으로 의사결정 나무(Desicion Tree), KNN(L-nearest neighbor), 신경망(Neural Network), 서포트벡터 머신(Support Vector Machine) 등이 있다.

비지도 학습[편집]

입력만 있고 출력은 없는 경우에 적용하며 입력 사이의 규칙성을 찾아내는게 목표이다. 이전 레이블이 없는 데이터를 학습하는 데 사용되며 특히, 트랜잭션 데이터를 탐색하여 내부구조를 파악하는데 효과적이며, 텍스트 주제를 세분화하고 항목을 권장하며 데이터 이상점을 식별하는 데 이용된다. 대표적으로 클러스터링(Clustering, 군집화), FDS 시스템(금융 위험 이상 탐지 시스템)이 있다.

  • 준지도 학습(Semisupervised Learning) : 레이블이 지정된 데이터와 레이블이 지정되지 않은 데이터를 모두 사용해 트레이닝한다는 점에서 지도 학습과 차이가 있다. 레이블 지정에 따른 비용이 너무 높아 완전한 레이블 지정 트레이닝이 어려운 경우에 유용하며, 웹 캠을 이용한 안면 인식 기술 등에서 사용된다. 대표적으로 제한된 볼츠만 머신(Restricted Boltzmann Machine, RBM)을 여러 겹으로 쌓은 심층 신뢰 신경망(Deep Belief Network, DBN)이 있다.
  • 강화 학습(Reinforcement Learning) : 주어진 입력에 대응하는 시스템에 대해 적용하며 로봇, 게임 및 내비게이션에서 많이 이용된다. 시행착오를 거쳐 보상을 극대화할 수 있는 행동을 찾아내며, 에이전트가 일정한 시간 내에 예상되는 보상을 극대화할 수 있는 동작을 선택하도록 한다. 대표적으로 딥러닝(Deep Learning)이 있다.
  • 배치 학습(Batch Learning) : 시스템이 점진적으로 학습할 수 없어 가용한 데이터를 모두 사용해 훈련시켜야 한다. 일반적으로 시간과 자원을 많이 소모하기 때문에 보통 오프라인에서 수행되는 경우가 많다.
  • 오프라인 학습(Offline Learning) : 학습한 것을 적용만 하는 훈련 방법이다.
  • 온라인 학습(Online Learning) : 데이터를 순차적으로 한 개씩 또는 미니배치(Mini-batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 컴퓨팅 자원이 제한되거나 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다. 점진적 학습(Incremental Learning)이라고도 한다.
  • 사례 기반 학습(Instance-based Learning) : 가장 간단한 형태의 학습. 시스템이 단순히 여러 사례를 메모리에 저장하는 것으로 학습한다. 메모리 기반 학습이라고도 한다. 대표적으로 유사도를 분류하여 스팸 메일을 분류함으로써 새로운 데이터에 일반화하는 것을 확인할 수 있다.
  • 모델 기반 학습(Model-based Learning) : 여러 샘플 데이터들의 모델을 만들어 사용하는 방식으로 학습한다.[2]

프레임워크[편집]

더욱 많은 사람들이 머신러닝을 이용할 수 있도록 오픈소스 프레임워크가 다수 개발되고 있다.[3]

  • 텐서플로(TensorFlow) : 구글(Google) 브레인팀에서 파이썬(Python)기반으로 개발되었으며, 2015년에 11월 9일 아파치 2.0 오픈소스 라이센스로 공개되었다.[4] 구글 디벨로퍼(Google Developers)에서 텐서플로우를 이용한 머신러닝 단기 속성 집중 과정이 제공되고 있다.[5] 텐서플로 2.0 웹사이트에서 텐서플로 프로젝트를 '종합적인 오픈소스 머신러닝 플랫폼'으로 소개하고 있으나 현재는 연구자들이 AI 기반 애플리케이션을 구축하고 배포하는 데 도움이 되는 툴, 라이브러리, 커뮤니티 리소스의 생태계로 발전하였다.
  • 테아노(Theano) : 2010년 11월 제임스 버그스트라(James Bergstra)와 프레드릭 바스테인(Frederic Bastien)이 출시한 테아노(Theano)는 '최초의 딥러닝 라이브러리' 중 하나이다. 파이썬 기반이며 CPU 및 GPU의 수치 계산에 매우 유용하다는 특징이 있다.
  • 케라스(Keras) : 2015년 3월 구글의 프랑수아 숄레(Franscois Chollet)가 출시한 케라스(Keras)는 파이썬 기반이며 매우 가볍고 배우기가 쉽다. 효율적인 신경망 구축을 위한 단순화 된 인터페이스로 개발되었다. 테아노 기반이지만 토치처럼 모듈화가 잘 되어있어 사용하기가 쉽다. 최근에도 계속 업데이트되어 빠른 속도로 발전하고 있는 라이브러리이다.
  • 카페(Caffe) : 양징 지아(Yangqing Jia)와 이반 쉘햄머(Evan Shellhamer)가 만든 카페(Caffe)는 버클리 대학에서 관리하고 있으며 현재 가장 많은 사람들이 사용하고 있다고 추정되는 라이브러리이자 '최초의 딥러닝 라이브러리' 중 하나이다. C++뿐 아니라 파이썬과 매트랩(Matlab) 인터페이스도 잘 구현되어있다.[6] 카페는 이미지 처리에 특화되어 있으며 프로그래밍 대신 설정 파일로 학습 방법을 정의한다. 또한 'Caffe Model Zoo'[7]에서 미리 훈련된 여러 네트워크를 바로 사용할 수 있다는 장점이 있다. 그러나 이미지 이외의 텍스트 및 사운드의 데이터 처리에는 부적합하며 문서화가 잘 되어있지 않고 API가 유연하지 않다는 단점이 있다.
  • 토치(Torch) : Lua 기반의 딥러닝 프레임워크이다. 페이스북, 트위터, 구글 등에서 사용하고 개발하고 있다. '최대한의 유연성을 달성하고 모델을 제작하는 과정을 매우 간단하게 만드는 것'을 목표로 만들어졌으며, 최근 파이썬으로 포팅한 'PyTorch'가 페이스북에서 활용되면서 주목을 받고 있다. 알고리즘 모듈화가 잘 되어있어 사용이 용이하며 다양한 데이터 전처리 및 시각화 유틸리티를 제공한다. 또한 Lua 프로그래밍 구문을 사용해 간단하며 OpenCL을 지원한다는 장점이 있다. 그러나 토치 또한 사용자 커뮤니티가 협소하며 상용 애플리케이션이 아닌 연구용으로 적합하다는 단점을 가지고 있다.
  • DL4J(Deep Learning 4 J) : 아담 깁슨(Adam Gipson)과 크리스 니콜슨(Chris Nicholson)이 2014년 6월에 출시한 DL4J(Deep Learning 4 J, N-Dimensional Arrays for Java)는 자바로 개발된 인기있는 딥러닝 프레임워크이며 JVM을 위한 과학 연산 라이브러리이다. 상용 제품에 사용될 수 있게 최소한의 메모리 사용으로 빠르게 작동하게끔 만들어졌다. 상업 및 산업 중심의 딥러닝 플랫폼으로 널리 사용되며, 빅데이터 도구를 기반으로 구현이 가능하기 때문에 효율적인 딥러닝을 수행할 수 있다는 장점이 있다. 다만 자바 언어로 인한 학습 및 테스트 과정이 번거롭고 사용자 커뮤니티가 협소해 예제가 부족하다는 단점이 있다.
  • MxNet : 2015년 10월에 출시된 MxNet은 아마존(Amazon)에서 사용하고 있는 딥러닝 프레임워크이다. 다양한 프로그래밍 인터페이스를 제공해 확장성이 좋고 다중 GPU와 컴퓨터로 작업할 수 있기 때문에 대중적이다. 모바일도 지원하며 낮고 높은 레벨의 API를 모두 제공한다는 장점이 있다.[8] 크기가 작고 크로스 플랫폼 이식성을 제공할 뿐 아니라 확장성이 좋아 여러 대의 GPU를 사용하면 선형적인 성능 향상 효과를 얻을 수도 있다.[9]
  • CNTK(Microsoft Cognitive Toolkit) : 2016년 1월에 출시된 CNTK(Microsoft Cognitive Toolkit)는 딥러닝 모델을 교육하기 위한 오픈소스 딥러닝 도구이며 파이썬/C++을 지원한다. 높은 확장성과 성능을 발휘할 수 있으며 여러 시스템에서 실행될 때 텐서플로우나 테아노같은 다른 툴킷들보다 높은 성능을 제공하는 장점이 있으나 사용자 커뮤니티가 협소하다는 단점이 있다.
  • 라자냐(Lasagne) : 테아노의 최상위에서 실행되는 고급 학습 라이브러리이다. 파이썬을 지원하며 케라스와 비슷한 부분이 많다.
  • Big DL : 스파크에 대한 딥러닝 라이브러리로 배포하였다. 확장성이 뛰어나다는 장점이 있다. 풍부한 학습 지원을 제공하며 인텔의 수학 커널 라이브러리를 사용하여 고성능을 보장한다. 클러스터에 저장된 대규모 데이터 세트에 딥러닝 기술을 추가할 경우 매우 유용하게 사용될 수 있다.[10][11]

장단점[편집]

장점
  • 학습을 위한 지식 표현이 필요 없다.
  • 충분한 데이터와 적합한 알고리즘을 사용할 경우, 사람이 만든 모델보다 좋은 결과를 보여줄 수 있다.
  • 고도의 수학적 지식이나 프로그래밍 능력을 요구하지 않는다.
  • 자동화가 가능하다.
  • 데이터를 제외한 나머지 과정은 자동화가 가능하므로 저렴하고 유연하다.
  • 프로그램을 이용해 자신이 원하는 대로 사용이 가능하다.[12]
단점
  • 실수 : 사례를 통해 학습하는 특성 상, 예상치 못한 상황에서 어이없는 판단과 결정을 할 가능성이 있다.
  • 책임 : 인공지능은 자율적으로 작동하기 때문에 사고가 발생할 경우, 누구에게 피해 책임을 물어야 하는지 정의되지 않았다.
  • 데이터 : 방대한 양의 데이터가 축적된 영역에서 빅데이터에 접근할 수 있는 이들만 사용이 가능하다.[13]

활용[편집]

머신러닝은 컴퓨터 과학을 포함한 대부분의 모든 분야에서 활용되고 있다.[14][15]

  • 금융 서비스 : 머신러닝은 금융, 데이로부터 중요한 인사이트를 확인하고 사기를 방지하여 투자 기회를 확인하거나 투자자가 거래 시기를 정확히 파악할 수 있도록 지원한다. 또한 데이터마이닝을 이용해 고위험 특징을 보이는 클라이언트를 식별하거나 사이버 감시를 이용해 사기의 전조 징후를 정확하게 발견할 수 있다.
  • 의료 서비스
  • 석유 및 가스 : 새로운 에너지원의 발견, 매장된 광물 분석, 정유 시설의 센서 고장 예측, 등의 범위에서 사용되고 있다.
  • 정부 : 센서 데이터를 분석하여 효율성을 높이고 비용을 절감할 수 있는 방법 발견 및 사기 감지, 개인정보 도용을 최소화할 수 있다.
  • 마케팅 및 영업 : 과거 구매자의 검색 및 구매 기록을 분석하여 상품 추천 및 홍보에 사용할 수 있다.
  • 운송 : 데이터 분석으로 패턴과 트렌드를 발견하는 데 사용될 수 있다.
  • 컴퓨터 시각 : 문자 인식, 물체 인식, 얼굴 인식.
  • 자연어 처리
  • 자동 번역, 대화 분석 : 음성 인식 및 필기 인식
  • 정보 검색 및 검색 엔진 : 텍스트마이닝, 스팸 필터, 추출 및 요약, 추천 시스템
  • 생물 정보학 : 유전자 분석, 단백질 분류, 질병 진단
  • 컴퓨터 그래픽 및 게임 : 애니메이션, 가상현실
  • 로보틱스 : 경로 탐색, 무인 자동차, 물체 인식 및 분류

문제점과 대안[편집]

문제점
  • 비즈니스에 대한 이해 부족 : 머신러닝 모델을 사용하는 데이터 작업자가 머신러닝이 해결하고자 하는 비즈니스 문제를 제대로 이해하지 못할 경우 프로세스에 오류가 발생할 수 있다. 현재 시중의 머신러닝 툴은 통계 층면에서 매우 강력한데, 그만큼 주의해서 사용하지 않으면 매우 잘못된 의사 결정으로 이어질 수 있어 올바르게 사용해야 한다는 부담이 커진다. 사용자는 다른 기계들과 마찬가지로 지속적으로 모델을 모니터링하고 의사 결정에 미치는 영향에 유의해야 한다.
  • 낮은 데이터 품질 : 데이터 품질이 충분히 좋지 않으면 머신러닝의 효과를 기대하기 힘들다. 낮은 데이터 품질은 데이터 관리자들의 가장 큰 골칫거리 중 하나이며, 데이터 과학자들을 비롯해 정보를 다루는 전문가들의 최선의 노력에도 불구하고 빅데이터 분석 노력을 물거품으로 만드는 요인이 된다. 나쁜 결과를 생산하고 조직에서 잘못된 정보를 근거로 한 비즈니스 의사 결정을 내리도록 해 비즈니스 실적에 악영향을 미치므로 향후 이니셔티브에서 지지를 받기 어렵게 된다. 이 문제는 이상점, 누락된 값, 일관적이지 않은 영역값과 같은 기본적인 데이터 품질 문제를 식별할 수 있는 탐색적 데이터 분석(EDA, Exploratory Data Analysis)를 이용해 선제적으로 대처할 수 있고 통계적 표본 추출 등과 같은 기법을 사용하거나 데이터 품질 교정에 관한 규칙과 정책을 정의하는 방법 등으로 대처할 수 있다.
  • 잘못된 머신러닝 사용 : 기업에서 머신러닝이 유행이기 때문에 적용하려는 생각을 하지 말고 러닝머신을 사용하기 적절한 분야에 적용시켜야 한다. 오히려 전통적인 엔지니어링 접근 방식이 더 빠르고 적은 비용으로 솔루션을 제공할 수도 있다. 잘 맞지 않는 모델에 사용 사례를 맞추려 씨름하는 사이 기회 손실도 발생할 수 있으므로 이러한 잘못된 머신러닝 사용을 피하려면 원하는 비즈니스 결과, 문제의 목잡성, 데이터 볼륨, 특성의 수를 고려해야 한다.
  • 편견 : 결론의 정확성은 가공되는 정보의 폭과 품질에 의해 좌우된다. 알고리즘 편견의 징후는 신용 평가, 교육 과정, 채용, 범죄에 대한 양형 등 으로 확인할 수 있으며 허술하게 수집, 조율, 응용된 데이터는 설계와 의도가 충실한 머신러닝 애플리케이션에도 편견을 유발할 수 있다. 처음부터 편견을 갖고 시작하는 머신러닝 시스템을 특정 고객 또는 사회 구성원에 불이익을 줄 위험이 있고 불공정한 결과를 생성하거나 그러한 결과를 영구화할 수 있어 문제가 된다. 이 문제를 초반부터 효과적으로 대처한다면 머신러닝의 잠재력을 더 효율적으로 실현시켜 좋은 결과를 얻을 수 있다.
  • 부족한 인프라 자원 : 머신러닝은 특히 이미지, 비디오, 오디오 처리를 할 때 인프라 요구 사항이 상당히 높은데 이러한 처리 성능이 뒷받침되지 않으면 머신러닝 기반 솔루션을 적시에 개발하기 어렵고 개발 자체가 아예 불가능할 수도 있다. 머신러닝을 지원하기 위해 확장 가능한 인프라를 배치하는 것은 많은 비용이 들고 유지하기가 힘들다. 그러나 필요에 따라 프로비저닝할 수 있는 확장 가능한 머신러닝 플랫폼을 제공하는 다양한 클라우드 서비스를 이용한다면 하드웨어 구입, 구성, 배포의 족쇄 없이 대규모로 머신러닝을 실험할 수 있다.
  • 부실한 계획과 거버넌스의 부재 : 적절한 가이드라인과 제한을 두지 않을 경우 머신러닝 작업은 끝없이 늘어지면서 아무런 혜택도 얻지 못한 채 막대한 자원만 소비하는 결과로 이어질 수 있다. 조직은 머신러닝이 반복적 프로세스라는 점과 변화하는 요구 사항을 충족하기 위해 수시로 모델을 수정해야 할 수 있음을 인지해야 하며 원활한 운영을 위해 머신러닝 작업을 정기적으로 모니터링해야 한다.[16]
대안
  • 데이터 : 데이터의 양과 질이 풍부할수록 학습의 결과가 극대화된다. 주로 구글, 페이스북, 등의 방대한 데이터를 가진 대형 기업에서 딥러닝을 학습시키고 있는 것을 발견할 수 있으며, 이를 통해 큰 데이터시장을 형성하는 것이 중요함을 알 수 있다.
  • 인력 : 티그레이프의 유인관 박사는 "사람의 지식이 들어갈 수록 기계가 정확하게 배울 수 있는 여지가 높다."고 말했다. 데이터에 대한 깊이 있는 지식을 가진 사람이 필요하며, 앞서 말한 기술을 익히기 위해서는 고급 수학(폴리노미아 함수, 일반함수 피팅, 시그노이드 함수 등)을 공부하는 것이 좋다.
  • 컴퓨팅 파워 : 막대한 데이터를 연산하는 작업을 감당할 수 있어야 하기 때문에 상당량의 컴퓨팅 파워를 요구한다.[17]

전망[편집]

시장조사기업인 마켓츠앤마켓츠(MArketsandMarkets)는 머신러닝 시장이 2017년 14억 1000만 달러(약 1조 5104억 원)에서 2022년 88억 1000만 달러(약 9조 4373억 원)까지 성장하리라고 전망했으며, 특히 금융권에서 머신러닝 솔루션에 대한 수요가 높다고 설명했다.[18] 머신러닝 분야는 고객 유지율 향상부터 대용량 데이터에 대한 통찰력 강화, 공급망의 리스크 완화까지 모든 분야의 기업을 지원함으로써 폭발적으로 증가하고 있다. 규모에 따른 이미지 식별과 분류, 소비자 중심의 챗봇, 구글의 딥마인드 네트워크 등의 고급 신경 네트워크에 사용되고 있어 현재 3번째로 수요가 많은 AI 직업에 속하고 있다. 중소기업과 대기업 모두 숙련된 인재를 확보하기를 바라기 때문에 학교 및 회사에서 혁신적인 인재 개발을 위한 교육 프로그램이 생성되고 있는 추세이다.[19]

각주[편집]

  1. 기계 학습〉, 《위키백과》
  2. 로드홈, 〈머신러닝 시스템의 종류〉, 《개인 블로그》
  3. Comparison of deep-learning software〉, 《위키백과》
  4. 텐서플로우 공식 홈페이지 - https://www.tensorflow.org/
  5. 구글 머신러닝 단기 집중 과정 공식 페이지 - https://developers.google.com/machine-learning/crash-course/?hl=ko
  6. 최명섭·김주용, 〈프로그래밍 언어별 딥러닝 라이브러리 정리〉, 《개인 블로그》, 2015-09-10
  7. 이승현, 〈Caffe에서 이미 제고하는 모델(Model Zoo) 정리〉, 《개인 블로그》, 2016-03-13
  8. 송주니, 〈딥러닝프레임워크비교〉, 《슬라이드쉐어》, 2017-05-01
  9. Serdar Yegulalp, 〈아마존이 MXNet을 딥러닝 플랫폼으로 선택한 이유〉, 《아이티월드》, 2016-11-24
  10. SD아카데미, 〈딥러닝(Deep Learning)프레임워크, 상위 10가지〉, 《네이버 블로그》, 2018-01-29
  11. 송주니, 〈딥러닝프레임워크비교〉, 《슬라이드쉐어》, 2017-05-01
  12. 이병희 기자, 〈머신러닝을 왜 해야할까?〉, 《디지털 투데이》, 2016-07-11
  13. 권오성 기자, 〈인공지능 '치명적 한계' 셋①학습한 적 없는 경우 맞닥뜨리면 터무니없는 결과〉, 《한겨레》, 2016-03-14
  14. 머신러닝 소개 및 활용 방안〉, 《사스코리아》
  15. 머신 러닝
  16. Bob Violino, 〈머신러닝을 실패로 이끄는 6가지 방법〉, 《아이티월드》, 2018-10-15
  17. 김우용 기자, 〈머신러닝, 제대로 쓰기 위한 3가지 키워드〉, 《지디넷코리아》, 2014-12-14
  18. 오다인 기자, 〈꿈틀대는 머신러닝 시장, 한국은 어디쯤 왔나〉, 《보안뉴스》, 2018-03-13
  19. 스테판 자파리노, 〈기고|AI∙ML 채용 전망 '수요 느는데 공급은 부족'〉, 《씨아이오코리아》, 2018-08-06

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 머신러닝 문서는 인공지능 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.