본문 바로가기
AI-Tech 부스트캠프

[DL] 최적화 (Optimization)

by Alan_Kim 2021. 8. 10.
728x90
반응형

 Optimization

 어떤일을 하던 그 일을 잘하기 위해서 최적화는 반드시 필요한 존재이다.

기계도 마찬가지일 것이다. 경사하강법을 사용하여 지역 최저점을 찾아 손실함수를 최소화 하는 과정이 대표적으로 지난주 과정에서 배우고 지금까지 이어온 가장 중요한 이론중 하나일 것이다.

 

일반화를 조심해야 하는 이유

 손실 함수의 값(Training error Value)이 가장 낮게 나오는 함수와 그 해는 그 문제를 해결하는 최적화된 상황일까?

담은 'NO' 라는 것이다.  

'Training error'가 줄어들어도 'Test error'의 값이 커질 수 있다.

Generation gap이 가장 작을 때 우리는 조기종료(early stopping)을 해야한다.

왜 이런 결과가 나오는 것일까?

바로 우리가 가지고 있는 훈련 데이터(train data)가 불편성(Unbiased)를 가지고 있지 않을 수 있기 때문이다.

우리가 가지고 있는 훈련 데이터가 편향성(biased)를 크게 가지게 될 수록 우리는 한쪽에 편향된 것만 훈련하기 때문에 상대적으로 훈련이 안된 곳의 데이터에 대해서 계속 오류를 범할 가능성이 높아진다.

따라서 우리는 조기종료(early stopping)을 통해 과적합(overfitting)이 일어나는 것을 피해야한다.

 

underfitting과 overfitting

 가장 좋은 함수는 불편성(Unbiased)와 낮은 분산값(low-variance)를 가지는 것이다.

Perfect world가 아닌한 Noise가 존재하고 때문에 결국 적절한 error은 가져갈 수 밖에 없다. 우리는 불편성과 낮은 분산값을 신경을 써 Balanced된 함수를 만들도록 노력해야한다.

 Cross-validation (교차검증법)

 train set을 n등분 한 다음 한 부분을 때서 validation set으로 만든 다음 검증해 보는 방식이다. 

컴퓨터는 아직 많이 똑똑하지 못하기 때문에 train set을 1,2,3,4 . . . n 개의 set으로 나눈다음 1번 set이 validation set일 때는 2 ~ n 의 set은 train set으로 작동한 다음 2번 set을 validation set으로 놓은다음 나머지 1번 set, 3~n의 set이 train set으로 활동하는 등 한 번씩 다 validation set으로 작동시켜야 한다. 이 작동을 다 하고나서 시험인 test set을 본다.

이는 정확도 하나는 매우 향상이 되고 좀 더 신뢰할 수 있어 일반화되기 쉬울 것이다. 단점은 시간이 오래 든다.

 

Bias and Variance Trade off

손실 함수(cost function)를 최소화해야 하는 것은 알겠다. 그런데 데이터가 무수히 많은 최소화 된 손실 함수가 여러가지가 될 수 있다.

Bias and Variance Trade off는 중요한 이론이다.

최소화된 손실함수가 주어졌다고 가정하자.

cost(손실) 은 bias, variance, noise 3가지로 이루어져 있다.

이때 데이터의 bias(편향성)과 variance(편차)는 하나가 커지면 하나는 작아져야 한다는 이론이다.

수식으로 나타내면 $$ Cost_Value = bias^{2} + variance $$ 

 

bagging and boosting

배깅(bagging)

훈련 데이터에서 80%~90% 정도의 데이터를 샘플링(sampling)하여 여러가지 독립적인 모델에 넣어서 훈련시킨 다음 나머지 20%데이터로 확인을 하여 가장 안정성 있는 모델을 뽑아내는 과정이다.

실제로 이렇게 만들어낸 모델이 100% 사용하여 하나의 모델을 만드는 것보다 더 좋은 모델이 될 가능성이 높아서 kaggle등에서 많이 사용한다고 한다.

 

부스팅(boosting)

배깅(bagging)과 같이 훈련 데이터의 80%~90% 정도의 데이터를 가지고 모델을 만들고 훈련시킨 후 나머지 20% 데이터로 확인을 한다.

 다시 새롭게 80%~90% 데이터를 뽑은 다음 새로운 모델에 훈련시킨 후 나머지 20% 데이터로 확인을 하고 실험한 두 모델을 합쳐서 최적의 모델을 만들고 다시 반복적으로 모델을 학습한 후 모델을 수정하는 방식이다.

 

설명이 조금 힘든 관계로 그림으로 보면 이해가 쉬울 것이다.

최적의 모델을 만드는 과정도 여러 방식이 있다.

경사하강법 (Gradient descent)

Batch_size : 한 번에 어느정도 학습을 시킬지에 대한 크기를 나타낸다. 작으면 속도가 느리고 크면 빠른 대신 정확도 면에서 불안정하고 또한 GPU에서 한계를 느낀다.

Batch_size가 매우 크면 Converge to Sharp minimizers, 매우 작으면 Converge to flat minimizers 이다. 하지만 보통 작은 값이 더 좋다고 한다. 아래 사진을 보면 한번에 이해가 될 것이다.

On Large-batch Training for Deep Learning : Generalization Gap and Sharp Minima,2017

Gradienet Descent Methods

- Stochastic gradient descent (SGD)

- Momentum

 - Nesterov acceleratred gradient

 - Adagrad

 - Adadelta

 - RMSprop

 - Adam

728x90
반응형

'AI-Tech 부스트캠프' 카테고리의 다른 글

2021_08_14_(토)  (0) 2021.08.14
[DL] Generative Models  (0) 2021.08.13
[DL] Recurrent Neural Networks(RNN), Transformer  (0) 2021.08.12
[DL] Convolutional Neural Networks (CNN)  (0) 2021.08.12
[DL] 딥러닝의 역사  (0) 2021.08.09

댓글