본문 바로가기
『 Python 』/AI

[AI] 1.1 머신러닝 시스템의 종류

by Play IT 2023. 2. 5.
반응형

머신러닝 시스템의 종류는 굉장히 많습니다. 

  1. 사람의 감독하에 훈련하는 것인가? (지도, 비지도, 준지도, 강화학습)
  2. 실시간으로 점진적인 학습인가? (온라인 학습, 배치 학습)
  3. 단순하게 알고있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인가? 훈련 데이터셋에서 패턴을 발견하여 예측하는 모델인가? ( 사례 기반 학습, 모델 기반학습)

이 범주들은 서로 배타적이지 않으며 서로간 원하는 대로 연결할 수 있습니다.

 


지도 학습과 비지도 학습

 


머신러닝 시스템을 학습하는 동안의 감독 형태나 정보량에 따라 분류할 수 있습니다. 

지도 학습, 비지도 학습, 준지도 학습, 강화 학습 등 크게 네 가지 범주로 나뉩니다.

 

[지도 학습]

전형적인 방식으로는 다음과 같습니다.

  • 분류 : 스팸인지 아닌지 새 메일을 어떻게 분류할 것인가?
  • 회귀 : 예측 변수(특성[주행거리, 연식, 브랜드 등])를 사용하여 중고차 가격 같은 타깃 수치를 예측하는 방식

일부 회귀 알고리즘은 분류에 사용할 수 있으며 일부 분류 알고리즘도 회귀에 사용될 수 있습니다.

예를 들면 분류에 널리 쓰이는 로지스틱 회귀는 클래스에 속할 확률을 출력합니다. (예를 들면 스팸일가능성 30%를 의미)

 

다음은 지도 학습 알고리즘들 입니다. 

  • k-최근접 이웃 k-nearest neighbors
  • 선형 회귀 linear regression
  • 로지스틱 회귀 logistic regression
  • 서포트 벡터 머신 support vector machine (SVM)
  • 결정 트리와 랜덤 포레스트 decision tree & random forest
  • 신경망 neural networks

 

[비지도 학습]

비지도 학습은 말그대로 훈련 데이터에 정답을 안주어주는 방식입니다.

 

다음은 비지도 학습 알고리즘들 입니다.

  • 군집 clustering
    • k-평균 k-means
    • DBSCAN
    • 계층 군집 분석 hierarchical cluster analysis(HCA)
  • 이상치 탐지 Outlier detection 와 특이치 탐지 novelty detection
    • 원 클래스 one class SVM
    • 아이솔레이션 포레스트 isolation forest
  • 시각화와 차원축소
    • 주성분 분석 PCA
    • 커널 PCA
    • 지역적 선형 임베딩 LLE
    • t-SNE
  • 연관 규칙 학습
    • 어프라이어리
    • 이클렛

계층 군집 알고리즘을 사용하면 여러 그룹을 특성을 가지고 더 작은 그룹으로 세분화 할 수 있습니다.

시각화 알고리즘은 비지도 학습의 좋은 예입니다. 레이블이 없는 고차원 데이터를 넣으면 도식화가 가능한 2D및 3D 표현을 만들어줍니다. 이러한 알고리즘은 가능한한 구조를 그대로 유지하려 하므로 데이터가 어떻게 조직되어있는지이해할 수 있으며 예상치 못한 패턴을 발견할 수 있습니다. 

차원축소는 너무많은 정보를 잃지 않으면서 데이터를 간소화하는 방식입니다. 비슷한 유형으로는 특성 추출이 있습니다.

이상치 탐지는 부정 거래를 막기 위해 신용카드 거래를 감지하는 것과 비슷한 기능입니다. 특이치 탐지와 이와 비슷합니다.

연관 규칙 학습은 대량의 데이터에서 특성 간의 흥미로운 관계를 찾는 방식입니다.

 

 

[준지도 학습]

데이터에서 레이블을 다룬다는 것은 일반적인 비용과 시간이 많이 들어갑니다. 그러기에 레이블이 없는 샘플이 많은 경우가 있습니다. 어떤 알고리즘은 일부만 레이블이 있는 데이터를 다루는 경우가 있는대 이러한 학습을 준지도 학습이라고 불립니다. 

 

구글 포토 호스팅 서비스는 준지도 학습의 좋은 예시 입니다. 

심층 신뢰 신경망 DBN, 제한된 볼츠만 머신RBM은 비지도 학습에 기초로 합니다. 

 

 

[강화 학습]

강화 학습은 다른 학습과 다른 종류의 알고리즘입니다. 여기서는 학습을 하는 시스템을 에이전트로 칭하며 환경을 관찰해서 행동을 실행하고 그 결과로 보상혹은 벌점을 받습니다. 시간이 지나며 가장 큰 보상을 얻기 위해 정책이라 불리는 최상의 전략을 스스로 학습하게됩니다. 정책은 주어진 상황에서 에이전트가 어떤 행동을 선택해야 할지 정의를 해주는 역할을 담당합니다. 

 

해당 강화학습은 주로 보행 로봇을 만들기위해 사용되거나 알파고와 같은 프로그램을 예시로 둘수 있습니다.

 

 


배치 학습과 온라인 학습


머신러닝 시스템에서는 시스템을 분류하는 데 있어 사용하는 다른 기준은 입력 데이터의 스트림으로 부터 점진적으로 학습할 수 있는지에 대한 여부로 나뉩니다.

 

[배치 학습]

배치학습은 점진적으로 학습을 할 수 없습니다. 가용한 데이터를 모두 사용해 훈련을 해야하기에 시간과 자원을 많이 소모하기에 보통 오프라인에서 수행됩니다. 시스템을 훈련시킨다음 제품에 시스템을 적용하게 된다면 더이상의 학습없이 실행되기에 오프라인 학습이라고 불립니다.

배치 학습 시스템이 새로운 종류의 데이터를 학습하기 위해서는 전체 데이터를 사용하여 시스템의 새로운 버전을 처음부터 다시 훈련해야 하기에 이전 시스템을 중지 시키고 새로운 시스템으로 교체를 해주어야 합니다.

 

다행이 머신러닝 시스템을 훈련 평가 론칭하는 전체 과정이 쉽게 자동화 활수 있기에 배치 학습 시스템도 변화에 적응할 수 있습니다. 데이터를 업데이트하고 새버전을 필요한 만큼 자주 훈련시키면 됩니다.

 

[온라인 학습]

온라인 학습은 배치학습과 다르게 데이터를 순차적으로 한 개씩 또는 미니배치라 불리는 작은 묶음 단위로 주입하여 시스템을 훈련시킵니다. 매 학습 단계는 빠르게 진행되기에 데이터가 도착하는 대로 즉시 학습을 할 수 있습니다.

온라인 학습은 연속적으로 데이터를 받고 빠른 변화에 스스로 적응해야 하는 시스템에 적합합니다. 또는 시스템의 자원이 제한된 경우에도 좋은 선택입니다. 외부 메모리 학습이라 불리는 알고리즘은 오프라인으로 보통 실행되기에 점진적 학습으로 알아두면 됩니다. 온라인 학습 시스템에서는 중요한 파라미터 하나가 있습니다. 바로 학습률 입니다. 학습률을 높이게 되면 데이터를 빠르게 적응하지만 예전데이터를 금방 잊으며 반대로 낮을 경우 관성이 더 커져 느리게 학습되게 됩니다. 하지만 낮출수록 새로운 데이터에 있는 잡음이나 대표성 없는 데이터 포인트에 덜 민감하다는 장점을 가지고 있습니다.

온라인 학습의 가장 큰 단점은 안 좋은 데이터가 주입됬을 경우 성능이 점진적으로 감소한다는 점입니다. 이러한 위험을 줄이기 위해 면밀히 모니터링을 해주어야 합니다.

 


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


머신러닝 시스템은 어떻게 일반화가 되는가에 따라 분류할 수 있습니다. 대부분의 머신러닝 작업은 예측을 만드는 것입니다. 즉 훈련 데이터로 학습하고 훈련 데이터에서 본 적 없는 새로운 데이터에서 좋은예측을 만들어야 한다는 뜻입니다. 새로운 샘플에 잘 작동하는 모델일수록 좋습니다. 

 

[사례 기반 학습]

가장 간단한 형태의 학습은 단순히 기억하는 것입니다. 스팸 필터 프로그래밍 할때 스팸과 스팸과 유사한 메일을 구분할 수 있도록 만드는 과정에서 유사도 측정을 해주어야 합니다. 예를 들면 공통으로 포함된 단어의 수를 세는것입니다. 이를 사례 기반 학습이라고 합니다. 시스템이 훈련 샘플을 기억함으로써 학습을 진행하며 유사도측정을 사용해 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화 합니다. 

 

사례 기반 학습

 

[모델 기반 학습]

샘플로 부터 일반화시키는 다른 방법은 이 샘플들의 모델을 예측에 사용하는 것입니다. 

모델 기반 학습

 

 모델을 만들때 A + B * GDP를 예시로 둔다면 

A는 효용 함수(모델이 얼마나 좋은지, 적합도 함수), B는 비용 함수(얼마나 나쁜지)로 둘수있습니다.

A와 B는 피라미터라 보통불리며 최적화된 피라미터를 구하기 위해 모델을 훈련해 구할수 있습니다. 여기서 선형 회귀가 보통 사용됩니다. 

 

모델의 훈련과 실행은 다음과 같이 진행됩니다.

  1. 데이터 적재 numpy ~ , read_csv  ~
  2. 데이터 준비 (적재된 데이터 정형) x = np.~
  3. 데이터 시각화 plot.~ matplotlib ~
  4. 선형모델 선택 sklearn~ tensorflow~ linear
  5. 모델 훈련 fit
  6. 예측 predict~

 

 

 

글을 마치며,

글에 부족한 점이 있다면 댓글을 통해 알려주시면 반영해서 수정해드리겠습니다.

블로그는 향후 리뉴얼할 계획입니다.

 

반응형

댓글