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)
    • 구조 
      1. Input layer(입력층): 네트워크의 입력 부분으로, 학습시키고 싶은 x 값이다.
      2. Output layer(출력층): 네트워크의 출력 부분으로 예측한 값, 즉 y 값이다.
      3. Hidden layers(은닉층): 입력층과 출력층을 제외한 중간층이다.
        • 은닉층은 완전연결 계층 (Fully connected layer = Dense layer)으로 이루어져 있다. 
        • 기본적인 뉴럴 네트워크(Deep neural networks)에서는 보통 은닉층에 중간 부분을 넓게 만드는 경우가 많다. 마치 마름모 꼴과 같은 형태로 구성.
        • 더보기
          💬 예)
          입력층의 노드 개수 4개
          첫 번째 은닉층 노드 개수 8개
          두 번째 은닉층 노드 개수 16개
          세 번째 은닉층 노드개수 8개
          출력층 노드개수 3개
  • 딥러닝의 주요 개념(1)
    • Batch size, Epoch (배치 사이즈, 에폭)
      1. batch와 iteration: 무수히 많은 데이터셋을 가지고 있다고 했을 때, 이 데이터셋을 한번에 메모리에 올리고 학습시키려면 어려움이 있다. 그래서 이 데이터셋을 쪼개서 학습을 시키는데 쪼개는 단위를 batch라고 부른다. 1,000만개의 데이터셋이 있다면 이를 1,000개 씩으로 쪼개어 10,000번을 반복하게 되는데 이 반복하는 과정을 Iteration(이터레이션)이라고 한다. 
      2. epoch : 보통 머신러닝에서는 똑같은 데이터셋을 가지고 반복 학습을 하게된다. 반복 학습 횟수를 epochs(에폭)이라고 한다. 만약 100번 반복 학습을 한다면 100 epochs(에폭)을 반복한다고 말한다. 에폭은 배치에 상관 없이 전체 데이터셋을 한번 돌 때 한 epoch이 끝난다.
      3. 따라서 1천만개의 데이터셋을 1천개 단위의 배치로 쪼개면, 1만개의 배치가 되고, 이 1만개의 배치를 100에폭을 돈다고 하면 1만 * 100 = 100만번의 이터레이션을 도는 것이 된다.

출처: https://www.mauriciopoppe.com/notes/computer-science/artificial-intelligence/machine-learning/glossary/

  • 딥러닝의 주요 개념(2)
    • Activation functions (활성화 함수): 임계치를 넘어야 다음 노드가 활성화 한다고 해서 활성화 함수라고 부른다.
      1. 활성화 함수는 비선형 함수이다. 대표적인 예로 시그모이드 함수가 있다.
      2. 활성화 함수의 종류: 딥러닝에서 가장 많이 보편적으로 쓰이는 활성화함수는 단연 ReLU(렐루)다. 왜냐하면 다른 활성화 함수에 비해 학습이 빠르고, 연산 비용이 적고, 구현이 간단하기 때문이다.

 

Reference https://medium.com/@shrutijadon10104776/survey-on-activation-functions-for-deep-learning-9689331ba092

더보기

❗️대부분 딥러닝 모델을 설계할 때는 ReLU를 기본적으로 많이 쓰고, 여러 활성화 함수를 교체하는 노가다를 거쳐 최종적으로 정확도를 높이는 작업을 동반합니다. 이러한 노가다의 과정을 모델 튜닝이라고 부릅니다.

  • Overfitting, Underfitting (과적합, 과소적합)
    1. Overfitting(과적합): 학습시키다 보면 가끔씩 Training loss는 점점 낮아지는데 Validation loss가 높아지는 시점이 있는데 이런 현상을 과적합 현상이라 한다. 과적합 현상은 문제의 난이도에 비해 모델의 복잡도가 클 경우 많이 발생한다. 
    2. Underfitting(과소적합): 과적합과 반대로 문제의 난이도에 비해 모델의 복잡도가 낮을 경우 문제를 제대로 풀지 못하게 되는데 이를 과소적합이라 한다. 
    3. 따라서 모든 문제에 있어서 문제의 난이도에 적합한 복잡도를 가진 모델, 최적합(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