AI 기초

그라디언트 디센트란 무엇인가?

mm
Unite.AI를 Google의 선호 소스에 추가

그라디언트 디센트란 무엇인가?

신경망을 훈련하는 방법에 대해 읽어보셨다면, 거의 확실히 “그라디언트 디센트”라는 용어를 전에 접해보셨을 것입니다. 그라디언트 디센트는 신경망의 성능을 최적화하는 주요 방법으로, 네트워크의 손실/오차율을 줄이는 것입니다. 그러나 그라디언트 디센트는 기계 학습에 새로 접하는 사람들에게 조금 어려울 수 있습니다. 이 기사는 그라디언트 디센트가 어떻게 작동하는지에 대한 좋은 직관을 제공하려고 합니다.

그라디언트 디센트는 최적화 알고리즘입니다. 네트워크의 성능을 개선하기 위해 네트워크의 매개변수를 조정하여 네트워크의 예측과 실제/기대 값 사이의 차이(손실이라고 함)를 최소화합니다. 그라디언트 디센트는 초기 매개변수 값을 사용하여 미적분에 기반한 연산을 통해 매개변수 값을 최적의 값으로 조정합니다. 그라디언트 디센트를 이해하기 위해 많은 미적분을 알아야 하는 것은 아닙니다. 그러나 그라디언트를 이해해야 합니다.

그라디언트는 무엇인가?

신경망의 오차를 나타내는 그래프가 있다고 가정해 보겠습니다. 그래프의 아래쪽은 오차가 가장 낮은 지점을 나타내고, 위쪽은 오차가 가장 높은 지점을 나타냅니다. 우리는 그래프의 아래쪽으로 이동하려고 합니다. 그라디언트는 신경망의 가중치와 오차 사이의 관계를 양적화하는 방법입니다. 이 두 가지 사이의 관계는 기울기로 나타낼 수 있습니다. 기울기의陡도는 모델이 얼마나 빠르게 학습하는지 나타냅니다.

기울기가陡하면 오차가 크게 줄어들고 모델이 빠르게 학습합니다. 기울기가 0이면 모델은 고원에 있으며 학습하지 않습니다. 우리는 기울기를 계산하여 모델의 매개변수를 조정하여 오차를 줄일 수 있습니다.

형태를 조금 바꿔서 언덕과 계곡의 시리즈를 상상해 보겠습니다. 우리는 계곡의 가장 낮은 지점을 찾으려고 합니다. 언덕의 위쪽에서 시작하면 큰 걸음으로 언덕을 내려갈 수 있고, 가장 낮은 지점으로 향하고 있다고 확신할 수 있습니다.

그러나 계곡의 가장 낮은 지점에 가까워질수록 우리의 걸음은 작아져야 합니다. 그렇지 않으면 실제 가장 낮은 지점을 넘어서게 됩니다. 마찬가지로 네트워크의 가중치를 조정할 때, 조정은 실제 가장 낮은 지점에서 멀어질 수 있습니다. 따라서 조정은 시간이 지남에 따라 작아져야 합니다. 그라디언트는 우리가 이동해야 할 방향과 걸음의 크기를 나타내는 벡터/지시입니다.

이제 그라디언트가 무엇인지 알고, 그라디언트를 계산하는 방법을探索할 수 있습니다.

그라디언트 계산 및 그라디언트 디센트

그라디언트 디센트는 높은 손실 지점에서 시작하여 여러 번의 반복을 통해 최저 손실 지점을 찾으려고 합니다. 그림: Роман Сузи via Wikimedia Commons, CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

그라디언트 디센트를 수행하려면, 먼저 그라디언트를 계산해야 합니다. 그라디언트를 계산하려면 손실/비용 함수를 알아야 합니다. 우리는 비용 함수를 사용하여 도함수를 결정합니다. 미적분에서 도함수는 함수의 기울기를 나타내는 것입니다. 우리는 손실 함수를 “f”라고 하면, 손실을 계산하는 방정식은 다음과 같습니다.

손실 = f(계수)

그다음 도함수를 계산하여 기울기를 결정합니다. 손실의 도함수를 계산하면, 기울기의 방향을 알 수 있습니다. 우리는 적절한 방향을 “delta”라고 表示합니다.

delta = 도함수(손실)

이제 우리는 최저 손실 지점으로 향하는 방향을 알게 되었습니다. 이는 네트워크의 매개변수를 업데이트하여 손실을 줄일 수 있습니다. 우리는 이전 매개변수에서 delta와 업데이트의 크기를 제어하는 인자(학습률이라고 함)를 뺀 값으로 매개변수를 업데이트합니다. 학습률을 “alpha”라고 表示합니다.

계수 = 계수 – (alpha * delta)

그다음 우리는 이 과정을 반복하여 네트워크가 최저 손실 지점에 수렴할 때까지 반복합니다.

학습률을 적절하게 선택하는 것이 매우 중요합니다. 학습률은 너무 작거나 너무 클 수 없습니다. 최저 손실 지점에 가까워질수록, 우리의 걸음은 작아져야 합니다. 그렇지 않으면 실제 최저 손실 지점을 넘어서게 됩니다. 최저 손실 지점은 작기 때문에, 업데이트의 크기가 너무 크면 오차가 다시 증가할 수 있습니다. 업데이트의 크기가 너무 크면, 네트워크의 성능은 최저 손실 지점을圍繞하여 반복적으로 오르락내리락할 것입니다.

반면에, 학습률이 너무 작으면 네트워크가 최저 손실 지점에 수렴하는 데 너무 오랜 시간이 걸릴 수 있습니다.

그라디언트 디센트의 유형

이제 그라디언트 디센트의 일반적인 작동 방식을 이해했으니, 그라디언트 디센트의 다양한 유형을 살펴보겠습니다.

배치 그라디언트 디센트: 이 유형의 그라디언트 디센트는 모든 훈련 샘플을 처리한 후에 매개변수를 업데이트합니다. 이 유형의 그라디언트 디센트는 가장 계산적으로 효율적인 유형일 가능성이 높습니다. 매개변수는 전체 배치가 처리된 후에 업데이트되기 때문에, 업데이트의 횟수가 줄어듭니다. 그러나 훈련 데이터셋에 많은 훈련 샘플이 포함된 경우, 배치 그라디언트 디센트는 훈련 시간을 길게 만들 수 있습니다.

스토캐스틱 그라디언트 디센트: 스토캐스틱 그라디언트 디센트에서는 매개변수를 업데이트하기 전에 단 하나의 훈련 샘플만 처리합니다. 이는 모든 훈련 샘플에 대해 발생합니다. 매개변수를 업데이트하기 전에 단 하나의 훈련 샘플만 처리하기 때문에, 배치 그라디언트 디센트보다 더 빠르게 수렴합니다. 그러나 훈련 데이터셋이 크면, 모든 샘플을 처리하는 데 시간이 오래 걸릴 수 있습니다.

미니 배치 그라디언트 디센트: 미니 배치 그라디언트 디센트는 전체 훈련 데이터셋을 작은 섹션으로 나눕니다. 네트워크를 통해 실행되는 작은 미니 배치가 생성됩니다. 미니 배치를 사용하여 오차를 계산한 후에, 매개변수가 업데이트됩니다. 미니 배치 그라디언트 디센트는 배치 그라디언트 디센트와 스토캐스틱 그라디언트 디센트 사이의 중간 지점을 제공합니다. 모델은 배치 그라디언트 디센트보다 더 자주 업데이트되므로, 모델의 최적 매개변수에 대한 수렴이 약간 더 빠르고 강건합니다. 또한 스토캐스틱 그라디언트 디센트보다 계산적으로 더 효율적입니다.

블로거이자 프로그래머로 Machine Learning Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.