모델 훈련 데이터 종류
모델 훈련시 손실을 최소화하는 가중치나 매개변수 선택
학습곡선(learning curves) : 에포크(evpochs) 별 손실(loss) 그래프에 검증 데이터에 대한 손실도 추가
모델 훈련에서 손실은 모델이 신호나 노이즈 학습을 할 때 모두 감소
검증 손실의 경우, 모델이 신호를 학습할 때만 감소 (모델이 훈련 세트에서 학습한 노이즈는 새로운 데이터에 일반화되지 않음)
모델이 신호를 학습하면 두 곡선은 내려가지만, 오델이 노이즈를 학습할 경우, 곡선 사이에 간격이 생기며, 이 간격은 모델이 얼마나 많은 노이즈를 학습했는가에 대한 것을 나타낸다 .
underfitting (과소적합): 신호 부족 또는 노이즈 과다, 훈련세트에 대한 손실이 낮아지지 않는 경우, 모델이 학습을 충분히 하기 못하여 훈련데이터에 대하여 과소적합이 된다.
overfitting (과대적합): 훈련 데이터에 대하여 손실은 낮아지지만 테스트 데이터에 대하여 성능이 나쁘다면, 모델이 훈련 데이터에 대하여 과적합이 된 것
효과적인 모델 학습은 위 두 사이의 균형을 맞추는 것
해당 모델이 학습할 수 있는 패턴과의 크기와 복잡성을 의미
신경망의 경우, 뉴런의 수와 뉴런 간의 연결성에 따라 결정됨.
모델이 과소적합 되는것으로 보일 경우, 모델 용량을 늘리는 것이 좋다
네트워크에서 용량을 늘리기 위해서는 Unit를 기존 레이어에 추가하여 넓게 만들거나 더 많은 레이어 추가하는 방법이 있다
깊은 네트워크(deeper network)에서는 비선형 모양을 선호
model = keras.Sequential([
layers.Dense(16, activation='relu'),
layers.Dense(1),
])
wider = keras.Sequential([
layers.Dense(32, activation='relu'),
layers.Dense(1),
])
deeper = keras.Sequential([
layers.Dense(16, activation='relu'),
layers.Dense(16, activation='relu'),
layers.Dense(1),
])
early stopping (조기종료) : 모델이 과하게 노이즈 학습시 검증 손실이 증가할 수 있는데, 이를 방지하기 위해 더 이상 감소하지 않을 때 훈련을 중지하는 것을 의미
검증 손실이 다시 증가할 경우, 최솟값이 발생한 가중치로 재설정하여, 모델이 계속 노이즈를 학습하고 과적합되는 것을 방지
에포크를 큰 값으로 설정하고, early stopping가 나머지를 처리하도록 하면 네트워크가 너무 일찍 중지되는 것과 과소적합되는 것을 방지할 수 있음
Keras
에서는 early stopping을 callback 훈련에 포함시킴 from tensorflow.keras.callbacks import EarlyStopping
early_stopping = EarlyStopping(
min_delta=0.001, # minimium amount of change to count as an improvement
patience=20, # how many epochs to wait before stopping
restore_best_weights=True,
)