Artificial.Intelligence

[AI-03] 오차를 줄여나가다: 경사하강법

De-v-signer 2024. 5. 3. 15:47

 

이전 글을 통해 기계가 어떤 식으로 학습을 하며, 어떤 목표로 학습을 하는 지까지 살펴보았다. 즉, 선형 회귀라는 이론적 배경을 바탕으로 데이터와 가설 간의 격차를 줄여나가며 가장 적은 격차를 갖는 가설을 향해 알고리즘을 수정해간다는 것이다. 이 과정에서 자신의 알고리즘을 검증하고 오차(비용)을 계산하기 위해 제곱오차함수를 사용하여 비용을 계산하는데, 이 함수로부터 최소의 오차를 찾아나가는 방식이 오늘 공부할 경사하강법(傾斜下降法; Gradient Descent)이다.

 

경사하강이란 이름 그대로 보여주듯이, 경사(傾斜; Gradient, 비스듬히 기울어짐)를 하강(下降; Descent, 내려옴)하는 식으로 극점(極占)을 찾는 것을 의미한다. 즉, 가장 낮은 곳을 찾기 위해 경사를 비스듬히 내려오는 식의 방법을 의미한다. 지난 글에서 언급했던 바와 같이 기계는 최하단이 어디인지도, 현재의 위치가 최하단으로부터 얼마나 떨어졌는지도 알 수 없기 때문에 초기값을 기준으로 더 낮은 점을 찾으며 정해진 스텝만큼 반복하여 주어진 상황 내에서 가장 비용이 낮은 가중치를 찾게 된다.

 

경사하강법 도식

 

위의 이미지는 이러한 경사 하강법의 알고리즘 작동 방식을 설명하고 있는데, 임의로 잡은 첫 가중점 (Initial Weight)에서 극점 (Global cost minimum)을 향해 내려오는 점을 볼 수 있다. 이렇게 출발점에서 경사의 반대방향으로 향하는 식으로 나아가는 식으로 극점을 찾아 내려간다. 이 때 내려오는 화살표의 크기가 기계학습에서 이야기하는 학습률(Learning Rate)이 되는데 학습률에 따라 내려오는 횟수, 즉 학습속도가 달라진다.

 

학습률에 따른 경사하강 변화

 

'학습률이 크면 빠르게 내려올테니 좋은 것 아닌가' 라고 생각할 수 있지만 그렇지 않은 것이, 학습률이 너무 크게 설정되면 상단 오른쪽 그래프와 같이 아예 극점을 지나 반대쪽 경사를 다시 올라가는 식으로 진행되어 오히려 학습이 늦어지거나 제대로 진행되지 않을 수(과적합; Overfitting) 있다. 물론 너무 작으면 학습에 너무 오랜 시간이 걸려 학습이 안 된채로 끝날 수(과소적합; Underfitting) 있다. 때문에 학습률을 적절한 선으로 설정하는 것이 최적의 학습속도와 학습 품질을 위해 중요하다.

 

위의 그래프는 평면적이기 때문에 단순해보이지만 실제로 학습이 일어나는 과정은 훨씬 복잡한데, 데이터의 차원이 고차원적이고 압축적이기 때문이다. 실질적으로는 아래의 이미지와 같이 다차원적인 구조에서 하강하게 된다.

고차원적 경사하강 도식

 

또한 실제 데이터의 제곱오차 함수는 단순하게 아래로 향하는 2차 함수 그래프 형태를 넘어 다양한 형태를 가지기 때문에 실제 학습에서는 훨씬 복잡한 문제들이 있다.

 

지역적 극점

 

위의 그래프는 그러한 문제를 보여주는데, H(3)정도에 있는 전역적 극점(Global minima)을 찾아야 하지만, 학습의 시작점과 학습률에 따라 H(0.1) 정도에 위치한 지역적 극점(Local Minima)을 극소점으로 착각하여 이 방향으로 학습을 최적화하게 될 수 있다.

 

이 경우, 실제 오차를 적게 갖는 전역적 극점 값과 차이를 보이게 되기 때문에 품질이 저하될 수 있는데, 이러한 문제를 해소하기 위해서 반복학습을 통해 다양한 시작점과 학습률로 학습을 진행하여 전역적 극점으로 알고리즘을 수정하도록 유도해야할 수 있다.

 

이제까지 주로 한 단위의 흐름에서 학습이 일어나는 과정을 공부해보았는데, 실제로는 이러한 종류의 흐름이 수많이 많이 일어나며 이들이 망(網; net)처럼 연계되어 일어난다. 인간의 뉴런(Neuron)과도 유사한 이것을 인공 신경망(Artificial Neuron Network)이라고 하는데, 이를 통해 복잡한 데이터가 다차원적으로 처리될 수 있다. 다음 글에서는 인공 신경망에 대해 공부해보고자 한다. 

반응형