[ML] 머신러닝 개요

2019. 11. 28. 15:06AI

Machine Learning

머신러닝이란 무엇인가?

머신러닝은 컴퓨터를 데이터로부터 배울수 있게 하는 프로그래밍의 과학 혹은 예술이다. 배운다는 의미가, 예시로 단순히 위키피디아의 데이터들을 다운받고, 많은 데이터들을 가지고 있는 상태이다. 그러나 모든 일에 대해, 성능이 비약적으로 상승한 것은 아니므로, 이것은 머신러닝이 아니다.

왜 머신러닝을 사용하는가?

전통적인 문제 접근 해결 방법

  • 1. 문제를 인식함
  • 2. 문제의 규칙을 프로그래밍한다.
  • 3. 만들어진 모델을 평가하고, 런칭을 하거나 에러를 수정함.
  • 4. 1-3 반복

이 전통적인 해결법은 한가지 문제가 있다. 특정 규칙을 프로그래밍화 하여, 어떤 문제를 해결하는 것은 당장에 좋은 퍼포먼스를 발휘할 수 있지만, 같은 패러다임을 가지고 있고, 필터링에 걸리지않는 약간의 규칙 변화가 있다면, 잘작동하지 않을 수있고, 그때마다 유저는 이 모델을 계속 고쳐아한다.

머신러닝을 사용한 문제 접근 해결 방법

  • 1. 문제를 인식함
  • 2. 문제의 규칙에 맞는 머신러닝 알고리즘으로 기하학적인 방법 및, 통계적인 방법으로, 접근하여 품.
  • 3. 만들어진 모델을 평가하고, 런칭을 하거나 에러를 수정함.
  • 4. 1-3 반복

위의 전통적인 방식이랑 머신러닝을 이용한 문제 해결방식은, 약간의 차이가 있다. 우선 데이터가 적을경우 전통적인 방식으로 해결하는 것이 맞지만, 처리해야될 데이터의 양이 방대하여, 그 피쳐들을 가지고 분포 및 통계적인 그래프를 그릴수 있고, 데이터의 분포도가 어떤 규칙을 가지는 형태를 가진다는 가정을 하였을때, 적용해야한다. 다만, 데이터의 분포에 따라 처리하는 방식이라, 기존의 해결방법에서 교묘한 방법으로 필터를 피해가는 식의 문제 변형은 굳이 사람손을 거치지않더라도, 모델이 알아서 걸러준다는 것이다.

머신러닝의 학습시스템 타입

  • 1. 지도 학습 : 훈련데이터를 넣어 학습을 시키되 레이블링을 같이줘서 학습을 시키는 것이다. 대표적인 분류문제에 많이 사용됨
  • 2. 비지도 학습 : 훈련데이터를 주되 레이블링을 시키지않는 것이다. 통계적인 지식을 이용하여 특정 집합군을 군집화하여 문제를 해결하는 방식을 사용함
  • 3. 세미 지도 학습 : 위와 같이 훈련을 시키긴 시키되 부분적인 레이블링만 시켜준다. 예를 들자면, 1,5,11을 분류하는 사진을 보여주고, 2,5,7을 보여줬다고 하면, 여기서 2,7은 레이블을 준게 없으므로 분류가 안되어야하지만, 시스템이 잘작동한다는 가정했고, 좋은 군집이 만들어져 있으면, 새로운 클러스터들을 만들수 있다, 다만, 혼동되거나 뒤쎃인 레이블이 없는 데이터들에 대해서는 직접 레이블링을 해줘야된다.
  • 4. 강화 학습 : 간단히 1. 기계가 행동을 하면, 거기에 대해서 상벌점을 준다. 여기서에서 기계는 상점을 받는 방향으로 학습하게 된다.

배치 러닝과 온라인 러닝

  • 배치 러닝 : 시스템의 학습 증가를 가능하게 하는 것으로, 상당히 많은 리소스를 요구한다. 이것은 전형적인 오프라인 러닝이다. 대신 출시 이후 더이상의 학습없이 이전에 배운것을 프레딕트만 하는데 이것을 오프라인 러닝이라고 한다. 배치러닝에서 새로운 데이터에 대해 알게 하기 위해서는 전체데이터셋(새로운데이터+기존데이터)로 학습을 시켜서 기존 시스템을 새걸로 대체해야한다. 다행히 현재는 좋은 라이브러리들이 많이 올라와서 머신러닝에서 학습, 평가, 출시는 자동적으로 쉽게 할수 있다. 새로운 경우가 생길때마다 단순히 데이터를 추가하면 해주면 해결되는 것이다.
  • 온라인 러닝 : 시스템을 개별적으로 미니 배치라고 불리는 작은 그룹 즉,연속적인 일련의 데이터를 피딩 시킴으로써 학습률을 높이는 방식이다. 연속적인 흐름으로써 데이터를 받는 것에 매우 좋다. 그래서 변화에 자율적이고 빠르게 적응할수 있다. 또한, 한정적인 리소스를 가지고 있고, 온라인 러닝 시스템이 새 데이터 인스턴스를 배웠다면, 컴퓨팅 자원이 더 이상 필요가 없다. 온라인 러닝의 한가지 중요한 요소는 얼마나 빠르게 데이터의 변화에 적용할수 있냐는 것인데, 이것은 학습률에 달려있다. 학습률을 높게 잡으면 새 변화에 빠르게 적용할 수 있지만, 그만큼 기존의 학습 데이터는 빠르게 사라진다. 학습률을 낮춘다면, 느리게 바뀌는 대신 기존 학습 데이터를 오래 기억한다. 이것은 노이즈에 대해 덜 민감하게 반응 한다. 한가지 거대한 도전은 나쁜 데이터가 시스템에 학습이 된다면, 시스템의 효율은 급격히 떨어진다. 그렇기 때문에 시스템에 대해 꾸준한 모니터링을 통해 나쁜 데이터가 들어올 경우 러닝을 중단하는 등의 조치를 취해야 한다.