[ML] ML Landscape

shihyunlim·2024년 9월 10일
0

Machine Learning

목록 보기
12/20

1) What is ML?

"머신러닝은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야입니다."
출처: 혼자 공부하는 머신러닝+딥러닝

-> 여태까지 머신러닝에 관한 여러 정의와 표현들을 봤지만 이거 만큼 마음에 와닿았던 건 없었다ㅎㅎ

2) Why use ML?

  • 규칙이 길고 복잡해지거나 새로운 규칙이 추가되는 경우 전통적인 방법(= 일일이 규칙을 코드로 작성하는 것)은 유지 보수가 힘들지만, 머신러닝은 패턴을 감지하여 어떤 기준을 세울지 자동으로 학습하므로 유지 보수가 쉬우며 정확도가 높다.
  • 전통적인 방식으로는 복잡하거나 알려진 알고리즘이 없는 경우 머신러닝 기법으로 해결책을 찾을 수 있다.
  • 학습을 통해 예상치 못한 상관관계나 추세가 발견되어 해당 문제를 더 잘 이해할 수 있게 된다.
    *data mining: 대용량의 데이터를 분석하여 숨겨진 패턴을 발견하는 것

3) Types of ML Systems

머신러닝은 크게 3가지의 넓은 범주에서 분류할 수 있다.

  • 훈련 지도 방식
  • 실시간으로 점진적인 학습을 하는지 안 하는지
  • 알고 있던 데이터들을 이용해 새 데이터를 비교하는지 아니면 훈련 데이터에서 패턴을 발견하여 예측 모델을 만드는지

3-1) 훈련 지도 방식

supervised learning
: 훈련 데이터에 label이라는 답이 포함됨

지도 학습 작업에는 데이터와 class로 훈련하여 새로운 데이터에 대해 분류 작업을 수행하는 classification, feature를 사용해 target 수치를 예측하는 regression이 있다.
*target과 label은 동의어로 취급되지만 target은 회귀에서, label은 분류에서 많이 사용된다. 또한 feature는 predictor나 attribute라고도 부른다.

unsupervised learning
: 훈련 데이터에 label이 없음. 시스템이 아무런 도움 없이 학습해야 함

비슷한 데이터들을 그룹으로 묶기 위해 clustering 알고리즘을 사용한다. 이때 그룹으로 묶는 것에 관한 규칙이 없으므로 알고리즘은 스스로 기준을 찾아내야 한다. 더 나아가 hierarchical clustering 알고리즘을 이용하면 각 그룹을 더 작은 그룹으로 세분화할 수 있다.

visualization 알고리즘은 대규모의 고차원 데이터를 넣으면 도식화가 가능한 2D나 3D 표현을 만들어주는데, 이를 통해 데이터가 어떻게 조직되어 있는지 확인하고 새로운 패턴을 발견할 수 있다. 이와 비슷하게 너무 많은 정보를 잃지 않으면서 데이터를 간소화하는 dimensionality reduction이 있다. 이 중 한 가지로는 상관관계가 있는 여러 특성을 하나로 합치는 것이며, feature extraction이라고 한다.
*dimensionality reduction에는 PCA나 t-SNE와 같은 것들이 있다.
-> t-SNE 참고: https://towardsdatascience.com/t-sne-clearly-explained-d84c537f53a

outlier detection은 학습 알고리즘에 주입하기 전 데이터셋에서 이상한 값을 자동으로 제거하는 것이다. 비슷한 작업은 novelty detection(특이치 탐지)는 훈련 세트에 있는 모든 샘플과 다른 새로운 샘플을 탐지하는 것이 목적이다.

association rule learning은 대량의 데이터에서 특성 간에 연관 관계를 찾는 것이다.

semi-supervised learning
: 데이터에 label이 일부만 있는 것

보통 unsupervised learning과 supervised learning의 combination으로 해결된다. 예를 들어 clustering으로 비슷한 샘플들을 그룹으로 모은 후 레이블이 없는 모든 샘플에 해당 그룹의 label을 할당한 뒤, supervised learning 알고리즘을 사용할 수 있다.

self-supervised learning
: label이 전혀 없는 데이터셋에 label을 부여하는 것

예를 들어 레이블이 없는 이미지로 구성된 데이터셋이 있다면 각 이미지 일부분을 랜덤하게 masking하고 모델이 원본 이미지를 복원하도록 훈련할 수 있다. 이때 masking된 이미지가 훈련 데이터, 원본 이미지가 label로 사용된다. 훈련이 잘 되면 이미지 복원이 제대로 이루어질 수 있다는 것으로 이미지 분류 또한 잘 이루어질 수 있게 된다. 그러므로 복원 대신 fine tuning(미세 조정)을 통해 예측 작업을 수행할 수 있도록 만들 수 있다.

reinforcement learning
: agent가 environment를 관찰해서 action을 하고 그 결과로 reward나 penalty를 받으며, 시간이 지남에 따라 가장 큰 reward를 얻기 위해(= penalty를 적게 받기 위해) 최상의 전략인 policy를 스스로 학습하는 것

출처: https://aws.amazon.com/what-is/reinforcement-learning/

3-2) 점진적 or not

batch learning

  • 점진적으로 학습할 수 없음
  • 모든 데이터를 사용해서 훈련함
  • 시간과 자원을 많이 소모함
  • 학습한 것을 단지 적용만 함

-> *offline learning

새로운 데이터가 발생하면 모델의 성능은 감소하게 된다. 그렇기 때문에 새로운 데이터를 포함해서 학습을 새로 해줘야 하는데, batch learning은 기존 데이터와 새 데이터를 포함하여 처음부터 다시 훈련해야 한다. 이는 컴퓨팅 자원과 시간 소모가 심하다는 문제점이 있다.

online learning

  • 순차적으로 한 개씩 또는 mini-batch 단위로 훈련함
  • 매 학습 단계가 빠르고 비용이 적게 듦
  • 새로운 데이터에 대해 모델을 빠르게 학습할 수 있으며 컴퓨팅 자원이 제한된 경우에도 가능함
  • 데이터 일부를 읽어들이고 훈련을 진행하며 이는 전체 데이터가 모두 적용될 때까지 반복함
  • out-of-core 메모리가 수행될 수 있다고 했는데, 여기서는 실시간 학습을 의미하는 게 아니라 점진적인 학습이 가능하다는 의미로 쓰임. 보통 오프라인으로 실행됨
  • learning rate: 파라미터가 변화하는 데이터에 얼마나 빠르게 적응할 것인지 결정

-> *incremental learning

3-3) 사례 기반 or 모델 기반

일반화가 어떻게 되느냐?!

instance-based learning
: 시스템이 훈련 샘플을 기억함으로써 학습하고, similarity를 측정하여 새로운 데이터와 학습한 샘플을 비교하는 식으로 일반화함

예를 들어 새 이미지 샘플 주변에 고양이 label 2개, 강아지 label 1개가 있다면 그 샘플은 고양이로 분류될 것임

model-based learning
: model selection을 한 뒤 model parameter를 조정하는 과정, 즉 training 단계를 통해 최적의 파라미터를 찾아서 prediction을 하는 것
-> 머신러닝 프로젝트의 전형적인 형태!

4) Main Challenges of ML

ML의 주 과제는 적절한 모델을 선택하고, 여기에 데이터를 넣어 학습하는 것이므로 만약 원하는 결과가 나오지 않았다면 그건 "bad algorithm""bad data" 때문일 것이다. 구체적으로 살펴보자.

4-1) Insufficient Quantitity of Training Data

대부분의 알고리즘이 잘 작동하려면 충분한 양의 데이터가 필요하다.

4-2) Nonrepresentative Training Data

sampling bias의 유명한 예시가 가장 이해하기 쉽다. 1936년에 미국 대통령 선거 전에 Landon과 Roosevelt 중 누구를 뽑을 거냐는 여론 조사에서는 Landon이 57%로 높았지만 실제 선거 결과 Roosevelt가 62%로 더 높았다는 것이다. 이 둘 사이에 왜 이런 차이가 나왔냐 하면 바로 여론 조사가 전화번호부, 잡지 구독자, 클럽 멤버십 리스트와 같이 Landon이 속한 Republican을 뽑을 가능성이 높은 부유한 사람들을 대상으로 하였고(의도치 않았지만), 여론 조사 연락이 간 사람들 중 단 25%만이 응답을 했기 때문이다. 이는 유권자 전체가 아닌 일부를 대상으로 시행되었기 때문에 샘플링 편향이 발생하여 실제 결과와는 달랐던 것이다.

따라서 데이터를 가져올 때는 bias가 발생하지 않았는지, 내가 일반화하고자 하는 케이스들을 대표하는지 확인해보아야 한다.

4-3) Poor-Quality Data

데이터에 error, outlier, noise(측정 장비 결함으로 인한)가 있다면 처리를 해줘야 한다.

4-4) Irrelevant Features

훈련 데이터에 관련 없는 특성이 적고 관련 있는 특성이 충분해야 시스템이 학습을 성공적으로 할 수 있다.
-> *feature engineering

  • feature selection: 훈련에 가장 유용한 특징 선택한다.
  • feature extraction: 특성을 결합하여 더 유용한 특성을 만든다. 차원 축소 알고리즘이 유용할 수 있음
  • 데이터를 수집하여 새 특성 만든다.

4-5) Overfitting the Training Data

: 훈련 데이터에 과하게 적합한 것
해결 방법으로는 regulation이 있다. 다음 블로그는 그 중 일부를 다루고 있다. -> regulation

4-6) Underfitting the Training Data

훈련 데이터에서 underfitting할 때 우선 과제는 훈련 데이터에 적합하게끔 모델을 만드는 것이다. 모델을 더 복잡하게 만들기, 학습 알고리즘에 더 나은 feature 이용하기(feature engineering), 하이퍼파라미터를 조절하여 모델에 가해진 constraint 줄이기 등으로 해결할 수 있다.

5) Testing and Validating

좋은 모델이란 데이터에 대해 generalization이 잘 되는 것이다. 그러므로 우리는 주어진 데이터를 training set과 test set으로 나누어 학습과 테스트를 각각 진행한다. 테스트 세트로 모델을 평가하면 새로운 샘플에 대한 오차 비율을 의미하는 generalization error 또는 out-of-sample error을 얻게 되는데 이를 통해 일반화 성능을 확인할 수 있다. 만약 훈련 세트에 대한 오류가 작은데 일반화 오류가 크다면 이건 overfitting인 상황을 의미한다.

그런데 테스트 세트라도 이에 대해 여러 번 테스트하여 모델을 수정하면, 결국 테스트 세트에 과적합된 모델이 만들어질 위험이 있다. 그래서 등장하는 해결 방법이 바로 holdout validation이다. 이는 훈련 세트의 일부를 떼어내어 validation set으로 만든 뒤, test set을 이용하여 모델을 평가하기 전에, 모델을 검증해보는 것이다. 이걸 여러 번 반복하는 걸 cross validation이라고 하는데 이에 대해서는 cross validation을 참고하자.

5-1) Data Mismatch

예를 들어 꽃 사진으로부터 꽃 이름을 자동으로 찾아주는 앱을 만든다고 하자. 이때 모델을 학습하는 자료로 웹에서 많은 자료들을 가져올 수 있지만, 이는 실제로 찍은 사진을 완전히 대체하지는 못할 것이다. 그렇기 때문에 웹에서 다운로드한 사진으로 학습을 하고 실제 사진으로 모델의 성능을 측정하면 결과가 매우 안 좋을 것이다.

이를 해결하기 위해 훈련 세트 일부를 떼어내 train-dev set이라고 하고, 훈련 세트에서 학습하고 train-dev set으로 검증해보자. 만약 train-dev set에 대해 잘 작동하지 않으면 훈련 세트에 overfitting한 것이고, 잘 작동한다면 검증 세트에서 평가하면 된다. 만약 검증 세트에 대해서 성능이 나쁘다면 data mismatch 문제이므로 웹 이미지를 앱에서 찍은 이미지처럼 보이도록 전처리를 해야 한다.

출처: Hands-On Machine Learning by Aurelien Geron

0개의 댓글