과적합을 방지하거나 줄이기 위한 정규화(Regularization) 기법에 대해서 알아보자.
정규화는 모델의 복잡성을 조절하여 올바른 특징을 학습하도록 도와주며, 모델의 일반화를 개선한다.
강아지 이미지를 학습할 때 풀이나 나무를 학습하는 대신, 강아지의 형태, 코, 눈 등을 학습하도록 해야 한다.
L1 정규화: 모델의 가중치 절대값 합에 페널티를 부여하여, 일부 가중치를 0으로 만들어 희소한 모델을 만든다.
L2 정규화: 모델의 가중치 제곱 합에 페널티를 부여하여, 큰 가중치를 줄이고 모델의 복잡성을 감소
데이터 증강은 데이터셋의 크기와 다양성을 늘려 모델이 더 다양한 패턴을 학습
이미지 회전, 확대, 이동, 반전 등의 기법을 사용하여 훈련 데이터를 인위적으로 증가
같은 이미지인데 다른 시각으로 볼때의 이미지를 만들어 늘린다.
훈련 과정에서 무작위로 일부 뉴런을 제외하여 모델이 특정 뉴런에 과도하게 의존하지 않도록 한다.
눈을 감고 귀로 학습하는건가?
모델 훈련을 일정 에포크(epoch) 후 중지하여 과적합을 방지
검증 데이터셋에서 성능이 더 이상 향상되지 않으면 훈련을 중지
k-p 구간 이후로는 에포크가 깊어질수록 실제 검증 에러 확률이 늘어난다.
그래서 그 특이점이 오는 부분에서 훈련을 중지.
각 배치의 입력을 정규화하여 훈련을 안정화하고 훈련 속도를 높인다.
딥러닝 문제점:
딥러닝 네트워크의 훈련은 느리고, 많은 매개변수 조정과 실험이 필요
모델은 역전파(Backpropagation)를 통해 업데이트
이는 오른쪽에서 왼쪽으로 이동하면서 각 층의 가중치를 조정
역전파는 각 층이 고정된 상태에서 다른 층을 업데이트한다고 가정하지만, 실제로는 동시에 모든 층을 업데이트
배치 정규화 정의:
배치 정규화는 모델의 여러 층의 업데이트를 조정하는 기법
각 층의 출력을 표준화하여 평균이 0, 표준편차가 1이 되도록 하는것.
사용방법
단순히 케라스나 파이토치와 같은 라이브러리에서 배치 정규화 레이어를 추가
드롭아웃과 함께 사용할 때는, 일반적으로 합성곱 층과 활성화 함수 사이에 배치 정규화를 사용
정규화는 과적합을 줄이고 모델의 일반화를 개선하는데 중요한 역할을 하지만, 올바르게 사용하지 않으면 성능이 저하될 수 있다.
요약 : 기본이 가장 중요
정규화 없이 먼저 기본 모델을 훈련하는 것이 좋다.
잘못된 파라미터 설정으로 인해 모델 성능이 저하될 수 있으므로, 정규화를 도입하기 전에 기본 성능을 확인하는 것이 중요
실험 초기에 드롭아웃을 사용하지 않는 것이 좋다.
드롭아웃은 마지막 소프트맥스(Softmax) 층 이전에는 사용하지 않는 것이 좋다.
대신 합성곱 층이나 맥스 풀링 층 이후에 사용하는 것이 좋다.
데이터 증강, 드롭아웃, 배치 정규화(Batch Normalization)는 추가적인 계산 처리를 필요로 하므로 훈련 속도가 느려질 수 있다.