Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Silver bullet

비용함수와 경사하강법 (Cost function & MSE) 본문

AI/AI

비용함수와 경사하강법 (Cost function & MSE)

밀크쌀과자 2024. 7. 8. 16:46

1. 선형회귀 (Linear Regression)

종속 변수 y한 개 이상의 독립 변수 (또는 설명 변수) x 사이의 선형 상관 관계를 모델링하는 회귀분석 기법

: 정답이 있는 데이터의 추세를 잘 설명하는 선형 함수를 찾아 x에 대한 y를 예측

더보기

y = ax + b → y = a(가중치) * x + b(보정치 / bias 편향)

 

  • 1개의 독립변수(x)가 1개의 종속변수(y)에 영향을 미칠 때 : 단순 회귀 분석(Simple Regression Analysis)
  • 2개 이상의 독립변수(x)가 1개의 종속변수(y)에 영향을 미칠 때 : 다중 회귀 분석(Multivariate Regression Analysis)
  • 가장 적합한 θ (Theta) 들의 Set을 찾는 것이 목표
  • x 데이터가 많으면 선형결합 (Linear combination)

선형결합

 


2. Cost Function (비용함수) 

= Loss, Error, Objective(MIN & MAX)

: 예측 값과 실제 값의 차이를 기반으로 모델의 성능(정확도)을 판단하기 위한 함수

Linear regression의 경우, Mean squared error function(평균 제곱 오차 함수)을 활용

MSE(Cost)가 최소가 되도록 하는 θ (parameter, a & b)를 찾아야 한다.(y = ax + b)

 

이렇게 에러를 더하기만 하는 것은 객관적인 error 평가 지표가 될 수 없다.

 

평균 제곱 오차 함수 (MSE)

  1. MSE (제곱)
  2. MAE (절대값)
  3. MAPE (비율)
  4. RMSE (루트)
더보기

J(θ) : 비용함수 

Objective(MIN) = Cost function

Objective(MAX) != Cost function

 


3. Gradient Descent Algorithm (경사하강법)

  • Cost function 의 값을 최소로 만드는 θ 를 찾아나가는 방법
  • Cost function 의 Gradient에 상수를 곱한 값을 빼서 θ 를 조정
  • 더보기
     Cost function에서 경사가 아래로 되어있는 방향으로 내려가서 Cost가 최소가 되는 지점을 찾는다. 어느 방향으로  θ를 움직이면 Cost 값이 작아지는지 현재 θ 위치에서 Cost 함수를 미분하여 판단

미분하여 기울기를 계산하여 Cost 최저 지점을 찾음

미분했을 때 기울기가 음수이면 양수 방향으로 이동, 기울기가 양수면 음수 방향으로 이동시킨다.

  • Error가 제일 낮은 지점 : Global Minimum (전역 최솟값)
  1. 변수 (θ)의 초기값을 설정
  2. 현재 변수 값에 대응되는 Cost function이 경사도 계산(미분)
  3. 변수를 경사 방향(기울기의 음의 방향 =  Gradient의 음의 방향)으로 움직여 다음 변수 값으로 설정
  4. 1 ~ 3을 반복하며 Cost function이 최소가 되도록 하는 변수 값으로 근접해 나간다. (= 전체 Cost 값이 변하지 않거나 매우 느리게 변할 때까지 접근)

 

  • Gradient : 모든 변수의 편미분을 벡터로 정리한 것(= 함수의 기울기, 경사)
  • 편미분 : 변수가 2개 이상인 함수를 미분할 때 미분 대상 변수 외에 나머지 변수를 상수처럼 고정시켜 미분하는 것

 

더보기

Learning Rate (학습률 = 보폭 step size) : 얼마나 큰 보폭으로 움직일지를 결정해주는 값

  • 보통 0.01 or 0.001을 사용
  • 물론 모델에 따라 적합한 학습률은 다르다.
  • Hyper-parameter(초매개변수) : 사람이 정해주는 값

 

Auto ML = Auto F.E(데이터 전처리) + Auto M.S(모델 선택) + Auto HPO(하이퍼파라미터 최적화)

HPO(Hyper Parameter Tuning) = Model Tuning

 

더보기

Parameter θ(컴퓨터가 자동으로 찾아줌) vs Hyper Parameter(사람이 정함)

  • 실제 Gradient Descent를 적용할 때에는 모든 θ에 대해 동시에 적용한다. (동시에 고려된다.)
  • MSE' = 0 이라고 미분 방정식을 세우면 다 해결되지 않나? → 맞는 말이다. Gradient Descent도, 미분방정식을 0으로 세팅하는 것도 optimization의 한 일종이라고 보면 된다. 방법이 여러갈래로 나뉘는 것 뿐이지 옳고 그름의 문제는 아니다. 다만, 우리가 Gradient Descent를 자주 쓰는 이유는 딥러닝을 할 때 문제가 생기기 때문이다. 딥러닝에서 데이터가 많음에 따라 연산량이 어마어마하게 많아지기 때문에(역행렬을 구해야 함) 미분방정식을 0으로 세우고 최적의 값을 찾는 방법은 거의 불가능에 가깝다고 생각하면 된다. 따라서 Gradient Descent를 자주 쓴다.
  • 전통적인 머신러닝, 즉 예를 들어 선형회귀 같은 경우에는 미분방적식 = 0으로 세우고 최적의 값을 찾는 것이 시간이 짧게 걸리기 때문에 선형회귀 때는 Gradient Descent를 쓰지 않고, 미분 방정식을 0으로 세팅하고 값을 찾는다.
  • θ 에 따른 MSE 값을 함수로 그렸을 때 울퉁불퉁하게 그려진다면? → local minima / 전역 최솟값이 아닌 local minima가 여러 개일 수도 있다. 즉, 함정에 빠질 수도 있는데 이미 관성을 이용해서 local minima를 빠져나올 수 있는 방법이 많이 연구되었다. 물론 그러한 방법을 적용 시키더라도 local minima에 빠질 수 있지만, 딥러닝 전문가들이 주장하는 바로는, 그렇게 local minima에 빠지더라도 거의 Global Minimum에 근접한 값일 것이므로 모델 성능에서는 큰 차이가 없을 것이라고 말한다.