1장. 한눈에 보는 머신러닝

기운찬곰·2020년 10월 14일
0

Machine Learning

목록 보기
2/6

시작하기에 앞서서...

전체적인 진행과정과 실습, 일부 내용은 핸즈온 머신러닝(2판) 을 참고했다.

핸즈온 머신러닝은 머신러닝의 바이블이라고 불리는 꽤나 유명한 도서이다. OREILLY 원서를 바탕으로 했고 분량도 상당하기 때문에 값은 꽤나 비싼편이지만 평점은 매우 좋다. 2판이 나온지 얼마 안되었기 때문에 이 도서를 구매해서 공부해보려고 한다.

참고 사이트는 아래와 같다.

머신러닝, 딥러닝에 관해 많은 책을 번역하고 혹은 직접 작성하신 박해선 님이 유튜브 강의도 해주고 주피터노트북 소스코드 또한 상세하게 작성해서 제공해준다.


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

전통적인 접근방법

만약 스팸 필터를 전통적인 방법으로 만든다고 생각해보자. 메일에 있는 단어를 살피면서 스팸에 들어가 있을만한 단어들이 있는지 살피고 이를 코드로 작성하면 된다.

하지만 정해진 규칙에 따라서만 분류가 가능하기 때문에 매번 업데이트를 해줘야 하는 문제가 있다.

또한 스팸 필터문제가 아닌 사진을 주고 이 사진이 고양이 사진인지 아닌지를 찾아내라는 프로그램을 만들어라 라고 한다면 어떨까? 답이 없다...


머신러닝 접근방법

머신러닝 접근방법은 주어진 데이터로부터 결과를 찾는 것에 초점을 맞추는 것이 아니라 주어진 데이터로 부터 규칙을 찾는 것에 초점을 맞추고 있다. 주어진 데이터로부터 규칙성을 찾는 과정을 우리는 학습(training) 이라고 한다.


머신러닝으로 무엇을 만들 수 있나

요즘에는 대표적으로 이미지(영상처리) 분야와 자연어 처리 분야에서 그 두각을 많이 드러내고 있는 추세이다.

  • 이미지(영상처리) 분야 : 이미지 분류 등
  • 자연어 처리 분야 : 뉴스 기사 분류하기, 챗봇, 음성인식, 문서요약 등
  • 그 외 : 내년 수익 예측하기, 상품 추천 시스템, 지능형 게임 봇(알파고), 군집 작업 등

머신러닝 시스템 종류

저번시간에 머신러닝은 크게 지도학습, 비지도학습, 강화학습이 잠깐 언급했는데 이번시간에 자세히 알아보도록 하겠다.

이미지 출처 : https://opentutorials.org/module/4916/28934

지도학습(Supervised Learning)

사람이 교사로서 각각의 입력(x)에 대해 레이블(y)을 달아놓은 데이터를 컴퓨터에 주면 컴퓨터가 그것을 학습하는 것이다. 사람이 직접 개입하므로 정확도가 높은 데이터를 사용할 수 있다는 장점이 있다. 대신에 사람이 직접 레이블을 달아야 하므로 인건비 문제가 있고, 따라서 구할 수 있는 데이터양도 적다는 문제가 있다.

  • 분류(Classification) : 레이블 y가 이산적(Discrete)인 경우 즉, y가 가질 수 있는 값이 [0,1,2 ..]와 같이 유한한 경우 분류, 혹은 인식 문제라고 부른다. 일상에서 가장 접하기 쉬우며, 연구가 많이 되어있고, 기업들이 가장 관심을 가지는 문제 중 하나다. 이런 문제들을 해결하기 위한 대표적인 기법들로는 로지스틱 회귀법, KNN, 서포트 벡터 머신 (SVM), 의사 결정 트리 등이 있다.

  • 회귀(Regression) : 레이블 y가 실수인 경우 회귀문제라고 부른다. 보통 엑셀에서 그래프 그릴 때 많이 접하는 바로 그것이다. 데이터들을 쭉 뿌려놓고 이것을 가장 잘 설명하는 직선 하나 혹은 이차함수 곡선 하나를 그리고 싶을 때 회귀기능을 사용한다. 잘 생각해보면 데이터는 입력(x)와 실수 레이블(y)의 짝으로 이루어져있고, 새로운 임의의 입력(x)에 대해 y를 맞추는 것이 바로 직선 혹은 곡선이므로 기계학습 문제가 맞다. 통계학의 회귀분석 기법 중 선형회귀 기법이 이에 해당하는 대표적인 예이다.


비지도학습(Unsupervised Learning)

사람 없이 컴퓨터가 스스로 레이블 되어 있지 않은 데이터에 대해 학습하는 것. 즉 y없이 x만 이용해서 학습하는 것이다. 정답이 없는 문제를 푸는 것이므로 학습이 맞게 됐는지 확인할 길은 없지만, 인터넷에 있는 거의 모든 데이터가 레이블이 없는 형태로 있으므로 앞으로 기계학습이 나아갈 방향으로 설정되어 있기도 하다. 통계학의 군집화와 분포 추정 등의 분야와 밀접한 관련이 있다.

  • 군집화(Clustering) : 데이터가 쭉 뿌려져 있을 때 레이블이 없다고 해도 데이터간 거리에 따라 대충 두 세개의 군집으로 나눌 수 있다. 이렇게 x만 가지고 군집을 학습하는 것이 군집화이다.

  • 연관규칙(Association rule) : 대량의 데이터에서 특성 간의 흥미로운 관계를 찾는 학습. 예를 들어 모든 구매내역을 조사하면서 바비큐소스와 감자를 구매한 사람이 스테이크도 함께 구매하는 경향이 있다는 것을 찾는 것과 같습니다.


강화학습(Reinforcement Learning)

위의 두 문제의 분류는 지도의 여부에 따른 것이었는데, 강화학습은 조금 다르다. 강화학습은 현재의 상태(State)에서 어떤 행동(Action)을 취하는 것이 최적인지를 학습하는 것이다. 행동을 취할 때마다 외부 환경에서 보상(Reward)이 주어지는데, 이러한 보상을 최대화 하는 방향으로 학습이 진행된다. 그리고 이러한 보상은 행동을 취한 즉시 주어지지 않을 수도 있다(지연된 보상).

대표적으로 게임 인공지능을 만드는 것을 생각해볼 수 있다. 체스에서 현재 나와 적의 말의 배치가 State가 되고 여기서 어떤 말을 어떻게 움직일지가 Action이 된다. 상대 말을 잡게 되면 보상이 주어지는데, 상대 말이 멀리 떨어져 이동할 때 까지의 시간이 필요할 수 있으므로, 상대 말을 잡는 보상은 당장 주어지지 않는 경우도 생길 수 있다. 심지어는 그 말을 잡은 것이 전술적으로는 이익이지만 판세로는 불이익이라 다 끝났을 때 게임을 질 수도 있다. (지연된 보상).

따라서 강화학습에서는 당장의 보상값이 조금은 적더라도, 나중에 얻을 값을 포함한 보상값의 총 합이 최대화되도록 Action을 선택해야 하며, 게다가 행동하는 플레이어는 어떤 행동을 해야 저 보상값의 합이 최대화되는지 모르기 때문에, 미래를 고려하면서 가장 좋은 선택이 뭔지 Action을 여러 방식으로 수행하며 고민해야 합니다.


온라인 학습과 배치 학습

머신러닝은 일반적으로 위에 처럼 지도, 비지도, 강화 3가지로 분류하지만 조금 관점을 다르게 해서 분류할 수도 있다. 그니까 분류하는 기준을 입력데이터의 스트림을 점진적으로 학습할 수 있는지 여부에 따라 나누는 것이다.

  • 온라인 학습 : 적은 데이터를 사용해 점진적으로 훈련. 실시간 시스템이나 메모리가 부족한 경우 사용
  • 배치 학습 : 전체 데이터를 사용해 오프라인에서 훈련. 컴퓨팅 자원이 풍부한 경우 사용

사례기반 학습과 모델기반 학습

또 다른 분류 기준으로 어떻게 일반화되는가에 따라 분류할 수 있다. 대부분의 머신러닝은 예측하는 것이 목표이다. 다시 말하면, 주어진 훈련 데이터로 학습하지만 훈련 데이터에서는 본 적 없는 새로운 데이터로 일반화되어야 한다는 뜻이다.

일반화를 위한 두 가지 접근법은 아래와 같다.

사례 기반 학습

가장 간단한 형태의 학습은 단순히 기억하는 것이다. 그리고 유사도 측정을 사용해 새로운 데이터에 일반화합니다. (군집화?)


모델 기반 학습

샘플로부터 일반화시키는 다른 방법은 이 샘플들의 모델을 만들어 예측하는 것이다. (선형회귀가 대표적)


머신러닝의 주요 도전과제

충분하지 않은 양의 훈련데이터

대부분의 머신러닝 알고리즘이 잘 작동하기 위해서는 데이터가 많아야 한다. 아주 간단한 문제에서조차도 수천 개의 데이터가 필요하고 이미지나 음성 인식 같은 복잡한 문제의 경우 수백만 개가 필요할 수 있다.

대표성 없는 훈련데이터

일반화가 잘되기 위해서는 우리가 일반화하기 원하는 새로운 사례를 훈련 데이터가 잘 대표하는 것이 중요하다.

대표성을 가지는 데이터를 사용하는 것이 가장 좋지만, 결코 쉬운일은 아니다.
샘플이 작으면 샘플링 잡음(Sampling Noise) 이 생긴다. 또한, 표본 추출 방법이 잘못되면 대표성을 띄지 못할 수 있는데 이런 문제를 샘플링 편향(Sampling Bias) 이라고 한다.

낮은 품질의 데이터

훈련 데이터가 에러, 이상치, 잡음으로 가득하다면 머신러닝 시스템이 내재되어 있는 패턴을 찾기 어려울 수 있다. 따라서, 데이터 전처리에 신경을 곤두세울 필요가 있다.

관련 없는 특성

훈련 데이터에 관련 없는 특성이 적고 관련 있는 특성이 충분해야 학습을 진행할 수 있다.

  • 특성 선택 : 준비되어 있는 특성 중 가장 유용한 특성을 찾는 과정
  • 특성 추출 : 특성을 조합하여 새로운 특성을 만드는 과정

과대적합(Overfitting)과 과소적합(Underfitting)

과대적합은 학습데이터를 과하게 잘 학습한 것을 의미한다. 예를 들어 강아지 사진과 고양이 사진을 구분하는 기계가 있을 때, 검은색 강아지 사진 훈련 데이터를 과하게 학습하면 기계는 나중에 가서는 흰색 강아지나, 갈색 강아지를 보고도 강아지가 아니라고 판단하게 된다. 이는 훈련 데이터에 대해서 지나친 일반화를 한 상황이 되는 것이다.

과소적합은 과대적합의 반대 개념이라고 할 수 있다. 이는 모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때 발생한다. 테스트 데이터의 성능이 올라갈 여지가 있음에도 훈련을 덜 한 상태이기 때문에 과대 적합과는 달리 훈련 데이터에 대해서도 보통 정확도가 낮다는 특징이 있다.


테스트세트와 검증세트

모든 데이터를 기계에게 학습시켜서는 안 된다. 데이터 중 일부는 테스트용으로 남겨두고 훈련용 데이터만 훈련에 사용해야 한다. 그래야만 기계가 학습을 하고나서, 현재 성능이 얼마나 되는지를 측정할 수 있으며 과적합(overfitting) 상황을 막을 수 있다.

데이터의 양이 충분하여 더 세부적으로 나눌 수 있다면 훈련용, 검증용, 테스트용. 데이터를 이렇게 세 가지로 나누고 훈련용 데이터만 훈련에 사용하기도 한다. (보통 훈련용 80%, 테스트용 20%으로 생각하면 된다. 하지만 데이터셋 크기에 따라 다를 수도 있다)


마침

다음시간에는 핸즈온 머신러닝(2판) 책에 나와있는 머신러닝 프로젝트 처음부터 끝까지 실습을 해보면서 머신러닝의 주요단계에 대해 알아보도록 하겠다

References

profile
배움을 좋아합니다. 새로운 것을 좋아합니다.

0개의 댓글