Skip to main content

Command Palette

Search for a command to run...

최적화(Optimization) 기초

Published
•4 min read•View as Markdown
최적화(Optimization) 기초

본 강좌에서는 최적화(Optimization) 문제에서 나오는 여러가지 용어들에 대한 명확한 정의와 컨셉만을 집고 넘어간다.


Generalization

인공지능에서 일반화(Generalization)란 학습된 모델이 unseen data에 대해 얼마나 잘 작동하는지를 의미한다.

  • 즉, 일반화 성능(Generalization performence)은 학습 데이터에서의 성능과 테스트 데이터 사이에서의 성능이 얼마나 차이나는지를 말한다.


Underfitting vs. Overfitting

학습 데이터에 대해서 잘 동작을 하지만 테스트 데이터에 대해서 잘 동작하지 않는 현상을 과적합(Overfitting)이라 한다. 반대로, 과소적합(underfitting)은 모델이 너무 단순해서 학습 데이터에서도 잘 동작하지 않는 것을 의미한다.


Cross-validation

교차 검증(Cross-validation)은 독립적인(테스트) 데이터세트에 대해 얼마나 일반화 성능이 보장되는지를 평가하기 위한 모델 검증 기술이다.

  • 예를들어, 학습 데이터가 10만개가 있다면 2만개씩 5개로 데이터를 분할(partitioning)하고, 1~4까지 partion 데이터를 학습 후 나머지 5 partion 데이터로 validation을 진행한다.

  • 반복 학습의 경우 1,2,3,5 partion 데이터를 학습 후 4 partion 데이터로 validation을 진행한다.


Bias and Variance

분산(Variance)는 내가 어떤 입력을 넣었을 때 출력이 얼마나 일관적으로 나오는지를 말한다. Bias는 출력이 평균적으로 얼마나 타겟에 멀어졌는가를 말한다.

  • 분산이 큰 모델들은 복잡한 모델들이 나오는 만큼 overfitting될 가능성이 크다.

만약 학습 데이터에 noise가 끼어 있다고 가정을 했을 때, $L_2$ 노름 기준으로 최적화를 하게되면 세가지 파트로 나눌 수 있다.

  • 즉, 내가 최적화하는 것은 한가지 값인데 사실은 세가지 파트로 이루어져 있어 세개를 각각 최적화 하는 것이 아닌 하나가 줄어들면 하나가 커질 수 밖에 없는 trade-off를 의미한다.


Bootstrapping

Bootstrapping은 만일 학습 데이터가 100개가 있다면 이를 다 사용하는 것이 아닌 일부만을 사용해서 모델을 만들겠다는 것이다. 이렇게 해서 여러개의 모델을 만들어지게 되면 각 모델들의 예측값이 얼마나 일치(consistance)하는지를 보고 모델의 불확실성(uncertainty)를 파악한다.


Bagging vs Boosting

Bagging(Bootstrapping aggregating)은 Bootstrapping을 통해 여러개의 모델을 만들고 나온 모델의 출력 값을 어떤 방식으로든(voting, averaging 등) 평균을 내는 것이다. 이를 앙상블이라고 부르기도 한다.

  • n개의 모델을 만들어 출력값의 평균을 내는 것이 한개의 모델을 쓸 때보다 더 좋은 성능이 나올때가 많아 kaggle 같은 대회에서 기본적으로 활용하는 테크닉이다.

Boosting은 만일 학습 데이터가 100개가 있다면 간단하게 모델 하나를 만들고 결과를 분석하여 두번째 모델에는 이를 sequential하게 반영(잘못 동작한 데이터에 잘 작동하는 모델을 만들기 등)하는 기법이다.


Batch-size Matters

해당 논문(On Large-batch Training for Deep Learning: Generalization Gap and Sharp Minima, 2017)에 따르면 large batch-size(512, 124 등)를 사용하면 sharp minimizers에 도달하고 small batch-size를 사용하면 flat minimizers에 도달한다고 한다.

  • 논문에서는 flat minimizer가 더 좋다고 하는데 그 이유는 sharp minimizer의 경우 약간만 떨어지게 되어도 sharp minimum에 도달하지 못할 수 있다는 것이다.


Gradient Descent Methods

가장 기본적인 Gradient descent는 $W_{t+1} \leftarrow W_t - \eta g_t$로 $\eta$는 learning rate, $g_t$는 gradient를 의미한다.

Gradient descent의 가장 큰 문제는 learning rate 혹은 step-size를 결정하는 것이 어렵다는 것이다. 이에 더 빨리 효율적으로 학습시키기 위한 optimization technique이 발전하게 된다.

그 중 Momentum은 한번 gradient가 흘렀던 방향으로 관성을 유지시키기 위한 방법이다.

  • 기존 $g_t$ 텀을 accumulation ($a_{t+1}$) 텀으로 교체했다.

  • $a_{t+1}$는 $\beta$라는 momentum이 하이퍼 파라미터가 추가되어 이전 gradient를 얼마나 기억할지 결정한다.

$$a_{t+1} \leftarrow \beta a_t + g_t \\ W_{t+1} \leftarrow W_t - \eta a_t$$

즉, Momentum은 현재 주어져 있는 파라미터에서 gradient를 계산해서 그 gradient를 accumulation 하는 방식이다. 이와 다르게 NAG(Nesterov Accelerated Gradient)는 $a_t$라는 현재 정보가 있으면 그 방향으로 한번 가보고 간 곳에서 gradient를 계산한 후 accumulation 한다.

  • 예를들어, local minimum의 왼쪽 slop에서 gradient로 인해 오른쪽 slop으로 이동했을 때 momentum은 local minimum 방향이 아니라 계속 오른쪽 방향으로 이동할 수 있는 반면 NAG는 local minimum 쪽으로 이동할 수 있다.

$$a_{t+1} \leftarrow \beta a_t + \nabla(W_t - \eta \beta a_t) \\ W_{t+1} \leftarrow W_t - \eta a_t$$

지금까지는 방향성 관련된 optimization techinque이었다면 모델 파라미터 측면에서도 optimization techinque이 발전하게 된다.

Adagrad는 지금까지 많이 변한 어떤 파라미터들에 대해서는 적게 변화시키고 안변한 파라미터들에 대해서는 많이 변환시키는 방법이다.

  • 지금까지 파라미터가 얼만큼 변했는지를 저장하는 값이 $G_t$로 제곱의 합으로 계산한다. 이를 분모로 넣었기 때문에 값이 커질수록 적게 업데이트 되도록 한 것이다.

$$W_{t+1} \leftarrow W_t - \frac{\eta}{\sqrt{G_t} + \epsilon} g_t$$

Adagrad의 문제는 분모가 무수히 커지면서 계산이 불가능해지는 경우이다. 이를 방지하기 위해 Adadelta라는 방법론이 나온다.

  • Adadelta는 현재 타임 t에서 window size 시간만큼의 파라미터의 변화만을 보는 방법이다.

  • window size 만큼의 파라미터들을 계속 저장하고 있어야해서 마찬가지로 메모리 문제가 발생하게 되는데 이걸 방지하기 위해 EMA를 사용한다.

  • Adadelta는 바꿀 수 있는 하이퍼 파라미터가 많지 않아 지금은 거의 활용되지 않는다.

RMSprop는 논문이 아닌 Geoff Hinton 교수님이 강의시간에서 제안한 방법론으로 $G_t$를 그냥 더하는게 아니라 EMA을 통해 더하는 것이다.

$$G_t = \lambda G_{t-1} + (1-\lambda)g_t^2 \\ W_{t+1} \leftarrow W_t - \frac{\eta}{\sqrt{G_t} + \epsilon} g_t$$

Adam(Adaptive Moment Estimation)은 $G_t$를 EMA로 가져가는 동시에 momentum을 같이 활용 방법이다.


Regularization

학습에 규제를 걸어 학습 데이터에서만 잘 동작하는 것이 아니라 데스트 데이터에서도 잘 동작해주도록 만드는 방법론이 Regularization이다.

Label Smoothing이라는 것은 학습 데이터 두개를 뽑아서 섞어주는 것을 의미한다.

  • 그 중 Mix-up 방법은 무작위로 선택된 두 훈련 데이터의 입력과 출력을 모두 혼합하여 학습 데이터를 구성하는 것이다.

  • CutMix는 입력을 잘라서 붙여넣고 출력을 무작위로 선택된 두 훈련 데이터의 소프트 라벨과 혼합하여 학습 데이터를 구성하는 것이다.

Batch Normazliation은 적용하고자 하는 레이어의 statistic을 정규화하는 것이다.

  • 해당 파라미터의 각각의 값들을 정규화하는 것이다.


참고자료

부스트코스

More from this blog

기존의 자연어 처리 기법

자연어 처리를 위한 딥러닝 기술 이전, 텍스트 마이닝 분야에서 기초적으로 사용되던 기법에 대해 정리한다. Bag-Of-Words (단어 가방 모형) 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법입니다. 단어를 벡터로 표현하기 위해서는 주어진 문장에 쓰인 단어들을 사전(Vocabulary) 형태로 저장하며, 이때 주의할 점은 단어들의 중복을 허용하지 않아야 한다는 점...

Jul 8, 20243 min read
기존의 자연어 처리 기법

자연어 처리 활용 분야와 트렌드

자연어 처리(NLP, Natural Language Processing)은 기본적으로 (1) 컴퓨터가 주어진 단어나 문장 그리고 보다 더 긴 문단이나 글을 이해하는 NLU(Natural Language Understading)과 (2) 이러한 자연어를 상황에 따라 적절히 생성할 수 있는 NLG(Natural Language Generation)이라 부르는 두 종류의 Task로 구성된다. 자연어 처리 분야별 학회 목록 NLP 분야는 CV 분야와...

Jul 7, 20243 min read
자연어 처리 활용 분야와 트렌드

베이즈 통계학 기초

조건부 확률이란? 베이즈 통계학을 이해하기 위해서는 조건부 확률의 개념을 이해해야 한다. 조건부 확률 $P(A|B)$는 사건 B가 일어난 상황에서 사건 A가 발생할 확률을 의미한다. 조건부 확률을 계산하는 방법은 두 개의 사건 A와 B가 있을 때 두 사건의 교집합이 일어날 확률을 특정 사건으로 나눠주게 되면 계산할 수 있다. 이 수식을 다음과 같이 정리하면 베이즈 정리를 유도할 수가 있고, 조건부 확률을 이용해서 정보를 갱신하는 방법을 알 ...

Jun 18, 20242 min read
베이즈 통계학 기초

통계학 기초

모수가 뭐에요? 통계적 모델링은 적절한 가정위에서 확률분포를 추정(inference)하는 것이 목표이며, 기계학습과 통계학이 공통적으로 추구하는 목표이다. 실제로 사용할 수 있는 분포의 종류도 굉장히 다양하여 어떤 확률 분포를 사용해서 모델링하는 것도 중요한 선택이다. 그러나 유한한 개수의 데이터만 관찰해서 모집단의 분포를 정확하게 알아낸다는 것은 불가능하므로, 근사적으로 확률분포를 추정할 수 밖에 없다. 예측모형의 목적은 분포를 정...

Jun 17, 20244 min read
통계학 기초

ssuhoon's Blog

12 posts