오늘은 역전파에 대하여 알아보겠습니다.

 

순서는 아래와 같습니다.

 

1. 로지스틱 회귀란?

2. 로지스틱 회귀를 단일층 신경망으로 구현하기

3. 로지스틱 손실 함수를 경사 하강법에 적용하기

 

입력층과 출력층으로만 구성된 단일층 신경망에서 역전파가 어떻게 진행되는지 알아보고자 합니다. 따라서 로지스틱 회귀를 구현하며 단일층 신경망에서의 역전파를 알아보겠습니다.

 

이 게시물은 Do it! 딥러닝 입문 책을 정리하였습니다.

 

http://www.yes24.com/Product/Goods/78896574

 

1. 로지스틱 회귀란?


로지스틱 회귀의 목적은 종속 변수(Y)와 독립 변수(X) 사이 관계를 구체적인 함수로 나타내서 예측 모델로 사용하는 것입니다. 독립 변수의 선형 결합으로 종속 변수를 설명한다는 관점에서는 선형 회귀 분석과 유사합니다.

*선형 결합: 일차식과 같습니다.

 

하지만 로지스틱 회귀는 종속 변수가 범주로 구성된 데이터를 대상으로 합니다. 입력 데이터가 주어졌을 때 로지스틱 회귀를 적용한 결과는 특정 분류로 나뉘기 때문에 일종의 분류 기법이라고도 합니다. 종속 변수의 범주가 2개인 경우 로지스틱 회귀라고 부르고 2개 이상인 경우 다항 로지스틱 회귀라고 부릅니다.

 

이번 시간에 저희는 종속 변수의 범주가 2개인 경우 사용하는 로지스틱 회귀를 공부합니다.

 

(출처: 위키백과 로지스틱 회귀)

 

로지스틱 회귀식은 [수식 1] 과 같습니다.

 

[수식 1] 로지스틱 회귀식

 

[수식 1]의 (1) 에 따르면 종속 변수 Y가 0과 1의 범주를 가질 때 Y가 1일 확률을 p라고 합니다.

(2)에 따르면 맨 오른쪽 항은 가중치 w1, w2와 편향 b를 입력값 x1, x2와 선형 결합한 일차식입니다.

그럼 확률 p는 어떻게 구할까요? (2)를 풀어낸 결과, 식 (3) 으로 구하는 것을 알 수 있습니다.

 

2. 로지스틱 회귀를 단일층 신경망으로 구현하기


[그림 1]은 로지스틱 회귀를 단일층 신경망으로 구현한 것입니다.

 

* 단일층 신경망: 은닉층이 없고 입력층과 출력층으로만 구성된 신경망입니다.

 

로지스틱 회귀에서 저희의 목적은 y가 0인지 1인지 예측하는 것입니다. [수식 1]의 (3)을 이용해서 y가 1인 확률을 구하고 임계 함수를 적용하여 y를 0 또는 1로 분류할 것입니다.

 

 

[그림 1] 로지스틱 회귀 단일층 신경망

 

[그림 1]을 통해 식으로 살펴보았던 로지스틱 회귀가 어떻게 신경망으로 구현되는지 단계별로 설명하겠습니다.

 

Step1. 입력층에 입력값 x1과 x2가 들어갑니다.

 

Step2. 출력층에서 입력값들과 가중치 w1, w2 그리고 편향 b을 선형 결합합니다. 그 결과를 z라고 합니다.

 

Step3.  z에 로지스틱 함수를 적용합니다. (이것은 시그모이드 함수라고도 합니다.)

          z와 같은 가중합을 출력값 형태인 a로 변환하는 함수를 활성화 함수라고 합니다. 활성화 함수에는 시그모이드

          함수, 소프트 맥스 함수 등이 해당됩니다.

 

* 가중합: 각 입력값과 가중치를 곱한 후 이 결과들과 절편을 합한 것을 의미합니다.

* 활성화 함수: 입력값들의 가중합을 출력값으로 변환하는 함수입니다.

 

Step4.  Step3의 결과로 y=1일 확률이 나오고 이것을 a라고 합니다. 마지막으로 a에 임계함수를 적용하여 0.5보다 크면 1, 작으면 0으로 분류합니다.

 

이로써 로지스틱 회귀 과정을 알아보았습니다. 그런데 궁금한 점이 하나 있습니다. 가중치와 절편은 어떻게 구할까요?

 

3번 항목에서 가중치와 절편을 업데이트하는 방법을 차근차근 배워봅시다.

 

3. 로지스틱 손실 함수를 경사 하강법에 적용하기


로지스틱 회귀와 같이 분류하는 알고리즘의 목표는 무엇일까요? 바로 올바르게 분류된 데이터의 비율을 높이는 것입니다. 그럼 알맞게 분류된 데이터의 비율을 높이는 방향으로 가중치와 절편을 업데이트 해야겠죠? 여기에 꼭 필요한 개념이 있는데요. 바로 손실 함수와 경사 하강법입니다.

 

* 손실 함수: 예측값과 실제값의 차이를 함수로 정의한 것을 말합니다. 손실 함수는 신경망의 가중치, 절편을 수정하는 기준이되는 함수입니다. 제곱 오차(예측값과 실제값 차이의 제곱합), 크로스 엔트로피 등이 손실 함수로 사용됩니다.

* 경사 하강법: 어떤 손실 함수가 정의되었을 때, 손실 함수의 값이 최소가 되는 지점을 찾아가는 방법입니다.

 

[그림 2]를 통해 로지스틱 회귀의 가중치와 절편을 업데이트 하는 과정을 단계별로 설명하겠습니다.

 

[그림 2] 로지스틱 회귀 역방향 계산

 

Step1. 로지스틱 회귀의 손실함수 L은 [수식 2]와 같습니다.  y는 실제값, a는 시그모이드 함수(활성화 함수)가 출력한 값 입니다. 

 

[수식 2] 로지스틱 회귀의 손실함수

 

Step2. Step1에서 정의한 손실함수(L)를 가중치(w)와 절편(b)에 대해 각각 미분한 기울기를 구할 것입니다. 이후 가중치와 절편을 업데이트 하겠습니다. 기울기를 직관적으로 구하기 어렵기 때문에 미분의 연쇄법칙을 이용하겠습니다. 

 

[수식 3] 미분의 연쇄법칙

 

[수식 3]의 왼쪽항은 손실함수를 가중치에 대해 미분한 기울기, 오른쪽항은 미분의 연쇄법칙으로 정리한 것입니다.

 

[수식 4] 기울기 식

 

[수식 4]는 [수식 3]의 오른쪽항을 구성하는 기울기를 구한 식입니다. 

 

[수식 5] 손실함수를 가중치, 절편에 대해 미분

 

[수식 5]는 미분의 연쇄법칙을 이용해서 기울기를 계산한 결과입니다. 

참고로 손실 함수에 대한 미분이 연쇄 법칙에 의해 진행되는 구조를 보고 그레디언트(기울기)가 역전파된다고 말합니다.

 

Step3.  로지스틱 회귀의 가중치 업데이트를 위해 손실 함수(L)를 가중치(w)에 대해 미분한 식을 가중치에서 뺍니다. 절편(b)도 마찬가지로 계산하면 됩니다. 계산식은 [수식 6]입니다.

 

[수식 6] 가중치 업데이트

+ Recent posts