본문 바로가기

Lecture AI/2장.신경망의 수학적 구성 요소

3. 신경망의 엔진 : 확율적 경사 하강법

반응형

미분 가능한 함수가 주어지면 이론적으로 이 함수의 최솟값을 해석적으로 구할 수 있습니다. 함수의 최솟값은 변화율이 0인 지점입니다. 

 

신경망에 적용하면 가장 작은 손실 함수의 값을 만드는 가중치의 조합을 해석적으로 찾는 것을 의미합니다. 

 

[생략]

 

앞의 알고리즘 네 단계를 응용하여 랜덤한 배치 데이터에서 현재 손실 값을 토대로 하여 조금씩 파라미터를 수정하는 방법이 있습니다. 미분 가능한 함수를 가지고 있으므로 그래디언트를 계산하여 단계 4를 효율적으로 구현할 수 있습니다. 그래디언트의 반대 방향으로 가중치를 업데이트하면 손실이 매번 조금씩 감소할 수 있습니다.

 

1. 훈련 샘플 x와 이에 상응하는 타깃 y의 배치를 추출합니다.

2. x를 사용하여 네트워크를 실행하고(정방향 패스(forward pass) 단계), 예측 y_pred를 구합니다.

3. y_pred와 y의 차이를 측정하여 이 배치에 대한 네트워크의 손실을 계산합니다.

4. 네트워크의 파라미터에 대한 손실 함수의 그래디언트를 계산합니다. (역방향 패스(backward pass))

5. 그래디언트의 반대 방향으로 파라미터를 조금 이동시킵니다. 예를 들어 W -= step*gradient처럼 하면 배치에 대한 손실이 조금 감소할 것입니다.

 

위와 같은 방법이 미니 배치 확률적 경사 하강법(Mini-batch SGD)입니다. 확률적이란 단어는 각 배치 데이터가 무작위로 선택된다는 의미입니다. 

 

그림에서 볼 수 있듯이 step값을 적절히 고르는 것이 중요합니다. 이 값이 너무 작으면 곡선을 따라 내려가는데 너무 많은 반복이 필요하고 지역 최솟값에 갇일 수 있습니다.  step이 너무 크면 손실 함수 곡선에서 완전히 임의의 위치로 이동시킬 수 있습니다.

 

미니 배치 SGD 알고리즘의 한 가지 변종은 반복마다 하나의 샘플과 하나의 타깃을 뽑는 것입니다. 이것이 진정한 SGD입니다. 다른 한편으로 극단적인 반대의 경우를 생각해 보면 가용한 모든 데이터를 사용하여 반복을 실행할 수 있습니다. 이를 배치 SGD(batch SGD)라고 합니다. 더 정확하게 업데이트 되지만 더 많은 비용이 듭니다.

 

실전에서는 업데이트할 다음 가중치를 계산할 때 현재 그레디언트 값만 보지 않고 이전에 업데이된 가중치를 여러 가지 다른 방식으로 고려하는 SGD변종이 많이 있습니다. 예를 들어 모멘텀을 사용한 SGD, Adagrad, RMSProp등입니다. 이런 변종들을 모두 최적화 방법(optimiaztion method)또는 옵티마이저라고 부릅니다. 

 

여러 변종들에서 사용하는 모멘텀 개념은 아주 중요합니다. 모멘텀은 SGD에 있는 2개의 문제점인 수렴 속도지역 최솟값을 해결합니다.  모멘텀이 충분하면 공이 골짜기에 갇히지 않고 전역 최솟값에 도달할 것입니다. 모멘텀은 현재 기울기 값뿐만 아니라 현재 속도를 함께 고려하여 각 단계에서 공을 움직입니다. 

 

실전에 적용할 때는 현재 그래디언트 값뿐만 아니라 이전에 업데이트한 파라미터에 기초하여 파라미터 w를 업데이트합니다. 

 

 


변화율 연결: 역전파 알고리즘

 

역전파 알고리즘은 최종 손실 값에서부터 시작합니다. 손실 값에 각 파라미터가 기여한 정도를 계산하기 위해 연쇄 법칙 

반응형