# 과적합 Overfitting ## 과적합(Overfitting)을 막는 방법들 ### 데이터의 양을 늘리기 ### 모델의 복잡도 줄이기 인공 신경망에서는 모델에 있는 매개변수들의 수를 모델의 수용력(capacity)이라고 하기도 합니다. ### 가중치 규제(Regularization) 적용하기 복잡한 모델이 간단한 모델보다 과적합 될 가능성이 높습니다. 그리고 간단한 모델은 적은 수의 매개 변수를 가진 모델을 말합니다. 복잡한 모델을 좀 더 간단하게 하는 방법으로 가중치 규제([[Regularization]])가 있습니다. - [[L1 규제]]: 가중치 w들의 절대값 합계를 비용 함수에 추가합니다. [[L1 노름]]이라고도 합니다. - [[L2 규제]]: 모든 가중치 w들의 제곱합을 비용 함수에 추가합니다. [[L2 노름]]이라고도 합니다. ### 드롭아웃(Dropout) - 드롭아웃([[Dropout]]) 케라스에서는 다음과 같은 방법으로 드롭아웃을 모델에 추가할 수 있습니다. ``` model = Sequential() model.add(Dense(256, input_shape=(max_words,), activation='relu')) model.add(Dropout(0.5)) # 드롭아웃 추가. 비율은 50% model.add(Dense(128, activation='relu')) model.add(Dropout(0.5)) # 드롭아웃 추가. 비율은 50% model.add(Dense(num_classes, activation='softmax')) ```