[2024.11.04] 필수 온라인 강의 Part15 Machine Learning Basic CH07 모델 평가와 개선
모델 평가와 기초
- 강화학습(Reinforcement Learning)
- 학습하는 ML의 한 분야
- 모델이 게임과 같은 환경에서 상호작용하도록 설정해두고 특정 행동을 했을 때 리워드를 부여해 목표를 달성하도록 유도 - 모델 평가가 놓치는 부분
- 데이터셋은 사람의 판단을 모아놓은 것
- 구성 과정에서 의도하지 않았더라도 사람이 가진 편견이나 선입견 등이 반영 - 모델 평가의 구성 요소
- 정성평가(Qualitative Evaluation)
- 모델에 들어가는 입력값과 그에 따른 모델의 출력값을 사람이 직접 확인해보면서, 모델의 성능이 어떤지 판단하는 것
- 정량평가(Quantitative Evaluation)
- 모델의 성능이 얼마나 좋은지 수치로 나타내는 평가 지표(Evaluation Metric) 함수를 설정
- 이 지표를 활용해 모델 성능의 좋고 나쁨을 판단하는 것.
- 정량평가 지표(Evaluation Metric) : 모델이 정답을 얼마나 맞혔는지를 수치로 나타내는 지표.
- 손실함수 역시 목표값과 현재 값의 차이로 계산되므로 성능 지표 - 손실함수와 정량평가 지표
- 모델의 학습과정에 직접 기여하는가에서 차이가 있음
-> 연구를 진행한다면 비교를 위해 완전히 동일한 평가지표를 사용
-> 서비스를 만든다면 서비스 자체의 목표와 부합하는 평가지표를 선정 - 정량평가 지표
- MAE (Mean Absolute Error)
- MSE (Mean Squared Error)
- RMSE (Root Mean Squared Error)
- 교차 엔트로피 (Cross Entropy) - Train-Test 데이터셋 분할
- 일반적으로 데이터셋 전체를 학습에 전부 사용하지는 않음
- 일정 비율을 랜덤 샘플링해서 성능 평가용 데이터셋을 분리해두고 나머지만을 사용
- 검증용 데이터셋(Validation Dataset)
- 학습 데이터셋에서의 손실함수값은 거의 0에 가까운 값까지 떨어뜨릴 수 있지만, 그것만으로 처음 보는 데이터가 들어왔을 때 얼마나 정확한 결과를 내는지는 알 수 없음
- 모델의 일반화 성능을 측정
- 실제로는 8:1:1정도로 분할해 학습용 / 검증용 / 평가용 세개로 사용 - 모델의 복잡도(Complexity, Capacity)
- 모델이 더 복잡하고 어려운 데이터까지 학습할 수 있는 용량. 일반적으로 파라미터의 수가 많을수록 (딥러닝의 경우 레이어 및 뉴런 수가 많을수록), 복잡도가 커짐
-> 복잡도가 클수록 무조건 좋지 않음
- 과적합(Overfitting)
- 모델이 학습데이터의 패턴에만 과하게 학습
- 학습 데이터에서의 손실함수 값은 0에 수렴하지만 평가 데이터셋 등 새로운 데이터에 대해서는 전혀 성능을 내지 못하는 상황
- Regularization : 과적합 문제의 방지를 위해, 모델의 복잡도가 필요 이상으로 커지지 않도록 제한을 두는 방법론
모델의 일반화 성능과 데이터셋의 분할
- 모델의 일반화 성능 (Generalization Ability)
- 모델이 접한적 없는(Unseen) 별도의 평가용 데이터를 구성해 모델의 일반화 성능을 측정 - 데이터 누출(Data Leakage) 문제
- 학습 데이터셋 일부가 평가용 데이터셋에 포함되어, 모델 성능이 비정상적으로 높게 측정되는 문제
- 원본 데이터셋이 중복 샘플이나 매우 유사한 샘플들을 많이 포함하는 경우 - 평가용 데이터셋의 대표성 부족
- 평가 결과의 신뢰도가 부족한 경우
- 너무 작은 테스트셋
- 불균형한 테스트셋 - 평가용과 검증용 데이터셋의 역할
- 2분할 방법 : 2개로 분할해 학습용(train)과 검증용(validation)으로 사용
- 는 평가와 검증을 엄밀히 구분해 사용
- 3분할 방법 : 전체 데이터셋을 3개로 분할해 평가용 데이터셋을 추가로 활용
- 하이퍼 파라미터의 최적화와 학습 완료된 모델의 선별에 사용
- 모델 구조 자체가 검증용 데이터에 과적합될 수 있어, 평가용 데이터셋과는 구분해 사용하는게 일반적. - k-fold 교차검증(Cross Validation)
- 데이터셋을 k(보통 3~10)개의 같은 크기의 부분집합(fold)으로 나눔
- 각 fold를 번갈아가며 검증용 데이터로 사용해 모델을 학습/검증하는 과정을 반복
- 총 k번의 학습과 검증을 진행한 뒤 각각의 결과를 평균내어 모델의 최종 성능을 추정하는 방식
- 모든 데이터를 학습 및 검증에 사용하므로 효율적으로 학습 데이터를 활용할 수 있고, 다양한 데이터를 검증에 활용해 편향을 줄일 수 있음
- 데이터나 모델이 큰 경우 모델 학습/검증을 k번 반복하게 되므로 많은 리소스가 필요함 - 내삽(Interpolation)
- 학습 데이터셋의 범위 내에서 새로운 데이터를 예측하거나 분류하는 것. - 외삽(Extrapolation)
- 학습 데이터셋의 범위를 넘어서는 새로운 데이터를 예측하거나 분류하는 것.
- 학습 데이터에 없는 영역에서의 패턴을 추정해야 하기 때문에, 성능이 낮아지기 쉬움 - 일반화 성능(Generalization Ability)
- 외삽 성능, 내삽 성능을 포함해, 모델이 처음 접하는(Unseen) 데이터에서 얼마나 좋은 성능을 내는지 나타내는 개념 - 검증용 데이터셋
- 내삽성능의 측정을 위해 학습용 데이터셋과 같은 분포를 유지
- 학습 데이터셋과 분리해 저장하지 않고, 매번 일정량을 랜덤으로 분할해서 쓰기도 함 - 평가용 데이터셋
- 외삽 성능까지 측정할 수 있도록, 최대한 다양한 샘플들을 포함해서 구성 - 데이터셋의 규모에 따른 분할방법
- 적당하다면 (1000~10000개 정도) : 7:1:2로 3분할해 사용
- 너무 작다면 (100개 정도) : 2분할해서 50:50으로 사용 or 5-fold 교차검증 사용
- 너무 크다면 (1,000,000 장 이상) : 3분할, 970,000 : 10,000 : 20,000
- 평가, 검증용 데이터셋은 어느정도 샘플 수가 확보된 이후로는 기계적으로 양을 늘리기보다는 품질을 관리하는것이 훨씬 중요
- 데이터셋이 어느정도 커야 적당한지는 문제, 모델의 복잡도에 따라 상대적으로 판단해야하며, 여기에 적어둔 샘플 수는 참고용으로만 사용 - 시계열 데이터의 검증
- 주식 가격이나 날씨 등, 실시간으로 유입되는 시계열 데이터를 예측하는 문제, 현재 시점을 기준으로 함
- 가장 최근의 데이터를 검증용
- 그보다 이전의 데이터를 학습용
- 현 시점 이후 미래의 데이터를 평가용 - 데이터셋의 계층적 분할
- 데이터셋 내에 특정 클래스에 해당하는 샘플이 매우 적을 경우 단순 랜덤으로 분할했을 때 희귀한 클래스가 평가용 데이터에서 누락되어, 평가용 데이터셋의 대표성이 떨어질 가능성이 커짐
- 데이터셋을 클래스별로 나누어 각각을 랜덤분할 후 다시 합치는, 계층적 분할(Stratified Splitting)방법을 사용
기초 정량평가 방법론
- 다양한 평가지표가 필요한 이유
- 정확도의 한계와 Medical Test Paradox - 최소화 지표와 최대화 지표
- 작을수록 좋은 지표는 최소화를 해야하므로 Minimizing Metric
- 클수록 좋은 지표는 최대화를 해야하므로 Maximizing Metric
-> 평가지표 값의 범위 확인 : 평가지표가 가질 수 있는 값의 범위, 최소값이나 최대값이 정해져 있는지 확인해야함 - 혼동 행렬 (Confusion Matrix) : 이진 분류 문제에서 모델의 예측치와 실제값에 따른 샘플의 수를 표 형태로 나타낸 것
- 각 항목의 값은, 예측이 맞았는지 틀렸는지를 나타내는 (True|False)와 결과가 양성인지 음성인지를 나타내는 (Positive|Negative)를 붙여 표시
- False Negative: 결과가 음성(Negative)으로 나왔지만 틀렸고(False),
- FP(False Positive), TN(True Negative)등으로 줄여쓰는 경우도 흔함
정밀도(Precision)
- 모델이 양성으로 예측한 샘플중 정답(실제로 양성)의 비율. TP / (TP + FP)
재현율
- 실제로 양성인 샘플 중 모델이 (양성으로)정확하게 분류한 샘플의 비율. TP / (TP + FN)
F1 score
- Recall과 Precision을 동시에 비교하기 위해 조화평균(Harmonic Mean)을 취한 것
- H-mean이라고 부르는 경우도 있음
ROC(Receiver Operating Characteristic) Curve
- 음성 / 양성을 판단하는 기준값(Threshold)의 변화에 따라, 전체에서 TP, FP의 비율이 변화하는 추세를 나타낸 곡선.
AUC (Area Under the ROC Curve)
- ROC Curve의 아래쪽 영역의 넓이로 측정되며, 정밀도와 재현율을 모두 중요하게 고려하는 정량평가 지표
- MAE (Mean Absolute Error) : 오차에 절대값을 취한 것의 평균
- MSE (Mean Squared Error): 오차를 제곱한 것의 평균
- RMSE (Root Mean Squared Error) : MSE의 제곱근
- MSE를 사용하면 오차가 원래의 수치와 다른 단위로 표시된다는 점을 보완 - 편집거리(Edit Distance)
- 시계열 모델에서 주로 사용
- 몇번의 삭제/추가(edit)를 거쳐야 출력값을 목표값으로 만들 수 있는가를 판단
- 목표값: Chrome 출력값: home 인 경우, Edit distance는 2 (C추가, r추가) - 생성모델에서 사용하는 정량평가 지표들
- MOS (Mean Opinion Score)
- 모델 기반의 정량평가 (FiD, Inception Score 등)
- 인퍼런스 시간(Latency) : 모델이 샘플 한개, 또는 여러개를 한번에 처리하는데에 걸리는 시간
- 처리율(Throughput) : 모델이 단위시간당 처리할 수 있는 샘플의 수
- 메모리 사용량(Memory Usage) : (특히 GPU에서) 모델을 인퍼런스할 때 점유하는 메모리(VRAM)의 크기. - 적절한 정량평가 지표가 무엇일지 : 문제마다, 상황마다 다름
- 연구를 하고있다면? 기존 연구들의 측정방식을 참고
- 서비스를 만든다면? 서비스의 목표에 가장 직접적으로 연결된 평가지표를 선택
- 각 평가지표의 특성을 이해하는 것도 중요
- 일반적으로는 정확도를 사용해도 문제가 없지음
- 두 클래스중 한쪽에 해당하는 샘플이 다른쪽보다 너무나 많은, 데이터 불균형(Imbalanced) 문제가 있는 경우,
-> 정밀도, 재현율이나 F1스코어 등을 추가로 사용하는 것이 좋음 - 평가지표별 특성의 이해
- MAE(Mean Absolute Error)지표 : 오차가 0인지 아닌지
- MSE(Mean Squared Error)지표 : 이상치(Outlier)의 존재여부
-> 필요하다면 여러 정량평가 지표를 함께 활용
- 한가지 지표를 여러 평가 데이터셋에서 계산
- 여러 지표를 가중평균하여 최종적인 모델의 선택에 사용
- 정량평가 지표가 서로 충돌하는 상황이라면 어떻게 우선순위를 설정해야함
- 최적화 지표 (Optimizing Metric) : 모델의 최종적인 성능에 연관되어, 모델의 선택에 가장 중요한 영향을 미치는 평가지표
- 충족 지표 (Satisficing Metric) : 정해둔 한계값만 충족시킨다면, 그 이후로는 최종 결정에 영향을 주지 않는 지표
휴먼 베이스라인과 목표 성능지표의 설정
- 베이스라인 모델(Random/Dumb Baseline score)
= 베이스라인(Baseline) 스코어
- 높은 성능을 내기위한 목적이 아니라 실험과정에서 비교용으로 사용하는 모델의 점수.
- 입력값을 무시하고 k개의 클래스중 아무거나 고르는, 랜덤 베이스라인 모델의 정확도는 1/k *100%이 되어야 함
- 베이스라인 성능의 활용
- 평가지표 측정이 제대로 되고있는지 검증
- 학습 과정상 에러가 있는지 확인
- 다른 방식의 베이스라인
- 랜덤으로 찍는 것 보다는 살짝 나은 모델들의 베이스라인 스코어
- 쉽게 구현하거나 불러와 사용할 수 있고, 사용 조건이 까다롭지 않은 간단한 모델
- 나이브 베이즈 분류기 (naive bayes classifier)
- k-최근접이웃 분류 (k-Nearest Neighbor)
- 다중 로지스틱 회귀 (Multiclass Logistic Regression)
- 리더보드(Leaderboard)
- 공개 데이터셋의 경우, 연구자들이 각자 학습한 모델의 성능을 공유하고 비교해보기 위한 순위표
- SOTA(State Of The Art)
- 최첨단이라는 뜻으로 쓰이며, 리더보드에서는 1위를 달성한, 세계 최고 성능의 모델을 뜻하는 의미 - 베이즈 최적에러(Bayes Optimal Error)
- 현재의 정량평가 방식에서 이론상 도달할 수 있는 이상적인 분류 체계의 성능
- 대부분의 상황에 정확한 값을 알아낼 방법은 없지만, 여러 방법을 사용해 대략적인 값을 추정
- 충분히 큰 규모의 평가용 데이터셋에서는 보통, 이론상 최고값 (Perfect Score)보다 살짝 낮음
- 문제 자체의 난이도뿐 아니라 라벨 노이즈에 의해서도 결정
- 평가 방식이 바뀌면, 베이즈 최적에러도 바뀜
즉, 테스트셋에 샘플을 추가/삭제했거나 라벨 노이즈를 제거했다면 다시 추정
예시 ) 새의 사진을 보고 종을 분류하는 문제 - 휴먼 퍼포먼스(Human Performance)
- 사람이 얼마나 잘하는지를 측정해, 베이즈 최적 에러가 어느정도 수준인지 추정하는데 사용
- 이론상 가능한 최고성능에 대한 추정치이므로 가능한 최선의 결과를 사용
체계적인 정성평가 방법론
- 정성평가와 정량평가의 상호보완성
- 정량평가는 모델의 학습 및 선택을 효율적으로 진행
- 정량평가만으로 모델을 평가하는 경우에는, 모델이 가진 여러 심각한 문제가 드러나지 않은 채 방치
-> 정성평가로 보완하고 개선해야함
- 정량평가로는 드러나지 않는 것들
- 평가용 데이터셋의 대표성
- 데이터셋 자체에 없거나 매우 희귀한 데이터에서 모델의 결과는 정량평가를 통해 드러나기 어려움
- 데이터셋 자체에 노이즈가 포함된 경우에도 정량평가만으로는 확인하기 힘듬
- 모델의 이해할 수 없는 오답패턴
- 모델이 학습 과정에서 어떤 과정으로 정답을 도출하는지는 사람이 투명하게 알 수 없는 경우가 대부분
- 실제로 어려운 난이도의 샘플을 틀리는 경우
- 알 수 없는 이유로 쉬운 난이도의 샘플을 틀리는 경우 : 모델의 결과를 신뢰하기 어렵게 만들지만, 의외로 데이터 노이즈의 제거나 모델 구조 개선 등으로 쉽게 개선할 수 있는 경우가 많음
- 평가지표 자체의 빈틈
- 데이터의 모호성 등의 이유로, 평가지표 자체에서 특정 케이스에 대해 모델 출력값의 품질을 제대로 평가하기 어려운 경우
- 비지도학습 모델의 경우, 비교를 위한 레이블이 없어 정량적 평가가 어려운 경우가 많음
- OCR(광학문자인식, Optical Character Recognition) 문제의 띄어쓰기 이슈 (Granularity) - 모델 성능의 정성평가
- 평가(또는 검증)용 데이터셋의 입력, 목표값과 해당 인풋에 대한 모델의 출력값을 함께 관찰하는, 데이터셋의 정성평가와 매우 유사한 방식으로 진행
- 정성평가가 어려운 이유
- 사람이 직접 진행해야하는 과정
: 매우 지루하고 비슷한 일이 반복되는 작업인 경우가 많아 데이터셋의 양이 많아질수록 시간 소모와 평가자의 피로도가 매우 커짐
- 주관성을 배제하기 힘든 정성평가
: 완전히 객관적으로 진행하기가 쉽지 않음
지속가능한 정성평가를 위한 팁
- 정성평가 과정에 대한 대략적인 분석
- 10분마다 몇 개의 샘플을 확인했는지, 또는 샘플 20장을 확인하는데 얼마나 오래 걸렸는지 체크해보는 등 정성평가의 속도를 대략적으로 확인
- 평가 과정에서 비효율적인 부분이 있는지, 이를 간단히 개선해볼 방법이 있는지 찾아봄
- 샘플 관찰 계획 세우기
: 몇 명이 참여해 몇 시간동안 몇 개의 샘플을 확인할 것인지, 무리하지 않는 범위에서 계획
- 점진적인 정성평가 프로세스
: 소규모 분석이 좀더 효율적 : 전체 틀린 케이스 중 상당수가 한 가지 문제로 인해 발생하는 경우가 많음
- 발견된 이슈의 기록 및 분류
: 정성평가를 진행하며 발견된 문제를 최대한 구체적, 객관적으로 기록
- 발견된 이슈의 기록 및 분류
: 문제를 일으키는 인풋 데이터의 패턴을 트리거(trigger)를 모아서 별도의 데이터셋을 구성하기
-> 해당 이슈의 추적이 가능
모델 에러의 분석
- 적합도 균형의 조절
- 모델의 복잡도와 학습 데이터의 품질 및 다양성(이하 데이터의 복잡성) 사이의 불균형에 의해 발생
- 모델 적합도의 균형을 맞춰주는 방식으로 해결
- 과적합(Overfitting) : 학습데이터의 패턴에만 과하게 학습, 새로운 데이터에 대해서는 전혀 성능을 내지 못함
- 모델의 복잡도 > 학습 데이터의 복잡성
- 모델 복잡도를 줄이거나 학습 데이터를 늘린다
- 큰 분산(Variance) 때문에 발생 데이터에 대한 너무 복잡한 (약한) 가정을 사용한 모델 - 과소 적합(Underfitting) : 최적화가 충분히 진행되지 못한 상태를 과소적합
- 모델의 복잡도 < 학습 데이터의 복잡성
- 모델 복잡도를 늘리거나 학습 데이터를 줄인다
- 큰 편향(Bias) 때문에 발생 데이터에 대한 너무 단순한 - 일반화 성능(Generalization Ability)
- 외삽 성능, 내삽 성능을 포함해, 모델이 처음 접하는(Unseen) 데이터에서 얼마나 좋은 성능을 내는지 나타내는 개념
- 내삽(Interpolation) : 학습 데이터셋의 범위 내에서 새로운 데이터를 예측하거나 분류하는 것.
- 외삽(Extrapolation) :학습 데이터셋의 범위를 넘어서는 새로운 데이터를 예측하거나 분류하는 것.
편향(Bias)
- 예측값과 목표값 사이 발생하는 에러의 평균적인 크기
분산(Variance)
- 모델의 예측값이 서로 퍼져있는 정도
에러 분석(Error Analysis)
- 다양한 원인으로 발생하는 모델의 전체 에러 중에서 학습 과정의 적합도 조절을 통해 개선이 가능한,
모델의 큰 편향이나 큰 분산 때문에 발생하는 에러가 어느정도인지를
학습, 검증 데이터셋에서 모델 성능을 비교해 알아내는 방법
과적합의 해결 방법
- L1, L2 Regularization
- 과적합 문제의 해결방법으로, 모델 파라미터의 L1 또는 L2 norm을 손실함수 값를 더함
- 학습 과정에서 자연스럽게 파라미터 자체의 크기가 줄어들고, 그에 따라 모델의 복잡도가 떨어지도록 유도하는 방식 - 학습 데이터의 증강(Augmentation)
- 정답 라벨이 바뀌지 않는 한도 내에서 인풋 데이터를 여러 방법으로 변형시켜 새로운 데이터로 활용하는 방식.
- 데이터의 복잡성을 늘려 과적합 문제를 해결
- 어느정도의 변형까지 적용해도 괜찮을지는 해당 문제에 대한 도메인 지식(domain knowledge)을 활용해 직접 설정 - 학습곡선(Learning Curve)
- 학습용 데이터셋과 검증용 데이터셋에서 측정되는 손실함수의 값의 변화를 그래프로 나타낸 것 - Early Stopping
- 학습, 검증용 데이터셋의 손실함수 값 차이가 커지기 시작하는 시점에, 학습을 일찍 종료하여, 과적합 문제가 생기지 않도록 하는 방법 - 편향과 분산의 Trade-off 관계
- 모델의 편향과 분산 사이에는 한쪽이 낮아질 때 다른쪽이 높아지는 Trade-off 관계가 있어, 둘 사이의 적절한 균형점을 찾아야 한다는
- 머신러닝 모델의 Double Descent 학습곡선 :
-> 풀고있는 문제가 충분히 복잡하고 어렵다면, 분산과 편향은 trade-off 관계를 생각하기보다, 과적합을 무시하고 모델과 데이터의 복잡도를 계속해서 높이는 것이 더 나은 선택
'Study > 머신러닝' 카테고리의 다른 글
머신러닝 Advanced_ 파생 변수 만들기 (12) | 2024.11.05 |
---|---|
머신러닝 Advanced_ 전처리 기법 (7) | 2024.11.05 |
머신러닝 BASIC _ 다양한 데이터 처리 (13) | 2024.11.01 |
머신러닝 BASIC _ 비지도학습 방법론 (2) | 2024.10.31 |
머신러닝 BASIC _ 지도학습 방법론 (4) | 2024.10.30 |