AI/Machine Leaning
[Deep Learning] 딥러닝의 주요 개념 (Batch, Epoch, Activation, Over/Under fitting)
Sungwoo Koo
2022. 5. 17. 03:38
선형회귀, 논리회귀에서는 모두 1차 함수를 이용해서 문제를 풀었다. 하지만 자연계에는 직선으로 설명할 수 없는 문제들이 훨씬 더 많다.
이러한 문제들을 해결하기 위해 딥러닝을 사용한다.
딥러닝의 주요 개념
Batch size, Epoch
- batch 와 iteration
- 만약 우리가 10,000,000개의 데이터셋을 가지고 있다고 가정해보자. 10,000,000개의 데이터셋을 한꺼번에 메모리에 올리고 학습시키려면 엄청난 용량을 가진 메모리가 필요하고 그 메모리를 사는데 (메모리가 없다면 개발하는데) 천문학적인 비용이 들 것이다.
- 따라서 우리는 이 데이터셋을 작은 단위로 쪼개서 학습을 시키는데 쪼개는 단위를 배치(Batch)라고 부른다. 예를 들어서 1,000만개의 데이터셋을 1,000개 씩으로 쪼개어 10,000번을 반복하는 것이다. 이 반복하는 과정을 Iteration(이터레이션)이라고 부른다.
- epoch
- 보통 머신러닝에서는 똑같은 데이터셋을 가지고 반복 학습을 하게되는데, 이 과정은 우리가 수능시험을 대비해서 모의고사 문제를 여러번 풀어보는 과정하고 비슷하다. 만약 100번 반복 학습을 한다면 100 epochs(에폭)을 반복한다고 말한다.
- batch를 몇 개로 나눠놓았냐에 상관 없이 전체 데이터셋을 한 번 돌 때 한 epoch이 끝난다.
따라서 1천만개의 데이터셋을 1천개 단위의 배치로 쪼개면, 1만개의 배치가 되고,
이 1만개의 배치를 100에폭을 돈다고 하면 1만 * 100 = 100만번의 이터레이션을 도는 것이 된다.
Batch size 단위로 들어가서 학습하고 Backpropagation 을 하며 weight와 bias를 조정해주며 반복하게된다.
Activation functions
- 수많은 뉴런들은 서로 서로 빠짐없이 연결되어 있다. 그런데 뉴런들은 전기 신호의 크기가 특정 임계치(Threshold)를 넘어야만 다음 뉴런으로 신호를 전달하도록 설계되어 있다. 연구자들은 뉴런의 신호전달 체계를 흉내내는 함수를 수학적으로 만들었는데, 전기 신호의 임계치를 넘어야 다음 뉴런이 활성화 한다고해서 활성화 함수라 부른다.
- 활성화 함수는 비선형 함수여야 한다. 위에서 딥러닝은 비선형 함수를 사용한다고 했는데, 비선형 함수의 대표적인 예가 바로 시그모이드 함수이다. 따라서 비선형 함수 자리에 시그모이드를 넣으면 아래와 같이 된다.
- 활성화 함수는 여러가지 종류가 있는데, 그래프로 보면 아래와 같다.
- 딥러닝에서 가장 많이 보편적으로 쓰이는 활성화함수는 단연 ReLU(렐루) 이다. 왜냐하면 다른 활성화 함수에 비해 학습이 빠르고, 연산 비용이 적고, 구현이 간단하기 때문이다.
대부분 딥러닝 모델을 설계할 때는 ReLU를 기본적으로 많이 쓰고, 여러 활성화 함수를 교체하는 노가다를 거쳐 최종적으로 정확도를 높이는 작업을 동반한다. 이러한 노가다의 과정을 모델 튜닝이라고 부른다.
Overfitting, Underfitting (과적합, 과소적합)
딥러닝 모델을 설계/튜닝하고 학습시키다 보면 가끔씩 Training loss는 점점 낮아지는데 Validation loss가 높아지는 시점이 있다. 그래프로 표시하면 아래와 같은 현상이다.
- 이런 현상을 과적합 현상이라고 한다. 우리가 풀어야하는 문제의 난이도에 비해 모델의 복잡도(Complexity)가 클 경우 가장 많이 발생하는 현상이다. 시험에 빗대어 얘기하면 모의고사의 정답 번호를 달달외워서 모의고사는 100점을 받는데, 실제로 수능시험을 보면 틀리는 문제가 더 많아지는 현상과 비슷하다.
- 반대로 우리가 풀어야하는 문제의 난이도에 비해 모델의 복잡도가 낮을 경우 문제를 제대로 풀지 못하는 현상을 과소적합이라고 한다.
- 따라서 우리는 적당한 복잡도를 가진 모델을 찾아야 하고 수십번의 튜닝 과정을 거쳐 최적합(Best fit)의 모델을 찾아야한다.
딥러닝 모델을 학습시키다보면 보통 과소적합(Underfitting)보다는 과적합(Overfitting)인 경우가 많다.
과적합을 해결하는 방법에는 대표적으로 데이터를 더 모으기, Data augmenation, Dropout 등이 있다.