본문 바로가기
Digital Hardware Design/Deep learning

Weight optimization

by 꿀벌이목표 2022. 11. 23.
반응형

weight(가중치) 매개변수의 gradient를 계산하는 방법은 1가지만 존재할까요?

대답은 "아닙니다!" 이제부터 몇가지를 알아 보겠습니다.


Ⅰ. weight optimization

- Backpropagation의 목적은  loss function의 값을 가능한 최소로 하는 weight 값을 찾는 것이라고 이전에 말씀드렸습니다.

    + 다른 말로는 weight optimization(가중차 최적화)라고 한다는 것이지요.

- 그러면 이를 위한 방법에는 어떤 방법이 있는지 알아 보겠습니다.

    + 이를 위한 알고리즘은 다양하게 있습니다.

        - Stochastic Gradient Descent(SGD, 확률적 경사 하강법)

        - Momentum(모멘텀)

        - AdaGrad(Adaptive gradient, 아다그라드)

        - Adam(아담)

가중치 최적화 알고리즘 별 경로 이동,  https://koreanfoodie.me/178

 

https://onevision.tistory.com/

 

https://onevision.tistory.com/

 

https://onevision.tistory.com/

※책에서 이 4가지만 다루어서 저는 4가지만 말씀드리는 것이지, 이외에도 더 있음을 참고부탁드립니다.


Ⅱ. SGD

- SGD는 이전에 포스팅하였던 Gradient descent와 동일하게 동작합니다.

    + 이전에 설명한 Gradient descent는 1 번의 Batch(*전체 data)를 기반으로 gradient를 계산하고 weight 갱신을 수행합니다.

    + 그러나 생각해볼수 있는것이, 영상이 많이 있다면? ->  Weight를 갱신하는데 많은 시간이 소요하겠지요??

- SGD는 임의로 선택한 데이터에 대해서 gradient를 계산하고 weight 갱신을 수행

SGD의 단점은 비등방성(anisotropy)함수에서는 탐색 경로가 비효율적이라는 단점이 있습니다.

    + 그럼에도 불구하고 아직까지도 많이들 사용하는 방법이니깐 반드시 알아두세요!

※ 비등방성 함수 : 기울기가 가르키는 지점이 하나가 아닌 함수

- 아래의 그림은 등방과 비등방의 차이를 나타내고 있습니다.

    - 등방의 경우, gradient가 원점을 제대로 가리킵니다.

    - 비등방의 경우, gradient가 원점을 제대로 가르키지 못하는 것을 알 수 있습니다.

        + y축으로는 움직임이 크지만x 축으로는 움직임이 덜하다고 이해할 수 있습니다!

등방과 비등방


Ⅲ. Momentum

- 모멘텀의 수식은 SGD와 다릅니다. (크게 다르지는 않구요;)

Momentum 수식

 

- 여기서 새로운 변수가 나탑니다.

    + V(velocity) : 속도

- 위에서의 수식은 기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙을 나타냅니다.

    + GD의 경우, weight의 gradient가 0일 경우, 움직임이 없습니다.

        > Local minima에서 gradient가 움직이는 않는 상황이 생길 수 있습니다.

local minima, https://onevision.tistory.com/

※ Local minima : Cost Function의 최소값을 찾게 되도록 하는데 극소점 즉, Global Minima에 다다르지 않고, 기울기가 0이 되는 다른 지점

-  참고로 SGD는 Local minima에서 벗어날 수 있습니다. 왜냐하면 임의 데이터를 계속적으로 input으로 사용하기 때문입니다.

- 다시 모멘텀으로 넘어와서, Init. 상태에서는 Velocity가 zero 이지만, 다음 batch에서는 gradient가 0 이여도 Velocity로 인해서 weight가 갱신 될 수 있습니다.

    + Gradient가 – 로 계속 향할 경우, velocity로 인해서 gradient가 가속될 수 있다는 것이 큰 특징이지요

    + 그래서 위의 그림에서 초록색 모멘턴 라인이 크게 벗어나는 이유가 velocity가 빌드업되면서 처음에는 많이 빗겨나가는 것을 볼 수 있습니다!

 


Ⅲ. AdaGrad

- 개별 매개변수에 적응적으로(adaptive) 학습률을 조정하면서 학습을 진행합니다.

AdaGrad 수식

- 여기서도 새로운 파라미터가 등장합니다.

    + h : 기존 기울기 값을 제곱하여 계속 더함

- 위 수식은 매개변수의 원소 중에서 많이 움직인(크게 갱신된) 원소는 학습률이 낮아지도록 되어 있습니다.

    +  중요한 것은 학습률 감소가 매개변수의 원소마다 다르게 적용된다는 것입니다.

    + 그런데 해당 수식을 보면 과거의 기울기를 제곱하여 계속 더해가는데, 학습을 진행할수록 갱신의 강도가 약해집니다.

    + 그렇다면, 무한히 계속 계속 학습을 하게 된다면?

        > 어느 순간 갱신량이 0이 되어 전혀 갱신되지 않게 됩니다! 문제점이지요!


이번 포스팅에서는 weight 매개변수의 gradient를 계산하는 방법을 알아보았습니다!

반응형

댓글