- Global Minima: 기울기가 0인 극소값
- Local Minima: Global minima에 다다르지 않고, 기울기가 0 이 되는 지점
- Learning rate: Local Minimum에 효율적으로 도달할 수 있도록, 너무 크지도 작지도 않은 적절한 학습률을 셋팅 해야함.

1. Optimization
Optimizer는 loss를 줄이기 위해 weight과 learning rate와 같은 neural network 속성을 변경하는데 사용하는 알고리즘이다.
- Gradient Descent
- 가장 기본적인 최적화 알고리즘이다. backpropagation을 통해 weight을 변경하여 함수가 최소값에 도달할 수 있도록 한다. 쉽고 간단한 방법이지만 데이터셋이 큰 경우 모든 데이터를 계산한 뒤 step을 한번 나가는 방식으로 학습하게 되면 시간이 오래걸리는 단점과 local minima에 빠질 수 있다는 단점이 있다.
- Stochastic Gradient Descent(SGD)
- 모델의 parameter를 자주 update한다. 모델의 parameter가 자주 update되어 loss function의 변동이 크다. SGD 방법은 모델의 parameter를 자주 업데이트하면서 보다 시간을 단축할 수 있고, loss function을 저장할 필요가 없어 memory가 덜 필요하다. 그러나 모델 parameter의 variance가 높고, global minima를 달성한 후에도 빠져나올 수 있어 gradient descent처럼 동일한 convergence를 얻으려면 learning rate를 줄여 천천히 학습해야 한다.
- Mini batch Gradient Descent
- Mini batch를 통해 전체 데이터를 특정 개수만큼 쪼개어 사용한다. 모든 batch 후에 모델 parameter를 update한다. 따라서 데이터셋은 다양한 배치로 나뉘며 배치 후에 parameter가 업데이트 된다. model parameter를 자주 업데이트하고 variance가 작고, memory가 작지는 않지만 클 필요가 없다는 장점이 있다. 그러나 learning rate의 최적값을 선택하고 learning rate가 너무 작으면 converge하는데 시간이 오래 걸린다. 또한 모든 parameter에 대한 일정한 learning rate를 유지하고, local minima에 빠질 수 있다는 단점이 있다.
- Momentum
- Momentum은 SGD의 높은 variance를 줄이고 수렴을 더 부드럽게 하기 위해 만들어졌다. 최솟값의 방향으로는 수렴을 가속화하고 관련 없는 방향으로는 변동을 줄인다. Parameter가 진동하는 것을 줄이고 Gradient Descent보다 빠르게 수렴한다는 장점이 있다. 그러나 Hyper parameter가 하나 더 늘었다고 볼 수 있다.
- Nesterov Momentum
- Momentum이 너무 높으면 알고리즘이 local minima를 놓치고 계속 상승한다. 이를 개선하기 위해 Nesterove Momentum이 만들어졌다. θ = θ - V(t)을 통해 parameter를 업데이트 한다. global minima를 놓치지 않고, local minima를 만나면 느려지는 장점이 있지만 hyper parameter를 수동적으로 선택해야하는 단점이 있다.
- Adagrad
- 앞선 Optimizer와 다르게 learing rate를 변경한다. 각 parameter와 모든 시간 단계 t에 대해 학습률 η를 변경한다. Sparse data에 대해 학습할 수 있으며 각 훈련 매개변수에 대한 learning rate를 변경할 수 있다. 그러나 2차 도함수를 계산해야 하기 때문에 계산 비용이 많이 들고, learning rate는 항상 느린 training의 결과를 감소시킨다.
- RMSProp
- RMSProp은 AdaGrad에서 학습이 안되는 문제를 해결하기 위해 hyper parameter인 β를 추가하였다. 변화량이 더 클수록 학습률이 작아져 조기 종료되는 문제를 해결하기 위해 학습률 크기를 비율로 조정할 수 있도록 제안된 방법이다. 미분 값이 큰 곳에서는 업데이트할 때 큰 값으로 나눠주기 때문에 기존 학습률보다 작은 값으로 업데이트 되기 때문에 진동을 줄일 수 있다.
- Adam
- adagrad와 Momentum을 합친 것이다. global minima를 찾다가 최솟값을 뛰어넘을 수 있기 때문에 너무 빨리 굴러가는 것을 원치 않는다. vanishing learning rate와 high variance를 수정한다.


- Low learning rate: Loss 감소가 선형의 형태를 보이면서 천천히 학습
- High learing rate: Loss 감소가 지수적인(exponential)형태를 보이며, 구간에 따라 빠른 학습 or 정체를 보임
- very high learning rate: 매우 높은 학습률은 경우에 따라 Loss를 오히려 증가시킴
2. Regularization
How to improve single-model performance? = Regularization
가장 흔히 알려지고 사용되는 regularization은 L1, L2 regularization이다. 그러나 이 두 가지 regularization은 Neural network에서는 잘 사용하지 않는다.
Dropout

임의로 layer에 1번씩 Dropout을 넣어주는데, 특정 노드의 가중치(W)를 0으로 만들어 사용하지 않는 방법이다. dropout은 train시에 model 내에서의 앙상블이라고 표현한다. train시에는 너무 fit하지 않게 network에 랜덤성을 부여하고 test시에서는 이런 randomness를 average out 시켜서 일반화를 시켜준다.
Data Augmentation
Data Augmentation은 Overfitting의 문제를 해결하는 방법이다. Data Augmentation의 방법으로는 Horizontal Flips, Random crops and scales, Color Jitter 등이 있다. 각각 이미지를 좌우반전시키거나, 부분적으로 crop하여 크기를 키우거나, 색온도를 바꾸는 방법이다.
3. Transfer Learning
Transfer Learning은 전이학습이라고 하며, neural network가 실행 가능한 옵션이 되기 위해 필요한 dataset의 크기를 줄이는 방법이다. label이 있는 data가 거의 없는 경우에 label이 있는 data가 많은 작업에서 학습한 지식을 사용하는 것이다. Tranfer Learning을 사용하면 다른 작업을 학습한 패턴에서 시작하여 일반화 과정을 시작한다.

'Study > cs231n' 카테고리의 다른 글
[cs231n] 6. Training Neural Networks (0) | 2024.04.17 |
---|---|
[cs231n] 5. Convolutional Neural Networks (0) | 2024.04.17 |
[cs231n] 4. Introduction graphs (0) | 2024.04.17 |
[cs231n] Loss Functions and Optimization 요약 (0) | 2024.04.04 |
- Global Minima: 기울기가 0인 극소값
- Local Minima: Global minima에 다다르지 않고, 기울기가 0 이 되는 지점
- Learning rate: Local Minimum에 효율적으로 도달할 수 있도록, 너무 크지도 작지도 않은 적절한 학습률을 셋팅 해야함.

1. Optimization
Optimizer는 loss를 줄이기 위해 weight과 learning rate와 같은 neural network 속성을 변경하는데 사용하는 알고리즘이다.
- Gradient Descent
- 가장 기본적인 최적화 알고리즘이다. backpropagation을 통해 weight을 변경하여 함수가 최소값에 도달할 수 있도록 한다. 쉽고 간단한 방법이지만 데이터셋이 큰 경우 모든 데이터를 계산한 뒤 step을 한번 나가는 방식으로 학습하게 되면 시간이 오래걸리는 단점과 local minima에 빠질 수 있다는 단점이 있다.
- Stochastic Gradient Descent(SGD)
- 모델의 parameter를 자주 update한다. 모델의 parameter가 자주 update되어 loss function의 변동이 크다. SGD 방법은 모델의 parameter를 자주 업데이트하면서 보다 시간을 단축할 수 있고, loss function을 저장할 필요가 없어 memory가 덜 필요하다. 그러나 모델 parameter의 variance가 높고, global minima를 달성한 후에도 빠져나올 수 있어 gradient descent처럼 동일한 convergence를 얻으려면 learning rate를 줄여 천천히 학습해야 한다.
- Mini batch Gradient Descent
- Mini batch를 통해 전체 데이터를 특정 개수만큼 쪼개어 사용한다. 모든 batch 후에 모델 parameter를 update한다. 따라서 데이터셋은 다양한 배치로 나뉘며 배치 후에 parameter가 업데이트 된다. model parameter를 자주 업데이트하고 variance가 작고, memory가 작지는 않지만 클 필요가 없다는 장점이 있다. 그러나 learning rate의 최적값을 선택하고 learning rate가 너무 작으면 converge하는데 시간이 오래 걸린다. 또한 모든 parameter에 대한 일정한 learning rate를 유지하고, local minima에 빠질 수 있다는 단점이 있다.
- Momentum
- Momentum은 SGD의 높은 variance를 줄이고 수렴을 더 부드럽게 하기 위해 만들어졌다. 최솟값의 방향으로는 수렴을 가속화하고 관련 없는 방향으로는 변동을 줄인다. Parameter가 진동하는 것을 줄이고 Gradient Descent보다 빠르게 수렴한다는 장점이 있다. 그러나 Hyper parameter가 하나 더 늘었다고 볼 수 있다.
- Nesterov Momentum
- Momentum이 너무 높으면 알고리즘이 local minima를 놓치고 계속 상승한다. 이를 개선하기 위해 Nesterove Momentum이 만들어졌다. θ = θ - V(t)을 통해 parameter를 업데이트 한다. global minima를 놓치지 않고, local minima를 만나면 느려지는 장점이 있지만 hyper parameter를 수동적으로 선택해야하는 단점이 있다.
- Adagrad
- 앞선 Optimizer와 다르게 learing rate를 변경한다. 각 parameter와 모든 시간 단계 t에 대해 학습률 η를 변경한다. Sparse data에 대해 학습할 수 있으며 각 훈련 매개변수에 대한 learning rate를 변경할 수 있다. 그러나 2차 도함수를 계산해야 하기 때문에 계산 비용이 많이 들고, learning rate는 항상 느린 training의 결과를 감소시킨다.
- RMSProp
- RMSProp은 AdaGrad에서 학습이 안되는 문제를 해결하기 위해 hyper parameter인 β를 추가하였다. 변화량이 더 클수록 학습률이 작아져 조기 종료되는 문제를 해결하기 위해 학습률 크기를 비율로 조정할 수 있도록 제안된 방법이다. 미분 값이 큰 곳에서는 업데이트할 때 큰 값으로 나눠주기 때문에 기존 학습률보다 작은 값으로 업데이트 되기 때문에 진동을 줄일 수 있다.
- Adam
- adagrad와 Momentum을 합친 것이다. global minima를 찾다가 최솟값을 뛰어넘을 수 있기 때문에 너무 빨리 굴러가는 것을 원치 않는다. vanishing learning rate와 high variance를 수정한다.


- Low learning rate: Loss 감소가 선형의 형태를 보이면서 천천히 학습
- High learing rate: Loss 감소가 지수적인(exponential)형태를 보이며, 구간에 따라 빠른 학습 or 정체를 보임
- very high learning rate: 매우 높은 학습률은 경우에 따라 Loss를 오히려 증가시킴
2. Regularization
How to improve single-model performance? = Regularization
가장 흔히 알려지고 사용되는 regularization은 L1, L2 regularization이다. 그러나 이 두 가지 regularization은 Neural network에서는 잘 사용하지 않는다.
Dropout

임의로 layer에 1번씩 Dropout을 넣어주는데, 특정 노드의 가중치(W)를 0으로 만들어 사용하지 않는 방법이다. dropout은 train시에 model 내에서의 앙상블이라고 표현한다. train시에는 너무 fit하지 않게 network에 랜덤성을 부여하고 test시에서는 이런 randomness를 average out 시켜서 일반화를 시켜준다.
Data Augmentation
Data Augmentation은 Overfitting의 문제를 해결하는 방법이다. Data Augmentation의 방법으로는 Horizontal Flips, Random crops and scales, Color Jitter 등이 있다. 각각 이미지를 좌우반전시키거나, 부분적으로 crop하여 크기를 키우거나, 색온도를 바꾸는 방법이다.
3. Transfer Learning
Transfer Learning은 전이학습이라고 하며, neural network가 실행 가능한 옵션이 되기 위해 필요한 dataset의 크기를 줄이는 방법이다. label이 있는 data가 거의 없는 경우에 label이 있는 data가 많은 작업에서 학습한 지식을 사용하는 것이다. Tranfer Learning을 사용하면 다른 작업을 학습한 패턴에서 시작하여 일반화 과정을 시작한다.

'Study > cs231n' 카테고리의 다른 글
[cs231n] 6. Training Neural Networks (0) | 2024.04.17 |
---|---|
[cs231n] 5. Convolutional Neural Networks (0) | 2024.04.17 |
[cs231n] 4. Introduction graphs (0) | 2024.04.17 |
[cs231n] Loss Functions and Optimization 요약 (0) | 2024.04.04 |