0205 hiiamsid/sentence_similarity_spanish_es Alibaba-NLP/gte-multilingual-base 비교
Alibaba-NLP/gte-multilingual-base 모델을 선택한 이유
1) 어느 정도 괜찮은 성능
2) 최대 토큰수가 무려 8000 넘음 -> 내가 가지고 있는 지원서 데이터들은 기준 하나당 평균 토큰수가 1000정도는 됨
512로는 어림 없음
https://huggingface.co/datasets/PhilipMay/stsb_multi_mt
PhilipMay/stsb_multi_mt · Datasets at Hugging Face
Ein Hund versucht, den Speck auf seinem Rücken zu fressen.
huggingface.co
그렇다면 기존 Alibaba-NLP/gte-multilingual-base 모델의 코사인유사도 정확도(임베딩 방식으로 코사인 유사도 측정)를 측정하기 위해 stsb_multi_mt 데이터셋을 사용한다.
STSbenchmark 데이터셋은 두 문장의 유사도를 0부터 5까지의 점수로 평가한 문장 쌍을 제공한다.
코사인 유사도가 적절한지 확인할 때 사용할 수 있는 평가지표는 여러 가지가 있으며, 목적과 데이터의 특성에 따라 다릅니다. 코사인 유사도가 얼마나 좋은지를 평가하려면, 일반적으로 모델의 성능을 종합적으로 분석하는 것이 중요합니다.
✅ 1. 코사인 유사도의 적절성을 평가하는 방법
코사인 유사도가 얼마나 적절한지 평가하는 주요 방법은 다음과 같습니다.
① 피어슨 상관계수 (Pearson Correlation)
- 코사인 유사도와 피어슨 상관계수를 비교하여, 선형 관계가 있는지 확인 가능.
- 두 지표가 비슷한 결과를 나타낸다면, 코사인 유사도가 선형적인 관계에서도 잘 동작할 가능성이 높음.
- 만약 피어슨이 낮고 코사인 유사도가 높다면?
→ 코사인 유사도는 방향만 고려하므로, 크기 변화를 무시하고 있다는 의미일 수 있음.
📌 활용법
- 코사인 유사도와 피어슨 상관계수를 함께 계산하고 비교
→ 만약 둘이 유사하다면, 코사인 유사도가 적절한 가능성이 높음.
→ 만약 차이가 크다면, 크기 정보가 중요한 데이터일 수도 있음.
② RMSE (Root Mean Square Error, 평균 제곱근 오차)
- 예측값과 실제값의 차이를 측정하는 방법.
- 코사인 유사도가 높은 두 벡터가 실제로 예측에 도움이 되는지 확인 가능.
📌 활용법
- 코사인 유사도로 만든 모델과 다른 유사도 모델(예: 피어슨, 유클리디안 거리 기반 모델)의 RMSE를 비교.
- RMSE가 낮을수록 더 좋은 성능을 가진 모델.
③ NDCG (Normalized Discounted Cumulative Gain)
- 추천 시스템에서 많이 사용하는 지표.
- 모델이 얼마나 관련성이 높은 항목을 상위에 추천하는지 평가하는 데 유용함.
- 특히 추천 순위(Ranking) 기반 평가에서 코사인 유사도가 효과적인지 판단할 때 중요.
📌 활용법
- 코사인 유사도로 만든 추천 결과와 실제 사용자 행동을 비교하여 NDCG 계산.
- 다른 유사도(예: 피어슨, 점수 기반 거리)와 비교하여 어떤 것이 더 높은 NDCG를 가지는지 평가.
④ MAP@K (Mean Average Precision at K)
- 추천 시스템에서 코사인 유사도를 사용했을 때 얼마나 정확하게 추천했는지 평가하는 지표.
- 상위 KK개 추천 중 실제로 사용자가 클릭하거나 선택한 비율을 기반으로 평가.
📌 활용법
- MAP@K 값을 계산하여, 코사인 유사도가 높은 모델과 낮은 모델 비교.
- 높은 MAP@K 값을 가지면 코사인 유사도가 추천 성능을 높이는 데 효과적이라는 의미.
✅ 2. 데이터 특성에 따른 선택 기준
데이터 특성 추천 평가지표 적절한 평가 방식
연속형 데이터 (숫자 크기가 중요) | 피어슨 상관계수, RMSE | 크기 차이를 고려한 비교 |
순위가 중요한 경우 (예: 검색, 추천) | NDCG, MAP@K | 추천 성능 평가 |
두 벡터 간 패턴 비교 | 피어슨 상관계수 | 코사인과 비교하여 방향성 평가 |
✅ 3. 결론: 언제 코사인 유사도가 적절한가?
📌 코사인 유사도가 적절한 경우
- 데이터가 크기보다는 패턴(방향성)이 중요한 경우
(예: 문서 비교, 추천 시스템에서 사용자의 행동 패턴 비교) - 벡터의 크기가 서로 다르지만, 유사한 패턴을 가지는 경우
- 추천 시스템에서 상위 추천 항목의 순위를 평가할 때 (NDCG, MAP@K 기준)
📌 코사인 유사도가 부적절한 경우
- 데이터의 절대적인 크기(값의 차이)가 중요한 경우
(예: 가격, 온도, 수익률 등에서 차이가 중요한 경우) - 선형적인 관계를 분석할 때 → 피어슨 상관계수가 더 적절할 수 있음.
- 모델의 정확성을 높이고 싶다면 RMSE와 비교하여 성능 평가 필요.
✅ 최종 요약
코사인 유사도가 적절한지 확인할 때는 피어슨 상관계수, RMSE, NDCG, MAP@K 등을 활용하여 비교하는 것이 좋습니다.
- 크기 차이가 중요하면 → RMSE, 피어슨 상관계수 활용
- 순위가 중요하면 → NDCG, MAP@K 활용
- 일반적인 추천 시스템에서는 → NDCG와 MAP@K를 주로 활용
즉, 데이터의 특성과 목적에 따라 평가 지표를 선택하는 것이 중요합니다!
✅ 임베딩 후 코사인 유사도를 측정한 결과가 유의미한지 판단하는 기준
임베딩한 문장 쌍 간의 코사인 유사도가 실제 유사성과 얼마나 관련이 있는지 평가하는 방법에는 여러 가지가 있습니다.
이때 피어슨 상관계수, 스피어만 상관계수, NDCG@K 등의 평가 지표를 활용하여 얼마나 유의미한지(신뢰할 수 있는 결과인지) 판단할 수 있습니다.
🔹 1. 유의미한지 판단하는 주요 기준
지표 범위 해석 (임베딩 + 코사인 유사도와 관련성)
피어슨 상관계수 (Pearson rr) | −1≤r≤1-1 \leq r \leq 1 | **r>0.7r > 0.7**이면 선형적으로 유사성이 높음 → 코사인 유사도가 실제 유사성과 강한 관계가 있음 |
스피어만 상관계수 (Spearman ρ\rho) | −1≤ρ≤1-1 \leq \rho \leq 1 | **ρ>0.7\rho > 0.7**이면 순위(랭킹)가 실제 유사성과 잘 맞음 |
NDCG@K | 0≤NDCG≤10 \leq \text{NDCG} \leq 1 | **NDCG>0.9\text{NDCG} > 0.9**이면 코사인 유사도가 순위를 잘 유지하고 있음 |
MAP@K | 0≤MAP≤10 \leq \text{MAP} \leq 1 | **MAP>0.8\text{MAP} > 0.8**이면 추천 모델 성능이 우수함 |
🔹 2. 결과 해석
이제 위 코드의 실행 결과를 해석해봅시다.
지표 예제 결과 해석
피어슨 상관계수 | 0.85 | 코사인 유사도와 실제 유사성 점수가 선형적으로 강한 관계를 가짐 |
스피어만 상관계수 | 0.88 | 코사인 유사도 기반 순위가 실제 유사성과 잘 맞음 |
NDCG@5 | 0.92 | 모델이 예측한 순위가 실제 유사성 순위와 거의 동일함 |
📌 해석:
- 피어슨이 높음 (>0.7> 0.7) → 코사인 유사도가 실제 유사성과 선형적인 관계를 가짐.
- 스피어만이 높음 (>0.7> 0.7) → 유사성이 높은 문장이 실제로 높은 순위에 배치됨.
- NDCG가 높음 (>0.9> 0.9) → 코사인 유사도를 기반으로 한 순위가 거의 정확함.
➡ 결론: 코사인 유사도를 사용한 문장 유사도 평가가 신뢰할 수 있음! 🚀
🔹 4. 유의미한 결과로 볼 수 있는 기준
📌 유의미한 경우
- r>0.7r > 0.7, ρ>0.7\rho > 0.7, NDCG>0.9NDCG > 0.9 → 임베딩 + 코사인 유사도 기반 평가가 신뢰할 수 있음!
- 모델이 문장 유사성을 잘 반영하고 있으며, 실제와 높은 상관관계를 가짐.
📌 유의미하지 않은 경우
- r<0.4r < 0.4, ρ<0.4\rho < 0.4, NDCG<0.7NDCG < 0.7 → 코사인 유사도가 참값을 제대로 반영하지 못할 가능성이 있음.
- 해결 방법:
- 다른 임베딩 모델을 시도 (sentence-transformers 모델 변경)
- 피어슨 대신 비선형 관계를 고려 (스피어만 사용)
- 코사인 유사도 대신 유클리디안 거리 등 다른 유사도 방법 비교
🔹 5. 최종 결론
✅ 임베딩 후 코사인 유사도를 측정한 결과는 언제 유의미한가?
✔ 피어슨 상관계수 >0.7> 0.7, 스피어만 상관계수 >0.7> 0.7, NDCG@K >0.9> 0.9 → 유의미!
✔ 이 세 가지 평가 지표를 활용하면 코사인 유사도가 실제 유사성을 잘 반영하는지 확인 가능
✔ 만약 피어슨, 스피어만이 낮다면 다른 임베딩 모델을 고려하는 것이 좋음!
🚀 즉, NDCG, 피어슨, 스피어만을 함께 사용하면 코사인 유사도가 유의미한지 확실하게 검증할 수 있습니다!
GPT 선생님이 친절하게 잘 알려주셨다.
hiiamsid/sentence_similarity_spanish_es | Alibaba-NLP/gte-multilingual-base |
Pearson Correlation: 0.8282 Spearman Correlation: 0.8230 NDCG@5: 0.9457 |
Pearson Correlation: 0.7470 Spearman Correlation: 0.7490 NDCG@5: 0.9248 |
그래서 성능 측정해봤더니
hiiamsid/sentence_similarity_spanish_es 모델의 성능이 당연히 더 좋았다.
hiiamsid/sentence_similarity_spanish_es 모델로 교체할까 생각했지만
최대 토큰이 너무 적다 (512)
내가 가지고 있는 데이터들은 전부 토큰 개수가 많은데,
아무리 슬라이딩 임베딩을 한다고 해도 결국에 문제가 생길 거 같았다.
그래서 든 생각, hiiamsid/sentence_similarity_spanish_es 모델로 프로젝트 도메인 학습 데이터를 만들어서
Alibaba-NLP/gte-multilingual-base 파인 튜닝 시키면 성능이 올라갈 수 있을까?
실험하러 가본다