본문 바로가기
Artificial Intelligence/Deep Leaning

역전파 알고리즘(Backpropagation algorithm)

by YUNZEE 2024. 1. 5.
728x90

앞에서 설명한 다층 퍼셉트론 같은 깊은 신경망이 등장한 후 선형으로 가능하지 않은 데이터들을 분류하는 것이 가능해졌다. 하지만 모델의 깊이가(depth)가 깊어질수록, 즉 모델의 층이 많아질수록 모델의 가중치의 수는 기하급수적으로 많이 늘어난. 기존의 경사하강법은 기울기를 이용하여 가중치를 업데이트하는 방법을 사용하긴 하지만, 여러 층에 존재하는 가중치들을 모두 하나하나 업데이트하는 것은 매우 많은 연산양과 메모리를 요구한다. 이를 해결하고자 보안된 것이 역전파 알고리즘이다.

위의 이미지는 입력 하나, 출력 하나, 뉴런 하나로 구성된 가장 단순한 신경망을 보여준다.

왼쪽부터 입력(x), 가중치(w1과 w2), 뉴런의 출력(y), 손실 함수(L)로 구성되어 있다.

우리의 목표는 손실 함수(L)를 최소화하기 위해 가중치(w2)를 업데이트 하는 것이다.

 

역전파 알고리즘

- 신경망의 가중치를 훈련시키기 위해 사용되는 알고리즘

- 손실 함수의 기울기를 계산하고, 그 기울기를 이용하여 가중치를 업데이트한다.

- 체인 룰(Chain Rule)이라는 미분 기법을 사용하여 효율적으로 기울기를 계산한다.

 

가장 단순한 신경망에서의 역전파

1. 손실 함수의 기울기 계산:

- 손실 함수(L)를 w2에 대해 편미분하여 기울기를 계산한다.

- 이 기울기는 w2를 조금 변경했을 때 손실이 얼마나 변하는지를 나타낸다.

 

2. 체인 룰 적용:

- w2는 y에 직접 연결되어 있지 않기 때문에, 체인 룰을 사용하여 간접적으로 기울기를 계산한다.

- 체인 룰은 다음과 같이 정의된다. dL/dw2 = dL/dy * dy/dw2

- 즉, 손실 함수의 기울기(dL/dw2)는 손실 함수의 y에 대한 기울기(dL/dy)와 y의 w2에 대한 기울기 (dy/dw2)의 곱으로 계산된다.

 

3. 각 항의 계산:

- dL/dy: 손실 함수의 y에 대한 기울기는 손실 함수의 형태에 따라 계산된다.

- dy/dw2: y의 w2에 대한 기울기는 뉴런의 활성화 함수의 미분 값이다.

예를 들어, 시그모이드 함수를 사용했다면 dy/dw2= y * (1-y)된다.

 

위의 이미지는 신경망에서 역전파 알고리즘을 통해 기울기를 계산하는 과정을 보여준다.

왼쪽부터 입력(x), 가중치(w1과 w2), 뉴런의 출력(y), 손실 함수(L)로 구성되어 있다.

파란색 화살표는 체인 룰을 제공하는 순서이다.

빨간색 화살표는 추가적인 체인 룰 적용이 필요한 부분을 나타낸다.

 

1. 순실 함수의 기울기 분해:

- 손실 함수의 기울기(dL/dw2)를 두 개의 항으로 분해한다.

- 첫 번째 항은 손실 함수의 y에 대한 기울기 (dL/dy)이다.

- 두 번째 항은 y의 w2에 대한 기울기 (dL/dw2)이다.

- 이것은 체인 룰의 기본적인 적용이다.

 

2. w1에 대한 기울기 계산:

- w1에 대한 기울기를 계산하기 위해 w2를 w1으로 대체한다.

- 체인 룰은 여전히 유효하므로 동일한 방정식이 성립한다.

 

3. 추가적인 체인 룰 적용:

- w1에 대한 기울기를 계산하려면 y의 w1에 대한 기울기(dy/dw1)를 계산해야 한다.

- dy/dw1 역시 체인 룰을 사용하여 계산한다.

- 이때,  dy/dw1은 빨간색 화살표가 가리키는 부분에 해당하며, 추가적인 체인 룰 적용이 필요하다.

 

핵심: 역전파 알고리즘은 체인 룰을 반복적으로 적용하여 신경망의  모든 가중치에 대한 기울기를 계산한다.

 

위에 이미지와 전체적으로 비슷하지만 여기 이미지의 핵심은 '반복적으로 수행' 한다는 것이다. 전체 과정을 보여준다.

 

역전파 알고리즘의 전체과정:

1. 손실 함수의 기울기 계산:

- 손실 함수(L)를 출력(y)에 대해 편미분하여 기울기(dL/dy)를 계산한다.

 

2. 체인룰 적용:

- 출력(y)과 연결된 가중치(w2)에 대해 기울기를 계산하기 위해 체인 룰을 적용한다.

- dL/dw2 = dL/dy * dy/dw2

 

3. 기울기 전파:

- 계산된 기울기(dL/dw)를 이전 층의 가중치(w1)에 대한 기울기 계산에 활용한다.

- dL/dw1 = dL/dy * dy/dw1

 

4. 반복:

- 이 과정을 반복하여 신경망의 모든 가중치에 대한 기울기를 계산한다.

 

핵심: 역전파 알고리즘은 출력층에서 입력층 방향으로 기울기를 전파하며, 신경망의 모든 가중치에 대한 기울기를 효율적으로 계산할 수 있다.  

728x90