[딥러닝 기초개념] 최적화 (Optimization)

박나연·2022년 4월 3일
0
post-thumbnail

최적화 (Optimization)

loss 함수의 최소값을 찾아가는 것


최적화 알고리즘 (Optimizer)

Gradient Descent Algorithm


경사하강법이란, 네트워크의 파라미터들을 θ(W,b)라 했을 때, Loss function J(θ)의 optima(최소화)를 찾기위해 파라미터의 기울기(gradient)를 이용하는 방법이다.

알파는 learning rate에 해당하며, 알파에 loss funtion을 미분한 값을 곱해 빼주며 갱신한다. learning rate는 갱신되는 속도를 결정한다.

그래서 위 그림처럼 초기값부터 시작하여 최종적인 minimum에 도달하는 것이 최종목표가 되며 아래는 learning rate에 따른 수렴정도를 나타낸 그림이다.

Gradient Descent Algorithm은 데이터 크기에 따라 세가지로 나뉜다.

  • Batch Gradient Descent (BGD) : 전체 데이터 셋에 대한 에러를 구한 뒤 기울기를 한번만 계산 후 파라미터 업데이트
    : loss가 안정적으로 수렴하지만 학습이 오래걸리며 local minima에 걸릴 수 있다.
  • Stochastic Gradient Descent (SGD) : 임의의 하나의 데이터에 대해 에러를 구한 뒤 기울기를 계산 후 파라미터 업데이트
    : local minima에 빠질 위험이 적지만 optimal을 찾지 못할 가능성이 있다.
  • Mini-batch Gradient Descent (MGD) : 전체 데이터셋에서 뽑은 mini-batch의 데이터에 대해서 각 데이터에 대한 기울기를 계산 후 그것의 평균기울기를 통해 파라미터 업데이트

    위 그림처럼 mini-batch 별 기울기를 구해 평균 기울기를 계산하고, 그때마다 파라미터들을 업데이트하는 방식이다.

Momentum Algorithm


Gradient Descent의 단점은 기울기가 0인 점을 잘 벗어나지 못한다는 점과, 학습이 느리다는 점이 있었다. 이를 보완하기 위한 방법이 관성, momentum을 적용하는 것이다. 관성은 변수가 가던 방향으로 계속 가도록 하는 속도항을 추가하는 것인데, 기울기가 0이더라도 속도가 있어 더 잘 탈출하게 된다.

Vt는 이전 이동거리와 관성계수 m에 따라 파라미터를 업데이트하도록 수식이 적용된다.

위 그림에서 momentum(관성)이 없다면 최소값을 향해 왔다갔다하며 접근할 때, learning rate에 맞춰 진동폭이 동일하게 접근하게 되고, 만약 learning rate가 훨씬 크다면 발산할 가능성도 있다.
그러나 관성을 이용하면, 세로축에 대해서는 느리게, 가로축방향으로는 빠르게 움직여 더 최소값에 잘 접근하도록 적용할 수 있게 된다. 이를 Gradient descent with momentum으로 구현가능하다.

Gradient descent with momentum

weight의 derivative(dW)에 대한 가중 평균치 velocity(v, 속도항)를 구해 문제를 해결하는데,

현재 미니배치에서 dW와 dB를 구하고, dW와 dB에 대해 지수가중평균을 구한다. 그 지수가중평균을 가지고 W, b를 업데이트한다. 나아가야할 방향의 변동 평균은 꽤 큰값이 되어 더 높은 속도로 최소값에 접근할 수 있게 된다. dW,db는 가속도 역할, V는 속도의 역할이다.

지수가중평균


오래된 데이터 일수록 현재의 경향에 미치는 영향이 줄어든다는 의미이다.


Adaptive Gradient(Adagrad)


지금까지 많이 변화한 매개변수는 적게 변화하도록하고, 적게 변화한 매개변수는 많이 변화하도록 learning rate의 값을 조절하는 개념이다.

기존 GD에서 h를 곱해 학습률에 개입하게 된다. h에는 매번 갱신될 때마다 해당 매개변수의 기울기값을 제곱하여 넣게되고, 처음에는 학습률을 높이고 많이 이동할수록 학습률을 낮출 수 있게된다. 따라서 learning rate를 반비례로 적용하게 된다.

그러나 학습이 진행될수록 변화폭이 너무 줄게 되면 움직이지 않게된다는 단점이 있다.


RMSprop Algorithm


Root Mean Square Propatation의 약자로, 기울기 강하의 속도를 증가시키는 알고리즘이다. Adagrad는 과거의 기울기를 제곱해서 더하는 방식이므로 점점 갱신정도가 약해지는데, 변화폭이 너무 줄게 되면 갱신량이 0이 되어 갱신되지 않는 문제점이 있었다. 이러한 문제를 해결하기 위해 과거의 기울기를 똑같이 더하는 것이 아니라, 먼 과거의 기울기는 조금 반영하고 최신의 기울기는 많이 반영하도록 지수이동평균을 적용했다.

학습이 진행됨에 따라 학습속도가 지속적으로 줄어들어 0에 수렴하는 것은 방지할 수 있다.


Adam Optimization Algorithm


Adaptive Moment Estimation의 약자로, momentum과 PMSprop을 섞어놓은 최적화 알고리즘이기 때문에 딥러닝에서 가장 많이 사용되는 옵티마이저이다.

먼저 초기화를 진행하고, momentum 과 RMSprop에서 사용한 v, S를 지정해준다.

바이어스 보정을 진행한다.

바이어스 보정(bias correction)

지수가중평균을 이용한 추정은 초기구간에 오차가 있기 때문에, 바이어스 보정을 통해 보완할 수 있다.

momentum과 RMSprop의 가중치 업데이트 방식을 모두 사용해 가중치 업데이트를 진행한다.

profile
Data Science / Computer Vision

0개의 댓글