7월 23일 - Cost Function

Yullgiii·2024년 7월 23일
0

Cost Function

비용 함수 (Cost Function)

Cost Function이란 데이터 셋과 어떤 가설 함수와의 오차를 계산하는 함수이다. Cost Function의 결과가 작을수록 데이터셋에 더 적합한 Hypothesis(가설 함수)라는 의미다. Cost Function의 궁극적인 목표는 Global Minimum을 찾는 것이다.

선형회귀 (Linear Regression)에서의 Cost Function

다음과 같은 데이터가 있다고 하자:

X Y
1 5
2 8
3 11
4 14
이 데이터를 기반으로 우리는 일차방정식 y = Wx + b를 세울 수 있다. 
여기서 W(weight)와 b(bias)의 값을 학습을 통해 찾고자 한다. 
이때 Cost Function을 사용하여 W와 b의 값을 바꾸어 가면서 그래프와 테스트 데이터 간의 오차를 최소화한다.
즉, Cost Function의 값을 가장 작게 만드는 W와 b의 조합을 찾는다. 
이를 위해 **경사하강법(Gradient Descent Algorithm)**을 사용한다.

Cost Function 정의

선형 회귀에서 일반적으로 사용되는 Cost Function은 평균 제곱 오차(Mean Squared Error, MSE)이다. MSE는 다음과 같이 정의된다:
J(W, b) = (1/2m) * Σ (h(xi) - yi)^2

여기서:
- m: 데이터 포인트의 수
- h(xi): 가설 함수, y = Wx + b
- yi: 실제 데이터 값

Gradient Descent Algorithm

경사하강법은 Cost Function의 값을 최소화하기 위해 사용되는 최적화 알고리즘이다. 경사하강법은 W와 b를 반복적으로 업데이트하여 Cost Function의 값을 최소화한다. 업데이트 식은 다음과 같다:
W := W - α (∂J/∂W)
b := b - α
(∂J/∂b)

여기서 α는 학습률(Learning Rate)이다.

예제 코드 (Python)

다음은 경사하강법을 사용하여 선형 회귀 모델을 학습하는 예제 코드이다:

import numpy as np

# 데이터셋
X = np.array([1, 2, 3, 4])
Y = np.array([5, 8, 11, 14])

# 학습률
alpha = 0.01
# 반복 횟수
iterations = 1000

# 가중치와 편향 초기화
W = 0.0
b = 0.0

# 데이터 포인트 수
m = len(Y)

# 경사하강법
for i in range(iterations):
    # 예측값
    Y_pred = W * X + b
    # 비용 함수
    cost = (1/2*m) * sum((Y_pred - Y)**2)
    # 경사도 계산
    dW = (1/m) * sum(X * (Y_pred - Y))
    db = (1/m) * sum(Y_pred - Y)
    # 업데이트
    W = W - alpha * dW
    b = b - alpha * db

    # 100번마다 비용 출력
    if i % 100 == 0:
        print(f"Iteration {i}: Cost {cost}, W {W}, b {b}")

print(f"Final parameters: W {W}, b {b}")

So...

Cost Function은 머신 러닝 모델의 성능을 평가하는 중요한 도구다. 선형 회귀에서는 비용 함수를 통해 모델의 예측 값과 실제 값 간의 오차를 계산하고, 경사하강법을 통해 오차를 최소화하는 최적의 파라미터(W, b)를 찾는다. 이를 통해 모델의 정확성을 높이고 데이터셋에 더 잘 맞는 가설 함수를 구할 수 있다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글