머신 러닝 모델의 평가
기계를 학습하기 전 데이터셋을 훈련용, 검증용, 테스트용으로 분리하는 것이 일반적이다. 훈련 데이터는 머신 러닝 모델을 학습하기 위한 용도이고, 테스트 데이터는 학습된 머신 러닝 모델의 성능을 평가하기 위한 용도이다. 그렇다면 검증용 데이터의 용도는 무엇일까?
검증용 데이터는 모델의 성능을 평가하기 위한 용도가 아니라 모델의 성능을 조정하기 위한 용도이다. 정확히는 모델이 훈련 데이터에 오버피팅이 발생하는지 판단하거나 하이퍼파라미터 조정을 위한 용도이다. 하이퍼파라미터와 매개변수라는 용어를 알아두자.
- 하이퍼파라미터 : 모델의 성능에 영향을 줄 수 있는 값을 지정하는 변수
- 매개변수 : 가중치와 편향. 학습을 하는 동안에 값이 계속해서 변하는 수
이 두 변수의 가장 큰 차이는 하이퍼파라미터의 경우 사용자가 직접 정해줄 수 있는 변수라는 점이다. 선형 회귀에서 배우는 경사 하강법에서 학습률(learning rate)이나, 딥 러닝에서 뉴런의 수나 층의 수와 같은 것들이 대표적인 하이퍼파라미터이다.
반면 가중치와 편향과 같은 매개변수는 사용자가 직접 값을 정하는 것이 아니라 모델의 학습과정에서 얻어지는 값이다. 훈련용 데이터로 훈련을 모두 시킨 모델은 검증용 데이터를 사용해 정확도를 검증하며 하이퍼파라미터를 튜닝한다. 검증용 데이터에 대해서 높은 정확도를 얻도록 하이퍼파라미터의 값을 바꿔볼 수 있다. 이렇게 튜닝하는 과정에서 모델은 검증용 데이터의 정확도를 높이는 방향으로 점차적으로 수정된다.
튜닝 과정을 모두 끝내고 모델의 최종 평가를 하고자 한다면, 이제 검증용 데이터로 모델을 평가하는 것은 적합하지 않다. 모델은 검증용 데이터의 정확도를 높이기 위해 수정된 모델이므로, 모델에 대한 평가는 이제 한 번도 보지 못했던 테스트 데이터를 대상으로 진행한다.
분류(Classification)와 회귀(Regression)
머신 러닝의 대부분의 문제는 분류 또는 회귀 문제에 속한다. 머신 러닝 기법 중 선형 회귀는 대표적인 회귀 문제에 속하고 로지스틱 회귀는 대표적인 분류 모델에 속한다. 이외에도 분류 문제의 경우 2개의 레이블에 대해 분류하는 이진 분류, 3개 이상의 레이블에 대해 분류하는 다중 레이블 분류가 존재한다.
이진 분류
이진 분류는 주어진 입력에 대해서 두 개의 선택지 중에서 하나의 답을 선택해야 하는 경우를 말한다. 가령 메일을 보고 나서 정상 메일인지 스팸 메일인지 분류하는 문제, 영화 리뷰를 통해 긍정 리뷰인지 부정 리뷰인지 분류하는 문제 등이 이에 속한다.
다중 클래스 분류
다중 클래스 분류는 주어진 입력에 대해서 세 개 이상의 선택지 중에서 답을 선택해야 하는 경우를 말한다. 가령 새 책이 입고될 경우, 책이 소설, 에세이, 학습 등의 카테고리 중 분류를 해야 하는 문제 등이 이에 속한다.
회귀 문제
회귀는 어떤 연속적인 값의 범위 내에서 예측값이 나오는 경우를 말한다. 가령 머신 러닝 모델이 부동산의의 적정 가격을 8000만 4500원으로 예측하는 경우도 있을 것이고 2억 5000만 300원으로 예측하는 경우도 있을 것이다. 이처럼 특정 범위 내에 어떠한 값도 나올 수 있는데, 기존의 분류 문제와 같이 분리된 답의 결과가 아니라 연속된 값을 결과로 가지는 문제를 회귀 문제라고 한다. 가령 시계열 데이터를 이용한 주가 예측, 생산량 예측 등이 이에 속한다.
지도 학습과 비지도 학습
머신 러닝은 크게 지도 학습, 비지도 학습, 강화 학습으로 나뉜다. 또한 큰 갈래로서는 자주 언급되지는 않지만 딥 러닝 자연어 처리에서 중요한 학습 방법 중 하나인 자기지도 학습(Self-Suoervised Learning, SSL)도 존재한다.
지도 학습(Supervised Learning)
지도 학습이란 레이블이라는 정답과 함께 학습하는 것을 말한다. 자연어 처리는 대부분 지도 학습에 속한다. 앞으로 풀게 될 자연어 처리의 많은 문제들은 레이블이 존재하는 경우가 많기 때문이다.
비지도 학습(Unsupervised Learning)
비지도 학습은 데이터에 별도의 레이블이 없이 학습하는 것을 말한다. 가령 텍스트 처리 분야의 토픽 모델링 알고리즘인 LSA나 LDA는 비지도 학습에 속한다.
자기지도 학습(Self-Supervised Learning)
레이블이 없는 데이터가 주어지면, 모델이 학습을 위해 스스로 데이터로부터 레이블을 만들어 학습하는 경우를 자기지도 학습이라고 한다. 대표적인 예시로 Word2Vec과 같은 워드 임베딩 알고리즘이나, BERT와 같은 언어 모델의 학습 방법을 들 수 있다.
샘플과 특성
대부분의 머신 러닝 문제가 1개 이상의 독립 변수 x를 가지고 종속 변수 y를 예측하는 문제다. 머신 러닝 모델 중 특히 인공 신경망은 독립 변수, 종속 변수, 가중치, 편향 등을 행렬 연산을 통해 연산하는 경우가 많다. 앞으로 인공 신경망을 배우게 되면 훈련 데이터를 행렬로 표현하는 경우를 많이 보게 된다. 독립 변수 x의 행렬은 X라고 했을 때, 독립 변수의 개수가 n개이고 데이터의 개수가 m인 행렬 X는 다음과 같다.
이때 머신 러닝에서는 하나의 데이터라고 부르며 행렬 관점에서는 하나의 행을 샘플이라고 부른다. 그리고 종속 변수 y를 예측하기 위한 각각의 독립 변수 x를 특성(Feature)라고 부른다. 행렬 관점에서는 각 열에 해당된다.
혼동 행렬(Confusion Matrix)
머신 러닝에서는 맞춘 문제수를 전체 문제수로 나눈 값을 정확도라고 한다. 하지만 정확도는 맞춘 결과와 틀린 결과에 대한 세부적인 내용을 알려주지는 않는다. 이를 위해서 사용하는 것이 혼동 행렬이다. 예를 들어 참과 거짓 둘 중 하나는 예측하는 문제였다고 가정해보자. 아래의 혼동 행렬에서 각 열은 예측값을 나타내며, 각 행은 실제값을 나타낸다.
머신 러닝에서는 다음과 같은 4가지 케이스에 대해서 각각 TP, FP, FN, TN이라고 정의한다.
- True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)
- False Positive(FP) : 실제 False인 정답을 True라고 예측 (오답)
- False Negative(FN) : 실제 True인 정답을 False라고 예측 (오답)
- True Negative(TN) : 실제 False인 정답을 False라고 예측 (정답)
이 개념을 사용하면 정밀도(Precision)과 재현율(Recall)이 된다.
정밀도(Precision)
정밀도란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율이다.
재현율(Recall)
재현율이란 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율이다.
Precision이나 Recall은 모두 실제 True인 정답을 모델이 True라고 예측한 경우. 즉, TP에 관심이 있다.
정확도(Accuracy)
정확도는 우리가 일반적으로 실생활에서도 가장 많이 사용하는 지표다. 전체 예측한 데이터 중에서 정답을 맞춘 것에 대한 비율이다. TP, FP, FN, TN을 가지고 수식을 설명하면 다음과 같다.
그런데 Accuracy로 성능을 예측하는 것이 적절하지 않은 때가 있다. 비가 오는 날을 예측하는 모델을 만들었다고 할 때, 200일 동안 총 6일만 비가 왔다고 해 보자. 하지만 이 모델은 200일 내내 날씨가 맑았다고 예측했다. 그렇다면 이 모델은 200번 중 총 6회 틀렸으므로 정확도는 97%이다. 하지만 정작 비가 온 날은 하나도 못 맞춘 셈이다.
이렇게 실질적으로 더 중요한 경우에 대한 데이터가 전체 데이터에서 너무 적은 비율을 차지한다면 정확도는 좋은 측정 지표가 될 수 없다. 이런 경우에는 F1-Score를 사용한다.
과적합(Overfitting)과 과소 적합(Underfitting)
과적합
머신러닝에서 과적합이란 훈련 데이터를 과하게 학습한 경우를 말한다. 머신 러닝 모델이 학습에 사용하는 훈련 데이터는 실제로 앞으로 기계가 풀어야 할 현실의 수많은 데이터에 비하면 극히 일부에 불과한 데이터이다. 하지만 기계가 훈련 데이터에 대해서만 과하게 학습하면 성능 측정을 위한 데이터인 테스트 데이터나 실제 서비스에서는 정확도가 좋지 않은 현상이 발생한다.
과적합 상황에서는 훈련 데이터에 대해서는 오차가 낮지만, 테스트 데이터에 대해서는 오차가 커진다. 아래의 그래프는 과적합 상황에서 발생할 수 있는 훈련 데이터에 대한 훈련 횟수에 따른 훈련 데이터의 오차와 테스트 데이터의 오차의 변화를 보여준다.
위의 그래프를 보면 에포크가 커질수록 테스트 데이터에 대한 오차가 점점 커지는 양상을 보여준다. 과적합은 다르게 설명하면 훈련 데이터에 대한 정확도는 높지만, 테스트 데이터는 정확도가 낮은 상황이다. 이런 상황을 방지하기 위해서는 테스트 데이터의 오차가 증가하기 전이나, 정확도가 감소하기 전에 훈련을 멈추는 것이 바람직하다.
과소적합
반면 테스트 데이터의 성능이 올라갈 여지가 있음에도 훈련을 덜 한 상태를 과소적합이라고 한다. 과소 적합은 훈련 데이터 자체가 부족한 상태이므로 훈련 횟수인 에포크가 지나치게 적으면 발생할 수 있다. 이는 과적합과는 달리 훈련 자체를 너무 적게한 상태이므로 훈련 데이터에 대해서도 정확도가 낮다는 특징이 있다.
'NLP > 딥러닝을 이용한 자연어 처리 입문' 카테고리의 다른 글
[NLP] 5-4. 자동 미분과 선형 회귀 실습 (0) | 2024.01.04 |
---|---|
[NLP] 5-3. 선형 회귀 (1) | 2024.01.04 |
[NLP] 5-1. 머신 러닝이란 (0) | 2024.01.03 |
[NLP] 4-2. 여러 가지 유사도 기법 (0) | 2024.01.02 |
[NLP] 4-1. 코사인 유사도(Cosine Similarity) (0) | 2024.01.02 |