요약생성
바쁠 때는 리얼라이즈가 내용을 요약해 드려요.
이 기사는 AI를 둘러싼 전문 용어와 근거 없는 믿음을 명확히 하기 위한 게시물 시리즈인 AI의 미스터리 해결의 일부입니다.
딥 러닝 모델은 다양한 형태로 제공되며 각 모델은 특정 작업에 맞게 조정됩니다. 밀집 계층에서 컨볼루션 신경망(CNN), 순환 신경망(RNN) 및 더 최근의 트랜스포머에 이르기까지 딥 러닝 환경은 다양하고 매혹적입니다. 그러나 이러한 다양성 아래에는 이러한 모델을 하나로 묶는 공통 스레드, 즉 머신 러닝 모델을 훈련하는 데 사용되는 기술인 경사 하강 원리가 있습니다.
딥 러닝을 뒷받침하는 수학은 종종 위협적으로 보일 수 있습니다. 최근에 Ronald T. Kneusel의 딥 러닝을 위한 수학을 읽게 되었는데, 이 책은 딥 러닝의 수학적 복잡성을 파헤치고 예제, Python 코드 및 시각 자료를 통해 이해하기 쉽게 만듭니다.
이 기사에서는 수학적 세부 사항을 너무 깊이 파고들지 않고 경사 하강법을 쉽게 설명하려고 합니다. 이 기사는 경사 하강법에 대한 포괄적인 설명을 제공하는 딥 러닝을 위한 수학 11장에서 영감을 얻었습니다. 더 자세히 이해하려면 책 전체를 읽어 보시기 바랍니다. 딥 러닝의 수학에 관심이 있는 사람에게 귀중한 자료입니다.
경사 하강법이란 무엇입니까?
경사 하강법의 일반적인 아이디어는 머신 러닝 모델의 매개변수를 반복적으로 조정하여 오류를 최소화하는 것입니다. 오류는 모델의 예측과 실제 값(ground truth라고도 함) 간의 차이를 계산하는 손실 함수를 통해 계산됩니다. 즉, 경사 하강법의 목표는 손실 함수의 최소값을 찾는 것입니다.
경사 하강법의 작동 방식을 이해하려면 눈을 가린 채 계곡에서 가장 낮은 지점을 찾으려고 한다고 상상해 보십시오. 발밑의 경사를 느끼고 어느 방향으로 갈지 결정할 수 있습니다. 한 걸음 나아가서 경사를 다시 느끼고 방향을 조정합니다.
이것이 본질적으로 경사 하강법이 하는 일입니다. 예측으로 시작하여 오류를 측정한 다음 손실 함수의 기울기에 따라 모델의 매개변수를 조정합니다. 이 프로세스를 반복함으로써 모델은 기본 데이터의 분포를 근사하게 학습합니다.
경사 하강법에서 “경사”라는 용어는 모델의 매개변수에 대한 손실 함수의 기울기를 나타냅니다. 오류를 최소화하려면 기울기의 반대 방향으로 이동합니다. 따라서 “하강”이라는 용어를 사용합니다.
1차원에서의 경사 하강법
경사 하강법의 작동 방식을 이해하기 위해 간단한 1차원 문제를 생각해 보겠습니다. 단일 매개변수 _x_가 있는 머신 러닝 모델이 있다고 가정해 보겠습니다. 우리의 목표는 모델의 예측과 실제 값 간의 오류를 계산하는 손실 함수를 최소화하는 _x_의 값을 찾는 것입니다.
데이터의 기본 함수가 _f(x) = 6x^2 – 12x + 3_이라고 가정합니다. 분석적으로 1차 도함수를 0으로 설정하고 _x_에 대해 풀면 함수의 최소값을 찾을 수 있습니다. 그러나 실제 애플리케이션에서는 문제가 너무 복잡해서 함수의 형태를 미리 알 수 없고 분석적으로 풀 수 없는 경우가 많습니다. 이때 경사 하강법이 작동하여 단계별로 최소값을 찾는 데 도움이 됩니다.
간단한 1차원 함수
경사 하강법에서는 기울기를 계산하는데, 1차원 문제의 경우 본질적으로 1차 도함수입니다. 이 경우 도함수 _d/dx = 12x – 12_입니다. 그런 다음 _x_를 임의의 값으로 초기화하고 함수의 출력을 계산합니다. _x_에 대한 기울기를 계산하면 기울기의 방향을 얻습니다.
기울기의 반대 방향으로 _x_를 조금씩 조정합니다. 단계 크기를 종종 학습률이라고 합니다. 이는 오버슈팅을 방지하고 최소값을 놓치지 않기 위한 것입니다. 수학적 문헌과 프로그래밍 라이브러리에서는 일반적으로 그리스 문자 η 또는 _eta_를 학습률에 대한 매개변수로 사용합니다. 경사 하강 알고리즘은 _x <- x – η * d/dx_입니다.
_x_를 -0.9로, _eta_를 0.03으로 초기화한다고 가정해 보겠습니다. 첫 번째 단계에서 기울기는 12 * (-0.9) – 12 = -22.8입니다. _x_에 대한 첫 번째 업데이트는 _x <- -0.9 – 0.03 * (-22.8)_이 되고, 이는 -0.216이 됩니다. 이제 최소값인 1에 더 가까워졌습니다.
다음 업데이트는 다음과 같습니다.
0.2217
0.5019
0.6812
0.7959
0.8694
간단한 1차원 함수에 대한 경사 하강법
계속하면 _x_는 결국 1에 도달합니다. 보시다시피 최소값에 가까워질수록 기울기가 완만해지기 때문에 변화가 작아집니다.
이 간단한 1차원 예제에서는 프로세스가 간단해 보입니다. 그러나 실제 머신 러닝 문제에서는 종종 수백만 개의 매개변수가 있는 고차원 데이터와 복잡한 모델을 다룹니다. 이러한 복잡성에도 불구하고 원리는 위에서 설명한 것과 동일합니다. 최소값에 도달할 때까지 하강 방향으로 매개변수를 반복적으로 조정합니다.
이것이 경사 하강법의 힘입니다. 기본 수학 함수가 너무 복잡해서 분석적으로 풀 수 없는 경우에도 복잡한 머신 러닝 모델을 훈련하기 위한 실용적이고 확장 가능한 방법을 제공합니다.
학습률이 너무 높으면 경사 하강법이 오버슈팅되어 함수의 최적 지점을 놓칠 수 있습니다.
다차원에서의 경사 하강법
실제 애플리케이션에서 머신 러닝 모델, 특히 딥 러닝 모델은 종종 많은 차원을 가지고 있습니다. 각 차원은 모델이 예측을 하는 데 사용하는 다른 매개변수 또는 특징에 해당합니다. 복잡성이 추가되었지만 경사 하강법의 원리는 위에서 설명한 것과 동일합니다. 주요 차이점은 이제 각 매개변수에 대해 함수의 편도함수를 별도로 계산해야 한다는 것입니다.
두 개의 최소값이 있는 2차원 함수 _f(x,y) = 6x^2 + 9y^2 – 12x – 14y + 3_을 생각해 보겠습니다. 이 함수는 _x_와 _y_라는 두 개의 매개변수가 있는 모델을 나타냅니다.
단일 최소값이 있는 간단한 2차원 함수
이 함수의 기울기는 다음 편도함수의 벡터입니다.
d/dx = 12x – 12
d/dy = 18y – 14
이러한 편도함수는 각 매개변수에 대한 함수의 기울기를 알려줍니다. 경사 하강법의 각 단계에서 x와 y를 다음과 같이 업데이트해야 합니다.
x <- x – η * d/dx
y <- y – η * d/dy
이러한 방식으로 해당 편도함수의 안내에 따라 함수의 값을 가장 많이 줄이는 방향으로 각 매개변수를 조정합니다.
다음 그래프에서 함수 환경은 등고선과 음영 영역으로 표시되며 더 밝은 영역은 최소값을 나타냅니다. 세 가지 다른 초기화 지점의 경사 하강 궤적을 보여주었습니다. 보시다시피 _x_와 _y_의 초기값에 관계없이 여러 번의 반복 후에 최소값에 도달합니다. 이것은 경사 하강법의 힘을 보여줍니다. 고차원 공간에서도 복잡한 함수의 최소값으로 안내할 수 있습니다.
단일 최소값이 있는 2차원 함수에 대한 경사 하강법.
딥 러닝에서 기울기를 얻는 것은 매개변수의 계층적이고 상호 연결된 특성과 네트워크 전체에 도입된 비선형성으로 인해 훨씬 더 복잡합니다. 이것은 역전파라는 프로세스를 통해 수행되며, 이 프로세스는 연쇄 법칙을 사용하여 여러 계층의 인공 뉴런에 걸쳐 편도함수를 계산합니다. 역전파는 딥 러닝 모델을 훈련하는 데 중요한 부분이지만 자체 기사가 필요한 복잡한 주제입니다. 역전파에 대한 포괄적인 설명은 딥 러닝을 위한 수학 10장을 참조하십시오.
여러 최소값이 있는 경사 하강법
대부분의 실제 문제에서 환경에는 단일 최적 최소값이 없습니다. 대신 각각 잠재적인 솔루션을 나타내는 여러 최소값이 있습니다.
이를 설명하기 위해 두 개의 최소값이 있는 2차원 함수를 생각해 보겠습니다. 이러한 최소값 중 하나는 다른 하나보다 더 최적이며, 이는 함수의 더 낮은 값을 나타냅니다.
여러 최소값이 있는 2차원 함수.
그러나 이 최적의 솔루션에 대한 경로가 항상 간단한 것은 아닙니다. 매개변수의 초기 위치에 따라 모델이 두 최소값 중 하나로 수렴될 수 있습니다. 이는 경사 하강법이 초기 지점에서 아래쪽으로 가장 가파른 경로를 따르기 때문이며, 이 경로가 반드시 전역 최소값으로 이어지지는 않을 수 있습니다.
이상적인 세계에서는 손실 함수의 형태를 미리 알 수 있으므로 전역 최소값으로 직접 안내할 수 있는 좋은 초기화 지점을 선택할 수 있습니다. 그러나 실제로는 이런 경우가 거의 없습니다. 손실 함수의 형태는 일반적으로 알 수 없으므로 최상의 시작점을 예측하는 것이 불가능합니다.
여러 최소값이 있는 함수에 대한 경사 하강법.
수백만 개의 매개변수가 있는 매우 고차원의 문제에서는 동일하게 좋은 로컬 최소값이 많이 있습니다. 이는 문제의 고차원적 특성의 결과이며, 품질 면에서 거의 동일한 수많은 솔루션을 찾을 가능성이 높아집니다.
이러한 경우 경사 하강법은 결국 동일하게 좋은 많은 로컬 최소값 중 하나로 수렴됩니다.
확률적 경사 하강법
실제 딥 러닝 애플리케이션에서는 일반적으로 레이블이 지정된 훈련 예제 데이터 세트(예: 해당 레이블(양성 또는 악성)이 있는 X선 이미지 모음)를 생성하는 것으로 시작합니다.
모델을 훈련하는 프로세스에는 모델을 통해 각 예제를 실행하고, 예측을 하고, 손실 함수를 측정하는 작업이 포함됩니다. 전체 훈련 세트를 처리한 후 전체 샘플에 대한 손실을 계산하고(예: 평균 제곱 오차 사용) 경사 하강법을 사용하여 모델의 매개변수를 조정합니다. 전체 데이터 세트를 사용하여 손실 함수의 기울기를 계산하는 경우 이를 배치 경사 하강법이라고 합니다.
Ronald T. Kneusel의 딥 러닝을 위한 수학
모델과 데이터 세트의 규모가 커짐에 따라 배치 경사 하강법을 수행하는 데 필요한 메모리 및 계산 비용이 감당할 수 없게 됩니다. 이것이 바로 머신 러닝 실무자가 미니배치 경사 하강법을 사용하는 이유입니다. 훈련 프로세스의 각 단계에서 전체 데이터 세트를 사용하는 대신 미니배치 경사 하강법은 예제의 하위 집합을 사용합니다.
임의의 샘플을 선택하면 실제 기울기를 추정할 수 있습니다. 미니배치 경사 하강법을 **확률적 경사 하강법(SGD)**이라고도 합니다. “확률적”이라는 용어는 데이터 세트의 일부를 사용하여 추가된 임의성을 나타냅니다.
실제로 SGD는 종종 배치 경사 하강법보다 성능이 뛰어납니다. 그 이유는 여러 미니 배치에 의해 도입된 임의성으로 인해 모델이 전체 데이터 세트를 과적합하는 대신 기본 분포를 더 잘 일반화할 수 있기 때문입니다. 이러한 확률성은 모델이 얕은 로컬 최소값에서 벗어나 더 나은 전체 솔루션을 찾는 데 도움이 될 수 있습니다.
미니배치의 예제 수를 선택하는 데 고정된 규칙은 없습니다. 최적의 미니배치 크기는 문제의 특성, 데이터 세트의 크기 및 모델의 복잡성을 포함한 다양한 요인에 따라 달라질 수 있습니다. 종종 시행착오의 문제이며, 머신 러닝 실무자가 모델에서 최상의 성능을 얻기 위해 많은 시간을 할애하여 조정하는 하이퍼파라미터 중 하나입니다.
추가 자료
이 기사에서는 경사 하강법에 대한 간략한 개요를 제공했습니다. 여기서 다룬 내용은 빙산의 일각에 불과하다는 점에 유의해야 합니다. 여기에서 다룬 내용 외에도 알아볼 가치가 있는 풍부한 지식이 있습니다.
우리가 생략한 한 가지 주제는 경사 하강법의 모멘텀입니다. 이 기술은 물리학에서 영감을 받았으며 알고리즘이 매개변수 공간을 보다 효율적으로 탐색하는 데 도움이 됩니다. 기본 경사 하강법 외에도 살펴볼 가치가 있는 몇 가지 다른 알고리즘 변형이 있습니다. 여기에는 RMSprop, Adagrad 및 Adam이 포함되며 각각 고유한 강점과 애플리케이션이 있습니다.
이러한 주제와 그 이상을 자세히 살펴보려면 Ronald T. Kneusel의 딥 러닝을 위한 수학을 읽어 보십시오. 이 포괄적인 가이드는 이러한 개념에 대한 견고한 기초를 제공하여 딥 러닝 분야의 더 복잡한 문제를 해결하는 데 필요한 지식을 제공합니다.