딥러닝 분야에서 최적화(Optimization)란 손실 함수(Loss Function) 값을 최소화하는 파라미터를 구하는 과정입니다(아래 그림 1 참고). 딥러닝에서는 학습 데이터를 입력하여 네트워크 구조를 거쳐 예측값y^을 얻습니다. 이 예측값과 실제 정답y과의 차이를 비교하는 함수가 손실 함수입니다. 즉, 모델이 예측한 값과 실젯값의 차이를 최소화하는 네트워크 구조의 파라미터(a.k.a., Feature)를 찾는 과정이 최적화입니다.
3. 경사 하강법 개념
경사 하강법(Gradient Descent)이란 딥러닝 알고리즘 학습 시 사용되는 최적화 방법 중 하나입니다. 딥러닝 알고리즘 학습 시 목표는 예측값과 정답값 간의 차이인 손실 함수 의 크기를 최소화시키는 파라미터를 찾는 것입니다. 학습 데이터 입력을 변경할 수 없기 때문에, 손실 함수 값의 변화에 따라 가중치(weight) 혹은 편향(bias)을 업데이트해야 합니다. 그럼 어떻게 최적의 가중치나 편향을 찾을 수 있을까요? 최적의 가중치를 찾는 과정을 소개합니다. 최적의 편향을 찾는 과정 역시 절차는 동일합니다. 아래의 그림 2를 예시로 활용하겠습니다. 가로축은 가중치를, 세로축은 손실 함수를 의미합니다. 먼저 임의의 가중치를 선정합니다. 운이 좋다면 손실 함수의 최솟값에 해당되는 가중치를 단번에 선택할 수도 있겠지만 그렇지 않을 확률이 훨씬 높습니다.
예를 들어 wn−1을 임의의 가중치로 선정했다고 가정하겠습니다. 최적의 가중치를 찾기 위해서 목표 함수인 손실 함수를 비용 함수w에 대해 편미분하고, 이를 학습률(Learning rate)과 곱한 값을 앞서 선정한wn−1에서 빼줍니다. 수식으로 나타내면 다음과 같습니다.
위 수식을 통해 손실 함수의 값이 거의 변하지 않을 때까지(약10−6) 가중치를 업데이트하는 과정을 반복합니다. 이처럼 손실 함수 그래프에서 값이 가장 낮은 지점으로(=손실 함수의 최솟값) 경사를 타고 하강하는 기법을 경사 하강법이라고 부릅니다.
러닝레이트 가너무 작으면 최저점까지 가지 못할 수 있고 러닝레이트가 너무 크면 중구난방으로 무질서하게 움직이며 발산한다.
경사 하강법은 크게 2가지 한계점이 있습니다.
각각에 대해 알아보겠습니다.
경사 하강법은 비볼록 함수의 경우, 파라미터의 초기 시작 위치에 따라 최적의 값이 달라진다는 한계가 있습니다. 그 이유에 대해 알아봅니다. 함수의 형태는 크게 볼록 함수(Convex function)와 비 볼록 함수(Non-convex function)로 나눌 수 있습니다.
1. 함수 f(x,y)=x^2+y^2+xy-4x-8y 에 대하여 초기위치 (0,0)에서 출발하여 경사하강법을 적용하려 한다.
두걸음 걸어갔을 때의 위치를 구하시오
learning rate sms 1/2이다.
편미분을 통해 gradient f(x,y) = (2x+y-4, 2y+x-8)을 구합니다. 초기위치 $(0,0)$에서 gradient는 f(0,0) = (-4,-8)이므로 학습률 1/2로 경사하강법을 적용해 한걸음 내려가면 (0,0) - {1 \ 2} f(-4,-8) = (2,4)입니다. 이 지점에서 gradient f(2,4) = (4,2)이므로 학습률 1/2로 경사하강법을 적용해 또 한걸음 내려가면(2,4) - {1 \ 2}(4,2) = (0,3)입니다.
답:두걸음 걸어갔을 때의 위치는 (0,3)이다.
10.Affine층 계산 그래프 (0) | 2023.01.24 |
---|---|
9.오차역전파법 (0) | 2023.01.23 |
7.수치미분과 기울기 (0) | 2023.01.22 |
6.엔트로피 (0) | 2023.01.22 |
4.손실함수 (0) | 2023.01.22 |