본문 바로가기
로봇/인공지능, AI

[핸즈온 머신러닝 3판] 1.한눈에 보는 머신러닝 1.4 ~ 1.6

by 33곰탱 2024. 9. 6.

1.4 머신러닝 시스템의 종류

이번 1장에서 가장 중요하고 관심을 써서 공부해야 할 부분이다. 바로 머신러닝 시스템의 종류이다.

  • 훈련 지도 방식: 지도 학습, 비지도 학습, 준지도 학습, 자기 지도 학습, 강화 학습 등
  • 실시간 학습: 온라인 학습과 배치 학습
  • 단순한 데이터 포인트 비교: 사례 기반 학습, 모델 기반 학습

등으로 나눌 수 있는데 천천히 봐보도록 하자.

1.4.1 훈련 지도 방식

이 책에 의하면 머신러닝 시스템은 지도 형태나 정보량에 따라 여러 방식으로 학습할 수 있다고 한다.

 

이게 무슨 소리인가 할 수도 있는데, 머신러닝이 학습하는 방식이 데이터를 어떻게 제공받고 처리하느냐에 따라 여러 가지로 나뉜다는 뜻이다. 즉 데이터의 제공 방식(지도 형태) 데이터에 포함된 정보량에 따라 머신러닝의 학습 방식이 달라진다는 것을 의미한다.

  • 위에서 말했듯이 대표적인 방식으로는 지도 학습, 비지도 학습, 준지도 학습, 자기 지도 학습, 강화 학습 등이 있다.

지도 학습 (Supervised Learning)

 

지도 학습(Supervised Learning) 데이터와 정답(레이블)이 함께 주어지는데, 모델은 주어진 데이터를 바탕으로 정답을 예측하는 방법을 학습한다.

 

지도 학습에서는 분류와 회귀라는 두 가지 주요 작업이 있는데, 분류는 클래스를 예측하고, 회귀는 수치를 예측하는 작업으로 나뉜다.  (분류에서는 보통 레이블이라는 말을 사용하고 회귀에서는 타깃이라는 말을 사용한다고 한다.)

  • 분류 예시 : 이메일이 스팸인지 아닌지 분류하는 작업. 각 이메일에는 "스팸" 또는 "스팸 아님"이라는 레이블이 있는 경우.
  • 회귀 예시 : 중고차 가격을 예측할 때, 주행 거리, 연식, 브랜드 같은 특성(feature)을 사용하여 가격이라는 타깃 값을 예측함.

분류, 회귀

 

 

비지도 학습 (Unsupervised Learning)

 

비지도 학습 (Unsupervised Learning)은 지도 학습과 달리 정답(레이블)이 없는 데이터를 사용하여 학습하는 방법이다. 즉, 주어진 데이터에 대한 레이블(정답)이 없기 때문에, 모델은 스스로 패턴을 찾아내야 한다.

 

  • 예를 들어, 수많은 이메일 데이터가 주어졌을 때, 비지도 학습은 이를 클러스터링(군집화)하여 비슷한 특성을 가진 이메일을 그룹으로 묶을 수 있다.
  • 특성(feature)들을 바탕으로 데이터가 어떻게 나눠질 수 있는지 패턴을 파악하는 것이 중요한데, 이렇게 그룹화된 데이터를 기반으로 모델은 새로운 이메일이 어떤 그룹에 속하는지 예측할 수 있다.

따라서, 비지도 학습은 레이블 없이 데이터를 분석하고, 내재된 구조나 패턴을 찾아내는 것이 목표라고 할 수 있다!

정답이 없는 메일들

시각화

"시각화"는 데이터를 보다 쉽게 이해할 수 있도록 2D 또는 3D 그래프나 도표로 표현하는 방법으로 특히, 비지도 학습에서는 레이블이 없는 데이터의 구조를 파악하기 위해 시각화가 매우 중요하다!!

  • 데이터 시각화는 고차원 데이터를 차원 축소 알고리즘을 사용해 2D 또는 3D로 표현된다.
  • 시각화된 데이터는 클러스터(군집)가 어떻게 분포되어 있는지 시각적으로 확인할 수 있으며, 이를 통해 데이터의 구조적 관계를 파악할 수 있다.
  • 예를 들어, 특정한 클러스터 간의 거리가 멀다면 이들은 서로 상관관계가 적을 가능성이 높다.

차원 축소

또한, 

차원 축소 기술을 사용하여 여러 특성을 두 개의 주요 특성으로 축소하고 이를 시각화할 수 있다.

(예를 들어, 차량의 주행 거리와 연식을 두 개의 축으로 설정해 데이터를 시각화하면, 데이터 간의 관계를 보다 명확하게 볼 수 있게 된다. 이를 특성 추출이라고 한다고 한다.)

 

이상치 탐지

비지도 학습에서 많이 사용되는 방법으로, 데이터셋에서 정상적인 패턴과 다른 데이터(이상치)를 자동으로 감지하는 기술이다.

  • 예시: 신용카드 부정 거래 탐지, 제조 공정에서의 결함 탐지 등.
  • 시스템은 대부분의 정상 데이터를 학습한 후, 새로운 데이터를 보고 그 데이터가 정상인지 비정상인지 판단한다.

이상치 탐지

특이치 탐지

새로운 유형의 데이터를 탐지하는 작업으로, 이미 학습된 데이터와 비슷하지만 조금 다른 데이터를 탐지하는 데 사용한다

  • 예를 들어, 강아지 사진을 학습한 시스템이 약간 다른 강아지 사진을 특이치로 처리하지 않지만, 아주 다른 강아지나 다른 동물의 사진은 이상치로 분류하는 것.

 

연관 규칙 학습

데이터를 분석해 특성 간의 연관성을 찾는 작업 

  • 예를 들어, 슈퍼마켓에서 바비큐 소스와 감자를 구매하는 사람이 스테이크 소스도 함께 구매하는 경향을 파악하는 데 사용할 수 있다.

이러한 여러 가지 방법들은 데이터에서 숨겨진 패턴을 발견하는 데 중요한 역할을 하기 때문에 알아두면 좋다!

 

준지도 학습 (Semi-supervised Learning)

준지도 학습(Semi-supervised Learning) 일부 데이터에만 레이블(정답)이 붙어 있고, 나머지는 레이블이 없는 상태에서 학습하는 방식이다. 지도 학습과 비지도 학습의 혼합 형태로 레이블이 없는 데이터를 군집화한 후, 해당 군집에 레이블을 할당하는 방식으로 학습을 진행한다.

이 방식은 레이블을 붙이는 데 시간과 비용이 많이 드는 상황에서 유용하게 쓸 수 있다.

 

  • 예시 : 구글 포토 서비스: 가족사진을 업로드할 때, 사람 1, 5, 11이 있는 사진이 레이블이 되어 있다면, 다른 사진에서도 이 사람들을 자동으로 인식해 비슷한 사진을 그룹화한 후 사람마다 이름을 추가하면 모든 사진에서 그 사람을 자동으로 찾을 수 있게 된다.

 

자기 지도 학습 (Self-supervised Learning)

자기 지도 학습(Self-supervised Learning) 레이블이 없는 데이터셋에서 모델이 스스로 레이블을 생성해 학습하는 방식이다. 학습 과정에서 데이터의 일부를 마스킹(masking)하여, 모델이 그 데이터를 복원하는 방식으로 학습한다. 학습된 모델은 원본 데이터 복원을 통해 데이터의 패턴을 학습하는 방식으로 진행된다.

복원 전 복원 후.. 어?

  • 예시 : 이미지 복원: 이미지의 일부를 마스킹하고, 모델이 그 마스킹된 부분을 복원하도록 학습함. 예를 들어, 로봇 사진에서 일부가 가려졌을 때, 모델이 가려진 부분을 예측하여 (뽀로로?) 복원한다.

자기 지도 학습은 비지도 학습의 한 형태로 볼 수 있지만,

 

스스로 레이블을 생성하여 학습하는 점에서 차이가 있다!!! (중요함)

이 점 잘 알고 있으면 좋을듯하다.

 

참고로 인터넷 보고 참고해서 그렸어요...

강화 학습 (Reinforcement Learning)

강화 학습은 에이전트(agent)가 환경(environment)을 관찰하고, 그 환경에서 행동(action)을 수행한 결과로 보상(reward)이나 벌점(penalty)을 받으며 학습하는 방식이다. 에이전트는 최적의 정책(policy)을 학습하여, 주어진 상황에서 어떤 행동을 선택해야 최대의 보상을 얻을 수 있는지를 학습한다.

강화 학습은 여태본 것들과는 좀 다른 알고리즘을 갖는다..!
학습 과정은 다음과 같다.

 

학습 과정:

  1. 관찰: 환경을 관찰
  2. 행동 선택: 관찰한 정보를 바탕으로 주어진 정책에 따라 행동을 선택
  3. 행동 수행: 선택한 행동을 수행
  4. 보상/벌점: 행동의 결과에 따라 보상을 받거나 벌점을 받는다.
  5. 정책 수정: 보상과 벌점을 바탕으로 정책을 수정.
  6. 반복: 최적의 정책을 찾을 때까지 이 과정을 반복.
  • 예시 : 알파고(AlphaGo): 딥마인드의 알파고는 바둑에서 강화 학습을 사용해 세계 챔피언을 이겼는데, 강화 학습을 사용하여  알파고는 수백만 개의 바둑 게임을 스스로 분석하며 승리 전략을 학습했다..!

1.4.2 배치 학습과 온라인 학습

위에서 구분했던 훈련지도 방식 말고 머신러닝 시스템을 구별하는 기준이 또 다른 것이 있는데, 입력 데이터의 스트림(Stream)으로부터 점진적으로 학습할 수 있는지에 대한 여부이다.

 

무슨 뜻이냐면 데이터가 한꺼번에 제공되는지, 아니면 순차적으로 지속적으로 제공되는지에 따라 시스템이 학습하는 방식이 달라진다는 점을 의미한다!! 이에 따라 배치 학습 또는 온라인 학습으로 구분한다.

배치 학습

배치 학습은 데이터를 한 번에 모아서 학습을 수행하는 방식을 말한다.

학습이 끝난 후 시스템은 새로운 데이터를 추가로 학습하지 않으며, 필요시 전체 데이터를 다시 사용해 모델을 재훈련해야 한다. 이 방식은 시간과 자원을 많이 소모하므로 주로 오프라인에서 수행되기 때문에 보통 오프라인 학습으로 부르기도 한다.

 

배치 학습은 전체 데이터를 한 번에 처리하기 때문에, 학습 과정에서 효율적으로 계산할 수 있으며 모든 데이터를 한꺼번에 사용할 수 있기 때문에 GPU나 CPU 자원을 최대한 활용하여 빠르게 학습할 수 있다고 한다!

 

또한 모델이 더 안정적으로 수렴하는 경향이 있어서 작은 데이터 조각이 아니라 전체 데이터를 사용해 더 신뢰성 있는 결과를 얻을 수 있다고 한다.

 

그렇다면 배치 학습의 단점은 뭘까??

  • 모델 성능 저하: 시간이 지남에 따라 모델 성능이 점진적으로 감소하는 모델 부패(Model rot) 또 다른 말로 이터 드리프트(Data drift) 현상이 발생할 수 있다고 한다. 이는 모델이 새로운 데이터를 학습하지 않고 그대로 유지되기 때문에 변화하는 세상에 적응하지 못하기 때문이다. 따라서 이를 해결하기 위해 모델을 주기적으로 재훈련해야 하지만, 자주 재훈련해야 하는 상황에서는 비효율적일 것이다!
  • 많은 자원 소모: 배치 학습은 전체 데이터를 한꺼번에 처리하기 때문에 CPU, 메모리, 디스크 공간 등 많은 자원을 필요로 한다. 대규모 데이터를 가진 시스템에서는 매번 처음부터 학습을 반복해야 하므로 상당한 비용과 시간이 소요된다.
  • 시간 소요: 배치 학습은 많은 시간이 소요된다. 특히 전체 데이터를 처리하는 데 오랜 시간이 걸릴 수 있으며, 매주 또는 24시간마다 재훈련을 해야 할 경우 시스템 운영에 부담이 된다. 특히, 데이터가 빠르게 변화할 때는 비효율적으로 느낄 것이다.
  • 자원 제한 시스템에 부적합: 스마트폰이나 로봇처럼 자원이 제한된 시스템에서는 배치 학습이 적합하지 않다. 이러한 시스템은 많은 양의 데이터를 반복해서 처리할 여력이 없고, 매번 학습하는 데 시간이 너무 많이 소요된다고 한다.

뭐야 왜 이렇게 단점이 많아?? ㅋㅋㅋ

온라인 학습

온라인 학습은 데이터를 한 번에 모아서 학습을 수행하는 방식을 말한다.

데이터를 실시간으로 순차적으로 처리하고 이를 위해 데이터를 한 개씩 또는 미니배치(mini-batch)로 나누어 처리하며,  새로운 데이터가 들어오면 즉각적으로 학습을 진행한다고 한다.

온라인 학습은 빠르게 변화하는 환경에 적응해야 하는 시스템에 적합하며, 자원이 부족한 상황에서도 효과적으로 사용할 수 있다.

 

또한, 외부 메모리 학습을 통해 대규모 데이터를 메모리에 담지 않고 일부씩 처리하여 학습할 수 있다고 한다. (오 좋은데?) 이를 통해 계속해서 새로운 데이터를 학습하고, 변화에 즉각적으로 대응할 수 있다고 한다!

 

(외부 메모리 학습(Out-of-Core Learning)은 데이터의 크기가 너무 커서 한 번에 메모리(RAM)에 모두 담을 수 없을 때 사용하는 학습 방식으로 대규모 데이터 세트를 처리할 때, 메모리에 다 담기지 않으면 학습이 불가능해질 수 있는데, 외부 메모리 학습은 이를 해결하기 위해 데이터를 작은 조각으로 나누어 한 번에 처리한다고 하네요)

 

온라인 학습에서 중요한 파라미터는 학습률이라고 한다. 온라인 학습에서 학습률은 새로운 데이터를 얼마나 빨리 시스템에 반영할지를 결정하는 중요한 설정 값인데, 학습률을 높게 설정하면 시스템이 새로운 데이터를 빠르게 반영할 수 있어서 변화하는 상황에 더 빨리 적응할 수 있다는 장점이 있다.

 

이렇게 보면 그냥 배치 학습보다 온라인 학습이 좋아 보이는데 

온라인 학습의 단점은 뭘까??

 

  • 데이터 품질: 온라인 학습에서 가장 큰 위험은 데이터 품질이다. 잘못된 데이터가 유입되면 시스템 성능이 저하될 수 있으며, 특히 버그나 악성 데이터가 포함될 경우 성능 저하가 심각해질 수 있다. 따라서 시스템 운영 중 데이터 모니터링을 철저히 하고, 문제 발생 시 즉각적으로 대응하는 것이 중요하다고 한다.
  • 학습률 설정: 위에서 말한 학습률이 너무 높으면 문제가 될 수 있다. 잘못된 데이터나 오류가 있는 데이터가 들어올 때, 시스템이 너무 빠르게 그 데이터를 반영하게 되어 성능이 떨어질 수 있다. 쉽게 말해, 학습률이 높으면 빠르게 배우지만, 실수를 빠르게 배우게 될 수도 있다는 것이다.

이러한 단점들이 있다고 한다. 잘 골라서 써야 할 듯하다

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

다음 장은 어떻게 일반화가 되는가에 따라 머신러닝 시스템을 분류한다.

여기서 일반화란 모델이 훈련 데이터에서 배운 내용을 새로운 데이터에 적용할 수 있는 능력을 말한다.

즉, 모델이 기존에 훈련한 데이터뿐만 아니라 보지 못한 새로운 데이터에서도 좋은 예측을 할 수 있어야 한다는 뜻이다.  

이에 따라 이 책은 일반화를 위한 두 가지 접근법으로 사례 기반 학습과 모델 기반 학습을 안내해 준다.

 

사례 기반 학습 (Instance-based Learning)

사례 기반 학습과거 데이터를 기억하면서 새로운 데이터가 들어올 때마다 기존 데이터와의 유사도를 비교해 예측을 수행하는 방식이다.

  • 예를 들어, 스팸 필터가 사용자에 의해 스팸으로 지정된 메일과 유사한 메일을 스팸으로 분류하는 방식이 이에 해당된다.

모델 기반 학습 (Model-based Learning)

모델 기반 학습은 과거 데이터를 학습한 후, 그 데이터를 기반으로 일반화된 모델을 생성하는 방식이다. 이 모델을 이용해 새로운 데이터가 들어왔을 때 이를 예측한다. 모델 기반 학습은 데이터를 전부 기억하는 것이 아니라 데이터를 통해 하나의 모델을 만들어내어 이를 사용해 예측을 수행한다고 한다.

이게 뭘까를 한 번 및에 예시를 보면서 생각해 보죠 (책 깃허브 참고 했습니다!)

 

먼저 책에 있는 국가, 1인당 GDP, 삶의 만족도를 합친 데이터를 불러와서 산점도로 본 데이터이다. 삶의 만족도는 1인당 GDP가 올라갈수록 선형으로 거의 같이 상승하는 모습을 볼 수 있다!! 따라서 1인당 GDP의 선형 함수로 삶의 만족도를 모델링하려고 하는데 이 단계를 모델 선택(Model selection)이라고 한다. (선형 모델을 선택함) 

 

왼쪽 : 여러가지 파라미터 값들, 오른쪽 : 모델을 사용하며 예측

이 선형 모델은 두 개의 파라미터를 가진다.

 

여기서 파라미터는 머신러닝 모델에서 학습을 통해 결정되는 을 의미한다.

이 값들은 데이터와 모델 간의 관계를 수학적으로 정의하는 역할을 한다.

 

선형 회귀 모델을 예로 들면, 선형 회귀는

$y = \theta_0 + \theta_1 \times x$ 같은 수식으로 표현된다. 여기서 파라미터 $\theta_0$ ,  $\theta_1$ 는 각각 절편과 기울기를 나타낸다.
 
 

모델을 잘 만들기 위해서는, 파라미터 값들이 데이터를 얼마나 잘 설명하는지를 측정할 수 있어야 한다. 이를 위해 효용 함수(Utility function) 또는 적합도 함수(Fitness function)로 모델이 얼마나 "좋은지"를 평가하고, 비용 함수(cost function)로 모델이 훈련 데이터와 얼마나 차이가 나는지를 평가한다. 선형 회귀에서는 주로 비용 함수를 사용하여 실제 데이터와 모델 예측값 간의 차이를 최소화하는 것이 목표라고 한다.

 

모델이 데이터를 학습하면서 이 파라미터 값들을 조정해 나가는데, 그 결과 모델이 입력 데이터(독립 변수)와 출력 값(종속 변수) 간의 관계를 가장 잘 설명할 수 있게 된다. 가장 잘 맞는 선형 모델의 파라미터를 찾을 때 이를 모델을 훈련(Training)시킨다고 말한다.

 

즉 1.4에서 배운 것을 요약하자면

  1. 데이터 분석: 먼저 데이터를 분석한다.
  2. 모델 선택: 분석된 데이터를 바탕으로 적합한 모델을 선택한다.
  3. 모델 훈련: 선택한 모델을 훈련 데이터로 학습시켜 최적의 파라미터를 찾는다. 이 과정에서 비용 함수를 최소화하는 알고리즘을 사용한다.
  4. 추론(inference) : 훈련된 모델을 새로운 데이터에 적용하여 예측을 수행하는 과정이다.

이 과정을 통해 모델이 새로운 데이터에서도 잘 작동할 수 있도록 학습과 평가를 반복하는데 이것이 전형적인 머신러닝 프로젝트의 형태라고 할 수 있다...!

1.5 머신러닝의 주요 도전 과제

머신러닝을 할 때 데이터와 모델을 잘 선택하는 것이 중요하다. 1.5에서는 나쁜 모델과 나쁜 데이터에 대해 알려준다.

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

1.5.1에서는 어린아이에게 사과를 주면 색상과 모양이 달라도 대부분의 종류의 사과를 구별할 수 있을 것이다..!

하지만 머신러닝은 아직 이렇게 까지는 못한다고 한다. 따라서 아주 간단한 문제도 여러 개의 데이터가 필요하다고 한다.

1.5.2 대표성 없는 훈련 데이터

1.5.2에서는 모델을 훈련할 때 사용하는 데이터가 다양한 사례를 충분히 대표하지 못하면 모델의 예측 성능이 떨어질 수 있다는 점을 강조하고 있다.

 

이 책에서는 모델이 더 큰 훈련 샘플을 사용했을 때 결과가 어떻게 변하는지를 예시로 설명한다. 그래프에서 볼 수 있듯이, 일부 가난한 국가가 부유한 국가보다 더 높은 삶의 만족도를 나타내는 경우가 발생할 수 있다. 

 

또한, 샘플링 잡음(Sampling noise)샘플링 편향(Sampling bias)이라는 개념을 설명한다. 훈련 데이터의 샘플이 너무 적으면 운에 따라 대표성이 떨어질 수 있으며, 샘플 추출 방법이 잘못되면 데이터가 전체를 제대로 반영하지 못할 수 있다는 문제이다.

1.5.3 낮은 품질의 훈련 데이터

1.5.3에서는 훈련 데이터에 오류, 이상치, 낮은 품질등으로 인한 잡음이 많을 경우, 머신러닝 시스템이 데이터를 제대로 학습하지 못해 예측이 부정확해질 수 있다고 한다. 이로 인해 내재된 패턴을 찾기 어려워지고 모델의 성능이 저하될 수 있다고 말한다.

 

1.5.4 관련 없는 특성

1.5.4에서는 불필요한 특성이 데이터에 포함되면 모델 성능이 떨어질 수 있다고 말한다.. 이는 흔히 "garbage in, garbage out"이라고 불리며, 의미 없는 데이터가 들어가면 그 결과도 의미 없게 나온다는 뜻을 의미한다!

 

성공적인 모델 학습을 위해서는 관련 없는 특성을 제거하고, 중요한 특성만을 남기는 특성 공학(feature engineering) 작업이 필수적이라고 한다. 이를 통해 학습에 유용한 정보를 더 잘 추출할 수 있게 된다.

 

성 공학에는 특성 선택, 특성 추출, 데이터 수집 등이 포함된다.

 

 

1.5.5 훈련데이터 과대적합

1.5.5에서는 과대적합(Overfitting)에 대해 설명하고 있다. 

 

과대적합이란 모델이 훈련 데이터에 너무 잘 맞추는 경우를 말한다. 이는 훈련 데이터에 있는 미세한 패턴이나 잡음까지 학습해 버리는 현상으로, 훈련 데이터에서는 좋은 성능을 내지만, 새로운 데이터에는 일반화 능력이 떨어지게 된다.

 

  • 과대적합을 방지하기 위해 모델에 규제(Regularization)를 적용할 수 있다. 규제는 모델이 너무 복잡해지는 것을 막기 위해 파라미터의 자유도를 제한하는 방법이다. 이를 통해 모델이 훈련 데이터에만 맞추지 않고, 새로운 데이터에도 잘 일반화될 수 있게 한다.
  • 예를 들어, 기울기($\theta_1$)와 절편($\theta_0$)을 규제하는 방식으로 모델의 복잡도를 줄일 수 있다.
  • 규제의 강도를 결정하는 값은 하이퍼파라미터(hyperparameter)라고 한다. 하이퍼파라미터는 모델 학습 전에 미리 설정되는 값으로, 모델의 성능에 큰 영향을 미친다. 하이퍼파라미터를 잘 설정하면 과대적합을 방지하고, 모델의 일반화 성능을 높일 수 있다.

 

1.5.6 훈련데이터 과소적합

1.5.6에서는 과소적합(Underfitting)에 대해 설명하고 있다.

 

과소적합은 과대적합의 반대 현상으로, 모델이 너무 단순해져서 훈련 데이터의 복잡한 패턴을 충분히 학습하지 못하는 경우를 말한다. 즉, 모델이 복잡한 데이터를 제대로 설명하지 못하고, 예측 성능이 떨어진다는 것이다.

 

이를 해결하기 위해서는

 

  • 더 강력한 모델을 선택한다.
  • 학습 알고리즘에 더 많은 특성을 제공하여 모델이 더 많은 패턴을 학습할 수 있게 한다.
  • 규제를 줄여 모델이 더 자유롭게 데이터에 적합하도록 한다.

위와 같은 방법들이 있다고 한다..!

 

1.5.7 핵심 요약

 

1.5.7에서는 마지막으로 머신러닝의 핵심 내용을 요약하고 있다.

  1. 머신러닝의 역할: 머신러닝은 데이터를 기반으로 학습하여 규칙을 만들고, 기계가 스스로 더 나은 작업을 할 수 있도록 돕는 것
  2. 머신러닝의 다양한 종류: 지도 학습, 비지도 학습, 배치 학습, 온라인 학습, 사례 기반 학습, 모델 기반 학습 등의 여러 학습 방식이 있다.
  3. 데이터의 중요성: 머신러닝 프로젝트에서는 훈련 데이터 세트가 매우 중요하며, 모델이 잘 작동하려면 훈련 세트가 충분히 대표성이 있어야 하고, 적절한 파라미터 조정이 필요하고, 새로운 데이터에서도 예측을 잘할 수 있어야 함.
  4. 알고리즘 선택: 머신러닝에서 알고리즘은 데이터를 학습하고 유사성을 기반으로 새로운 데이터를 예측하는데 중요한 역할을 함
  5. 훈련 세트 문제: 훈련 세트가 너무 작거나 대표성이 부족하면, 시스템이 제대로 작동하지 않을 수 있으므로 과소적합이나 과대적합에 빠지지 않도록 주의해야 한다.
  6. 모델 평가: 모델을 학습한 후에도 지속적인 평가와 튜닝이 필요함. 단순히 모델이 학습했다고 끝나는 것이 아니라, 새로운 데이터에도 잘 적용되는지 확인해야 한다.

1.6 테스트와 검증

모델이 새로운 샘플에 얼마나 잘 일반화될지는 직접 샘플에 적용해 보는 방법이 있다.

 

하지만 만약 모델이 기대에 미치지 못한다면???

 

서비스에 바로 영향을 미칠 수 있는 위험이 있다! 따라서 더 나은 방법은 데이터를 훈련 세트테스트 세트로 나누는 것이다. 훈련 세트는 모델 학습에 사용되고, 테스트 세트는 모델의 성능을 평가하는 데 사용된다.

  • 훈련 세트로 모델을 학습한 뒤, 테스트 세트로 새로운 데이터에 대한 예측 성능을 측정한다. 이를 통해 모델이 본 적 없는 데이터에 대해 얼마나 잘 예측하는지를 알 수 있다. 이 과정에서 일반화 오차(Generalization error)를 추정하게 되며, 이 오차가 크면 모델이 과대적합(Overfitting)되었음을 나타낸다.
  • 데이터의 80%를 훈련에, 20%를 테스트에 사용하는 것이 일반적이다. 하지만 데이터 크기에 따라 이 비율은 달라질 수 있다고 한다. 특히 데이터가 매우 크다면, 1% 정도만 떼어내도 충분할 수 있다. 예를 들어 테스트 세트에 100,000개의 샘플이 있는 경우, 1%의 샘플만으로도 충분한 일반화 오차를 추정할 수 있으므로 상황에 맞추어 적용하자!!!

1.6.1 하이퍼파라미터 튜닝과 모델 선택

모델을 평가하기 위해 단순히 테스트 세트만 사용하는 것이 아니라 하이퍼파라미터 튜닝 과정이 필요하다.

 

1.5.5에서도 보긴 했지만 하이퍼파라미터는 모델이 학습 과정에서 결정하는 값이 아닌, 학습 전에 미리 정해지는 값이다. 

  • 모델이 훈련 데이터에 잘 맞는다고 하더라도 과대적합을 방지하기 위해 규제를 적용해야 할 때가 있다. 규제는 하이퍼파라미터로 조정할 수 있으며, 이 값을 잘 조정해야 일반화 오차를 최소화하면서 성능을 높일 수 있다.
  • 하이퍼파라미터 조정 과정에서 홀드아웃 검증(Holdout validation)이라는 방법이 사용된다. 이는 훈련 세트에서 일부 데이터를 떼어내어 평가하고 가장 좋은 홀드아웃 세트를 검증 세트(Validation set)로 사용해 여러 모델을 평가하고 가장 적합한 모델을 선택하는 방식이다. 선택된 최종 모델은 다시 전체 훈련 세트를 사용해 학습한 후, 테스트 세트에서 성능을 평가하여 일반화 오차를 추정한다고 한다.

글로만 읽으면 이해가 잘 안 될 수도 있다.. 한 번 사진으로 찾아보길 바랍니다!

 

여기서 홀드아웃 검증에서도 문제가 있다.

  • 검증 세트가 너무 작을 경우: 모델이 검증 세트에서 잘 작동하지 않을 수 있으며, 최적의 모델을 잘못 선택할 가능성이 있다. 이는 작은 표본으로 평가하기 때문으로, 데이터의 특성을 충분히 반영하지 못할 수 있다.
  • 검증 세트가 너무 클 경우: 반대로, 검증 세트가 너무 크면 훈련에 사용할 데이터가 적어져, 모델이 충분히 학습되지 못하는 문제가 발생한다. 이는 훈련 세트가 줄어드는 만큼 모델이 제대로 학습되지 못할 가능성이 있다.

이 책에서는 문제를 해결하기 위한 한 가지 방법으로 교차 검증(cross-validation)을 제시한다. 교차 검증은 검증 세트만 사용하는 것이 아니라, 여러 개의 작은 검증 세트를 구성하고, 훈련 세트에서 일부를 떼어내 검증에 사용한다. 모든 모델의 성능을 평균 내어 더 정확한 평가를 할 수 있지만, 이 방법의 단점은 훈련 시간이 오래 걸린다는 것이다.

 

요약하자면, 홀드아웃 검증은 훈련 세트 일부를 떼어 검증 세트로 사용하여 모델을 평가하는 방법이며, 훈련 세트와 검증 세트 간의 비율을 적절하게 설정하지 않으면 성능 평가가 왜곡될 수 있다. 이를 해결하기 위해 교차 검증 방법이 사용된다고 요약할 수 있다!!!

1.6.2 데이터 불일치

데이터 불일치 문제는 훈련에 사용된 데이터와 실제 서비스에서 사용할 데이터가 다를 때 발생한다.

 

예를 들어, 웹에서 수집한 꽃 사진으로 학습한 모델이 실제 사용자가 찍은 사진에서 꽃 이름을 정확히 예측하지 못할 수 있다. 이는 훈련 데이터와 실제 데이터 간의 불일치로 인해 발생하는 문제다.

 

  • 이 문제를 해결하려면, 검증 세트와 테스트 세트가 실제로 모델이 적용될 데이터와 최대한 유사해야 한다. 웹에서 수집한 사진이 아닌, 실제 사용자가 찍은 사진을 포함한 세트를 만들어 검증해야 모델이 실제 상황에서도 잘 작동하는지 확인할 수 있다.
  • 여기서 훈련-개발 세트(train-dev set)라는 개념을 도입하면 도움이 된다. 훈련-개발 세트는 훈련 세트와 실제 데이터 간의 차이를 줄이기 위해 도입된 개념으로, 훈련 세트에서 일부를 떼어내서 만든 데이터 세트로 실제 데이터와 유사한 환경을 만드는 것이 목적이다. 이렇게 하면 훈련-개발 세트에서 모델 성능을 평가할 수 있고, 이를 통해 모델이 실제 데이터에서도 잘 작동하는지 확인할 수 있다.
  • 훈련-개발 세트검증 세트 모두에서 잘 작동한 모델은 이후 테스트 세트에서 평가하여, 모델이 실제 제품에서 사용될 때에도 잘 작동할 것인지 확인할 수 있다.

 

이로써 1장 정리가 끝이 났다.. 매우 길어서 오래 걸렸지만 정리하면서 어느 정도 습득을 할 수 있었던 것 같다..! ㅎㅎ

 

다음 장도 화이팅!!!!!!!!!!!!