경사하강법은 딥러닝에서 가장 기본적면서도 중요한 학습 방법입니다. 경사하강법을 이해하기 위해서는 먼저 미분에 대해서 먼저 이해하여야 합니다.
미분은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구로 최적화에서 제일 많이 사용하는 기법입니다. 미분에서는 극한의 개념이 사용되는데, 지점과 지점 간의 변화량을 바탕으로 기울기를 구할 수 있게 되며 변화량이라고도 부릅니다.
즉, 미분은 주어진 함수 에서의 접선의 기울기를 구하는 것을 의미합니다. 한 지점의 기울기를 알게 되면 현재 주어진 지점에서의 증가 혹은 감소 여부를 알 수 있습니다. 다차원 함수의 경우에서는 시각적으로 증가 혹은 감소를 판단할 수 없기 때문에 기울기를 구함으로써 방향을 알 수 있습니다.
하지만 변수가 벡터로 표현되어 있을 경우에는 단순 미분을 통해 계산할 수 없으며, 벡터가 입력인 다변수 함수인 경우, 특정 방향의 좌표로 이동하는 미분을 정의하는 편미분을 적용할 수 있습니다.
❗️gradient 벡터?
선형회귀의 목적식을 먼저 정의하고 이해해야 합니다. 목적 함수를 최소화하는 계수를 찾아야 함으로 다음과 같은 gradient 벡터를 구해야 합니다.
이론적으로 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수가 보장된다면 수렴 또한 보장되어 있습니다.
특히 선형회귀의 경우 목적함수인 는 회귀계수 에 대해 볼록함수이기 때문에 알고리즘을 충분히 학습하면 수렴이 보장됩니다.
하지만 비선형회귀 문제의 경우 목적 함수가 볼록하지 않을 수 있으므로 수렴이 무조건적으로 보장된다고 할 수 없습니다.
확률적 경사하강법, Stochastic Gradient Descent은 모든 데이터를 사용해서 업데이트하는 대신 데이터 일부를 활용하여 업데이트를 진행하는 방법입니다,
non-convex한 목적함수는 SGD(Stochastic Gradient Descent은)를 통해 최적화할 수 있다. 데이터 일부만을 활용해서 파마미터를 업데이트하기 때문에 연산 자원을 좀 더 효율적으로 활용할 수 있습니다.
이렇게 데이터를 일부만을 활용하는 것을 미니배치를 적용하는 것입니다.