proyector en Chile

0205 hiiamsid/sentence_similarity_spanish_es Alibaba-NLP/gte-multilingual-base 비교

따옹 2025. 2. 6. 00:06

 

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 → 코사인 유사도가 참값을 제대로 반영하지 못할 가능성이 있음.
  • 해결 방법:
    1. 다른 임베딩 모델을 시도 (sentence-transformers 모델 변경)
    2. 피어슨 대신 비선형 관계를 고려 (스피어만 사용)
    3. 코사인 유사도 대신 유클리디안 거리 등 다른 유사도 방법 비교

🔹 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 파인 튜닝 시키면 성능이 올라갈 수 있을까?

실험하러 가본다