요약
- 기존에 없던 새로운 특징들을 만들기 위해 '은닉층' 사용
- 은닉층이 많아질수록 'sigmoid, tanh'는 기울기 소실 문제 발생
- 기울기 소실 해결을 위해 'relu, leaky relu, elu' 사용
- 모델의 과적합을 막기 위해 Early Stopping 적용
- Early Stopping을 위해 검증 데이터 필요
Hidden Layer(은닉층)
정의
- 입력층과 출력층 사이에 추가된 Layer
- 바깥에서 바라보았을 때는 내용을 확인하기 어려워 은닉층이라고 불림
역할
- Feature Representation: 연결된 것으로부터 기존에 없던 새로운 특징을 추출
특징
- 활성화 함수를 히든 레이어에 출력층과 마찬가지로 'sigmoid'나 'tanh'를 사용하면
층이 쌓일수록 '기울기 소실'문제가 발생함 -> 'ReLU' 등장
기울기 소실 문제
- 역전파 과정에서 입력층으로 갈 수록 기울기가 점점 작아지다 결국 0으로 수렴하는 문제
- 입력층에 가까운 층들에서 가중치들이 업데이트가 제대로 되지 않음(오차를 줄이지 못함)
코드 구현
- 모델을 생성하는 과정은 은닉층이 없을 때와 같음
- 레이어를 쌓는 과정에서 은닉층을 추가
- 활성화 함수: ReLU, Leaky ReLU, ELU 등
model.add(keras.layers.Dense(a, activation = 'relu')
ReLU
- Rectified Linear Unit
- 기울기 소실 문제를 해결하기 위해 등장
f(x)=max(0,x)
Leaky ReLU
- ReLU의 단점을 해결하기 위해 보완된 함수
- 0.01은 다른 매우 작은 값으로 대체 가능
f(x)=max(0.01x,x)
ELU
- Exponential Linear Unit
f(x)={x (x>0)α(ex−1) (x≤0)
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: 주어진 데이터를 의사결정에 도움이 되도록 적절히 가공하는 것