부본 경사 하강법이란 무엇입니까? - Unite.AI
Rescale 미팅 예약

AI 101

경사 하강법이란 무엇입니까?

mm
업데이트 on

경사하강법이란 무엇입니까?

신경망이 훈련되는 방법에 대해 읽어본 적이 있다면 이전에 "경사하강법"이라는 용어를 접한 적이 거의 확실합니다. 경사 하강 법 신경망의 성능을 최적화하여 네트워크의 손실/오류율을 줄이는 주요 방법입니다. 그러나 경사하강법은 기계 학습을 처음 접하는 사람들에게는 다소 이해하기 어려울 수 있으며, 이 기사에서는 경사하강법의 작동 방식에 대한 적절한 직관을 제공하기 위해 노력할 것입니다.

경사하강법은 최적화 알고리즘입니다. 네트워크의 예측과 네트워크의 실제/예상 값(손실이라고 함) 사이의 차이가 가능한 한 작아지도록 네트워크의 매개변수를 조정하여 신경망의 성능을 개선하는 데 사용됩니다. 경사 하강법은 매개변수의 초기 값을 취하고 미적분에 기반한 작업을 사용하여 네트워크를 최대한 정확하게 만드는 값으로 값을 조정합니다. 그래디언트 디센트가 작동하는 방식을 이해하기 위해 미적분을 많이 알 필요는 없지만 그래디언트에 대한 이해는 필요합니다.

그라디언트란 무엇입니까?

신경망이 만드는 오류의 양을 나타내는 그래프가 있다고 가정합니다. 그래프의 아래쪽은 오류가 가장 낮은 지점을 나타내고 그래프의 위쪽은 오류가 가장 높은 지점을 나타냅니다. 그래프의 상단에서 하단으로 이동하고 싶습니다. 그래디언트는 오류와 신경망 가중치 사이의 관계를 정량화하는 방법일 뿐입니다. 이 두 가지의 관계 기울기로 그래프로 나타낼 수 있습니다., 잘못된 가중치로 인해 더 많은 오류가 발생합니다. 기울기/기울기의 가파른 정도는 모델이 얼마나 빨리 학습하는지 나타냅니다.

기울기가 더 가파르다는 것은 오류가 크게 감소하고 모델이 빠르게 학습하고 있음을 의미하는 반면, 기울기가 XNUMX이면 모델이 안정 상태에 있고 학습하지 않는다는 의미입니다. 모델의 이동 방향(네트워크 매개변수의 변화)인 기울기를 계산하여 오류가 적은 쪽으로 기울기를 아래로 이동할 수 있습니다.

은유를 약간 바꿔 일련의 언덕과 계곡을 상상해 봅시다. 우리는 언덕 아래로 내려가 가장 낮은 손실을 나타내는 계곡 부분을 찾고자 합니다. 우리가 언덕 꼭대기에서 시작할 때 우리는 언덕 아래로 큰 발걸음을 내딛을 수 있고 우리가 계곡의 가장 낮은 지점을 향해 가고 있다는 확신을 가질 수 있습니다.

그러나 계곡의 가장 낮은 지점에 가까워지면 단계가 더 작아져야 합니다. 그렇지 않으면 실제 가장 낮은 지점을 넘어설 수 있습니다. 마찬가지로 네트워크의 가중치를 조정할 때 조정으로 인해 실제로 가장 낮은 손실 지점에서 더 멀어질 수 있으므로 시간이 지남에 따라 조정이 작아져야 합니다. 가장 낮은 손실 지점을 향해 언덕을 내려가는 맥락에서 기울기는 우리가 취해야 할 경로와 단계가 얼마나 커야 하는지를 자세히 설명하는 벡터/명령입니다.

이제 그래디언트가 어느 방향으로 이동할지(어떤 계수를 업데이트해야 하는지)와 얼마나 큰 단계를 거쳐야 하는지(계수를 얼마나 업데이트해야 하는지)를 알려주는 명령이라는 것을 알았으므로 그래디언트가 어떻게 계산되는지 알아볼 수 있습니다.

기울기 계산 및 기울기 하강법

경사하강법은 손실이 많은 곳에서 시작하여 여러 번의 반복을 통해 손실이 가장 적은 방향으로 단계를 진행하여 최적의 가중치 구성을 찾는 것을 목표로 합니다. 사진: Wikimedia Commons를 통한 Роман Сузи, CCY BY SA 3.0(https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

경사하강법을 수행하기 위해서는 먼저 경사도를 계산해야 합니다. 순서대로 기울기를 계산하기 위해, 손실/비용 함수를 알아야 합니다. 미분을 결정하기 위해 비용 함수를 사용할 것입니다. 미적분에서 미분은 주어진 지점에서 함수의 기울기를 의미하므로 기본적으로 다음을 기반으로 언덕의 기울기를 계산합니다. 손실 함수. 손실 함수를 통해 계수를 실행하여 손실을 결정합니다. 손실 함수를 "f"로 표현하면 손실 계산 방정식은 다음과 같다고 말할 수 있습니다(선택한 비용 함수를 통해 계수를 실행하고 있습니다).

손실 = f(계수)

그런 다음 미분을 계산하거나 기울기를 결정합니다. 손실의 도함수를 구하면 계수를 조정할 적절한 부호를 제공하여 어느 방향이 기울기의 위 또는 아래인지 알 수 있습니다. 적절한 방향을 "델타"로 표현하겠습니다.

델타 = 미분함수(손실)

이제 어느 방향이 가장 낮은 손실 지점을 향해 내리막인지 결정했습니다. 이는 신경망 매개변수의 계수를 업데이트하고 손실을 줄일 수 있음을 의미합니다. 이전 계수에서 방향(델타) 및 변화의 크기(단계 크기)를 제어하는 ​​인수에 의해 결정된 값의 적절한 변화를 뺀 값을 기준으로 계수를 업데이트합니다. 업데이트 크기를 제어하는 ​​인수를 "학습률” 그리고 우리는 그것을 “알파”로 나타낼 것입니다.

계수 = 계수 – (알파 * 델타)

그런 다음 네트워크가 XNUMX에 가까워야 하는 가장 낮은 손실 지점 주변으로 수렴될 때까지 이 프로세스를 반복합니다.

학습률(알파)에 적합한 값을 선택하는 것이 매우 중요합니다. 선택한 학습 속도는 너무 작거나 너무 커서는 안 됩니다. 손실이 가장 적은 지점에 접근하면 단계가 더 작아져야 합니다. 그렇지 않으면 실제 손실이 가장 낮은 지점을 초과하여 다른 쪽에서 끝납니다. 가장 작은 손실 지점은 작고 변화율이 너무 크면 오류가 다시 증가할 수 있습니다. 단계 크기가 너무 크면 네트워크의 성능이 계속해서 가장 낮은 손실 지점 주변에서 바운스되어 한 쪽에서 오버슈팅한 다음 다른 쪽에서 오버슈팅합니다. 이런 일이 발생하면 네트워크는 진정한 최적 가중치 구성으로 수렴되지 않습니다.

반대로 학습률이 너무 작으면 네트워크가 최적의 가중치로 수렴하는 데 매우 오랜 시간이 걸릴 수 있습니다.

경사하강법의 유형

이제 일반적으로 경사 하강법이 작동하는 방식을 이해했으므로 몇 가지 다른 점을 살펴보겠습니다. 경사하강법의 종류.

Batch Gradient Descent: 이 형태의 Gradient Descent는 계수를 업데이트하기 전에 모든 훈련 샘플을 통해 실행됩니다. 이 유형의 경사하강법은 전체 배치가 처리된 후에만 가중치가 업데이트되기 때문에 계산상 가장 효율적인 형태의 경사하강법일 가능성이 높습니다. 즉, 총 업데이트 횟수가 더 적습니다. 그러나 데이터 세트에 많은 수의 교육 예제가 포함된 경우 배치 경사 하강법으로 인해 교육 시간이 오래 걸릴 수 있습니다.

Stochastic Gradient Descent: Stochastic Gradient Descent에서는 경사 하강 및 매개변수 업데이트의 모든 반복에 대해 단일 훈련 예제만 처리됩니다. 이것은 모든 교육 예제에서 발생합니다. 매개변수가 업데이트되기 전에 하나의 교육 예제만 처리되기 때문에 업데이트가 더 빨리 이루어지기 때문에 Batch Gradient Descent보다 빠르게 수렴하는 경향이 있습니다. 그러나 훈련 세트의 모든 항목에 대해 프로세스를 수행해야 하기 때문에 데이터 세트가 큰 경우 완료하는 데 시간이 오래 걸릴 수 있으므로 원하는 경우 다른 경사 하강법 유형 중 하나를 사용하십시오.

Mini-Batch Gradient Descent: Mini-Batch Gradient Descent는 전체 교육 데이터 세트를 하위 섹션으로 분할하여 작동합니다. 네트워크를 통해 실행되는 더 작은 미니 배치를 생성하고 미니 배치가 오류를 계산하는 데 사용되면 계수가 업데이트됩니다. Mini-batch Gradient Descent는 Stochastic Gradient Descent와 Batch Gradient Descent의 중간 지점에 있습니다. 모델은 Batch Gradient Descent의 경우보다 더 자주 업데이트되며, 이는 모델의 최적 매개변수에 대해 약간 더 빠르고 더 강력한 수렴을 의미합니다. 또한 Stochastic Gradient Descent보다 계산적으로 더 효율적입니다.

전문 분야의 블로거 및 프로그래머 기계 학습 깊은 학습 주제. 다니엘은 다른 사람들이 사회적 이익을 위해 AI의 힘을 사용하도록 돕기를 희망합니다.