경사 하강법
경사 하강법은 n차 함수의 출력을 0에 가깝게 만드는 입력을 탐색하는 알고리즘 입니다. 어떤 신경망이 있다고 가정해 보겠습니다. 이 신경망은 x 데이터를 입력하면 우리가 원하는 y를 출력해야 하지만 y와 다른 예측값인 t를 출력합니다. 이때 x와 y는 변화시키지 않고 가중치 w를 수정해 t가 y의 근사값이 되도록 만들어야 합니다. y와 다른 예측값을 출력했을 때 손실 함수는 0과는 거리가 있는 어떤 값을 출력합니다. 컴퓨터는 이 값을 통해 예측이 틀렸다는 것을 알 수 있습니다. 그리고 가중치를 수정해 손실을 0으로 근사하게 만드는 작업을 해야 합니다.
신경망 내부의 변수가 하나씩 늘어날 때 마다 함수공간의 차원이 하나씩 증가합니다. 또 각 퍼셉트론은 비선형 활성화 함수를 가지고 있기 때문에 신경망의 함수 공간은 고차원의 울퉁불퉁한 그래프를 만듭니다. 이 함수에서 정확하게 손실을 0으로 만드는 가중치를 찾는 것은 불가능하기에 신경망의 학습은 정확한 해가 아닌 근사해를 찾는 것을 목표로 합니다.
함수의 근사해에는 국소 최적해(Local minimum)와 전역 최적해(Global minimum)가 있습니다. 국소 최적해는 함수의 특정 구간에서 최적의 해를 의미하고 전역 최적해는 함수 전체에서 최적의 해를 의미합니다. 함수 공간이 가중치의 범위에 따라 무한이 넓은 공간을 형성하기 때문에 신경망과 같은 복잡한 문제의 근사해를 찾는 것은 국소 최적해를 찾는 것을 목표로 합니다.
함수의 경사 반대 방향으로 정의한 Step Size를 가지고 조금씩 움직여 가면서 최적의 파라미터를 찾습니다. 여기에서 기울기는 파라미터에 대해 편미분한 벡터를 의미하며 이 파라미터를 반복적으로 조금씩 움직이는 것이 관건입니다.
학습률이 너무 작을 경우 알고리즘이 0으로 수렴하기 위해 반복해야 하는 값이 많아져 학습 시간이 오래 걸립니다. 반대로 학습률이 너무 클 경우 학습 시간은 적게 걸리나 스텝이 너무 커져 값이 발산할 수 있습니다.
경사하강법을 사용하면 복잡한 신경망에서도 가중치를 조절해 최적의 결과를 내도록 신경망을 학습시킬 수 있습니다. 그러나 경사 하강법에서 사용되는 편미분은 컴퓨팅 자원을 많이 필요로하고 일반적인 경사 하강법은 가장 가까운 지역 최적해를 탐색하기 때문에 별로 좋지 않은 지역 최적해로 수렴하는 단점이 있습니다.
'AI' 카테고리의 다른 글
SGD 실습(SGDClassifier scikit-learn) (0) | 2021.07.21 |
---|---|
SGD and Batch, Mini-Batch (0) | 2021.07.21 |
손실함수(Loss Function)의 종류 (1) | 2021.07.20 |
[머신러닝] 로지스틱 회귀(logistic regression) (0) | 2021.07.17 |
[머신러닝] 특성 공학과 규제 (0) | 2021.07.17 |