TIL(Today I Learned)
5월 19일 TIL - 딥러닝(MLP)
Hyerin P.
2023. 5. 21. 13:44
▷ 오늘의 일정
09:10 ~ 12:00 | 머신러닝 3주차 |
12:00 ~ 13:00 | 점 심 식 사 |
13:00 ~ 18:00 | 머신러닝 4주차 |
18:00 ~ 19:00 | 저 녁 식 사 |
19:00 ~ 20:40 | 하루 공부 내용 정리 및 TIL |
20:40 ~ 21:00 | 하루 공부 내용 공유 |
▷ 오늘의 배움
- 딥러닝 네트워크(MLP)
- 구조
- Input layer(입력층): 네트워크의 입력 부분으로, 학습시키고 싶은 x 값이다.
- Output layer(출력층): 네트워크의 출력 부분으로 예측한 값, 즉 y 값이다.
- Hidden layers(은닉층): 입력층과 출력층을 제외한 중간층이다.
- 은닉층은 완전연결 계층 (Fully connected layer = Dense layer)으로 이루어져 있다.
- 기본적인 뉴럴 네트워크(Deep neural networks)에서는 보통 은닉층에 중간 부분을 넓게 만드는 경우가 많다. 마치 마름모 꼴과 같은 형태로 구성.
-
더보기💬 예)
입력층의 노드 개수 4개
첫 번째 은닉층 노드 개수 8개
두 번째 은닉층 노드 개수 16개
세 번째 은닉층 노드개수 8개
출력층 노드개수 3개
- 구조
- 딥러닝의 주요 개념(1)
- Batch size, Epoch (배치 사이즈, 에폭)
- batch와 iteration: 무수히 많은 데이터셋을 가지고 있다고 했을 때, 이 데이터셋을 한번에 메모리에 올리고 학습시키려면 어려움이 있다. 그래서 이 데이터셋을 쪼개서 학습을 시키는데 쪼개는 단위를 batch라고 부른다. 1,000만개의 데이터셋이 있다면 이를 1,000개 씩으로 쪼개어 10,000번을 반복하게 되는데 이 반복하는 과정을 Iteration(이터레이션)이라고 한다.
- epoch : 보통 머신러닝에서는 똑같은 데이터셋을 가지고 반복 학습을 하게된다. 반복 학습 횟수를 epochs(에폭)이라고 한다. 만약 100번 반복 학습을 한다면 100 epochs(에폭)을 반복한다고 말한다. 에폭은 배치에 상관 없이 전체 데이터셋을 한번 돌 때 한 epoch이 끝난다.
- 따라서 1천만개의 데이터셋을 1천개 단위의 배치로 쪼개면, 1만개의 배치가 되고, 이 1만개의 배치를 100에폭을 돈다고 하면 1만 * 100 = 100만번의 이터레이션을 도는 것이 된다.
- Batch size, Epoch (배치 사이즈, 에폭)
- 딥러닝의 주요 개념(2)
- Activation functions (활성화 함수): 임계치를 넘어야 다음 노드가 활성화 한다고 해서 활성화 함수라고 부른다.
- 활성화 함수는 비선형 함수이다. 대표적인 예로 시그모이드 함수가 있다.
- 활성화 함수의 종류: 딥러닝에서 가장 많이 보편적으로 쓰이는 활성화함수는 단연 ReLU(렐루)다. 왜냐하면 다른 활성화 함수에 비해 학습이 빠르고, 연산 비용이 적고, 구현이 간단하기 때문이다.
- Activation functions (활성화 함수): 임계치를 넘어야 다음 노드가 활성화 한다고 해서 활성화 함수라고 부른다.
더보기
❗️대부분 딥러닝 모델을 설계할 때는 ReLU를 기본적으로 많이 쓰고, 여러 활성화 함수를 교체하는 노가다를 거쳐 최종적으로 정확도를 높이는 작업을 동반합니다. 이러한 노가다의 과정을 모델 튜닝이라고 부릅니다.
- Overfitting, Underfitting (과적합, 과소적합)
- Overfitting(과적합): 학습시키다 보면 가끔씩 Training loss는 점점 낮아지는데 Validation loss가 높아지는 시점이 있는데 이런 현상을 과적합 현상이라 한다. 과적합 현상은 문제의 난이도에 비해 모델의 복잡도가 클 경우 많이 발생한다.
- Underfitting(과소적합): 과적합과 반대로 문제의 난이도에 비해 모델의 복잡도가 낮을 경우 문제를 제대로 풀지 못하게 되는데 이를 과소적합이라 한다.
- 따라서 모든 문제에 있어서 문제의 난이도에 적합한 복잡도를 가진 모델, 최적합(Best fit)의 모델을 찾아나가는 과정이 중요하다.
더보기
❗️❗️딥러닝 모델을 학습시키다보면 보통 과소적합보다는 과적합때문에 골치를 썩는 경우가 많습니다. 과적합을 해결하는 방법에는 여러가지 방법이 있지만 대표적인 방법으로는 데이터를 더 모으기, Data augmenation, Dropout 등이 있습니다.
- 딥러닝의 주요 스킬
- Data augmentation (데이터 증강기법): 데이터의 개수를 늘리는 방법. 데이터가 부족할 때 이미 있는 데이터 사용하여 증강시킬 수 있다.
- Dropout (드랍아웃): 각 노드들이 이어진 선을 빼서 없애버린다는 의미로 각 배치마다 랜덤한 노드를 끊어버린다. "사공이 많으면 배가 산으로 간다"라는 속담처럼 과적합이 발생했을 때 적당한 노드들을 탈락시켜서 더 좋은 효과를 낼 수 있다.
- Ensemble (앙상블): 랜덤 포레스트 기법과 비슷한 방법으로, 여러개의 딥러닝 모델을 만든 후 각각 학습시켜 나온 출력을 기반으로 투표를 하는 방법이다. 여러 출력들을 바탕으로 결과값을 뽑아내는 데는 다양한 방법이 있다. 다수결로 투표하기, 평균값 구하기, 마지막에 결정하는 레이어를 붙이는 경우 등 다양한 방법으로 응용이 가능하다.
- Learning rate decay (Learning rate schedules): Local minimum에 빠르게 도달하고 싶을 때 사용하는 기법이다. 러닝 레이트를 조절하여 효율적으로 Local minimum을 찾을 수 있다.
더보기
❗️ Keras에서는 tf.keras.callbacks.LearningRateScheduler() 와 tf.keras.callbacks.ReduceLROnPlateau() 를 사용하여 학습중 Learning rate를 조절한다. https://keras.io/api/callbacks/learning_rate_scheduler/ https://keras.io/api/callbacks/reduce_lr_on_plateau