본문 바로가기
Computer Vision

[EECS 498-007] lec4. Optimization

by se0_ing 2024. 8. 5.
반응형

 

 

 

 

*강의 영상*: https://www.youtube.com/watch?v=YnQJTfbwBM8&list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r

 

 

 

 

 

 

 

 

 

오늘은 손실 함수(Loss function)를 최소화하는 가중치 행렬 W를 찾는 것이 최적화 문제의 핵심이다. 최적화는 일반적으로 손실 함수의 값을 최소화하는 방향으로 가중치를 조정하는 과정이며, 이는 수학적으로 매우 일반적인 문제이다.

 

 

 


Random Search, 랜덤 서치와 그 한계는 명확하다. 랜덤 서치는 최적화 문제를 해결하기 위해 랜덤으로 가중치 값을 생성하고, 해당 가중치에서의 손실 함수를 평가하여 최적의 가중치를 찾으려는 방법이다. 

 

하지만 이 방법은 비효율적이며, 일반적으로 좋은 결과를 얻기 어렵다. 이 방법의 한계를 인식하고, 더 나은 알고리즘을 탐색해야 한다.

 

 

 

 

 

 

Follow the slope is the main idea

경사 하강법 (Gradient Descent)은 손실 함수의 그래디언트를 따라 가중치를 조정하여 손실 함수를 최소화하는 알고리즘이다. 이 방법은 손실 함수의 기울기(그래디언트)를 이용하여 가중치 행렬을 조금씩 업데이트하며, 이를 반복하여 최적의 가중치를 찾는다.

 


하이퍼파라미터로는 학습률, 초기 가중치 설정 방법, 반복 횟수(iterative circuit) 등이 있으며, 이들의 선택이 최적화 과정에 큰 영향을 미친다.

 

 

 

 

 

 

고차원의 신경망이거나, N이 클때 Full Sum is expensive 하다! -> SGD

 

 

확률적 경사 하강법 (Stochastic Gradient Descent, SGD)는 전체 데이터셋이 아닌 데이터의 작은 부분집합(미니배치)을 사용하여 그래디언트를 계산하고 가중치를 업데이트하는 방법이다. 

 

 

이는 대규모 데이터셋에서 더 효율적인 최적화를 가능하게 하지만, 손실 함수의 변동성이 커질 수 있다는 단점이 있다. 이 방법의 문제로는 손실 함수가 특정 방향으로 급격히 변할 때, 최적화가 느리게 진행되거나 손실 함수의 미세한 변화로 인해 결과가 불안정해질 수 있다.

 

 

 

 

 

 

 

다음 그림은 타원형 형태의 Object 예시로, x축은 경사가 완만하고 y축은 경사가 가파르다. 이러한 경우에 loss는 한쪽으론 빠르게 변화하고 한쪽으론 느리게 변환하여 hige condition number issue, 진동 문제가 생긴다.

 

 

 

 

 

 


SGD의 개선 방법들


Momentum은 관성이라는 뜻으로 이전 단계의 gradient 정보를 이용하여 업데이트를 가속화하고, SGD에서 발생할 수 있는 진동 문제를 줄여준다. 이 방법은 SGD의 속도와 안정성을 개선하는 데 사용된다.

 

 

추가적인 형태로 Nesterov 모멘텀의 개선된 형태로, 미래의 위치, "Look ahead" 를 하여 미리 예측하여 보다 빠르고 정확한 최적화를 가능하게 한다.

 


   

 

 

 

적응형 학습률 알고리즘 중에 아다그라드 AdaGrad는 매개변수에 대한 학습률을 개별적으로 조정하여 자주 업데이트되는 매개변수의 학습률을 낮추고, 드물게 업데이트되는 매개변수의 학습률을 높인다. h는 반드시 증가함. w에서 h는 분모에 있기때문에 수정량은 반드시 감소된다. 총 수정량이 적은 가중치는 새로운 수정량이 커진다. 이를 통해 처음에는 넓은 영역에서 탐색하여 점차 범위를 좁혀가는 효율성을 보임.

 

 

 

 

 

그 외에 RMSProp, Adam이 있다. RMSProp은 Lead AdaGrad로 불리며, 기존의 문제점을 보완한다. decay_rate를 추가하여 기존의 방식의 숫자가 square단위로 기하급수적으로 커지는 것을 막아 학습률을 지속적으로 조정하는 방법이다. 

 

 

 

 

 

 

Adam모멘텀과 RMSProp의 장점을 결합한 방법으로, 일반적으로 많이 사용되며, 기본 설정으로도 좋은 성능을 보이는 경우가 많다. 

 

 

또한, bias correction은 편향 수정을 통해 initialize할때 처음과 두 번째 momentum을 예측할 때 0에서 시작되는 것을 막는다.

 

 

 

 

 

 


Second-Order, 2차 최적화 방법은 1차 최적화에서 gradient만을 사용하는 것과 달리, Hessian Matrix, 헤세 행렬(2차 미분 행렬)을 이용하여 더 정확한 최적화를 시도한다. 그러나 계산 비용이 매우 크기 때문에 실제 대규모 문제에서는 잘 사용되지 않는다.

-> L-BFGS와 같은 방법이 제한된 메모리 환경에서 사용될 수 있지만, 대규모 데이터셋에서는 일반적으로 적용이 어렵다.

 

 

 

 

 

 

 

In practice 실전에서의 최적화 알고리즘 선택에 대해 말해자면,

 

Adam은 실전에서 매우 널리 사용되며, 기본 설정만으로도 대부분의 문제에서 좋은 성능을 보인다. 반면 SGD+Momentum은 더 세밀한 튜닝이 필요하지만, 경우에 따라 Adam보다 우수한 성능을 발휘할 수 있다.

 

전체 데이터셋을 사용할 수 있는 경우, L-BFGS와 같은 2차 최적화 방법이 효과적일 수 있지만, 대부분의 상황에서는 Adam이 좋은 선택이 될 수 있다. 

 

 

 

 

 

 

 

 

 

 


...이 강의는 중요한 최적화 개념과 다양한 최적화 알고리즘을 심도 있게 다루며, 각 알고리즘의 장단점과 실전에서의 적용 방법에 대해 구체적으로 배웠다

 

반응형