'머신러닝'에 해당되는 글 2건

  1. 2019.02.14 머신러닝 데이터와 알고리즘
  2. 2019.01.31 머신러닝 입문하기

머신러닝은 어떤 데이터로 어떤 학습 알고리즘을 사용할 것인가를 결정하는 작업이라고 할수 있다. 여기서 문제가 될수 있는 나쁜 알고리즘과 나쁜 데이터에 대해 알아보도록 하자.

충분하지 않은 데이터

어린아이에게 사과에 대해 알려주려면 사과를 가리키면서 ‘사과’라고 말하기만 하면 된다(아마도 이 과정을 여러 번 반복해야 하겠지만..). 그러면 아이는 결국 색깔과 모양이 달라도 모든 종류의 사과를 구분할 수 있게 된다. 하지만 머신러닝에서 사과를 구분할 수 있도록 알고리즘이 잘 작동하려면 데이터가 많아야 한다. 아주 간단한 문제에서 조차도 수천 개의 데이터가 필요하고 이미지나 음성 인식 같은 복잡한 문제라면 수백만 개가 필요할지도 모른다.

“It’s not who has the best algorithm that wins. It’s who has the most data”

AI 전문가이자 스탠포드 교수인 앤듀르 응(Andrew Ng)의 말이다. 정교한 알고리즘을 설계하는 것 이상으로 많은 데이터를 이용하는 것이 효과적이다. 정교한 알고리즘과 많은 데이터가 가장 정확한 결과를 얻을 수 있겠지만, 시간과 돈을 알고리즘 개발에 쓰는 것과 데이터를 잘 활용하는것 사이의 트레이드 오프에 대해 다시한번 생각해 봐야 한다는 것이다.


(참고 논문 : 믿을 수 없는 데이터의 효과 http://goo.gl/KNZMEA)

대표성 없는 학습 데이터

일반화가 잘되려면 우리가 일반화하기 원하는 새로운 사례를 학습 데이터가 잘 대표하는 것이 중요하다. 대표성을 가지는 데이터를 사용하는 것이 가장 좋지만, 결코 쉬운일은 아니다. 샘플이 작으면 샘플링 잡음(Sampling Noise)이 생기고, 표본 추출 방법이 잘못되면 대표성을 띄지 못할 수 있다. 이를 샘플링 편향(Sampling Bias)이라고 한다.

샘플링 편향 사례

샘플링 편향에 대한 유명한 사례중 랜던(Randon)과 루즈벨트(Roosevelt)가 경쟁했던 1936년 미국 대통령 선거에서 Literary Digest 잡지사가 천만 명에게 우편물을 보내 수행한 대규모 여론조사가 있다. 그 당시 240만 명의 응답을 받았고 랜던이 선거에서 57% 득표를 얻을 것이라고 높은 신뢰도로 예측했지만, 루즈벨트가 62% 득표로 당선되었다. 문제는 Literary Digest의 샘플링 방법에 있었다고 한다.

첫째, 여론조사용 주소를 얻기 위해 전화번호부, 자사의 구독자 명부, 클럽 회원 명부 등을 사용했다. 이런 명부는 모두 공화당(따라서 랜던)에 투표할 가능성이 높은 부유한 계층에 편중된 경향이 있다.

둘째, 우편물 수신자 중 25% 미만의 사람이 응답했다. 이는 정치에 관심 없는 사람, Literary Digest를 싫어하는 사람과 다른 중요한 그룹을 제외시킴으로써 역시 표본을 편향되게 만들게 된 것이다. 특히 이러한 종류의 샘플링 편향을 비응답 편향(nonresponse bias)이라고 한다.

낮은 품질의 데이터

학습 데이터가 에러, 이상치, 잡음으로 가득하다면 머신러닝 시스템이 내재되어 있는 패턴을 찾기 어려울 수 있다. 그 만큼 데이터의 전처리가 매우 중요하다. 한 설문조사에서는 데이터과학자의 80% 시간을 데이터 수집 및 전처리에 사용한다고 한다. 아마도 전처리 과정은 특히나 지루하고 반복 작업의 연속이라 고단하고 시간도 많이 들어어가게 된다.

관련 없는 특성

학습 데이터에 관련 없는 특성이 적고 관련 있는 특성이 충분해야 학습을 진행할 수 있다. 훈련에 사용할 좋은 특성들을 찾아야 하며, 특성을 찾기 위해서는 아래 사항을 고려 해야 한다.


  • 특성 선택 (Feature Selection) : 가지고 있는 특성 중에서 학습에 가장 유용한 특성을 선택.
  • 특성 추출 (Feature Extraction) : 특성을 결합하여 더 유용한 특성을 만듬. 혹은 새로운 데이터를 수집하여 새로운 특성을 만듬.

지금까지 나쁜 데이터의 사례를 살펴보았고 이제 나쁜 알고리즘의 경우를 살펴보자.

학습 데이터의 과대적합

모델이 학습 데이터에 너무 잘 맞지만 일반성이 떨어진다는 의미이다. 훈련 데이터에 있는 잡음의 양에 비해 모델이 너무 복잡할 때 발생하기 때문에 좀더 단순화 시킬 필요가 있다.


  • 파라미터 수가 적은 모델 선택, 훈련데이터에 특성수를 줄임, 모델에 제약을 가하여 단순화
  • 훈련 데이터를 더 많이 모음
  • 훈련 데이터의 잡음을 줄임

학습 데이터 과소적합

모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못한것을 의미한다.


  • 파라미터가 더 많은 강력한 모델 선택
  • 더 좋은 특성 제공(특성 엔지니어링)
  • 모델의 제약을 줄임(규제 하이퍼파라미터를 감소)


좋은 모델을 만들기 위해서는 테스트와 검증이 필요하다. 이는 일반화 오류를 최소화 하기위한 방법이기도 하다. 일반적으로 모델을 만들기 위해서는 데이터를 훈련셋, 검증셋, 테스트셋으로 나누어 학습을 진행을 한다. 검증셋을 이용해 적합한 모델을 찾고 테스트셋을 이용해 최종 점검을 하여 최적의 하이퍼파라미터 셋팅하기 위함이다.


마치며…

“Big Data is the next Natural Resource…“

과거 원유가 가장 중요한 자원이었다고 한다면 이제는 데이터가 가장 중요한 자원일 것이다. 그런데 데이터는 과거의 자원들과는 아주 많이 다르다. 데이터는 지속적인 재생, 고갈되지 않는.. 그리고 스스로 증폭하는 새로운 자원이다. 앞으로는 이렇게 중요한 데이터를 올바르게 잘 활용을 하는것이 정말 중요할 것이다.

참고한 자료

강연 : 4차 산업혁명시대 어떻게 살 것인가? - EBS 미래강연Q

도서 : Hands-On Machine Learning - 한빛미디어



Posted by @위너스

댓글을 달아 주세요

머신러닝 입문하기

Article 2019. 1. 31. 18:18

인공지능? 머신러닝? 딥러닝

인공지능, 머신러닝, 딥러닝에 대해 자세히는 모르지만 대부분 한번쯤을 들어보았을 것이다. 분명 3가지는 차이가 있으며 어떤 차이가 있는지부터 알아보자.


머신러닝은 말 그데로 “기계가 학습?” 그럼 인공지능과 딥러닝은? 마찬가지로 기계학습이라 해도 틀린것은 아니다.

(그림 출처: https://blogs.nvidia.co.kr/2016/08/03/difference_ai_learning_machinelearning/)


인공지능은 매우 포괄적인 개념으로 가장 많이 사용되는 대중적인 단어이다. 특정 기술 분야 뿐아니라 지능적인 요소를 가진 모든 부분에 대해 부르는 이름이다. 예를들어 게임상의 Bot이나 음성인식을 이용한 검색, 통계를 기반으로한 예측시스템들도 인공지능이라 부른다.


반면 머신러닝은 인공지능 안에서의 특정분야를 지칭하는 단어이다. 그리고 그안에 파생된 기술도 딥러닝 뿐만 아니라 다른 많은 기술도 있다. 사실 기계학습, 인공지능에 대한 연구는 예전부터 존재했지만 발전이 없었고 단지 소수에 연구원들에 의한 주제였기에 대중화 될 수 없었다고 한다. 하지만 풍부한 데이터의 확보, 컴퓨팅 성능향상, 오픈소스 라이브러리로 인해 많은 개발자들이 인공지능 연구에 참여하게 되면서부터 크게 부각이 되기 시작했다.


머신러닝

머신러닝은 데이터로부터 학습하도록 컴퓨터를 프로그래밍하는 과학이다. 스팸필터로 예를 들면 스팸필터는 스팸메일과 일반메일의 샘플을 이용해 스팸메일 구분법을 배울수 있는 머신러닝 프로그램이다.


왜 머신러닝을 사용할까? 스팸 필터를 예로 전통적인 프로그래밍 기법과 비교해서 살펴보자.


스팸필터를 만들기 위해서는..


  • 스팸에 어떤 단어즐이 주로 나타나는지? ‘4U’, ‘신용카드’, ‘무료’ 등등
  • 발견한 각 패턴을 감지하는 알고리즘을 작성하여 메일을 스팸으로 분류
  • 프로그램을 테스트하고 충분한 성능이 나올 때까지 1,2단계를 반복


전통적인 접근 방법에는 문제가 단순하지 않아 규칙이 복잡해지기 때문에 유지보수가 매우 힘들다.


반면 머신러닝 기법을 이용한다면 일반 메일에 비해 스팸에 자주 나타나는 패턴을 감지하여 특정 단어나 구절이 스팸 메일을 판단하는 데 좋은 기준인지 자동으로 학습한다. 따라서 유지보수가 쉬우며 정확도가 더 높다.


만약 스팸 메일 발송자가 ‘4U’를 포함한 모든 메일이 차단된다는 것을 안다면 ‘4U’ 대신 ‘For U’를 쓰기 시작할지도 모른다. 전통적인 프로그래밍 방식의 스팸 필터는 ‘For U’메일을 구분하기 위해 수정이 필요하며 단어를 바꾸면 새로운 규칙을 계속 추가해 주어야 한다.


하지만 머신러닝 기반의 스팸 필터는 사용자가 스팸으로 지정한 메일에 유동 ‘For U’가 자주 나타나는 것을 자동으로 인식하고 별도 작업 없이도 자동으로 이 단어를 스팸으로 분류한다.


따라서 머신러닝 기술을 적용해서 대용량 데이터를 분석하면 겉으로는 보이지 않던 패턴을 발견할 수 있다.


머신러닝 시스템의 종류


머신러닝 시스템은 크게 세가지로 구분된다.

지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning)



(그림 출처 : https://www.techleer.com/articles/203-machine-learning-algorithm-backbone-of-emerging-technologies/)


각각의 어떤 특징들을 가지고 있는지 살펴보도록 하자.


지도 학습(Supervised Learning)


“지도학습은 훈련 데이터(Training Data)로부터 하나의 함수를 유추해내기 위한 기계학습의 한 방법이다.” - 위키피디아


정답이 있는 데이터를 기반으로 모델을 만들어 새로운 데이터가 들어왔을때 정답을 맞추는 것이다. 지도학습은 크게 분류(Classification)과 회귀(Regression) 두가지로 분류할 수 있다.


분류 : 이진분류(예 or 아니오), 다중분류(고양이, 사자, 새..) 

회귀 : 어떤 데이터들의 특징을 토대로 값을 예측(결과값은 실수, 키가 170면 몸게는?)


다음은 지도학습에 사용되는 알고리즘이 있다.


- k-최근접 이웃 (k-Nearest Neighbors)

- 선형 회귀 (Linear Regression)

- 로지스틱 회귀 (Logistic Regression)

- 서포트 벡터 머신 (Support Vector Machines (SVM))

- 결정 트리 (Decision Tree) 와 랜덤 포레스트 (Random Forests)

- 신경망 (Neural networks)


지도학습에 사용되는 각각의 알고리즘에 대해서는 다음에 다루도록 하겠다.


비지도 학습(Unsupervised Learning)

비지도 학습에 대해 이야기 하기 전에 먼저 지도 학습과 비지도 학습을 비교한 그림을 보자.


“데이터가 어떻게 구성되었는지를 알아내는 문제의 범주에 속한다.” - 위키피디아


지도학습과는 다르게 정답이 없는 데이터를 가지고 컴퓨터를 학습시키는 방법이다. 즉 데이터의 형태(특징?)으로 학습을 진행한다. (흔히 알고 있는 군집화..) 그리고 데이터를 이용해 컴퓨터는 스스로 어떤 관계를 찾아낸다.


비지도학습도 마찬가지로 다음과 같은 알고리즘이 있다.


군집 (Clustering)

- k-평균 (k-Means)

- 계층 군집 분석 (Hierarchical Cluster Analysis (HCA))

- 기댓값 최대화 (Expectation Maximization)


시각화 (Visualization)와 차원 축소(Dimensionality reduction)

- 주성분 분석 (Principal Component Analysis (PCA))

- 커널 (kernel PCA)

- 지역적 선형 임베딩 (Locally-Linear Embedding (LLE))


연관 규칙 학습 (Association rule learning)

- 어프라이어리 (Apriori)

- 이클렛 (Eclat)


(낯선 용어들이 많이 보여 거부감이 들겠지만, 개념정도는 이해하고 넘어가면 좋을것 같다.)


강화학습(Reinforcement Learning)

(그림 출처 : Hands-On Machine Learning 도서 - 한빛미디어)


강화학습은 상과 벌이라는 보상을 주며 상을 최대화하고 벌을 최소화 하도록 학습하는 방식이다. 주로 제어나 게임 플레이 등 상호작용을 통해서 최적의 동작을 학습해야 할 때 많이 사용된다. 데이터가 먼저 주어지는 지도학습이나 비지도학습과 달리 강화학습은 환경이 있고 에이전트가 그 환경 속에서 어떤 액션을 취하고 그 액션에 따른 어떤 보상을 얻게 되면서 학습이 진행된다. 에이전트가 보상을 최대화 하도록 하면서 학습이 진행되기 때문에 데이터 수집까지 포함하는 동적인 개념의 학습을 하게 된다. 우리의 인생으로 비유를 하자면 마치 시행 착오를 겪으며 경험이 쌓이고 경험을 토데로 옳고 그름을 판단을 수 있게 되는 것과 마찬가지다.


마치며...

얼마전 딥마인드의 알파스타가 프로게이머와의 대결에서 승리 하였다. 강화학습(Population-based reinforcement learning)을 사용하여 하나의 개체로만 학습을 하지 않고 멀티 에이전트로 수많은 개체를 따로 만들어 서로 대전하며 실력을 향상시켰고 최고의 성적을 거둔 에이전트들을 앙상블하여 하나의 모델을 만들었다고 한다. 2016년 알파고에 이어 2019년 알파스타, 불과 3년만에 훨씬 복잡한 문제를 풀었다는게 신기하다. 인간은 학습에 시간적 제약이 있지만 기계는 다르다. 인간이 학습한 10년 동안의 노하우를 기계는 컴퓨팅 파워를 이용해 단시간에 축적할 수 있다는 점을 보면 앞으로의 미래.. 기대도 되지만 두렵기도 하다. 


해당자료 및 영상 링크 : alphastar-mastering-real-time-strategy-game-starcraft-ii

Posted by @위너스

댓글을 달아 주세요