머신러닝의 개념

Moon·2021년 8월 10일

본 포스터는 핸즈온 머신 러닝 1장을 참고하였으며 기본 개념들을 정리한다.

머신러닝:

->머신러닝은 데이터로부터 학습하도록 프로그래밍하는 과학이다.
->머신러닝은 명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야이다.

데이터 마이닝:

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

머신 러닝 시스템의 종류:

머신 러닝은 다음을 기준으로 넓은 범주에서 분류할 수 있다.

  • 사람의 감독하에 진행하는것인지(지도 , 준지도, 비지도, 강화 학습)
  • 실시간으로 점진적으로 학습을 하는지 아닌지 (온라인 학습과 배치 학습)
  • 단순하게 알고 있는 데이트 포인트와 새 데이터 포인트를 비교하는 것인지 아니면
    훈련 데이터셋에서 과학자들처럼 패턴을 발견하여 예측 모델을 만드는지(사례 기반 학습, 모델 기반 학습)

지도학습

지도 학습 (supervised learning)에는 알고리즘에 주입하는 훈련 데이터 레이블이라는 원하는 답이 포함되어 있다. 전형적인 지도 학습에는 분류와 회귀가 있다. 회귀란 예측변수 (predictor variable)라 부르는 특성 (feature)을 사용해 타깃 수치를 예측하는 것이다. 널리 쓰이는 로지스틱 회귀는 특정 클래스에 속할 확률을 출력하여 분류에 사용된다.

주요한 지도 학습 알고리즘들

  • k-최근접 이웃
  • 선형 회귀
  • 로지스틱 회귀
  • 서포트 벡터 머신
  • 결정 트리와 랜덤 포레스트
  • 신경망

비지도 학습

비지도 학습은 훈련 데이터에 레이블이 없다. 즉 시스템이 아무런 도움없이 학습해야 한다. 예를 들어, 시각화(visualiztion) 알고리즘은 비지도 학습의 일종으로 레이블이 없는 데규모의 고차원 데이터를 도식화가 가능한 2D나 3D 표현을 만들어줌으로써 데이터가 어떻게 조작되어 있는지 이해할 수 있고 예상하지 못한 패턴을 발견할 수도 있다. 비슷한 작업으로 너무 많은 정보를 잃지 않으면서 데이터를 간소화하는 차원 축소(dimensional reduction) 알고리즘도 있다. 구체적으로, 상관관계가 있는 여러 특성을 하나로 합치는 것이며 이를 특성 추출(feature extraction)이라고 한다. 또 하나의 중요한 비지도 학습은 이상치 탐지 (anomoly detection)인데 정상 샘플로 훈련되고 새로운 샘플이 정상 혹은 이상치인지 판단한다. 그 외에도 대량의 데이터에서 특성간의 관계를 찾는 연관 규칙 학습(association rele learning)도 있다.

주요한 지도 학습 알고리즘들
- 군집
-k-평균
-계층 군집 분석
-기댓값 최대화
- 시각화와 차원 축소
-주성분 분석
-커널
-지역적 선형 임베딩
-t-SNE
- 연관 규칙 학습
-어프라이어리
-이클렛

준지도 학습

지도학습과 비지도 학습으로 이루어져 있다(보통은 레이블이 없는 데이터가 많고, 레이블이 있는 데이터가 적음). 예를 들어 심층 신뢰 신경망(deep belief network-DBN)은 여러 겹으로 쌓은 제한된 볼츠만 머신(Restricted Booltzmann Machine-RBM)이라 불리는 비지도 학습에 기초한다. RBM이 비지도 학습 방식으로 순차적으로 훈련된 다음 전체 시스템이 지도 학습 방식으로 세밀하게 조정된다.

강화학습

학습하는 시스템을 에이전트(agent)라고 부르며 환경을 관찰해서 행동(action)을 실행하고 그 결과로 보상(reward)을 받는다(부정적인 보상에는 벌점(penalty)을 받는다). 시간이 지나면서 가장 큰 보상을 얻기 위해 정책(policy)이라고 부르는 최상의 전략을 스스로 학습하며 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의한다.

배치 학습

배치 학습에서는 시스템이 점진적으로 학습할 수 없으며 가용한 데이터를 모두 사용해 훈련시켜야 한다. 일반적으로 이 방식은 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행된다. 먼저 시스템을 훈련시키고 그런 다음 제품 시스템에 적용하면 더 이상의 학습없이 실행된다. 즉, 학습한 것을 단지 적용만 하며 이를 오프라인 학습(offline learning)이라고 한다.
배치 학습 시슽템이 새로운 데이터에 대해 학습하려면 전체 데이터를 사용하여 새로운 시스템의 새로운 버전을 처음부터 다시 훈련해야 한다음 시스템을 중지시키고 새 시스템으로 교체한다. 이런 방식은 간단하고 잘 작동하지만 전체 데이터셋을 사용해 훈련하는데 많은 컴퓨팅 자원이 필요하다. 때문에 점진적으로 학습할 수 있는 알고리즘을 사용하는 편이 낫다.

온라인 학습

온라인 학습(online learning)은 점진적 학습이라고도 한다. 온라인 학습에서는 데이터를 순차적으로 한 개씩 또는 미니배치(mini-batch)라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킨다. 매 학습 단계가 빠르고 비용이 적게 들어 시스템은 데이터가 도착하는 대로 즉시 학습 가능하다. 그러므로 온라인 학습은 연속적으로 데이터를 받고 (예를 들면 주식가격) 빠른 변화에 스스로 적응해야 하는 시스템에 적합하다. 또한 컴퓨터 한 대의 메인 메모리에 들어갈 수 없는 아주 큰 데이터 셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있다.
온라인 학습에서 중요한 파라미터 하나는 변화하는 데이터에 얼마나 빠르게 적응할 것인지하는 학습률(learning rate)이다. 학습률을 높게 하면 시스템이 데이터에 빠르게 적응하지만 예전 데이터를 금방 잃어버리고, 반대로 학습률이 낮으면 시스템의 관성이 더 커져서 느리게 학습된다.
온라인 학습에서 가장 큰 문제점은 시스템에 나쁜 데이터가 주입되었을 때 시스템 성능이 점진적으로 감소한다는 점이다.

-> 머신 러닝은 어떻게 일반화되는가에 따라 분류할 수도 있다. 대부분의 머신러닝 작업은 예측을 만드는 것인데 이 말은 즉 훈련 데이터로 학습하지만 본적 없은 새로운 데이터로 일반화되어야 한다는 뜻이다. 훈련 데이터에서 높은 성능을 내는거도 좋지만 진짜 목표는 새로운 샘플에 잘 작동하는 모델이다. 일반화를 위한 두 가지 접근법은 사례 기반 학습과 모델 기반 학습이다.

사례 기반 학습

사례 기반 학습(instance-based learning)이란 시스템이 사례를 기억함으로써 학습하게 하는것이다. 사례들의 유사도 (similarity)측정을 통해 이를 기반으로 새로운 데이터들에 일반화한다. 대표적인 예제로는 스팸메일 분류를 들 수 있다. 스팸 메일과 매우 유사한 메일을 구분하도록 스팸 필터를 프로그램하여 두 메일 사이의 유사도를 측정하여 스팸메일로 분류한다.
개인적인 이해로는 Metric Learning이 사례 기반 학습에 속한다.

모델 기반 학습

샘플들로부터 일반화시키는 다른 방법은 이 샘플들의 모델을 만들어 예측에 사용하는 것이다. 이를 모델 기반 학습(model-based learing)이라고 한다. 선형회귀 모델 등을 예로 들 수 있다.

머신 러닝 용어들

  • 효용 함수(utility fucntion) 또는 적합도 함수(fitness model): 모델이 얼마난 좋은지 측정한다.

  • 비용 함수(cost function): 모델이 얼마나 나쁜지 측정한다.

  • 샘플링 잡음(sampling noise): 우연에 의한 대표성 없는 데이터

  • 샘플링 편향(sampling bias): 표본 추출 방법이 잘못되면서 대표성을 띠지 못하는 데이터

  • 특성 선택(feature selection): 가지고 있는 특성 중에서 훈련에 가장 유용한 특성을 선택

  • 특성 추출(feature exraction): 특성을 결합하여 더 유용한 특성을 생성(차원 축수 알고리즘)

  • 과대 적합(overfitting): 모델이 훈련 데이터에는 너무 잘 맞지만 일반성이 떨어진다느 뜻

  • 과소 적합(underfitting): 모델이 단순하여 데이터의 내재된 구조를 학습하지 못하는 경우

  • 하이퍼파라미터(hyperparameter): 하이퍼파라미터는 모델이 아니라 학습 알고리즘의 파라미터이다. 즉 훈련 전에 미리 지정되고 , 훈련하는 동안은 상수로 남아있다.

  • 테스트 세트(test set): 훈련 세트를 이용해 모델을 훈련시키고 모델을 테스트 하는데 이용하는 세트이다. 새로운 샘플에 대한 오류 비율을 일반화 오차(generalization) 혹은 외부 샘플 오차(out-of-sample error)라고 한다. 이 값은 본 적이 없는 새로운 샘플에 모델이 얼마나 잘 작동할지 알려준다. 보통 데이터의 훈련,테스트 비율은 80:20로 설정한다.

그러나 테스트 세트에 최적화된 모델은 오히려 실제 서비스에 투입하면, 예상만큼 성능이 안 좋을 수 있다. 이를 데이터 스누핑(data snooping)편향이라고 하며 이 문제에 대한 해결책으로 검증 세트를 만드는 것이다.

  • 검증 세트:
    훈련 세트를 사용해 모델을 훈련시키고 검증 세트(validation set)에서 최상의 성능을 내는 모델과 하이퍼 파라미터를 선택한다. 만족스러운 모델을 찾은 후 일반화 오차의 추정값을 얻기 위해 테스트 세트로 단 한 번의 최종 테스트를 한다.
    또한 훈련 데이터에서 검증 세트로 너무 많은 양의 데이터를 뺏기지 않기 위해 일반적으로 교차 검증(cross-validation)기법을 사용한다. 훈련 세트를 여러 서브셋(subset)으로 나누고 각 모델을 이 서브셋의 조합으로 훈련시키고 나머지 부분으로 검증한다. 모델과 하이퍼파라미터가 선택되면 전체 훈련 데이터를 사용하여 선택한 하이퍼파라미터로 최종 모델을 훈련시키고 테스트 세트에서 일반화 오차를 측정한다.

  • 그리드 탐색 (Grid Search)
    세부 튜닝을 한다는 의미는 각 추정기와 변환기의 하이퍼 파라미터를 변경시켜 테스트한다는 의미이며 이를 그리드 탐색이라고 지칭한다. 그 중 한가지 방법으로 수동으로 만족할만한 하이퍼파라미터를 조정하는것이다. 매우 많은 경우의 수를 탐색하기에는 시간이 부족하기에 사이킷런의 GridSearchCV를 사용할 수 있다. 탐색하고자 하는 하이퍼파라미터와 시도해볼만한 값을 지정하면 된다. 그러면 모든 가능한 모든 하이퍼파라미터 조합에 대해 교차 검증을 사용해 평가하게 된다.

  • 랜덤 탐색(Random Search)
    그리드 탐색은 비교적 적은 수의 조합을 탐구할 때 사용한다. 하지만 하이퍼파라미터 탐색 공간이 커지면 RandomizedSearchCV를 사용할 수 있다. 본 방법은 GridSearch와 거의 같은 방식으로 사용하지만 가능한 모든 조합을 시도하는 대신 각 반복마다 하이퍼파라미터에 임의의 수를 대입하여 지정한 횟수만큼 평가한다.

profile
AI 기본개념 정리

0개의 댓글