딥러닝 주요 개념

HJ Koo·2022년 1월 12일
0

AI

목록 보기
2/10

Batch size, Epoch (배치 사이즈, 에폭)

모델을 학습시키는 데 쓰이는 단위.

batch와 iteration

약 10,000,000개의 데이터셋을 한꺼번에 메모리에 올리고 학습시키려면 엄청난 용량을 가진 메모리가 필요하고 그 메모리를 사는데 (메모리가 없다면 개발하는데) 천문학적인 비용이 든다.
이를 해결하기 위해 데이터셋을 작은 단위로 쪼개서 학습을 시키는데 쪼개는 단위를 배치(Batch)라고 한다. 이 반복하는 과정을 Iteration(이터레이션)이라고 부른다.

epoch

머신러닝에서는 똑같은 데이터셋을 가지고 반복 학습을 한다. 만약 100번 반복 학습을 한다면 100 epochs(에폭)을 반복한다고 한다.

따라서 1천만개의 데이터셋을 1천개 단위의 배치로 쪼개면, 1만개의 배치가 되고, 이 1만개의 배치를 100에폭을 돈다고 하면 1만 * 100 = 100만번의 이터레이션을 도는 것!

Activation functions (활성화 함수)

활성화 함수는 뉴런의 전기신호 특성에 영감받아 만들어졌다.

수많은 뉴런들은 서로 서로 빠짐없이 연결되어 있다. 그런데 뉴런들은 전기 신호의 크기가 특정 임계치(Threshold)를 넘어야만 다음 뉴런으로 신호를 전달하도록 설계되어 있다. 연구자들은 뉴런의 신호전달 체계를 흉내내는 함수를 수학적으로 만들었는데, 전기 신호의 임계치를 넘어야 다음 뉴런이 활성화 한다고해서 활성화 함수라고 부른다.

활성화 함수는 비선형 함수여야 한다. 비선형 함수의 대표적인 예가 바로 시그모이드 함수. 이 외에도 여러 종류가 있다.


딥러닝에서 가장 많이 쓰이는 활성화함수는 렐루이다. 다른 활성화 함수에 비해 학습이 빠르고 연산 비용이 적고 구현이 간단하다.

Overfitting, Underfitting (과적합, 과소적합)

딥러닝 모델을 설계/튜징하고 학습시키다 보면 가끔씩 Training loss는 점점 낮아지는데 Validation loss가 높아지는 시점이 있다.

이런 현상을 과적합 현상이라고 한다. 문제의 난이도에 비해 모델의 복잡도(Complexity)가 클 경우 가장 많이 발생하는 현상.

반대로 문제의 난이도에 비해 모델의 복잡도가 낮을 경우 문제를 제대로 풀지 못하는 현상을 과소적합이라고 한다.

따라서 적당한 복잡도를 가진 모델을 찾아야 하고 수십번의 튜닝 과정을 거쳐 최적합(Best fit)의 모델을 찾아야한다.

💡 주로 과접합 문제가 많이 발생하는데, 이를 해결하는 방법으로는 데이터 모으기, Data augmenation, Dropout 등이 있다.
  • 딥러닝 주요 스킬

Data augmentation (데이터 증강기법)

과적합을 해결할 가장 좋은 방법은 데이터의 개수를 늘리는 방법이다. 부족한 데이터를 보충하기위해 데이터 증강기법이란느 꼼수아닌 꼼수를 사용한다. 데이터 증강기법은 이미지 처리 분야의 딥러닝에서 주로 사용하는 기법이다.

원본 이미지 한 장을 여러가지 방법으로 복사를 한다. 사람의 눈으로 보았을 때 위의 어떤 사진을 보아도 사자인 것처럼 딥러닝 모델도 똑같이 보도록 학습시킨다. 이 방법을 통해 더욱 강건한 딥러닝 모델을 만들 수 있다.

Dropout (드랍아웃)

과적합을 해결할 수 있는 가장 간단한 방법. Dropout은 단어에서도 의미를 유추할 수 있듯이 각 노드들이 이어진 선을 빼서 없애버린다는 의미가 있다.

오른쪽 그림처럼 각 노드의 연결을 끊어버리는 작업을 하는데, 각 배치마다 랜덤한 노드를 끊어버린다. 다음 노드로 전달할 때 랜덤하게 출력을 0으로 만들어버리는 것과 같다.

과적합이 발생했을 때 적당한 노드들을 탈락시켜서 더 좋은 효과를 낼 수 있다.

Ensemble (앙상블)

앙상블 기법은 컴퓨팅 파워만 충분하다면 가장 시도해보기 쉬운 방법. 여러개의 딥러닝 모델을 만들어 각각 학습시킨 후 각각의 모델에서 나온 출력을 기반으로 투표를 하는 방법이다. 랜덤 포레스트의 기법과 비슷하다.

앙상블 또한 개념적으로 이해하는 것이 중요한데 여러개의 모델에서 나온 출력에서 다수결로 투표(Majority voting)를 하는 방법도 있고, 평균값을 구하는 방법도 있고, 마지막에 결정하는 레이어를 붙이는 경우 등 다양한 방법으로 응용이 가능하다.

앙상블을 사용할 경우 최소 2% 이상의 성능 향상 효과를 볼 수 있다.

Learning rate decay (Learning rate schedules)

Learning rate decay 기법은 실무에서도 자주 쓰는 기법으로 Local minimum에 빠르게 도달하고 싶을 때 사용한다.

위 사진에서보면 왼쪽 그림은 학습의 앞부분에서는 큰 폭으로 건너뛰고 뒷부분으로 갈 수록 점점 조금씩 움직여서 효율적으로 Local minimum을 찾는 모습. 오른쪽 그림은 Learning rate를 고정시켰을 때의 모습.

Learning rate decay 기법을 사용하면 Local minimum을 효과적으로 찾도록 도와준다. 아래 그림을 보면 Learning rate가 줄어들때마다 Error 값이 한 번씩 큰 폭으로 떨어지는 현상을 보이는데 이렇게 하면 Local minimum을 찾기 쉽다.

profile
날마다 꾸준히 성장하는 Software Engineer

0개의 댓글