[KT AIVLE] 9. 딥러닝(2)

onlyJoon·2023년 3월 1일
0

KT AIVLE

목록 보기
2/31
post-thumbnail

요약

  • 기존에 없던 새로운 특징들을 만들기 위해 '은닉층' 사용
  • 은닉층이 많아질수록 'sigmoid, tanh'는 기울기 소실 문제 발생
  • 기울기 소실 해결을 위해 'relu, leaky relu, elu' 사용
  • 모델의 과적합을 막기 위해 Early Stopping 적용
  • Early Stopping을 위해 검증 데이터 필요

Hidden Layer(은닉층)

정의

  • 입력층과 출력층 사이에 추가된 Layer
  • 바깥에서 바라보았을 때는 내용을 확인하기 어려워 은닉층이라고 불림

역할

  • Feature Representation: 연결된 것으로부터 기존에 없던 새로운 특징을 추출

특징

  • 활성화 함수를 히든 레이어에 출력층과 마찬가지로 'sigmoid'나 'tanh'를 사용하면
    층이 쌓일수록 '기울기 소실'문제가 발생함 -> 'ReLU' 등장

기울기 소실 문제

  • 역전파 과정에서 입력층으로 갈 수록 기울기가 점점 작아지다 결국 0으로 수렴하는 문제
  • 입력층에 가까운 층들에서 가중치들이 업데이트가 제대로 되지 않음(오차를 줄이지 못함)

코드 구현

  • 모델을 생성하는 과정은 은닉층이 없을 때와 같음
  • 레이어를 쌓는 과정에서 은닉층을 추가
  • 활성화 함수: ReLU, Leaky ReLU, ELU 등
# a = 은닉층 노드의 수
model.add(keras.layers.Dense(a, activation = 'relu')

ReLU

  • Rectified Linear Unit
  • 기울기 소실 문제를 해결하기 위해 등장
    f(x)=max(0,x)f(x) = max(0,x)

Leaky ReLU

  • ReLU의 단점을 해결하기 위해 보완된 함수
  • 0.01은 다른 매우 작은 값으로 대체 가능
    f(x)=max(0.01x,x)f(x) = max(0.01x,x)

ELU

  • Exponential Linear Unit
    f(x)={x                    (x>0)α(ex1)      (x0)f(x) = \begin {cases} x \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (x>0)\\ \alpha(e^x-1) \ \ \ \ \ \ (x \leq 0) \end {cases}

Early Stopping

정의

  • 조기종료는 모델의 과적합을 회피하도록 만드는 기법

역할

  • 과적합이 발생하기 전까지는 training loss와 validaion loss 둘다 감소
  • 과적합이 일어나면 training loss는 감소하는 반면에 validation loss는 증가
  • 위 사실을 이용하여 validation loss가 증가하는 시점에서 훈련을 멈추도록 제어

방법

  • 훈련 데이터와는 별도의 검증 데이터를 준비
  • 매 epoch 마다 검증 데이터에 대한 오류(val_loss)를 측정하여 모델의 훈련 종료 여부를 제어

코드 구현

from tensorflow.keras.callbacks import EarlyStopping

es = EarlyStopping(monitor = 'val_loss',
				   min_delta = 0,
                   patience = 5,
                   restore_best_weights = True,
                   verbose = 1)
                   
model.fit(x, y, callbacks = [es], 
		  validation_split = 0.1, epochs = 50, verbose = 1)

파라미터

  • monitor: 관측대상
  • min_delta: 임계값. 해당값보다 개선이 없으면 학습이 안된 것으로 간주. ex) 0: 성능이 나빠지지 않으면 학습이 된 것.
  • patience: 성능이 개선되지 않았을 경우, 참을 횟수
  • restore_best_weights: 가장 성능이 좋았던 epochs의 가중치를 복원할 것인가?
    (기본값=False 이므로, True를 꼭 써주기)

MNIST

  • 이미지 딥러닝 기초
  • 흑백의 숫자 이미지로 이루어진 데이터
  • 이미지는 2차원 데이터 -> 가공(reshape)이 필요
  • 0-255로 이루어진 값 -> 스케일링(Min-Max Scaling)이 필요

마무리

  • 기울기 소실은 역전파 과정에서 발생한다고 하는데, 역전파는 무엇인가?
  • 모델의 과적합을 막기 위해 Early Stopping이 사용되는데, 그 외 어떤 방법이 또 있는가?
  • 머신러닝(ML) vs 딥러닝(DL): 무엇이 언제 필요한지가 중요.
  • 다양한 형태의 데이터(이미지, 텍스트, 음성 등)를 다룰 때는 딥러닝이 유용
  • 정제된 데이터를 다룰 때는 머신러닝이 유용하며, 머신러닝은 도메인 지식이 매우 중요
  • Feature Engineering: 주어진 데이터를 의사결정에 도움이 되도록 적절히 가공하는 것
profile
A smooth sea never made a skilled sailor

0개의 댓글