코딩하는 해맑은 거북이

[머신러닝] 선형회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), 소프트맥스 회귀(Softmax Regression) 본문

AI

[머신러닝] 선형회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), 소프트맥스 회귀(Softmax Regression)

#CJE 2022. 7. 27.
해당 글은 아래의 3가지를 다룬다.
1. 선형회귀(Linear Regression)
2. 로지스틱 회귀(Logistic Regression)
3. 소프트맥스 회귀(Softmax Regression)

 

 

1. 선형회귀(Linear Regression)

: 1개 이상의 독립변수 x와 종속변수 y의 선형 관계를 모델링한 것.

선형회귀는 주어진 데이터로부터 y와 x의 관계를 가장 잘 나타내는 선을 그리는 일을 말한다.

선을 결정하는 것은 w와 b의 값이므로 선형회귀에서 해야할 일은 결국 적절한 w와 b를 찾는 것이다.

 

1) 단순 선형 회귀 분석(Simple Linear Regression Analysis)

독립변수가 1개인 선형회귀로, w는 머신러닝에서는 가중치(weight), 별도로 더해지는 값 b를 편향(bias)라고 한다.

* 머신러닝에서 주어진 데이터로 부터 x와 y의 관계를 유추하기 위해 식을 세우는 것을 가설(Hypothesis)이라고 표현한다.

H(x)의 H는 Hypothesis

 

2) 다중 선형 회귀 분석(Multiple Linear Regression Analysis)

종속변수 y는 여전히 1개지만, 독립변수가 여러개인 선형회귀이다.

 

 

- 비용 함수(Cost function), 손실 함수(Loss function)

앞서 선형회귀에서 해야할 일은 적절한 w와 b를 찾는 것이라 하였다. 이러한 w와 b를 찾기 위해서는 실제값과 가설로부터 얻은 예측값의 오차를 계산하는 식을 세워야 한다.

 

이때 실제값과 예측값에 대한 오차에 대한 식을 목적 함수(Objective function) 또는 비용 함수(Cost function) 또는 손실 함수(Loss function) 라고 한다.

 

3가지 함수  모두 개념적으로 비슷하게 사용되지만, 구체적으로는 아래와 같은 차이점이 있다.

목적 함수(Objective function)는 모델의 성능을 측정하고 최적화하려는 대상이 되는 함수이며, 이 함수를 최소화 또는 최대화하는 것이 목표이다.

비용 함수(Cost function)손실 함수(Loss function)는 모델 훈련 과정에서 사용되는 함수이며, 해당 오차를 최소화하는 것이 목표이다.

또한, 손실 함수(Loss function)는 하나의 입력에 대한 오차를 의미하고, 비용 함수(Cost function)는 모든 입력에 대한 오차를 계산한 손실 함수의 평균값이다.

 

즉, 여기서는 비용 함수(Cost function) 또는 손실 함수(Loss function)를 최소화 하는 w와 b를 찾는 것이 목표이다.

또한, 비용 함수는 단순히 실제값과 예측값에 대한 오차를 표현하면 되는 것이 아니라, 예측값의 오차를 줄이는 일에 최적화된 식이어야 한다. 회귀 문제의 경우 주로 평균 제곱 오차(Mean Squared Error, MSE)가 사용된다.

 

 

MSE를 w와 b에 의한 비용 함수

모든 점들과의 오차가 클수록 MSE는 커지고, 오차가 작아질 수록 MSE는 작아진다. 즉, Cost(w, b)를 최소가 되게 만드는 w와 b를 구하면 결과적으로 y와 x의 관계를 가장 잘 나타내는 선을 그릴 수 있다.

 

Q. (실제값-예측한값)을 제곱하는 이유는?

1) 음수값을 없애기 위함.

2) 격차를 커지게 해서 드라마틱하게 극대화한다.(예측 못했을 때 페널티를 강하게 부여하기 위함)

 

 

- 옵티마이저(Optimizer) = 최적화 알고리즘 : 경사하강법(Gradient Descent)

비용 함수를 최소화하는 w와 b를 찾기 위한 작업을 수행할 때, 사용되는 알고리즘을 옵티마이저(Optimizer) 또는 최적화 알고리즘이라고 부른다. 가장 기본적인 알고리즘으로 경사하강법(Gradient Descent)이 있다.

기울기(w)와 비용함수의 값(cost)의 관계 그래프

해야할 일은 cost가 가장 최소값을 가지게 하는 w를 찾는 일이므로, 볼록한 부분 맨 아래 부분인 접선의 기울기가 0인 w의 값을 찾아야 한다. 머신러닝에서 임의의 랜덤값 w을 정한 뒤에, 맨 아래의 볼록한 부분을 찾을 수 있도록 점차 w의 값을 수정해간다. 

 

위 그림처럼 기울기가 음수인 경우는 양의 방향으로, 양수인 경우는 음의 방향으로 이동하며 최소값을 찾아간다.

즉, 경사하강법 식은 아래와 같다.

α : 학습률(learning rate)

여기서 학습률(learning rate) α의 의미는 w의 값을 변경할 때, 얼마나 크게 변경할지 결정하며 0과 1 사이의 값을 가지도록 한다. 

학습률이 낮다면, 이동하는 거리가 짧고 이동할 수록 기울기가 더욱 감소하므로 이동거리가 더 짧아진다.

그로 인해, 수렴하기 위해 반복해야하는 데이터의 양이 많아지므로 학습 속도가 느려진다.

 

학습률이 높다면, 이동하는 거리가 커서 수렴이 빨리 발생할 수 있지만, 오히려 발산할 수 있다.

또한, 수렴할 때, 전역 최솟값이 있는 영역을 뛰어넘고 지역 최솟값에 도달할 수 있다는 단점이 있다.

 

 

 

 

2. 로지스틱 회귀(Logistic Regression)

둘 중 하나를 결정하는 문제인 이진 분류(Binary Classification) 문제를 풀기 위한 대표적인 알고리즘이다.

출력이 이진 분류인 1, 0을 표현하는 그래프는 S자 형태로 표현된다. 이러한 x와 y의 관계를 표현하기 위해서는 직선을 표현하는 함수가 아니라 S자 형태로 표현 할 수 있는 함수가 필요하다. 이 함수로 시그모이드 함수(Sigmoid Function)이 있다.

 

- 시그모이드 함수(Sigmoid Function)

시그모이드 함수는 σ로 축약해서 표현하기도 한다. 로지스틱 회귀를 풀기 위한 가설 H(x)는 아래와 같다.

시그모이드 함수는 출력값이 0~1 사이의 값으로 조정하여 반환한다. x = 0 일 때, 출력값을 0.5 값을 가진다. 그리고 x가 증가하면 1에 수렴한다. 

 

w값의 변화

w = 0.5 일 때, 빨간색선

w = 1 일 때, 초록색선

w = 2 일 때, 파란색선

→ 가중치 w는 직선의 기울기를 의미했지만, 여기서는 그래프의 경사도를 의미한다. w의 값이 커지면 경사가 커지고 w의 값이 작아지면 경사가 작아진다.

 

 

b값의 변화

b = 0.5 일 때, 빨간색선

b = 1 일 때, 초록색선

b = 1.5 일 때, 파란색선

b의 값에 따라 그래프가 이동한다.

 

시그모이드 함수는 입력값이 커지면 1에 수렴하고, 입력값이 작아지면 0에 수렴한다. 0~1 사이의 값을 가지는 출력값이 0.5 이상이면 1(True), 0.5 이하면 0(False)로 만들어 이진 분류 문제를 풀기 위해 사용할 수 있다.

cf) 시그모이드 함수를 활성화 함수로 쓰기에는 Vanishing Gradient 현상이 발생한다.

 

 

- 비용 함수(Cost function)

로지스틱 회귀 또한 경사하강법을 사용하여 가중치 w를 찾아내지만, 비용 함수로는 평균제곱오차를 사용하지 않는다. 평균제곱오차를 로지스틱 회귀의 비용 함수로 사용했을 때는 글로벌 미니멈(Global Minimum)이 아닌 좋지 않은 로컬 미니멈(Local Minimum)에 빠질 가능성이 지나치게 높아 문제 해결이 어렵다. 

 

로지스틱 회귀에서 가중치 w를 최소화하는 목적 함수(objective function) J는 아래와 같다. (유도과정 생략)

이때 로지스틱 회귀에서 찾아낸 비용 함수를 크로스 엔트로피(Cross Entropy) 함수라고 한다.

 

결론 : 로지스틱 회귀는 비용 함수로 크로스 엔트로피 함수를 사용하고, 가중치를 찾기 위해 크로스 엔트로피 함수의 평균을 취한 함수를 사용한다. 

cf) 크로스 엔트로피 함수는 소프트맥스 회귀의 비용 함수이기도 하다.

 

 

 

3. 소프트맥스 회귀(Softmax Regression)

로지스틱 회귀는 이진 분류라면, 소프트맥스 회귀를 3개 이상의 선택지 중 1개를 고르는 다중 클래스 분류(Multi-class Classification) 문제를 위한 알고리즘이다. 

 

- 소프트맥스 함수(Softmax Function)

선택해야 하는 선택지의 총 개수를 k라고 할 때, k차원의 벡터를 입력받아 각 클래스에 대한 확률을 추정한다.

k차원의 벡터에서 i번째 원소를 \(z_i\), i번째 클래스가 정답일 확률을 \(p_i\)로 나타낸다고 하였을 때, 소프트맥스 함수는 \(p_i\)를 아래와 같이 정의한다.

k=3인 경우의 소프트맥스 함수는 아래와 같은 출력을 낸다.

\(\hat{y}\)는 예측값

cf) 다중 분류 문제에도, 이진 분류에서 사용된 시그모이드 함수를 적용해서 정답을 도출할 수 있다. 하지만, 각 정답에 대해 시그모이드 함수를 적용한다면, 전체 예측의 확률 합이 1이 넘는다는 문제가 발생하게 된다.

따라서, 전체 예측의 확률 합을 1이 되도록 만드는 함수가 소프트맥스 함수이며, 이러한 분석을 소프트맥스 회귀라고 한다. 

 

 

- 비용 함수(Cost Function)

소프트맥스 회귀에서는 비용 함수로 크로스 엔트로피(Cross Entropy) 함수를 사용한다. 아래에서 y는 실제값, k는 클래스 갯수로 정의한다. \(y_j\)는 실제값 원-핫 벡터의 j번째 인덱스를 의미하며, \(p_j\)는 샘플 데이터가 j번째 클래스일 확률을 나타낸다. 표기에 따라서 \(\hat{y_j}\)으로 표현하기도 한다.

이를 n개의 전체 데이터에 대한 평균을 구한다고 하면, 최종 비용 함수는 아래와 같다.

 

cf) k가 2라고 가정하면 소프트맥스의 최종 비용 함수와 로지스틱 회귀의 비용 함수는 결국 같다.

 

Comments