관리 메뉴

개발자의 스터디 노트

부가적인 훈련 개념 본문

파이썬/파이토치 자연어처리

부가적인 훈련 개념

박개발씨 2022. 2. 12. 00:50

1. 모델 성능 올바르게 측정하기 : 평가지표

 - 핵심 지도 학습 훈련 반복 이외에 가장 중요한 요소는 모델이 훈련에 사용하지 않은 데이터를 사용해 성능을 측정하는 것입니다. 모델은 평가지표를 하나 이상 사용해 평가됩니다. 가장 널리 사용하는 평가 지표는 정확도(accuracy)이며 이장에서도 사용합니다. 정확도는 훈련하는 동안 만나지 못한 데이터에 대해 올바르게 예측한 비율입니다.

 

2. 모델 성능 올바르게 측정하기 : 데이터 분할

 - 훈련 데이터의 샘플뿐만 아니라 본 적 없는 분포의 샘플에서도 오차를 줄일 때 일반화가 잘된 모델이라고 말합니다. 모델이 훈련 데이터에서 손실을 낮출수록 진짜 데이터 분포에 없는 특징에 적응하여 '과대적합(overfit)'이 될 수 있습니다.

 - 좋은 일반화를 달성하려면 데이터셋을 랜덤 하게 샘플링 하여 3개(훈련(training) 데이터셋, 검증(validation) 데이터셋, 테스트(test) 데이터셋)로 나누거나 k-겹 교차검증(k-fold cross validation)을 사용하는 것이 표준입니다.

 - 데이터셋을 3개로 나누는 방법은 계산이 한 번만 필요하기에 더 간단합니다. 하지만 3개로 분할했을 때 클래스 비율이 같도록 유지해야 합니다. 즉 클래스 레이블을 기준으로 데이터셋을 분할한 다음 이를 랜덤하게 훈련, 검증, 테스트 데이터셋으로 나누는 방법이 바람직합니다. 일반적인 분할 비율은 훈련에 70%, 검증에 15%, 테스트에 15%입니다. 하지만 이는 고정된 규칙이 아닙니다.

 - k-겹 교차 검증을 사용한 모델 평가는 훈련, 검증, 테스트 분할을 사용한 평가와 매우 비슷합니다. 하지만 먼저 데이터셋을 같은 크기의 폴드(fold) k 개로 나눕니다. 폴드 하나를 평가에 사용하기 나머지 k-1개를 훈련에 사용합니다. 평가에 사용할 폴드를 바꿔가며 이 과정을 반복합니다. 폴드가 k 개 있으므로 모든 폴드에 평가 폴드가 될 기회가 있으며 k 개의 정확도 값을 만듭니다. 최종 적확도는 간단하게 평균과 표준 편차를 계산합니다. k-겹 평가는 계산 비용이 많이 들지만 작은 데이터셋에는 매우 유용합니다. 이런 데이터셋은 분할을 잘못하면 과도하게 낙관적이거나 비관적인 결과로 이어질 수 있습니다.

 

3. 훈련 중지 시점 파악하기

 - 올바른 모델 성능을 측정하는 이유는 이 값을 사용해 훈련을 멈출 때를 결정하기 위해서입니다. 가장 널리 사용하는 방법은 조기 종료(early stopping)입니다. 조기 종료는 에포크마다 검증 데이터셋에 대한 성능을 기록하고 이 성능이 더는 좋아지지 않을 때를 감지합니다. 그다음 성능이 계속 좋아지지 않으면 훈련을 종료합니다. 훈련을 종료하기 전에 기다리는 에포크 횟수를 인내(patience)라고 부릅니다. 일반적으로 모델이 어떤 데이터셋에서 개선되지 않는 지점을 모델이 수렴된 곳이라 합니다. 실정에서 모델이 완전히 수렵되도록 기다리는 일은 드뭅니다. 수렴은 시간이 오래 걸리고 과대 적합을 만들 수 있기 때문입니다.

 

4. 최적의 하이퍼파라미터 찾기

 - 하이퍼파라미터는 모델의 파라미터 개수와 값에 영향을 미치는 모든 모델 설정입니다. 모델 훈련 방식을 결정하는 선택 옵션이 많습니다. 여기에는 손실 함수, 옵티마이저, 옵티마이저의 학습률, 층 크기, 조기 종료하기 전에 인내할 에포크 수, 다양한 규제 방법 등이 포함됩니다.

 

5. 규제

 - 규제라는 개념은 수치 최적화 이런에서 유래했습니다. 

L1 규제
L2 규제

파이토치에서는 옵티마이저의 weight_decay로 경사도가 부드러운 수준을 조절할 수 있습니다. weight_decay 값이 클수록 옵티마이저는 부드러운 모델을 선택합니다.

 

https://wiserloner.tistory.com/1002

 

L1, L2 규제 알아보기

- 과대적합(overfitting)은, 분석 모델이 훈련 데이터에만 특화되어 있고, 테스트나 일반적인 데이터에는 전혀 회귀 분류를 못하는 상황을 말합니다. 즉, 일반화가 되어있지 않다는 것이죠. 이를 판

wiserloner.tistory.com

 

규제의 효과를 보면 둘 다 가중치의 성장을 제한하는 모습. 정확히는 감소하는 방향으로 진행하는 모습을 볼수 있습니다. 가중치의 성장을 제한한다는것은 기존 학습에 영향을 끼칠 수 있는 데이터를 지양하겠다는 의미로 볼수 있습니다. 즉, 일반적인 패턴이 아닌 몇몇 독특하면서 희소한 패턴을 가지는 데이터에 대한 영향을 덜 받겠다는 뜻입니다.

 

L1의 경우에는 가중치의 크기에 상관없이 상수값을 뺍니다. 이는 대체적으로 불필요한 가중치의 수치를 0으로 만들도록 하는 방향으로 적용됩니다. 즉, 중요한 가중치만을 취하기 때문에 희소 특징(sparse feature)에 대한 모델을 구성하는데 적합합니다.

L2의 경우에는 가중치의 값을 이용합니다. 어느 정도 튀는 값에 대해 대응할 수 있다는 소리입니다. 따라서, 이상치나 노이즈가 있는 데이터에 대한 학습을 진행할 때 사용하면 좋습니다.