Adventure Time - Finn 3
본문 바로가기
AI/ML

머신러닝 학습 팁 : Learning Rate, 데이터 전처리

by hyun9_9 2026. 3. 12.

모델을 잘 만드는 것만큼 중요한 것이 학습 설정입니다.
이번 포스트에서는 좋은 모델을 빠르게 만들기 위한 실전 팁들을 정리해보겠습니다.


1. Learning Rate (학습률)

학습률이란?

경사 하강법에서 W를 업데이트할 때 기울기를 얼마나 반영할지 결정하는 값입니다.

W := W - α * gradient

러닝레이트(α)와 기울기의 관계를 통해 최적의 모델 학습 값을 찾아내게 됩니다.
모델을 만들어가기 위한 설정값이기 때문에 하이퍼 파라미터 라고 부릅니다.


Good vs Bad Learning Rate

학습이 잘 되면 cost 값이 점점 떨어집니다.
하지만 러닝레이트를 잘못 설정하면 오히려 더 멀어질 수 있습니다.

러닝레이트가 너무 클 때 (Overshooting)

cost
 ↑
 │  *
 │     *
 │        *     *
 │           *     *   ← 왔다갔다하다가 위로 올라가버린다
 └──────────────────→ step

기울기 방향으로 너무 크게 이동해서 최솟값을 지나쳐버립니다.
결국 cost가 오히려 커지는 현상이 발생합니다.

러닝레이트가 너무 작을 때

cost
 ↑
 │  *
 │   *
 │    *
 │     * * * * * *   ← 잘 내려가질 못한다
 └──────────────────→ step

조금씩밖에 이동하지 못해 학습이 매우 느려집니다.
시간이 너무 오래 걸리거나 Local Minimum에 빠질 수 있습니다.

적절한 러닝레이트

cost
 ↑
 │  *
 │    *
 │      *
 │        *
 │          * * *   ← 빠르게 수렴
 └──────────────────→ step

일반적으로 0.01 을 사용하거나, Adam 옵티마이저의 경우 0.0003 정도를 추천합니다.


Learning Rate Decay (러닝레이트 감소)

학습이 잘 되지 않을 때 의도적으로 러닝레이트를 줄여나가는 기법입니다.
처음엔 크게 이동하다가 점점 조금씩 세밀하게 조정하는 방식입니다.

대표적인 방법 3가지:

① Step Decay

  • N번의 epoch마다 또는 validation loss가 개선되지 않을 때 러닝레이트를 낮춥니다
  • 가장 직관적이고 많이 사용되는 방식

② Exponential Decay

α = α₀ * e^(-kt)
  • 지수 함수적으로 감소
  • k: 감소 속도를 조절하는 상수

③ 1/t Decay

α = α₀ / (1 + kt)
  • 시간(step)이 지날수록 점점 작아짐
  • 초반에는 빠르게, 후반에는 천천히 감소

2. 데이터 전처리 (Data Preprocessing)

Feature Scaling

데이터의 범위가 너무 크면 학습이 잘 되지 않습니다.

 

표준화(Standardization)

x_new = (x - 평균) / 표준편차

x값을 평균으로 뺀 것을 표준편차로 나눕니다.
결국 평균에서 얼마나 떨어졌는지 를 표현하는 것으로, 결과가 평균 0, 표준편차 1이 됩니다.

 

"이 데이터가 평균에서 얼마나 떨어져 있냐?" 를 나타내는 것입니다.

예를 들어 시험 점수 데이터가 있다면:

점수 : [60, 70, 80, 90, 100]
평균 : 80
표준편차 : 14.1

각 점수를 표준화하면:

60  → (60 - 80) / 14.1  = -1.4  (평균보다 많이 낮음)
70  → (70 - 80) / 14.1  = -0.7  (평균보다 조금 낮음)
80  → (80 - 80) / 14.1  =  0.0  (평균이랑 같음)
90  → (90 - 80) / 14.1  =  0.7  (평균보다 조금 높음)
100 → (100 - 80) / 14.1 =  1.4  (평균보다 많이 높음)

결과가 항상 0 근처 (-3 ~ 3) 로 모입니다.


 

정규화(Normalization)

x_new = (x - 최솟값) / (최댓값 - 최솟값)

실제 x값에서 최솟값을 뺀 것을, 최댓값과 최솟값의 차이로 나눕니다.
결과가 항상 0과 1 사이로 변환됩니다.

 

"이 데이터가 최솟값~최댓값 범위에서 어느 위치냐?" 를 0~1로 나타내는 것입니다.

같은 점수 데이터로 정규화하면:

최솟값 : 60
최댓값 : 100

60  → (60 - 60) / (100 - 60)  = 0.0   (최솟값)
70  → (70 - 60) / (100 - 60)  = 0.25
80  → (80 - 60) / (100 - 60)  = 0.5   (딱 중간)
90  → (90 - 60) / (100 - 60)  = 0.75
100 → (100 - 60) / (100 - 60) = 1.0   (최댓값)

결과가 항상 0 ~ 1 사이 로 나옵니다.


왜 필요한가? (핵심!)

x1, x2 두 특성이 있다고 가정하면:

x1 (나이)   :   20,  30,  40
x2 (연봉)   : 3000, 5000, 8000

스케일이 너무 다르면 연봉(x2)이 학습에 훨씬 큰 영향을 미쳐서 나이(x1)는 거의 무시됩니다. 전처리 후엔:

x1 (나이 정규화)   : 0.0, 0.5, 1.0
x2 (연봉 정규화)   : 0.0, 0.4, 1.0

두 특성이 같은 스케일로 학습에 균등하게 반영됩니다!


언제 뭘 쓸까?

  • 정규화 → 데이터 범위가 명확할 때 (0~255 픽셀값, 0~100 점수)
  • 표준화 → 이상치(너무 크거나 작은 값)가 있을 때 더 안전

 

  표준화  정규화
범위 제한 없음 (보통 -3 ~ 3) 0 ~ 1
수식 (x - 평균) / 표준편차 (x - min) / (max - min)
특징 이상치에 덜 민감 범위가 명확히 고정됨

 


노이즈 데이터 제거

학습에 의미없는 데이터는 제거하고, 의미있는 데이터만 남겨야 합니다.

예를 들어 아래 문장에서 피자를 주문하는 의도를 파악하려면:

"Will you order a pizza..??"

불필요한 단어들을 제거하고 핵심만 남깁니다:

"will you order a pizza"  →  "you order pizza"

노이즈 데이터가 많을수록 모델이 엉뚱한 패턴을 학습할 수 있기 때문에, 의미있는 데이터만 남기는 전처리 과정이 중요합니다.


정리

개념 설명 팁

Learning Rate 기울기를 얼마나 반영할지 결정 일반적으로 0.01, Adam은 0.0003
Overshooting 러닝레이트가 너무 커서 cost가 발산 러닝레이트를 줄인다
Learning Rate Decay 학습 중 러닝레이트를 점점 줄이는 기법 Step / Exponential / 1/t Decay
표준화 평균 0, 표준편차 1로 변환 (x - 평균) / 표준편차
정규화 0~1 사이로 변환 (x - min) / (max - min)
노이즈 제거 의미없는 데이터 제거 핵심 데이터만 남긴다

좋은 모델을 만들려면 알고리즘만큼 데이터 전처리와 하이퍼파라미터 설정이 중요합니다.