Data/머신러닝 & 딥러닝

그레디언트와 경사하강법

빛날희- 2021. 8. 6. 19:14

밑바닥부터 시작하는 딥러닝을 교재로 한 딥러닝 I 강의 내용을 정리하고자 작성한 포스팅입니다. 


▶ 모델 학습의 목표:

손실함수를 최소로 만드는 것이 목표로 정확도가 높은 모델을 만들기 위한 학습이 이뤄져야 한다.

 

 

▷ 손실함수를 최소로 만드는 것의 의미

손실함수를 최소로 만든다는 말은 손실함수의 변수(가중치와 편향)가 1차원일 때는 다음 그래프와 같이 기울기가 0인 지점에서 가장 최소값 _ 는 의미이다. 

그림1. 변수가 하나일 때 손실함수의 최솟값

그러나 일반적으로 모델에서 변수를 하나만을 가지는 경우는 없다. 즉 적어도 2개의 변수, 2차원에서 손실함수의 최솟값을 찾아야한다. 손실함수가 2개의변수를 가진다고 할 때 최솟값은 다음과 같이 찾을 수 있다. 

그림2. 변수가 두개일 때 손실함수의 최솟값

여기서 z는 접평면의 방정식으로 3차원에서 손실함수의 최솟값은 이 방정식을 상수 k로 만드는, 즉 미분계수 값이 0이 되는 가중치와 편향들(변수들)이 손실함수를 최소로 만드는 변수들이다. 

실제모델에서는 몇 백개의 차원을 대상으로 연산을 수행하지만 위와 같이 그레디언트가 0에 수렴할 수 있도록 한다는 것엔 변함이 없다. 

 

여기서 그레디언트 개념에 대해 짚고 넘어가자. 

 

▷ 그레디언트

각 축에 대한 편도함수들을 변수 순서대로 묶은 벡터로 다음과 같이 나타낼 수 있다. 

수식 1. 그레디언트

편도 함수는 알고자 하는 축 외의 다른 축들은 모두 상수라고 생각하고 일변수 미분한 편미분과 같다고 생각하면된다. 따라서 그레디언트는 모든 축들에 대한 편도함수를 모아놓은 것이라고 볼 수 있다. 

 

이 그레디언트에 벡터의 방향을 나타내는 방향 벡터를 내적하면 모든 방향에 대한 미분계수를 구할 수 있다. 따라서 손실함수를 최소로 만든다는 것은 다시 말하면 각 편도함수에대한 미분계수를 0에 가깝게 최소로 만든다는 의미로 다음과 같이나타낼 수 있다. 

수식2. 방향미분계수의 최소

편도함수를 Df()로 나타낼 수 있다. 미분계수를 0으로 만들기 위해 x와 y에 대한 편도함수가 0이 되도록 방정식을 구성한다. 

 

 

▷ 방향미분 계수의 최소

그렇다면 방향 미분 계수를 최소로 만들기 위해선 그럼 어떤 방향으로 움직여야 최소로 만들 수 있을까?

그림3. 방향미분의 최대 최소

방향 미분을 구하는 식은 위의 공식과 같이 코사인 theta를 사용하여 재구성할 수 있다. 그레디언트 값은 상수이기 때문에 방향미분계수 값은 theta값에 따라서 달라지는데 이를 그림으로 나타내면 다음과 같다. 

그림4. 그레디언트와 방향미분계수

방향 미분 계수가 최대가 되는 때는 cos값이 1일 때 이므로 theta가 0일때, 즉 그레디언트와 같은 방향으로 움직일 때이다. 반대로 그레디언트 값과 반대로 움직일 때 방향미분계수는 최소가 된다. 

따라서 궁극적으로 방향미분 계수를 최소로 만들기 위해선 그레디언트의 반대방향으로 움직여야 한다는 것을 알 수 있다. 

 

방향 미분계수를 0으로 만들기 위해 수식와 같이 방정식을 놓고 풀 수 있지만 위에서 언급했다싶이 실제 모델의 차원은 몇 백 차원이기에 이를 방정식으로 바꾸면 엄청난 연산이 필요할 것이다. 따라서 이를 대신하기 위한 차선책으로 경사하강법을 사용한다. 

 

 

 

▶ 경사하강법

함수 R위의 점 x에서 미분계수가 가장 감소할 수 있는 방향인 그레디언트의 반대방향으로 한걸음씩 걸으며 손실함수값을 낮추는 방법으로 다음 공식으로 나타낼 수 있다. 

수식 3. 경사하강법

그레디언트에 걸음의 보폭에 해당하는 학습율을 곱하고 현재 위치에서 빼주면서 학습을 진행한다. 빼주는 이유는 현재 위치에서 그레디언트의 반대방향으로 움직여야 하기 때문이다. 

 

 

▷ 학습율 learning rate

- 학습율이 너무 작으면 주어진 학습 횟수 만큼 걸어서 원하는 최솟값까지 가지 못하는 경우가 생길 수 있다. 또는 엄청나게 많은 걸음을 걸어야 최솟값에 도달할 수 있기 때문에 꽤 비효율적인 학습이 될 수 있다. 

- 학습율이 너무 크면 그림 5와 같이 보폭이 너무 커지면서 그레디언트의 반대방향으로 움직이는 게 아니라 튕겨져 발산하는 형태가 될 수 있다. 

 

그림5. 학습율

따라서 학습율 파라미터를 잘 조정하는 것이 모델의 학습에 큰 영향을 줄 수 있다. 

 

 

▷ 경사하강법의 문제점

경사하강법은 그레디언트의 반대방향으로 움직이면서 방향미분계수가 최소가 되는 지점을 찾는다. 

그런데 그림6의 파란점을 보자. 파란점은 그레디언트의 반대방향으로 움직이고 있지만 목표인 최소값이 아닌 극소값에 안착할 가능성이 높다. 왜냐하면 극소값에 갈수록 미분계수가 최소가 되기 때문에 극소값이 최소값이라고 착각할 수 있기 때문이다. 

즉 경사하강법은 목표인 최솟값이 아닌 극솟값에 안착할 수 있다는 문제점이 있다. 

그림 6. 경사하강법의 문제

이러한 문제점을 해결하기위해 확률적 경사하강법을 사용할 수 있다. 

 

 

 

▶ 확률적 경사하강법(Stochastic Gradient Descent)

경사하강법의 경우 그림 7처럼 순차적으로 최솟값을 찾아가지만 확률적 경사하강법은 훈련하는 데 무작위성을 더해 중구난방으로 그레디언트의 반대방향으로 움직이다가 확률적으로 손실함수의 최솟값을 발견할 수 있도록 한다 . 

그림7. 확률적 경사하강법과 경사하강법