학부 수업 내용 정리/인공지능심화

#3 Regression(2)

supersumin 2024. 10. 1. 12:40

저번 시간에 loss function에 대해 알아봤다. 각 포인트마다 발생한 오차의 평균을 구하는 함수이다. 하지만 얘는 최적화 되었는지 확인하는 함수일 뿐이다. 

 

이 paremeter 혹은 weight의 값을 어떻게 조정해야 lossfunction의 값의 최소를 찾을 수 있을까? 이는 Gradient Descent이다. Gradient Descent에 대해 알아보자.

1. Gradient Descent

1.1. Gradient Descent란 무엇이며 왜 최소값을 찾는 데 사용될까?

- 어떻게 쓰겠다는 거죠?

Gradient Descent는 1차 미분계수(기울기) 이용해 함수의 최소값을 찾아가iterative(반복적)한 방법이다.

함수의 값이 낮아지는 방향으로 독립 변수 값을 조정해 가면서 최종적으로는 함수의 최소값을 갖도록 하는 독립 변수의 값을 찾는다.

- 왜 쓰는 거죠?

  • 실제 분석에서 사용하는 함수들은 closed form(해가 명시적으로 주어지는 형태)이 아니거나 비선형 함수인 경우가 많아 미분계수와 그 근을 계산하기 어렵다.
  • 실제 미분 과정을 컴퓨터로 구현하는 것보다 간단하게 최적값을 찾을 수 있는 방법이다.

1.2. Gradient Descent의 직관과 learning rate(학습률)의 크기

- 직관(intuition)

그래프에서 θ에 따른 loss function의 값을 표현한다. loss function은 θ에 따라 달라지며, 특정 지접에서의 기울기에 따라 θ값을 조정한다.

  • 특정 지점에서 기울기가 양수: 함수 값이 더 커지고 있으므로 θ를 음의 방향으로 이동시켜야 한다.
  • 특정 지점에서 기울기가 음수: 함수 값이 작아지고 있으므로 θ를 양의 방향으로 이동시켜야 한다.

따라서 기울기 부호에 음의 기호(-)를 붙여주어 기울기와 반대 방향으로 이동하는 방식이다.

- learning rate (학습률)

learning rate는 gradient descent에서 중요한 요소이다.

  • 너무 작으면 parameter가 천천히 변하고 converge(수렴)하는데 시간이 오래 걸릴 수 있다.
  • 너무 크면 parameter가 발산할 위험이 있다.

1.3. 각 Parameter에 관한 Gradient Descent 식

Gradient Descent는 loss function이 sufficiently low할 때까지 반복한다. 즉 loss function의 값이 converge(수렴)할 때까지 parameter를 update한다.

loss function은 각 parameter에 대해 제곱 형태를 가지기 때문에 항상 convex(볼록)한 함수이다. 따라서 linear regression(선형 회귀)의 경우 gradient descent는 항상 converge(수렴)한다.

 

2. Multivariate Linear Regression

2.1. 하나의 Model에는 다양한 feature가 있고 그에 상응한 parameter가 존재한다.

일반적인 Linear Regression은 하나의 feature(독립 변수)에 대해 하나의 target(종속 변수)을 예측하는 모델이다. 하지만 Multivariate Linear Regression은 여러 feature(다중 독립 변수)를 사용하여 target 값을 예측합니다.

2.2. 다변량 선형 회귀의 행렬(Matrix) 형태

Multivariate Linear Regression을 행렬 형태로 표현하면 다수의 독립 변수(피처)들이 있을 때 계산을 보다 간단하게 할 수 있다.

Multivariate Linear Regression의 일반적인 모델

 

Gradient Descent에서 파라미터 W를 업데이트하는 식
자코비안의 구체적인 형태

이로 인해 모든 파라미터가 한 번에 계산될 수 있다.

2.3. Gradient Descent in Multivariate Linear Regression 예제

  • loss function이 어떻게 생겼는지, 이를 행렬화 하면 벡터의 내적인 형태인 것을 파악하기
  • loss function의 기울기는 오차 벡터에 각 데이터의 feature를 곱한 것임을 인지하고 행렬화할 때 이를 위해서 X는 transpose시켜주어 앞에 곱해주는 형태로 바뀐다는 것
  • X matrix로 표현할 때 bias 꼭 붙혀주기, X는 데이터 x 파라미터, y는 Data x 결과니까 1, θ는 parameter수 x 1
  • 예측 구할 때는 X에 파라미터를 붙혀줘서 hypothesis function의 형태로 만들어주기
  • θ업데이트 하고 기존에 썼던 행렬을 다시 못 쓰는 이유는 오차벡터를 구할 때 θ가 최신화되었기 때문에 다시 할 수 없음

3. Gradient Descent in Practice

3.1. Feature scaling (Normalization)

Normalization을 통해 모든 특성이 비슷한 범위를 가지도록 만들어, Gradient Descent의 수렴 속도를 높일 수 있다.

 

예시:

 

  • x1: 주택의 크기 (Size)
    • 평균: 1000
    • 최소-최대값 범위: 2000
  • x2: 방의 개수 (Number of rooms)
    • 평균: 1
    • 최소-최대값 범위: 5

 

 

3.2. Learning Rate selection

작은 학습률은 작은 단계로 이동하면서 더 정밀하게 최적 값을 찾는다. 하지만 시간이 오래 걸린다. 큰 학습률은 더 빠르게 수렴할 수 있지만, 최적의 값을 지나칠 가능성도 있다.

 

그렇기에 일반적으로 0.001, 0.005, 0.01 등의 값을 시작점으로 사용한다. 학습률을 점차적으로 조정하면서 손실 함수가 감소하는 속도를 확인하고, 적절한 학습률을 찾는다.